-
Notifications
You must be signed in to change notification settings - Fork 67
/
SpurPlanningCompactorSimulator.class.st
50 lines (44 loc) · 1.72 KB
/
SpurPlanningCompactorSimulator.class.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Class {
#name : #SpurPlanningCompactorSimulator,
#superclass : #SpurPlanningCompactor,
#instVars : [
'interestingObj',
'relocationMap',
'sffsMode'
],
#category : #'VMMaker-SpurMemoryManagerSimulation'
}
{ #category : #private }
SpurPlanningCompactorSimulator >> check: obj [
<inline: true>
sffsMode ifNotNil: [self deny: ((manager isGrey: obj) or: [(manager isImmutable: obj) or: [manager isRemembered: obj]])].
obj = interestingObj ifTrue: [self halt].
"this debugged the misuse of the largest free chunk:"
"(manager checkForLeaks bitAnd: GCModeFull+GCModeFreeSpace) = GCModeFull ifTrue:
[self deny: ((manager isEnumerableObject: obj) and: [(manager heapMapAtWord: obj) = 0])]"
]
{ #category : #accessing }
SpurPlanningCompactorSimulator >> forceMultiPass [
sffsMode := #multiPass
]
{ #category : #accessing }
SpurPlanningCompactorSimulator >> interestingObj: obj [
interestingObj := obj
]
{ #category : #private }
SpurPlanningCompactorSimulator >> recordMovementOf: o to: toFinger savedFirstFieldPtr: savedFirstFieldPtr [
relocationMap ifNotNil: [:rm| rm at: o put: savedFirstFieldPtr]
]
{ #category : #accessing }
SpurPlanningCompactorSimulator >> recordMovements [
relocationMap := Dictionary new
]
{ #category : #'space management' }
SpurPlanningCompactorSimulator >> selectSavedFirstFieldsSpace [
"Override to make savedFirstFieldsSpace small enough for multi-pass compaction, if desired (for testing)."
super selectSavedFirstFieldsSpace.
"testRandomAssortment: et al create 1000 objects, aboput 5% pnned and about 33% reclaimable. Sp 512 objects should force multi-pass."
sffsMode == #multiPass ifTrue:
[savedFirstFieldsSpace limit: savedFirstFieldsSpace start + (512 * manager bytesPerOop).
biasForGC := false]
]