[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:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1926.mcz
==================== 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') -----
generateRunTimeTrampolines
"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