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.
This commit is contained in:
Ayke van Laethem
2018-10-30 15:54:02 +01:00
parent 0314a487ff
commit a459570d94
2 changed files with 7 additions and 1 deletions
+5
View File
@@ -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: ")
+2 -1
View File
@@ -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()
} }