[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