[Vm-dev] VM Maker: VMMaker.oscog-eem.3291.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Jan 12 21:03:33 UTC 2023
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3291.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3291
Author: eem
Time: 12 January 2023, 1:03:12.565231 pm
UUID: 815cbacd-2865-4024-987d-0b4974af3ed1
Ancestors: VMMaker.oscog-eem.3290
Merge VMMaker.oscog.seperateMarking-eem.3301
Given that better forwarding machinery was written over time, neaten StackInterpreter>>pushLiteralVariable: to use it. This is prompted by VMMaker.oscog.seperateMarking-eem.3300/VMMaker.oscog-eem.3290.
=============== Diff against VMMaker.oscog-eem.3290 ===============
Item was changed:
----- Method: StackInterpreter>>pushLiteralVariable: (in category 'stack bytecodes') -----
pushLiteralVariable: literalIndex
+ | litVar |
+ "In Spur:
+ push/store/popLiteralVariable all fetch a literal, and either read or write the literal's value field.
+ The fetch of the literal needs an explicit check (otherwise we would have to scan all literals in
+ all methods in the stack zone, and the entire method on return, and global variables are relatively
+ rare; in my work image 8.7% of literals are globals)."
+ litVar := self followLiteral: literalIndex ofMethod: method.
+ self internalPush: (objectMemory fetchPointer: ValueIndex ofObject: litVar)!
- objectMemory hasSpurMemoryManagerAPI
- ifTrue:
- [| litVar |
- "push/store/popLiteralVariable all fetch a literal, and either read or write the literal's value field.
- The fetch of the literal needs an explicit check (otherwise we would have to scan all literals in
- all methods in the stack zone, and the entire method on return, and global variables are relatively
- rare; in my work image 8.7% of literals are globals)."
- litVar := self literal: literalIndex.
- (objectMemory isForwarded: litVar) ifTrue:
- [litVar := self unfollow: litVar atIndex: literalIndex].
- self internalPush:
- (objectMemory fetchPointer: ValueIndex ofObject: litVar)]
- ifFalse:
- [self internalPush:
- (objectMemory fetchPointer: ValueIndex ofObject: (self literal: literalIndex))]!
More information about the Vm-dev
mailing list