wasm: execute an 'unreachable' trap inst on panic

This already happened when directly calling panic() but not with some
runtime panics like accessing a slice out of bounds.
Этот коммит содержится в:
Ayke van Laethem 2018-10-30 15:54:02 +01:00
родитель 0314a487ff
коммит a459570d94
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: E97FF5335DFDFDED
2 изменённых файлов: 7 добавлений и 1 удалений

Просмотреть файл

@ -1,5 +1,10 @@
package runtime package runtime
// trap is a compiler hint that this function cannot be executed. It is
// translated into either a trap instruction or a call to abort().
//go:linkname trap llvm.trap
func trap()
// Builtin function panic(msg), used as a compiler intrinsic. // Builtin function panic(msg), used as a compiler intrinsic.
func _panic(message interface{}) { func _panic(message interface{}) {
printstring("panic: ") printstring("panic: ")

Просмотреть файл

@ -49,6 +49,7 @@ func align(ptr uintptr) uintptr {
return (ptr + 3) &^ 3 return (ptr + 3) &^ 3
} }
// Abort executes the wasm 'unreachable' instruction.
func abort() { func abort() {
// TODO trap()
} }