Skip to content

Commit

Permalink
Refactor + testing missing cases
Browse files Browse the repository at this point in the history
  • Loading branch information
PalumboN committed Apr 19, 2022
1 parent e71e967 commit 97880e2
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 24 deletions.
7 changes: 4 additions & 3 deletions smalltalksrc/VMMaker/SpurMemoryManager.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -872,8 +872,9 @@ SpurMemoryManager class >> initialize [
ObjStackLimit := ObjStackPageSlots - ObjStackFixedSlots.
"The hiddenHootsObject contains the classTable pages and up to 8 additional objects.
Currently we use four; the three objStacks, the mark stack, the weaklings and the
mourn queue, and the rememberedSet."
Currently we use five:
- three objStacks: mark stack, weaklings and mourn queue
- two remembered sets: for new and old spaces"
MarkStackRootIndex := self basicNew classTableRootSlots.
WeaklingStackRootIndex := MarkStackRootIndex + 1.
MournQueueRootIndex := MarkStackRootIndex + 2.
Expand Down Expand Up @@ -8926,7 +8927,7 @@ SpurMemoryManager >> newSpaceRefCountMask [
{ #category : #accessing }
SpurMemoryManager >> newSpaceRememberedSet [
^ scavenger rememberedSet
^ newSpaceRememberedSet
]
{ #category : #accessing }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ VMSpurOldSpaceGarbageCollectorTest >> testAllocateObjectWithFreeSpaceSizeShouldP
self assert: memory needGCFlag
]

{ #category : #tests }
{ #category : #'tests-OldSpaceSize' }
VMSpurOldSpaceGarbageCollectorTest >> testAnOldObjectNotReferencedShouldBeCollected [

| deltaFreeSpace |
Expand All @@ -138,7 +138,7 @@ VMSpurOldSpaceGarbageCollectorTest >> testAnOldObjectReferencedFromNewObjectShou
self assert: deltaFreeSpace equals: 0
]

{ #category : #tests }
{ #category : #'tests-OldSpaceSize' }
VMSpurOldSpaceGarbageCollectorTest >> testAnOldObjectReferencedFromRememberedPermObjectShouldBeKept [

| oldObjectSize deltaFreeSpace |
Expand All @@ -165,7 +165,7 @@ VMSpurOldSpaceGarbageCollectorTest >> testAnOldObjectReferencedFromUnreferencedC
self assert: deltaFreeSpace equals: 0
]

{ #category : #tests }
{ #category : #'tests-OldSpaceSize' }
VMSpurOldSpaceGarbageCollectorTest >> testAnOldObjectReferencedFromVMVariableShouldBeKept [

| oldOop objectSize deltaFreeSpace |
Expand Down
54 changes: 36 additions & 18 deletions smalltalksrc/VMMakerTests/VMSpurScavengerTest.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -391,24 +391,6 @@ VMSpurScavengerTest >> testReferencedObjectShouldSurviveScavenge [
self assert: (memory hashBitsOf: newReferencedObjectAddress) equals: referencedObjectHash
]

{ #category : #'tests-6-scavenge-rememberedset' }
VMSpurScavengerTest >> testRememberedObjectShouldSurviveScanvenge [

| oldObjectAddress rememberedObjectAddress rememberedObjectHash newRememberedObjectAddress |

"Create a young object and reference it from the old object"
oldObjectAddress := self newOldSpaceObjectWithSlots: 1.
rememberedObjectAddress := self newZeroSizedObject.
rememberedObjectHash := memory hashBitsOf: rememberedObjectAddress.
memory storePointer: 0 ofObject: oldObjectAddress withValue: rememberedObjectAddress.

memory doScavenge: 1 "TenureByAge".

"Remap our object address to its new location"
newRememberedObjectAddress := memory remapObj: rememberedObjectAddress.
self assert: (memory hashBitsOf: newRememberedObjectAddress) equals: rememberedObjectHash
]

{ #category : #'tests-6-scavenge-rememberedset' }
VMSpurScavengerTest >> testScanvengeTenureByAgeWithRSInRedZoneShouldShrink [

Expand Down Expand Up @@ -659,3 +641,39 @@ VMSpurScavengerTest >> testUnreferencedObjectGraphShouldNotSurviveScavenge [

self assertPastSpaceIsEmpty
]

{ #category : #'tests-6-scavenge-rememberedset' }
VMSpurScavengerTest >> testYoungObjectRememberedFromOldObjectShouldSurviveScanvenge [

| oldObjectAddress rememberedObjectAddress rememberedObjectHash newRememberedObjectAddress |

"Create a young object and reference it from the old object"
oldObjectAddress := self newOldSpaceObjectWithSlots: 1.
rememberedObjectAddress := self newZeroSizedObject.
rememberedObjectHash := memory hashBitsOf: rememberedObjectAddress.
memory storePointer: 0 ofObject: oldObjectAddress withValue: rememberedObjectAddress.

memory doScavenge: 1 "TenureByAge".

"Remap our object address to its new location"
newRememberedObjectAddress := memory remapObj: rememberedObjectAddress.
self assert: (memory hashBitsOf: newRememberedObjectAddress) equals: rememberedObjectHash
]

{ #category : #'tests-6-scavenge-rememberedset' }
VMSpurScavengerTest >> testYoungObjectRememberedFromPermanentObjectShouldSurviveScanvenge [

| permObjectAddress rememberedObjectAddress rememberedObjectHash newRememberedObjectAddress |

"Create a young object and reference it from the perm object"
permObjectAddress := self newPermanentObjectWithSlots: 1.
rememberedObjectAddress := self newZeroSizedObject.
rememberedObjectHash := memory hashBitsOf: rememberedObjectAddress.
memory storePointer: 0 ofObject: permObjectAddress withValue: rememberedObjectAddress.

memory doScavenge: 1 "TenureByAge".

"Remap our object address to its new location"
newRememberedObjectAddress := memory remapObj: rememberedObjectAddress.
self assert: (memory hashBitsOf: newRememberedObjectAddress) equals: rememberedObjectHash
]

0 comments on commit 97880e2

Please sign in to comment.