Tom Braun uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog.seperateMarking-WoC.3333.mcz
==================== Summary ====================
Name: VMMaker.oscog.seperateMarking-WoC.3333 Author: WoC Time: 7 July 2023, 2:19:22.047699 pm UUID: 4b671bad-1b61-4195-b33d-f3e6b0f88166 Ancestors: VMMaker.oscog.seperateMarking-WoC.3332
added tricolor barrier to genPrimitiveString Replace
=============== Diff against VMMaker.oscog.seperateMarking-WoC.3332 ===============
Item was changed: CogObjectRepresentation subclass: #CogObjectRepresentationForSpur + instanceVariableNames: 'ceRetractWavefrontTrampoline ceTricolorCheckTrampoline ceScheduleScavengeTrampoline ceSmallActiveContextInMethodTrampoline ceSmallActiveContextInBlockTrampoline ceSmallActiveContextInFullBlockTrampoline ceLargeActiveContextInMethodTrampoline ceLargeActiveContextInBlockTrampoline ceLargeActiveContextInFullBlockTrampoline ceStoreCheckContextReceiverTrampoline ceStoreTrampolines ceNewHashTrampoline ceInlineNewHashTrampoline' - instanceVariableNames: 'ceTricolorCheckTrampoline ceScheduleScavengeTrampoline ceSmallActiveContextInMethodTrampoline ceSmallActiveContextInBlockTrampoline ceSmallActiveContextInFullBlockTrampoline ceLargeActiveContextInMethodTrampoline ceLargeActiveContextInBlockTrampoline ceLargeActiveContextInFullBlockTrampoline ceStoreCheckContextReceiverTrampoline ceStoreTrampolines ceNewHashTrampoline ceInlineNewHashTrampoline' classVariableNames: 'CheckRememberedInTrampoline NumStoreTrampolines' poolDictionaries: 'VMBytecodeConstants VMSqueakClassIndices' category: 'VMMaker-JIT'!
Item was changed: ----- Method: CogObjectRepresentationForSpur>>genPrimitiveStringReplace (in category 'primitive generators') ----- (excessive size, no diff calculated)
Item was added: + ----- Method: CogObjectRepresentationForSpur>>genRetractWavefrontTrampoline (in category 'initialization') ----- + genRetractWavefrontTrampoline + + <inline: true> + "SIM_ prefix comes from static polymorphism. unfortunately it is necessary :(" + ^cogit + genTrampolineFor: #retractWavefrontFrom:startingAt: + called: 'ceRetractWavefrontTrampoline' + numArgs: 1 + arg: ReceiverResultReg + arg: Arg0Reg + arg: nil + arg: nil + regsToSave: (CallerSavedRegisterMask bitClear: (cogit registerMaskFor: ReceiverResultReg)) + pushLinkReg: true + resultReg: NoReg + appendOpcodes: false!
Item was changed: ----- Method: CogObjectRepresentationForSpur>>generateObjectRepresentationTrampolines (in category 'initialization') ----- generateObjectRepresentationTrampolines "Do the store check. Answer the argument for the benefit of the code generator; ReceiverResultReg may be caller-saved and hence smashed by this call. Answering it allows the code generator to reload ReceiverResultReg cheaply. In Spur the only thing we leave to the run-time is adding the receiver to the remembered set and setting its isRemembered bit." <staticallyResolveReceiver: 'objectMemory gc' to: #SpurIncrementalGarbageCollector> self cppIf: IMMUTABILITY ifTrue: [self cCode: [] inSmalltalk: [ceStoreTrampolines := CArrayAccessor on: (Array new: NumStoreTrampolines)]. 0 to: NumStoreTrampolines - 1 do: [:instVarIndex | ceStoreTrampolines at: instVarIndex put: (self genStoreTrampolineCalled: (cogit trampolineName: 'ceStoreTrampoline' numArgs: instVarIndex limit: NumStoreTrampolines - 2) instVarIndex: instVarIndex)]]. ceNewHashTrampoline := self genNewHashTrampoline: false called: 'ceNewHash'. SistaVM ifTrue: [ceInlineNewHashTrampoline := self genNewHashTrampoline: true called: 'ceInlineNewHash']. ceStoreCheckTrampoline := self genStoreCheckTrampoline. objectMemory gc isIncremental + ifTrue: [ceTricolorCheckTrampoline := self genTricolorCheckTrampoline. + ceRetractWavefrontTrampoline := self genRetractWavefrontTrampoline]. - ifTrue: [ceTricolorCheckTrampoline := self genTricolorCheckTrampoline]. ceStoreCheckContextReceiverTrampoline := self genStoreCheckContextReceiverTrampoline. ceScheduleScavengeTrampoline := cogit genTrampolineFor: #ceScheduleScavenge called: 'ceScheduleScavengeTrampoline' regsToSave: CallerSavedRegisterMask. ceSmallActiveContextInMethodTrampoline := self genActiveContextTrampolineLarge: false inBlock: 0 called: 'ceSmallMethodContext'. ceSmallActiveContextInBlockTrampoline := self genActiveContextTrampolineLarge: false inBlock: InVanillaBlock called: 'ceSmallBlockContext'. SistaV1BytecodeSet ifTrue: [ceSmallActiveContextInFullBlockTrampoline := self genActiveContextTrampolineLarge: false inBlock: InFullBlock called: 'ceSmallFullBlockContext']. ceLargeActiveContextInMethodTrampoline := self genActiveContextTrampolineLarge: true inBlock: 0 called: 'ceLargeMethodContext'. ceLargeActiveContextInBlockTrampoline := self genActiveContextTrampolineLarge: true inBlock: InVanillaBlock called: 'ceLargeBlockContext'. SistaV1BytecodeSet ifTrue: [ceLargeActiveContextInFullBlockTrampoline := self genActiveContextTrampolineLarge: true inBlock: InFullBlock called: 'ceLargeFullBlockContext']. LowcodeVM ifTrue: [ self generateLowcodeObjectTrampolines ]!
Item was added: + ----- Method: SpurIncrementalGarbageCollector>>retractWavefrontFrom:startingAt: (in category 'as yet unclassified') ----- + retractWavefrontFrom: objOop startingAt: index + + "inspired by Boehm write barrier. Retract the color of an already black object. Do not unmark it, as + we want to be smart and continue marking from the given index. + This method is currently intended for genPrimitiveStringReplace and should not be used from anywhere else" + <api> + self assert: (manager isOldObject: objOop). + self assert: (marker isCurrentlyMarking). + (manager isMarked: objOop) + ifTrue: [ + manager push: objOop onObjStack: manager markStack. + manager + push: (manager integerObjectOf: index) + onObjStack: manager markStack]!
Item was changed: ----- Method: SpurIncrementalMarker>>isCurrentlyMarking (in category 'accessing') ----- isCurrentlyMarking
+ <cmacro: '() GIV(isCurrentlyMarking)'> ^ isCurrentlyMarking!
Item was added: + ----- Method: SpurMemoryManager>>retractWavefrontFrom:startingAt: (in category 'cog jit support') ----- + retractWavefrontFrom: objOop startingAt: index + + <doNotGenerate> + gc retractWavefrontFrom: objOop startingAt: index!
Item was changed: ----- Method: VMMaker class>>generateSqueakSpurIncrementalCog64VM (in category 'configurations') ----- generateSqueakSpurIncrementalCog64VM "No primitives since we can use those for the Cog VM" ^VMMaker generate: CoInterpreter and: StackToRegisterMappingCogit with: #(ObjectMemory Spur64BitCoMemoryManager MULTIPLEBYTECODESETS true TempVectReadBarrier false + gcClass SpurIncrementalGarbageCollector bytecodeTableInitializer initializeBytecodeTableForSqueakV3PlusClosuresSistaV1Hybrid) to: self sourceTree, '/src/spur64.cog' platformDir: self sourceTree, '/platforms' including:#()!
vm-dev@lists.squeakfoundation.org