]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.power64] runtime: fix early GC of Defer objects
authorAustin Clements <austin@google.com>
Wed, 22 Oct 2014 20:39:31 +0000 (16:39 -0400)
committerAustin Clements <austin@google.com>
Wed, 22 Oct 2014 20:39:31 +0000 (16:39 -0400)
go_bootstrap was panicking during runtime initialization
(under runtime.main) because Defer objects were being
prematurely GC'd.  This happened because of an incorrect
change to runtime·unrollgcprog_m to make it endian-agnostic
during the conversion of runtime bitmaps to byte arrays.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/161960044

src/runtime/mgc0.c

index d376c1cf695b25f817cfcbeeb65d464efc2c84dd..02f7eba1202c8f2474450f0154d10e753d35349c 100644 (file)
@@ -1799,7 +1799,7 @@ runtime·unrollgcprog_m(void)
                }
                
                // atomic way to say mask[0] = 1
-               x = typ->gc[0];
+               x = *(uintptr*)mask;
                ((byte*)&x)[0] = 1;
                runtime·atomicstorep((void**)mask, (void*)x);
        }