From 23479c92d366cb429f2f0ad4c7bbe26a3186e583 Mon Sep 17 00:00:00 2001 From: Damian Gryski Date: Wed, 26 Jan 2022 11:00:50 -0800 Subject: [PATCH] src/runtime: improve metadatasize calculation to avoid rounding issues --- src/runtime/gc_conservative.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/gc_conservative.go b/src/runtime/gc_conservative.go index e0e13bc2..bd8ff1c7 100644 --- a/src/runtime/gc_conservative.go +++ b/src/runtime/gc_conservative.go @@ -240,7 +240,7 @@ func calculateHeapAddresses() { totalSize := heapEnd - heapStart // Allocate some memory to keep 2 bits of information about every block. - metadataSize := totalSize / (blocksPerStateByte * bytesPerBlock) + metadataSize := (totalSize + blocksPerStateByte*bytesPerBlock) / (1 + blocksPerStateByte*bytesPerBlock) metadataStart = unsafe.Pointer(heapEnd - metadataSize) // Use the rest of the available memory as heap.