/
SpurGenerationScavengerSimulator.class.st
70 lines (59 loc) · 1.76 KB
/
SpurGenerationScavengerSimulator.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Class {
#name : #SpurGenerationScavengerSimulator,
#superclass : #SpurGenerationScavenger,
#instVars : [
'cameFrom'
],
#category : #'VMMaker-SpurMemoryManagerSimulation'
}
{ #category : #accessing }
SpurGenerationScavengerSimulator >> cameFrom [
^ cameFrom
]
{ #category : #accessing }
SpurGenerationScavengerSimulator >> cameFrom: anObject [
cameFrom := anObject
]
{ #category : #'remembered set' }
SpurGenerationScavengerSimulator >> computeRefCountToShrinkRT [
self halt.
^super computeRefCountToShrinkRT
]
{ #category : #scavenger }
SpurGenerationScavengerSimulator >> copyAndForward: survivor [
| relocatedOop |
relocatedOop := super copyAndForward: survivor.
cameFrom ifNotNil:
[cameFrom at: relocatedOop put: survivor].
^relocatedOop
]
{ #category : #scavenger }
SpurGenerationScavengerSimulator >> copyAndForwardMourner: survivor [
| relocatedOop |
relocatedOop := super copyAndForwardMourner: survivor.
cameFrom ifNotNil:
[cameFrom at: relocatedOop put: survivor].
^relocatedOop
]
{ #category : #initialization }
SpurGenerationScavengerSimulator >> manager: aSpurNBitMMXEndianSimulator [
manager := aSpurNBitMMXEndianSimulator.
aSpurNBitMMXEndianSimulator coInterpreter ifNotNil:
[:coint| coInterpreter := coint]
]
{ #category : #scavenger }
SpurGenerationScavengerSimulator >> recordMovements [
cameFrom := Dictionary new
]
{ #category : #accessing }
SpurGenerationScavengerSimulator >> rememberedSet [
^rememberedSet
]
{ #category : #scavenger }
SpurGenerationScavengerSimulator >> scavenge: tenuringCriterion [
manager bootstrapping ifFalse:
[coInterpreter transcript nextPutAll: 'scavenging('; print: manager statScavenges; nextPutAll: ')...'; flush.
cameFrom ifNotNil:
[cameFrom := Dictionary new]].
^super scavenge: tenuringCriterion
]