diff options
author | Matthew Dempsky <mdempsky@google.com> | 2020-01-09 14:01:41 -0800 |
---|---|---|
committer | Matthew Dempsky <mdempsky@google.com> | 2020-01-09 23:06:21 +0000 |
commit | 56d6b87972c9852570fe017ac5fa153314c21992 (patch) | |
tree | c009a7c19eccb0764fae26071a252922a2c7d1de | |
parent | 65219650fff0cd8317b3f031784c4471f3fd7073 (diff) | |
download | go-56d6b87972c9852570fe017ac5fa153314c21992.tar.gz go-56d6b87972c9852570fe017ac5fa153314c21992.zip |
runtime: change checkptr to use throw instead of panic
Updates #34964.
Change-Id: I5afb2c1e77a9a47358a1d0d108c4a787d7172b94
Reviewed-on: https://go-review.googlesource.com/c/go/+/214217
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
-rw-r--r-- | src/runtime/checkptr.go | 31 |
1 files changed, 4 insertions, 27 deletions
diff --git a/src/runtime/checkptr.go b/src/runtime/checkptr.go index 3c6a40206f..ddbc8168af 100644 --- a/src/runtime/checkptr.go +++ b/src/runtime/checkptr.go @@ -6,45 +6,22 @@ package runtime import "unsafe" -type ptrAlignError struct { - ptr unsafe.Pointer - elem *_type - n uintptr -} - -func (e ptrAlignError) RuntimeError() {} - -func (e ptrAlignError) Error() string { - return "runtime error: unsafe pointer conversion" -} - func checkptrAlignment(p unsafe.Pointer, elem *_type, n uintptr) { // Check that (*[n]elem)(p) is appropriately aligned. // TODO(mdempsky): What about fieldAlign? if uintptr(p)&(uintptr(elem.align)-1) != 0 { - panic(ptrAlignError{p, elem, n}) + throw("checkptr: unsafe pointer conversion") } // Check that (*[n]elem)(p) doesn't straddle multiple heap objects. if size := n * elem.size; size > 1 && checkptrBase(p) != checkptrBase(add(p, size-1)) { - panic(ptrAlignError{p, elem, n}) + throw("checkptr: unsafe pointer conversion") } } -type ptrArithError struct { - ptr unsafe.Pointer - originals []unsafe.Pointer -} - -func (e ptrArithError) RuntimeError() {} - -func (e ptrArithError) Error() string { - return "runtime error: unsafe pointer arithmetic" -} - func checkptrArithmetic(p unsafe.Pointer, originals []unsafe.Pointer) { if 0 < uintptr(p) && uintptr(p) < minLegalPointer { - panic(ptrArithError{p, originals}) + throw("checkptr: unsafe pointer arithmetic") } // Check that if the computed pointer p points into a heap @@ -61,7 +38,7 @@ func checkptrArithmetic(p unsafe.Pointer, originals []unsafe.Pointer) { } } - panic(ptrArithError{p, originals}) + throw("checkptr: unsafe pointer arithmetic") } // checkptrBase returns the base address for the allocation containing |