diff options
author | Russ Cox <rsc@golang.org> | 2014-11-05 15:43:41 -0500 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2014-11-05 15:43:41 -0500 |
commit | c3f533c86a28f6990b8d35a7ed9c30a6f620e853 (patch) | |
tree | 076285e21768ad7c14ba395ede38075131c70b2c /src/cmd/gc | |
parent | aefaeb75f3eff323f212c5309d8ae65768ad9809 (diff) | |
download | go-c3f533c86a28f6990b8d35a7ed9c30a6f620e853.tar.gz |
[dev.garbage] cmd/gc: emit pointer write barriers
This got lost in the change that added the writebarrierfat variants.
LGTM=rlh
R=rlh
CC=golang-codereviews
https://codereview.appspot.com/165510043
Diffstat (limited to 'src/cmd/gc')
-rw-r--r-- | src/cmd/gc/walk.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c index 38bed1e22..37bd62dea 100644 --- a/src/cmd/gc/walk.c +++ b/src/cmd/gc/walk.c @@ -2015,6 +2015,8 @@ applywritebarrier(Node *n, NodeList **init) l = nod(OADDR, n->left, N); l->etype = 1; // addr does not escape if(t->width == widthptr) { + n = mkcall1(writebarrierfn("writebarrierptr", t, n->right->type), T, init, + l, n->right); } else if(t->etype == TSTRING) { n = mkcall1(writebarrierfn("writebarrierstring", t, n->right->type), T, init, l, n->right); @@ -2037,6 +2039,8 @@ applywritebarrier(Node *n, NodeList **init) if(BitsPointer != (1<<PtrBit)) fatal("wrong PtrBit"); switch(t->width/widthptr) { + default: + fatal("found writebarrierfat for %d-byte object of type %T", (int)t->width, t); case 2: snprint(name, sizeof name, "writebarrierfat%d%d", bvget(bv, PtrBit), bvget(bv, BitsPerPointer+PtrBit)); |