[Vm-dev] VM Maker: VMMaker.oscog-eem.3290.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Jan 12 20:15:38 UTC 2023
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3290.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3290
Author: eem
Time: 12 January 2023, 12:15:15.665547 pm
UUID: 32a7e113-db4f-49be-889c-3b889248f0b6
Ancestors: VMMaker.oscog-eem.3289
Use a slightly better form for dealing with potential forwarding in the pushFullClosure bytecode.
=============== Diff against VMMaker.oscog-eem.3289 ===============
Item was changed:
----- Method: StackInterpreter>>extPushFullClosureBytecode (in category 'stack bytecodes') -----
extPushFullClosureBytecode
"255 11111111 xxxxxxxx siyyyyyy
push Closure Compiled block literal index xxxxxxxx (+ Extend A * 256)
numCopied yyyyyy
receiverOnStack: s = 1
ignoreOuterContext: i = 1
The compiler has pushed the values to be copied, if any. The receiver has been pushed on stack before if specified.
Create a Closure with space for the copiedValues and pop numCopied values off the stack into the closure.
Sets outerContext, compiledBlock, numArgs and receiver as specified.."
| compiledBlockLiteralIndex compiledBlock byte numArgs numCopied receiverIsOnStack ignoreContext |
compiledBlockLiteralIndex := self fetchByte + (extA << 8).
extA := 0.
+ compiledBlock := self followLiteral: compiledBlockLiteralIndex ofMethod: method.
- compiledBlock := objectMemory followMaybeForwarded: (self literal: compiledBlockLiteralIndex).
self assert: (objectMemory isOopCompiledMethod: compiledBlock).
numArgs := self argumentCountOf: compiledBlock.
byte := self fetchByte.
numCopied := byte bitAnd: 1<< 6 - 1.
receiverIsOnStack := byte anyMask: 1 << 7.
ignoreContext := byte anyMask: 1 << 6.
self pushFullClosureNumArgs: numArgs copiedValues: numCopied compiledBlock: compiledBlock receiverIsOnStack: receiverIsOnStack ignoreContext: ignoreContext!
More information about the Vm-dev
mailing list