]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/5g, cmd/6g, cmd/8g: update frame zeroing for new bitmap format
authorCarl Shapiro <cshapiro@google.com>
Fri, 16 Aug 2013 05:15:04 +0000 (01:15 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 16 Aug 2013 05:15:04 +0000 (01:15 -0400)
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/12740046

src/cmd/5g/ggen.c
src/cmd/6g/ggen.c
src/cmd/8g/ggen.c

index cd59aef2b46305680e88dc1ab5559e13bc6d138e..52c2cd4395fb5be4784137c4a48dd5b23d573bfe 100644 (file)
@@ -14,7 +14,7 @@ static Prog* appendp(Prog*, int, int, int, int32, int, int, int32);
 void
 defframe(Prog *ptxt, Bvec *bv)
 {
-       int i, first;
+       int i, j, first;
        uint32 frame;
        Prog *p, *p1;
        
@@ -49,8 +49,8 @@ defframe(Prog *ptxt, Bvec *bv)
                patch(p, p1);
        } else {
                first = 1;
-               for(i=0; i<stkptrsize; i+=widthptr) {
-                       if(bvget(bv, i/widthptr)) {
+               for(i=0, j=0; i<stkptrsize; i+=widthptr, j+=2) {
+                       if(bvget(bv, j) || bvget(bv, j+1)) {
                                if(first) {
                                        p = appendp(p, AMOVW, D_CONST, NREG, 0, D_REG, 0, 0);
                                        first = 0;
index 259bb7c070df67f4940181afffafcc58ea8cc403..ec1d1ddc4cd3a4914afb47f7f5d5e0e57b8e9224 100644 (file)
@@ -14,7 +14,7 @@ static Prog* appendp(Prog*, int, int, vlong, int, vlong);
 void
 defframe(Prog *ptxt, Bvec *bv)
 {
-       int i;
+       int i, j;
        uint32 frame;
        Prog *p;
 
@@ -37,8 +37,8 @@ defframe(Prog *ptxt, Bvec *bv)
                p = appendp(p, AREP, D_NONE, 0, D_NONE, 0);
                appendp(p, ASTOSQ, D_NONE, 0, D_NONE, 0);
        } else {
-               for(i=0; i<stkptrsize; i+=widthptr)
-                       if(bvget(bv, i/widthptr))
+               for(i=0, j=0; i<stkptrsize; i+=widthptr, j+=2)
+                       if(bvget(bv, j) || bvget(bv, j+1))
                                p = appendp(p, AMOVQ, D_CONST, 0, D_SP+D_INDIR, frame-stkptrsize+i);
        }
 }
index 609f6977f07440f696e4e2b264edbcb12391161f..6b8c67e5bc876fd6fe4c5f09fa5cf436fc4a13a7 100644 (file)
@@ -16,7 +16,7 @@ defframe(Prog *ptxt, Bvec *bv)
 {
        uint32 frame;
        Prog *p;
-       int i;
+       int i, j;
 
        // fill in argument size
        ptxt->to.offset2 = rnd(curfn->type->argwid, widthptr);
@@ -39,8 +39,8 @@ defframe(Prog *ptxt, Bvec *bv)
                p = appendp(p, AREP, D_NONE, 0, D_NONE, 0);
                appendp(p, ASTOSL, D_NONE, 0, D_NONE, 0);
        } else {
-               for(i=0; i<stkptrsize; i+=widthptr)
-                       if(bvget(bv, i/widthptr))
+               for(i=0, j=0; i<stkptrsize; i+=widthptr, j+=2)
+                       if(bvget(bv, j) || bvget(bv, j+1))
                                p = appendp(p, AMOVL, D_CONST, 0, D_SP+D_INDIR, frame-stkptrsize+i);
        }
 }