Skip to content

Commit

Permalink
Improving checks and adding CRumpStack
Browse files Browse the repository at this point in the history
  • Loading branch information
tesonep committed Mar 30, 2022
1 parent 7a50cba commit 81e5403
Show file tree
Hide file tree
Showing 9 changed files with 42 additions and 31 deletions.
10 changes: 1 addition & 9 deletions smalltalksrc/VMMaker/Spur32BitCoMemoryManager.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -74,15 +74,7 @@ Spur32BitCoMemoryManager >> checkMemoryMap [
Being young would cause them to be scavenged.
Being old would cause them to be remembered if stored into (but wait, they don't get stored into)."

self assert: (self isYoungObject: memoryMap newSpaceStart).
self assert: (self isYoungObject: memoryMap newSpaceEnd - self wordSize).
self assert: (self isOldObject: memoryMap newSpaceStart) not.
self assert: (self isOldObject: memoryMap newSpaceEnd - self wordSize) not.
self assert: (self isYoungObject: memoryMap newSpaceEnd) not.
self assert: (self isYoungObject: memoryMap oldSpaceStart) not.
self assert: (self isYoungObject: memoryMap oldSpaceEnd) not.
self assert: (self isOldObject: memoryMap oldSpaceStart).
self assert: (self isOldObject: memoryMap oldSpaceEnd).
super checkMemoryMap.

"we would like the following to be true, but we either choose one boundary check for
cogMethods vs objects (isMachineCodeFrame: et al) or one boundary check for
Expand Down
10 changes: 1 addition & 9 deletions smalltalksrc/VMMaker/Spur64BitCoMemoryManager.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -74,15 +74,7 @@ Spur64BitCoMemoryManager >> checkMemoryMap [
Being young would cause them to be scavenged.
Being old would cause them to be remembered if stored into (but wait, they don't get stored into)."

self assert: (self isYoungObject: memoryMap newSpaceStart).
self assert: (self isYoungObject: memoryMap newSpaceEnd - self wordSize).
self assert: (self isOldObject: memoryMap newSpaceStart) not.
self assert: (self isOldObject: memoryMap newSpaceEnd - self wordSize) not.
self assert: (self isYoungObject: memoryMap newSpaceEnd) not.
self assert: (self isYoungObject: memoryMap oldSpaceStart) not.
self assert: (self isYoungObject: memoryMap oldSpaceEnd) not.
self assert: (self isOldObject: memoryMap oldSpaceStart).
self assert: (self isOldObject: memoryMap oldSpaceEnd).
super checkMemoryMap.

"we would like the following to be true, but we either choose one boundary check for
cogMethods vs objects (isMachineCodeFrame: et al) or one boundary check for
Expand Down
14 changes: 2 additions & 12 deletions smalltalksrc/VMMaker/SpurMemoryManager.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -3390,18 +3390,8 @@ SpurMemoryManager >> checkHeapIntegrity: excludeUnmarkedObjs classIndicesShouldB
{ #category : #'debug support' }
SpurMemoryManager >> checkMemoryMap [
self assert: (self isYoungObject: memoryMap newSpaceStart).
self assert: (self isYoungObject: memoryMap newSpaceEnd - self wordSize).
self assert: (self isOldObject: memoryMap newSpaceStart) not.
self assert: (self isOldObject: memoryMap newSpaceEnd - self wordSize) not.
self assert: (self isYoungObject: memoryMap newSpaceEnd) not.
self assert: (self isYoungObject: memoryMap oldSpaceStart) not.
self assert: (self isYoungObject: memoryMap oldSpaceEnd) not.
self assert: (self isOldObject: memoryMap newSpaceEnd).
self assert: (self isOldObject: memoryMap oldSpaceStart).
self flag: #todo.
" self assert: (self isOldObject: memoryMap oldSpaceEnd)"
self getMemoryMap checkMemoryMap
]
{ #category : #'debug support' }
Expand Down
3 changes: 3 additions & 0 deletions smalltalksrc/VMMaker/VMClass.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -876,6 +876,9 @@ VMClass >> majorVersion [
VMClass >> malloc: size [
<doNotGenerate>
| address region |

size = 0 ifTrue: [ ^ nil ].

address := memoryManager allocate: size.
region := memoryManager regionAtAddress: address.
^ CNewArrayAccessor new
Expand Down
16 changes: 16 additions & 0 deletions smalltalksrc/VMMaker/VMMemoryMap.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,22 @@ VMMemoryMap >> allocationReserve: anInteger [
allocationReserve := anInteger
]

{ #category : #asserting }
VMMemoryMap >> checkMemoryMap [

self assert: (self isYoungObject: self newSpaceStart).
self assert: (self isYoungObject: self newSpaceEnd - memoryMapConfiguration wordSize).
self assert: (self isOldObject: self newSpaceStart) not.
self assert: (self isOldObject: self newSpaceEnd - memoryMapConfiguration wordSize) not.
self assert: (self isYoungObject: self newSpaceEnd) not.
self assert: (self isYoungObject: self oldSpaceStart) not.
self assert: (self isYoungObject: self oldSpaceEnd) not.
self assert: (self isOldObject: self oldSpaceStart).
self assert: (self isOldObject: self oldSpaceEnd - memoryMapConfiguration wordSize).
self assert: (self isOldObject: self oldSpaceEnd) not.

]

{ #category : #accessing }
VMMemoryMap >> initialHeadroom [
^ initialHeadroom
Expand Down
6 changes: 6 additions & 0 deletions smalltalksrc/VMMaker/VMMemoryMapConfiguration.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,9 @@ VMMemoryMapConfiguration >> stackPagesInitialAddress [

^ self subclassResponsibility
]

{ #category : #accessing }
VMMemoryMapConfiguration >> wordSize [

^ self subclassResponsibility
]
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,9 @@ VMMemoryMapConfigurationFor32Bits >> permSpaceInitialAddress [

^ 16r80000000 "(2048 MB)"
]

{ #category : #accessing }
VMMemoryMapConfigurationFor32Bits >> wordSize [

^ 4
]
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,9 @@ VMMemoryMapConfigurationFor64Bits >> stackPagesInitialAddress [

^ 16r200000000 "8GB"
]

{ #category : #accessing }
VMMemoryMapConfigurationFor64Bits >> wordSize [

^ 8
]
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ VMSimulatedEnvironmentBuilder >> doBuild [
newSpaceSize := self roundToPageSize: (edenSize * 7 / 5).
stackSpaceSize := 9 * 4096.
methodCacheSize := 4096 * wordSize.
rumpCStackSize := 0.
rumpCStackSize := 4096.

initialAddress := 16r1000000.

Expand Down

0 comments on commit 81e5403

Please sign in to comment.