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

commits at source.squeak.org commits at source.squeak.org
Thu Jul 10 02:33:08 UTC 2014

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

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

Name: VMMaker.oscog-eem.813
Author: eem
Time: 9 July 2014, 7:30:25.276 pm
UUID: 0d763517-77f2-44e3-a5d3-317d784734c8
Ancestors: VMMaker.oscog-eem.812

Fix comment for ceImplciitReceiverTrampoline.
Correct expr -4 to expr - 4.

=============== Diff against VMMaker.oscog-eem.812 ===============

Item was changed:
  ----- Method: CogARMCompiler>>inlineCacheTagAt: (in category 'inline cacheing') -----
  inlineCacheTagAt: callSiteReturnAddress
  	"Answer the inline cache tag for the return address of a send."
+ 	^self literalBeforeFollowingAddress: callSiteReturnAddress - 4!
- 	^self literalBeforeFollowingAddress: callSiteReturnAddress -4  !

Item was changed:
  ----- Method: Cogit>>generateNewspeakRuntime (in category 'initialization') -----
  	<option: #NewspeakVM>
  	| jumpMiss jumpItsTheReceiverStupid retpcReg |
  	<var: #jumpMiss type: #'AbstractInstruction *'>
  	<var: #jumpItsTheReceiverStupid type: #'AbstractInstruction *'>
  	"Generate the non-send runtime support for Newspeak, explicit outer and implicit receiver.
  	 The dynamic frequency of explicit outer is so low we merely call an interpreter routine."
  	ceExplicitReceiverTrampoline := self genTrampolineFor: #ceExplicitReceiverAt:
  										called: 'ceExplicitReceiverTrampoline'
  										arg: SendNumArgsReg
  										result: ReceiverResultReg.
  	"Cached push implicit receiver implementation.  Caller looks like
+ 				mov selector, SendNumArgsReg
- 				mov selector, ClassReg
  				call ceImplicitReceiver
  				br continue
  		Lclass:	.word
  		Lmixin::	.word
  	 If class tag matches class of receiver then mixin contains either 0 or the implicit receiver.
  	 If 0, answer the actual receiver, otherwise the mixin.
  	 Generate the class fetch and cache probe inline for speed.
  	 Smashes Arg1Reg, RegClass and caller-saved regs."
  	opcodeIndex := 0.
  	self MoveMw: FoxMFReceiver r: FPReg R: ReceiverResultReg.
  		genGetInlineCacheClassTagFrom: ReceiverResultReg
  		into: ClassReg
  		forEntry: false.
  	backEnd hasLinkRegister
  		ifTrue: [retpcReg := LinkReg]
  		ifFalse: [self MoveMw: 0 r: SPReg R: (retpcReg := TempReg)].
  	self MoveMw: 0 r: SPReg R: retpcReg.
  	self MoveMw: backEnd jumpShortByteSize r: retpcReg R: Arg1Reg.
  	self CmpR: ClassReg R: Arg1Reg.
  	jumpMiss := self JumpNonZero: 0.
  	self MoveMw: backEnd jumpShortByteSize + BytesPerOop r: retpcReg R: ClassReg.
  	self CmpCq: 0 R: ClassReg.
  	jumpItsTheReceiverStupid := self JumpZero: 0.
  	self MoveR: ClassReg R: ReceiverResultReg.
  	jumpItsTheReceiverStupid jmpTarget: (self RetN: 0).
  	jumpMiss jmpTarget: self Label.
  	ceImplicitReceiverTrampoline := self
  										genTrampolineFor: #ceImplicitReceiverFor:receiver:
  										called: 'ceImplicitReceiverTrampoline'
  										numArgs: 2
  										arg: SendNumArgsReg
  										arg: ReceiverResultReg
  										arg: nil
  										arg: nil
  										saveRegs: false
  										pushLinkReg: true
  										resultReg: ReceiverResultReg
  										appendOpcodes: true!

More information about the Vm-dev mailing list