1
0
mirror of https://github.com/golang/go synced 2024-11-12 09:30:25 -07:00

runtime: delete unnecessary confusing code

The code in GC that handles gp->gobuf.ctxt is wrong,
because it does not mark the ctxt object itself,
if just queues the ctxt object for scanning.
So the ctxt object can be collected as garbage.
However, Gobuf.ctxt is void*, so it's always marked and
scanned through G.

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, khr, rsc
https://golang.org/cl/105490044
This commit is contained in:
Dmitriy Vyukov 2014-07-03 22:58:42 +04:00
parent 2ec3a0a72f
commit d3be3daafe
2 changed files with 1 additions and 6 deletions

View File

@ -1615,8 +1615,6 @@ addstackroots(G *gp, Workbuf **wbufp)
int32 n;
Stktop *stk;
uintptr sp, guard;
void *base;
uintptr size;
switch(gp->status){
default:
@ -1652,9 +1650,6 @@ addstackroots(G *gp, Workbuf **wbufp)
sp = gp->sched.sp;
stk = (Stktop*)gp->stackbase;
guard = gp->stackguard;
// For function about to start, context argument is a root too.
if(gp->sched.ctxt != 0 && runtime·mlookup(gp->sched.ctxt, &base, &size, nil))
enqueue1(wbufp, (Obj){base, size, 0});
}
if(ScanStackByFrames) {
USED(sp);

View File

@ -213,7 +213,7 @@ struct Gobuf
uintptr sp;
uintptr pc;
G* g;
void* ctxt;
void* ctxt; // this has to be a pointer so that GC scans it
uintreg ret;
uintptr lr;
};