[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