From: Carl Shapiro Date: Mon, 9 Dec 2013 22:45:10 +0000 (-0800) Subject: cmd/gc, runtime: correct a misnomer regarding dead value maps X-Git-Tag: go1.3beta1~1292 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=bc9691c465acb1c7bf9df9848c848408e876bb57;p=gostls13.git cmd/gc, runtime: correct a misnomer regarding dead value maps The funcdata symbol incorrectly named the dead value map the dead pointer map. The dead value map identifies all dead values, including pointers and non-pointers, in a stack frame. The purpose of this map is to allow the runtime to poison locations of dead data to catch lost invariants. R=golang-dev, iant CC=golang-dev https://golang.org/cl/38670043 --- diff --git a/src/cmd/gc/pgen.c b/src/cmd/gc/pgen.c index c2942f1399..87225a4f88 100644 --- a/src/cmd/gc/pgen.c +++ b/src/cmd/gc/pgen.c @@ -159,7 +159,7 @@ compile(Node *fn) // compile time. At present, the amount of additional RSS is // substantial enough to affect our smallest build machines. if(0) - gcdead = makefuncdatasym("gcdead·%d", FUNCDATA_DeadPointerMaps); + gcdead = makefuncdatasym("gcdead·%d", FUNCDATA_DeadValueMaps); else gcdead = nil; diff --git a/src/cmd/gc/plive.c b/src/cmd/gc/plive.c index b58eaf6ed4..25d6e89b98 100644 --- a/src/cmd/gc/plive.c +++ b/src/cmd/gc/plive.c @@ -1477,9 +1477,11 @@ liveness(Node *fn, Prog *firstp, Sym *argssym, Sym *livesym, Sym *deadsym) if(0) livenessprintcfg(lv); livenessepilogue(lv); - // Emit the map data structures + // Emit the live pointer map data structures twobitwritesymbol(lv->livepointers, livesym, nil); twobitwritesymbol(lv->argslivepointers, argssym, nil); + + // Optionally emit a dead value map data structure for locals. if(deadsym != nil) twobitwritesymbol(lv->deadvalues, deadsym, nil); diff --git a/src/pkg/runtime/funcdata.h b/src/pkg/runtime/funcdata.h index 04766b9da2..e20b6ae254 100644 --- a/src/pkg/runtime/funcdata.h +++ b/src/pkg/runtime/funcdata.h @@ -12,7 +12,7 @@ #define FUNCDATA_ArgsPointerMaps 2 /* garbage collector blocks */ #define FUNCDATA_LocalsPointerMaps 3 -#define FUNCDATA_DeadPointerMaps 4 +#define FUNCDATA_DeadValueMaps 4 // To be used in assembly. #define ARGSIZE(n) PCDATA $PCDATA_ArgSize, $n