]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.3] undo 941ef9ddbada / 125150044
authorAndrew Gerrand <adg@golang.org>
Wed, 13 Aug 2014 03:38:50 +0000 (13:38 +1000)
committerAndrew Gerrand <adg@golang.org>
Wed, 13 Aug 2014 03:38:50 +0000 (13:38 +1000)
It broke the build across all platforms.
The original change wasn't even reviewed.
Probably should never have been ported to this branch.

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/128130043

src/pkg/runtime/mgc0.c

index 9b23c53c2135e887a07a654121bbd924e0f0404b..392da535b1509b6b850bfc32571cf5eeeff6b1b8 100644 (file)
@@ -2760,7 +2760,7 @@ runtime·markscan(void *v)
 void
 runtime·markfreed(void *v)
 {
-       uintptr *b, off, shift, xbits;
+       uintptr *b, off, shift;
 
        if(0)
                runtime·printf("markfreed %p\n", v);
@@ -2771,18 +2771,7 @@ runtime·markfreed(void *v)
        off = (uintptr*)v - (uintptr*)runtime·mheap.arena_start;  // word offset
        b = (uintptr*)runtime·mheap.arena_start - off/wordsPerBitmapWord - 1;
        shift = off % wordsPerBitmapWord;
-       if(!g->m->gcing || work.nproc == 1) {
-               // During normal operation (not GC), the span bitmap is not updated concurrently,
-               // because either the span is cached or accesses are protected with MCentral lock.
-               *b = (*b & ~(bitMask<<shift)) | (bitAllocated<<shift);
-       } else {
-               // During GC other threads concurrently mark heap.
-               for(;;) {
-                       xbits = *b;
-                       if(runtime·casp((void**)b, (void*)xbits, (void*)((xbits & ~(bitMask<<shift)) | (bitAllocated<<shift))))
-                               break;
-               }
-       }
+       *b = (*b & ~(bitMask<<shift)) | (bitAllocated<<shift);
 }
 
 // check that the block at v of size n is marked freed.