aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/mpagecache_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/mpagecache_test.go')
-rw-r--r--src/runtime/mpagecache_test.go103
1 files changed, 53 insertions, 50 deletions
diff --git a/src/runtime/mpagecache_test.go b/src/runtime/mpagecache_test.go
index 6cb0620f7b..19b4e04807 100644
--- a/src/runtime/mpagecache_test.go
+++ b/src/runtime/mpagecache_test.go
@@ -269,23 +269,6 @@ func TestPageAllocAllocToCache(t *testing.T) {
afterScav map[ChunkIdx][]BitRange
}
tests := map[string]test{
- "AllFree": {
- beforeAlloc: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {},
- },
- beforeScav: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{1, 1}, {64, 64}},
- },
- hits: []PageCache{
- NewPageCache(PageBase(BaseChunkIdx, 0), ^uint64(0), 0x2),
- NewPageCache(PageBase(BaseChunkIdx, 64), ^uint64(0), ^uint64(0)),
- NewPageCache(PageBase(BaseChunkIdx, 128), ^uint64(0), 0),
- NewPageCache(PageBase(BaseChunkIdx, 192), ^uint64(0), 0),
- },
- afterAlloc: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, 256}},
- },
- },
"ManyArena": {
beforeAlloc: map[ChunkIdx][]BitRange{
BaseChunkIdx: {{0, PallocChunkPages}},
@@ -306,72 +289,92 @@ func TestPageAllocAllocToCache(t *testing.T) {
BaseChunkIdx + 2: {{0, PallocChunkPages}},
},
},
- "NotContiguous": {
+
+ "Fail": {
beforeAlloc: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, PallocChunkPages}},
- BaseChunkIdx + 0xff: {{0, 0}},
+ BaseChunkIdx: {{0, PallocChunkPages}},
+ },
+ hits: []PageCache{
+ NewPageCache(0, 0, 0),
+ NewPageCache(0, 0, 0),
+ NewPageCache(0, 0, 0),
+ },
+ afterAlloc: map[ChunkIdx][]BitRange{
+ BaseChunkIdx: {{0, PallocChunkPages}},
+ },
+ },
+ "RetainScavBits": {
+ beforeAlloc: map[ChunkIdx][]BitRange{
+ BaseChunkIdx: {{0, 1}, {10, 2}},
},
beforeScav: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, PallocChunkPages}},
- BaseChunkIdx + 0xff: {{31, 67}},
+ BaseChunkIdx: {{0, 4}, {11, 1}},
},
hits: []PageCache{
- NewPageCache(PageBase(BaseChunkIdx+0xff, 0), ^uint64(0), ((uint64(1)<<33)-1)<<31),
+ NewPageCache(PageBase(BaseChunkIdx, 0), ^uint64(0x1|(0x3<<10)), 0x7<<1),
},
afterAlloc: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, PallocChunkPages}},
- BaseChunkIdx + 0xff: {{0, 64}},
+ BaseChunkIdx: {{0, 64}},
},
afterScav: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, PallocChunkPages}},
- BaseChunkIdx + 0xff: {{64, 34}},
+ BaseChunkIdx: {{0, 1}, {11, 1}},
},
},
- "First": {
+ }
+ if PallocChunkPages >= 512 {
+ tests["AllFree"] = test{
beforeAlloc: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, 32}, {33, 31}, {96, 32}},
+ BaseChunkIdx: {},
},
beforeScav: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{1, 4}, {31, 5}, {66, 2}},
+ BaseChunkIdx: {{1, 1}, {64, 64}},
},
hits: []PageCache{
- NewPageCache(PageBase(BaseChunkIdx, 0), 1<<32, 1<<32),
- NewPageCache(PageBase(BaseChunkIdx, 64), (uint64(1)<<32)-1, 0x3<<2),
+ NewPageCache(PageBase(BaseChunkIdx, 0), ^uint64(0), 0x2),
+ NewPageCache(PageBase(BaseChunkIdx, 64), ^uint64(0), ^uint64(0)),
+ NewPageCache(PageBase(BaseChunkIdx, 128), ^uint64(0), 0),
+ NewPageCache(PageBase(BaseChunkIdx, 192), ^uint64(0), 0),
},
afterAlloc: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, 128}},
+ BaseChunkIdx: {{0, 256}},
},
- },
- "Fail": {
+ }
+ tests["NotContiguous"] = test{
beforeAlloc: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, PallocChunkPages}},
+ BaseChunkIdx: {{0, PallocChunkPages}},
+ BaseChunkIdx + 0xff: {{0, 0}},
+ },
+ beforeScav: map[ChunkIdx][]BitRange{
+ BaseChunkIdx: {{0, PallocChunkPages}},
+ BaseChunkIdx + 0xff: {{31, 67}},
},
hits: []PageCache{
- NewPageCache(0, 0, 0),
- NewPageCache(0, 0, 0),
- NewPageCache(0, 0, 0),
+ NewPageCache(PageBase(BaseChunkIdx+0xff, 0), ^uint64(0), ((uint64(1)<<33)-1)<<31),
},
afterAlloc: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, PallocChunkPages}},
+ BaseChunkIdx: {{0, PallocChunkPages}},
+ BaseChunkIdx + 0xff: {{0, 64}},
},
- },
- "RetainScavBits": {
+ afterScav: map[ChunkIdx][]BitRange{
+ BaseChunkIdx: {{0, PallocChunkPages}},
+ BaseChunkIdx + 0xff: {{64, 34}},
+ },
+ }
+ tests["First"] = test{
beforeAlloc: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, 1}, {10, 2}},
+ BaseChunkIdx: {{0, 32}, {33, 31}, {96, 32}},
},
beforeScav: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, 4}, {11, 1}},
+ BaseChunkIdx: {{1, 4}, {31, 5}, {66, 2}},
},
hits: []PageCache{
- NewPageCache(PageBase(BaseChunkIdx, 0), ^uint64(0x1|(0x3<<10)), 0x7<<1),
+ NewPageCache(PageBase(BaseChunkIdx, 0), 1<<32, 1<<32),
+ NewPageCache(PageBase(BaseChunkIdx, 64), (uint64(1)<<32)-1, 0x3<<2),
},
afterAlloc: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, 64}},
- },
- afterScav: map[ChunkIdx][]BitRange{
- BaseChunkIdx: {{0, 1}, {11, 1}},
+ BaseChunkIdx: {{0, 128}},
},
- },
+ }
}
// Disable these tests on iOS since we have a small address space.
// See #46860.