Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3116.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3116 Author: eem Time: 1 December 2021, 11:07:46.469774 am UUID: d757936e-c3f3-48be-9435-9a3a60b14615 Ancestors: VMMaker.oscog-eem.3115
Spur: eliminate duplicate enableObjectEnumerationFrom:'s in both senders of allEntitiesFrom:do:.
Slang: TMethod's writtenToGlobalVarsCache should be voided more agressively to ensure endOfMemory is inlined in allEntitiesFrom:do:.
=============== Diff against VMMaker.oscog-eem.3115 ===============
Item was changed: ----- Method: SpurMemoryManager>>allObjectsDo: (in category 'object enumeration') ----- allObjectsDo: aBlock <inline: true> | startObject | startObject := self objectStartingAt: self startAddressForBridgedHeapEnumeration. - self enableObjectEnumerationFrom: startObject. self allEntitiesFrom: startObject do: [:objOop| (self isEnumerableObject: objOop) ifTrue: [aBlock value: objOop]]!
Item was changed: ----- Method: SpurMemoryManager>>allObjectsDoSafely: (in category 'object enumeration') ----- allObjectsDoSafely: aBlock "Enumerate, not being confised by forwarding pointers. This is chosen for compatiblity with [New]Objectmemory, but the semantics differ. Here we're interested in enumerating ordinary objects, ignoring forwarding pointers, and puns." <inline: true> | startObject | startObject := self objectStartingAt: self startAddressForBridgedHeapEnumeration. - self enableObjectEnumerationFrom: startObject. self allEntitiesFrom: startObject do: [:objOop| (self isNormalObject: objOop) ifTrue: [aBlock value: objOop]]!
Item was changed: ----- Method: TMethod>>maySubstituteGlobal:in: (in category 'inlining support') ----- maySubstituteGlobal: globalVar in: aCodeGen "We can substitute globalVar into this method provided globalVar is only read, not written."
+ writtenToGlobalVarsCache ifNil: - writtenToGlobalVarsCache = nil ifTrue: [self computePossibleSideEffectsInto: (Set new: 50) visited: (Set new: 50) in: aCodeGen]. ^(writtenToGlobalVarsCache includes: globalVar) not!
Item was changed: ----- Method: TMethod>>tryToInlineMethodsIn: (in category 'inlining') ----- tryToInlineMethodsIn: aCodeGen "Expand any (complete) inline methods sent by this method. Set the complete flag when all inlining has been done. Answer if something was inlined."
self definedAsMacro ifTrue: [complete ifTrue: [^false]. ^complete := true].
^aCodeGen pushScope: declarations while: [| didSomething statementLists | self ensureConditionalAssignmentsAreTransformedIn: aCodeGen. didSomething := self tryToInlineMethodStatementsIn: aCodeGen statementListsInto: [:stmtLists| statementLists := stmtLists]. didSomething := (self tryToInlineMethodExpressionsIn: aCodeGen) or: [didSomething].
- didSomething ifTrue: - [writtenToGlobalVarsCache := nil]. - complete ifFalse: [self checkForCompletenessIn: aCodeGen. complete ifTrue: [didSomething := true]]. "marking a method complete is progress" + + didSomething ifTrue: + [writtenToGlobalVarsCache := nil]. + didSomething]!
vm-dev@lists.squeakfoundation.org