summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2014-11-05 15:43:41 -0500
committerRuss Cox <rsc@golang.org>2014-11-05 15:43:41 -0500
commitc3f533c86a28f6990b8d35a7ed9c30a6f620e853 (patch)
tree076285e21768ad7c14ba395ede38075131c70b2c
parentaefaeb75f3eff323f212c5309d8ae65768ad9809 (diff)
downloadgo-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
-rw-r--r--src/cmd/gc/walk.c4
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));