]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: change checkptr to use throw instead of panic
authorMatthew Dempsky <mdempsky@google.com>
Thu, 9 Jan 2020 22:01:41 +0000 (14:01 -0800)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 9 Jan 2020 23:06:21 +0000 (23:06 +0000)
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>
src/runtime/checkptr.go

index 3c6a40206fc3a0743497f56ab93c15549e512345..ddbc8168afc11ab7f8d41fc34b1129f38c95f710 100644 (file)
@@ -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