From b4c4275905fe499677487856fff3bb865c694e34 Mon Sep 17 00:00:00 2001 From: Guille Polito Date: Fri, 29 Nov 2024 12:03:37 +0100 Subject: [PATCH 1/2] Simplify building of memory map --- smalltalksrc/VMMaker/SpurMemoryManager.class.st | 4 ++-- smalltalksrc/VMMaker/StackInterpreterSimulator.class.st | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/smalltalksrc/VMMaker/SpurMemoryManager.class.st b/smalltalksrc/VMMaker/SpurMemoryManager.class.st index df40628176..955b157235 100644 --- a/smalltalksrc/VMMaker/SpurMemoryManager.class.st +++ b/smalltalksrc/VMMaker/SpurMemoryManager.class.st @@ -4771,7 +4771,7 @@ SpurMemoryManager >> ensureMemoryManager [ - memoryManager ifNil: [ + ^ memoryManager ifNil: [ memoryManager := SlangMemoryManager new. memoryManager wordSize: self wordSize ] @@ -4787,7 +4787,7 @@ SpurMemoryManager >> ensureMemoryMap [ inSmalltalk: [ memoryMap := VMMemoryMap new. memoryMap objectMemory: self. - memoryMap memoryManager: memoryManager ]. + memoryMap memoryManager: self ensureMemoryManager ]. memoryMap initializeMemoryMap. ] diff --git a/smalltalksrc/VMMaker/StackInterpreterSimulator.class.st b/smalltalksrc/VMMaker/StackInterpreterSimulator.class.st index 3143922e00..2d336aa553 100644 --- a/smalltalksrc/VMMaker/StackInterpreterSimulator.class.st +++ b/smalltalksrc/VMMaker/StackInterpreterSimulator.class.st @@ -572,6 +572,13 @@ StackInterpreterSimulator >> endPCOf: aMethod [ ^end ] +{ #category : 'initialization' } +StackInterpreterSimulator >> ensureMemoryMap [ + + objectMemory ensureMemoryMap. + memoryManager := objectMemory memoryManager +] + { #category : 'interpreter shell' } StackInterpreterSimulator >> fetchByte [ ^objectMemory byteAt: (instructionPointer := instructionPointer + 1). From e9e2399ec96095e88feefe06c9d3b27e812578ac Mon Sep 17 00:00:00 2001 From: Guille Polito Date: Fri, 29 Nov 2024 12:24:47 +0100 Subject: [PATCH 2/2] Fix new space variables initialization for bootstrap --- .../VMMaker/SpurMemoryManager.class.st | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/smalltalksrc/VMMaker/SpurMemoryManager.class.st b/smalltalksrc/VMMaker/SpurMemoryManager.class.st index 955b157235..c92cd8a9e7 100644 --- a/smalltalksrc/VMMaker/SpurMemoryManager.class.st +++ b/smalltalksrc/VMMaker/SpurMemoryManager.class.st @@ -1946,6 +1946,21 @@ SpurMemoryManager >> allocateMemoryOfSize: memoryBytes initialAddress: initialAd ^ memoryManager allocate: memoryBytes desiredPosition: initialAddress ] +{ #category : 'initialization' } +SpurMemoryManager >> allocateMemoryOfSize: memoryBytes newSpaceSize: newSpaceBytes stackSize: stackBytes codeSize: codeBytes [ + "Add default values for bootstrapping" + + self + allocateMemoryOfSize: memoryBytes + newSpaceSize: newSpaceBytes + stackSize: stackBytes + codeSize: codeBytes + methodCacheSize: 0 + primitiveTraceLogSize: 0 + rumpCStackSize: 0 + permSpaceSize: 0 +] + { #category : 'initialization' } SpurMemoryManager >> allocateMemoryOfSize: memoryBytes newSpaceSize: newSpaceBytes stackSize: stackBytes codeSize: codeBytes methodCacheSize: methodCacheSize primitiveTraceLogSize: primitiveLogSize rumpCStackSize: rumpCStackSize permSpaceSize: permSpaceSize [ @@ -1978,10 +1993,6 @@ SpurMemoryManager >> allocateMemoryOfSize: memoryBytes newSpaceSize: newSpaceByt newSpaceActualBytes := memoryMap newSpaceEnd - memoryMap newSpaceStart. self assert: newSpaceActualBytes >= newSpaceBytes. - - freeStart := newSpaceActualBytes + memoryMap newSpaceStart. - - scavengeThreshold := memoryMap newSpaceStart. scavenger := SpurGenerationScavenger simulatorClass new. scavenger manager: self. @@ -1990,6 +2001,8 @@ SpurMemoryManager >> allocateMemoryOfSize: memoryBytes newSpaceSize: newSpaceByt newSpaceBytes: newSpaceActualBytes survivorBytes: newSpaceActualBytes // self scavengerDenominator. + self initializeNewSpaceVariables. + compactor := self class compactorClass simulatorClass new manager: self; yourself. @@ -11791,15 +11804,6 @@ SpurMemoryManager >> rtRefCountOf: obj put: refCount [ self subclassResponsibility ] -{ #category : 'debug support' } -SpurMemoryManager >> runLeakCheckerFor: gcModes [ - - ^self - inLineRunLeakCheckerFor: gcModes - excludeUnmarkedObjs: false - classIndicesShouldBeValid: true -] - { #category : 'debug support' } SpurMemoryManager >> runLeakCheckerFor: gcModes excludeUnmarkedObjs: excludeUnmarkedObjs classIndicesShouldBeValid: classIndicesShouldBeValid [