aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/8l/obj.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2013-07-19 16:04:09 -0400
committerRuss Cox <rsc@golang.org>2013-07-19 16:04:09 -0400
commit48769bf546ba7ad830c2edc05656e217d15a20c8 (patch)
treee3110fce615f1250f56a7c68d69ade5ad3ff3bbb /src/cmd/8l/obj.c
parent5d340de1f682d3b2cf10b2319c25ef3799e84078 (diff)
downloadgo-48769bf546ba7ad830c2edc05656e217d15a20c8.tar.xz
runtime: use funcdata to supply garbage collection information
This CL introduces a FUNCDATA number for runtime-specific garbage collection metadata, changes the C and Go compilers to emit that metadata, and changes the runtime to expect it. The old pseudo-instructions that carried this information are gone, as is the linker code to process them. R=golang-dev, dvyukov, cshapiro CC=golang-dev https://golang.org/cl/11406044
Diffstat (limited to 'src/cmd/8l/obj.c')
-rw-r--r--src/cmd/8l/obj.c40
1 files changed, 0 insertions, 40 deletions
diff --git a/src/cmd/8l/obj.c b/src/cmd/8l/obj.c
index 5e8988c9cb..8c84aaaea7 100644
--- a/src/cmd/8l/obj.c
+++ b/src/cmd/8l/obj.c
@@ -614,51 +614,12 @@ loop:
pc++;
goto loop;
- case ALOCALS:
- if(skip)
- goto casdef;
- cursym->locals = p->to.offset;
- pc++;
- goto loop;
-
case ATYPE:
if(skip)
goto casdef;
pc++;
goto loop;
- case ANPTRS:
- if(skip)
- goto casdef;
- if(cursym->nptrs != -1) {
- diag("ldobj1: multiple pointer maps defined for %s", cursym->name);
- errorexit();
- }
- if(p->to.offset > cursym->args/PtrSize) {
- diag("ldobj1: pointer map definition for %s exceeds its argument size", cursym->name);
- errorexit();
- }
- cursym->nptrs = p->to.offset;
- if(cursym->nptrs != 0)
- cursym->ptrs = mal((rnd(cursym->nptrs, 32) / 32) * sizeof(*cursym->ptrs));
- pc++;
- goto loop;
-
- case APTRS:
- if(skip)
- goto casdef;
- if(cursym->nptrs == -1 || cursym->ptrs == nil) {
- diag("ldobj1: pointer map data provided for %s without a definition", cursym->name);
- errorexit();
- }
- if(p->from.offset*32 >= rnd(cursym->nptrs, 32)) {
- diag("ldobj1: excessive pointer map data provided for %s", cursym->name);
- errorexit();
- }
- cursym->ptrs[p->from.offset] = p->to.offset;
- pc++;
- goto loop;
-
case ATEXT:
s = p->from.sym;
if(s->text != nil) {
@@ -699,7 +660,6 @@ loop:
s->hist = gethist();
s->value = pc;
s->args = p->to.offset2;
- s->nptrs = -1;
lastp = p;
p->pc = pc++;
goto loop;