]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: make getStackMap a method of stkframe
authorAustin Clements <austin@google.com>
Wed, 17 Aug 2022 13:02:41 +0000 (09:02 -0400)
committerGopher Robot <gobot@golang.org>
Fri, 2 Sep 2022 19:08:56 +0000 (19:08 +0000)
This places getStackMap alongside argBytes and argMapInternal as
another method of stkframe.

For #54466, albeit rather indirectly.

Change-Id: I411dda3605dd7f996983706afcbefddf29a68a85
Reviewed-on: https://go-review.googlesource.com/c/go/+/424515
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Run-TryBot: Austin Clements <austin@google.com>
Auto-Submit: Austin Clements <austin@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/runtime/mbitmap.go
src/runtime/mgcmark.go
src/runtime/stack.go

index 5845267b5f20246b89863f118e71cb5de37a9a82..8bb24321a066c529cd16a0ce5ae8ba3a69443962 100644 (file)
@@ -1479,7 +1479,7 @@ func getgcmask(ep any) (mask []byte) {
                frame.sp = uintptr(p)
                gentraceback(gp.m.curg.sched.pc, gp.m.curg.sched.sp, 0, gp.m.curg, 0, nil, 1000, getgcmaskcb, noescape(unsafe.Pointer(&frame)), 0)
                if frame.fn.valid() {
-                       locals, _, _ := getStackMap(&frame, nil, false)
+                       locals, _, _ := frame.getStackMap(nil, false)
                        if locals.n == 0 {
                                return
                        }
index 6e66a3af65a620a2c3a386a3e618f7e469bac0a6..8d3259c79a7dedd41ef97f0e736faf566f8b7693 100644 (file)
@@ -966,7 +966,7 @@ func scanframeworker(frame *stkframe, state *stackScanState, gcw *gcWork) {
                return
        }
 
-       locals, args, objs := getStackMap(frame, &state.cache, false)
+       locals, args, objs := frame.getStackMap(&state.cache, false)
 
        // Scan local variables if stack frame has been allocated.
        if locals.n > 0 {
index 1b3b0b7840010b317021ab07f4fc27384892f1bc..1b782ede8878b7fe3436f10c38b05ba417601216 100644 (file)
@@ -664,7 +664,7 @@ func adjustframe(frame *stkframe, arg unsafe.Pointer) bool {
                return true
        }
 
-       locals, args, objs := getStackMap(frame, &adjinfo.cache, true)
+       locals, args, objs := frame.getStackMap(&adjinfo.cache, true)
 
        // Adjust local variables if stack frame has been allocated.
        if locals.n > 0 {
@@ -1249,7 +1249,7 @@ func freeStackSpans() {
 
 // getStackMap returns the locals and arguments live pointer maps, and
 // stack object list for frame.
-func getStackMap(frame *stkframe, cache *pcvalueCache, debug bool) (locals, args bitvector, objs []stackObjectRecord) {
+func (frame *stkframe) getStackMap(cache *pcvalueCache, debug bool) (locals, args bitvector, objs []stackObjectRecord) {
        targetpc := frame.continpc
        if targetpc == 0 {
                // Frame is dead. Return empty bitvectors.