[Vm-dev] VM Maker: VMMaker.oscog-eem.1121.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Mar 25 23:29:52 UTC 2015
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1121.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1121
Author: eem
Time: 25 March 2015, 4:27:35.341 pm
UUID: 14447ec4-7c99-42e0-9c33-eeee7cd61b1a
Ancestors: VMMaker.oscog-eem.1120
Update a key comment.
=============== Diff against VMMaker.oscog-eem.1120 ===============
Item was changed:
----- Method: CoInterpreter>>executeCogBlock:closure:mayContextSwitch: (in category 'enilopmarts') -----
executeCogBlock: cogMethod closure: closure mayContextSwitch: mayContextSwitch
+ "Execute a block within a CogMethod. The caller has already pushed the block and
+ any arguments and the return pc. First push the return-to-interpreter trampoline,
+ then the entry-point and finally the receiver. We /do not/ push any register
+ argument(s) to reduce complications in block dispatch; effectively there are no
+ register arguments to blocks. Instead, the machine code block value primitives
+ push the reg args if necessary before dispatching to the block. Hence here, only
+ the receiver gets pushed. See genPrimitiveClosureValue"
- "Execute a block within a CogMethod. The caller has already pushed
- the block and any arguments and the return pc. First push the
- return-to-interpreter trampoline, then the entry-point and finally the
- register argument(s). Then jump to the block entry by executing a
- return instruction.
- In the simple jit only the receiver gets passed in registers, so only the
- receiver gets pushed."
<var: #cogMethod type: #'CogMethod *'>
cogit assertCStackWellAligned.
self assertValidExecutionPointe: instructionPointer r: framePointer s: stackPointer.
self ensurePushedInstructionPointer.
self push: cogMethod asInteger
+ (mayContextSwitch
ifTrue: [cogMethod blockEntryOffset]
ifFalse: [cogMethod blockEntryOffset - cogit noContextSwitchBlockEntryOffset]).
self push: closure.
cogit ceCallCogCodePopReceiverReg
"NOTREACHED"!
More information about the Vm-dev
mailing list