]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: clean up adjustpointer and eliminate write barrier
authorAustin Clements <austin@google.com>
Mon, 23 Nov 2015 16:34:16 +0000 (11:34 -0500)
committerAustin Clements <austin@google.com>
Sun, 28 Feb 2016 04:19:01 +0000 (04:19 +0000)
Commit a5c3bbe modified adjustpointers to use *uintptrs instead of
*unsafe.Pointers for manipulating stack pointers for clarity and to
eliminate the unnecessary write barrier when writing the updated stack
pointer.

This commit makes the equivalent change to adjustpointer.

Change-Id: I6dc309590b298bdd86ecdc9737db848d6786c3f7
Reviewed-on: https://go-review.googlesource.com/17148
Reviewed-by: Rick Hudson <rlh@golang.org>
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/runtime/stack.go

index 81059965d965db706c0da708ae4f733354f0714d..d2466de6535268e30c70dd9f2cded3071fee6da7 100644 (file)
@@ -521,15 +521,15 @@ type adjustinfo struct {
 // Adjustpointer checks whether *vpp is in the old stack described by adjinfo.
 // If so, it rewrites *vpp to point into the new stack.
 func adjustpointer(adjinfo *adjustinfo, vpp unsafe.Pointer) {
-       pp := (*unsafe.Pointer)(vpp)
+       pp := (*uintptr)(vpp)
        p := *pp
        if stackDebug >= 4 {
-               print("        ", pp, ":", p, "\n")
+               print("        ", pp, ":", hex(p), "\n")
        }
-       if adjinfo.old.lo <= uintptr(p) && uintptr(p) < adjinfo.old.hi {
-               *pp = add(p, adjinfo.delta)
+       if adjinfo.old.lo <= p && p < adjinfo.old.hi {
+               *pp = p + adjinfo.delta
                if stackDebug >= 3 {
-                       print("        adjust ptr ", pp, ":", p, " -> ", *pp, "\n")
+                       print("        adjust ptr ", pp, ":", hex(p), " -> ", hex(*pp), "\n")
                }
        }
 }