Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2890.mcz==================== Summary ====================
Name: VMMaker.oscog-eem.2890
Author: eem
Time: 19 November 2020, 3:27:30.098527 pm
UUID: efbda991-7783-410b-a286-305ddf6fde8a
Ancestors: VMMaker.oscog-eem.2889
More effort is required to delete the unnecessary read before Spur is:instanceOf:compactClassIndex:.
=============== Diff against VMMaker.oscog-eem.2889 ===============
Item was removed:
- ----- Method: TParseNode>>collect: (in category 'enumerating') -----
- collect: aBlock
- | nodes |
- self halt. "This is a misnomer; should be deleted"
- nodes := OrderedCollection new.
- self nodesDo: [:n| (aBlock value: n) ifTrue: [nodes add: n]].
- ^nodes!
Item was changed:
+ ----- Method: TParseNode>>deny: (in category 'testing') -----
- ----- Method: TParseNode>>deny: (in category 'as yet unclassified') -----
deny: aBooleanOrBlock
aBooleanOrBlock value ifTrue: [AssertionFailure signal: 'Assertion failed']!
Item was changed:
----- Method: TSendNode>>hasSideEffect (in category 'testing') -----
hasSideEffect
+ "Answer if the parse tree rooted at this node has a side-effect or not.
+ We aassume most sends do, but filter-out arithmetic and certain reads."
+ (#( baseHeaderSize bytesPerOop bytesPerWord logBytesPerOop
+ numSmallIntegerBits numSmallIntegerTagBits numTagBits
+ shiftForWord tagMask wordSize) includes: selector) ifTrue:
+ [^false].
+ (#(#+ #- #* #/ #// #\\ #= #== #~= #~~ << >>
+ "These two important for Spur is:instanceOf:compactClassIndex: et al"
+ longAt: fetchPointer:ofObject:) includes: selector) ifFalse:
+ [^true].
+ ^receiver hasSideEffect or: [arguments first hasSideEffect]!
- "Answer if the parse tree rooted at this node has a side-effect or not."
- selector == #longAt: ifTrue: "Important for inlining Spur's isClassOfNonImm:equalTo:compactClassIndex:"
- [^arguments first hasSideEffect "a.k.a. arguments anySatisfy: [:node| node hasSideEffect]"].
- ^(#(#+ #- #* #/ #// #\\ #= #== #~= #~~ << >>) includes: selector) not!