]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/runtime/mheap.go
runtime: split out pointer/scalar metadata from heapArena
[gostls13.git] / src / runtime / mheap.go
index 42318ca04cce8284ec9f07adad439f112f56d91c..62ad5e2f29c4b85e0a55fff6632d7577b42c5370 100644 (file)
@@ -239,23 +239,8 @@ var mheap_ mheap
 type heapArena struct {
        _ sys.NotInHeap
 
-       // bitmap stores the pointer/scalar bitmap for the words in
-       // this arena. See mbitmap.go for a description.
-       // This array uses 1 bit per word of heap, or 1.6% of the heap size (for 64-bit).
-       bitmap [heapArenaBitmapWords]uintptr
-
-       // If the ith bit of noMorePtrs is true, then there are no more
-       // pointers for the object containing the word described by the
-       // high bit of bitmap[i].
-       // In that case, bitmap[i+1], ... must be zero until the start
-       // of the next object.
-       // We never operate on these entries using bit-parallel techniques,
-       // so it is ok if they are small. Also, they can't be bigger than
-       // uint16 because at that size a single noMorePtrs entry
-       // represents 8K of memory, the minimum size of a span. Any larger
-       // and we'd have to worry about concurrent updates.
-       // This array uses 1 bit per word of bitmap, or .024% of the heap size (for 64-bit).
-       noMorePtrs [heapArenaBitmapWords / 8]uint8
+       // heapArenaPtrScalar contains pointer/scalar data about the heap for this heap arena.
+       heapArenaPtrScalar
 
        // spans maps from virtual address page ID within this arena to *mspan.
        // For allocated spans, their pages map to the span itself.