[Vm-dev] VM Maker: VMMaker.oscog-eem.1926.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Aug 31 11:37:06 UTC 2016

Eliot Miranda uploaded a new version of VMMaker to project VM Maker:

==================== Summary ====================

Name: VMMaker.oscog-eem.1926
Author: eem
Time: 31 August 2016, 12:34:22.439536 pm
UUID: e25b6c8f-9742-4011-a948-d27ae483a098
Ancestors: VMMaker.oscog-cb.1925

Comment the register saving convention for  the context inst var access trampolines in the JIT.

=============== Diff against VMMaker.oscog-cb.1925 ===============

Item was changed:
  ----- Method: Cogit>>generateRunTimeTrampolines (in category 'initialization') -----
  	"Generate the run-time entries at the base of the native code zone and update the base."
  	ceSendMustBeBooleanAddFalseTrampoline := self genMustBeBooleanTrampolineFor: objectMemory falseObject
  														called: 'ceSendMustBeBooleanAddFalseTrampoline'.
  	ceSendMustBeBooleanAddTrueTrampoline := self genMustBeBooleanTrampolineFor: objectMemory trueObject
  														called: 'ceSendMustBeBooleanAddTrueTrampoline'.
  	ceNonLocalReturnTrampoline := self genNonLocalReturnTrampoline.
  	ceCheckForInterruptTrampoline := self genCheckForInterruptsTrampoline.
+ 	"Neither of the context inst var access trampolines save registers.  Their operation could cause
+ 	 arbitrary update of stack frames, so the assumption is that callers flush the stack before calling
+ 	 the context inst var access trampolines, and that everything except the result is dead afterwards."
  	ceFetchContextInstVarTrampoline := self genTrampolineFor: #ceContext:instVar:
  											called: 'ceFetchContextInstVarTrampoline'
  											arg: ReceiverResultReg
  											arg: SendNumArgsReg
  											result: SendNumArgsReg.
  	ceStoreContextInstVarTrampoline := self genTrampolineFor: #ceContext:instVar:value:
  											called: 'ceStoreContextInstVarTrampoline'
  											arg: ReceiverResultReg
  											arg: SendNumArgsReg
  											arg: ClassReg
  											result: ReceiverResultReg. "to keep ReceiverResultReg live.".
  	ceCannotResumeTrampoline := self genTrampolineFor: #ceCannotResume
  											called: 'ceCannotResumeTrampoline'.
  	"These two are unusual; they are reached by return instructions."
  	ceBaseFrameReturnTrampoline := self genReturnTrampolineFor: #ceBaseFrameReturn:
  											called: 'ceBaseFrameReturnTrampoline'
  											arg: ReceiverResultReg.
  	ceReturnToInterpreterTrampoline := self
  											genReturnTrampolineFor: #ceReturnToInterpreter:
  											called: 'ceReturnToInterpreterTrampoline'
  											arg: ReceiverResultReg!

More information about the Vm-dev mailing list