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

commits at source.squeak.org commits at source.squeak.org
Tue Jul 7 19:55:45 UTC 2015


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1406.mcz

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

Name: VMMaker.oscog-eem.1406
Author: eem
Time: 7 July 2015, 12:53:22.553 pm
UUID: 8623e529-d65d-4cc1-b62a-477bffeb453d
Ancestors: VMMaker.oscog-eem.1405

Implement the relevant implicitReceiveCacheAt: for the ARM Cogits.  Make this work for in-image compilation too.

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

Item was added:
+ ----- Method: CogInLineLiteralsARMCompiler>>implicitReceiveCacheAt: (in category 'inline cacheing') -----
+ implicitReceiveCacheAt: callSiteReturnAddress
+ 	"Answer the implicit receiver cache for the return address
+ 	 of a call to one of the ceImplicitReceiver... trampolines."
+ 	self assert: (self instructionIsBL: (self instructionBeforeAddress: callSiteReturnAddress)).
+ 	^self extract32BitOperandFrom4InstructionsPreceeding: callSiteReturnAddress - 4!

Item was added:
+ ----- Method: CogOutOfLineLiteralsARMCompiler>>implicitReceiveCacheAt: (in category 'inline cacheing') -----
+ implicitReceiveCacheAt: callSiteReturnAddress
+ 	"Answer the implicit receiver cache for the return address
+ 	 of a call to one of the ceImplicitReceiver... trampolines."
+ 	<inline: true>
+ 	^objectMemory longAt: (self pcRelativeAddressAt: callSiteReturnAddress - 8)!

Item was changed:
  ----- Method: Cogit>>selectorForSendAt:annotation: (in category 'simulation only') -----
  selectorForSendAt: mcpc annotation: annotation
  	<doNotGenerate>
  	| entryPoint offset targetMethod selector |
  	entryPoint := backEnd callTargetFromReturnAddress: mcpc asInteger.
  	selector := entryPoint > methodZoneBase
  					ifTrue: "It's a linked send."
  						[self
  							offsetAndSendTableFor: entryPoint
  							annotation: annotation
  							into: [:off :table| offset := off].
  						targetMethod := self cCoerceSimple: entryPoint - offset to: #'CogMethod *'.
  						targetMethod selector]
  					ifFalse:
  						[backEnd inlineCacheTagAt: mcpc].
+ 	^(annotation ~= IsNSSendCall and: [coInterpreter isCurrentImageFacade])
- 	^coInterpreter isCurrentImageFacade
  		ifTrue: [coInterpreter objectForOop: selector]
  		ifFalse: [selector]!

Item was added:
+ ----- Method: CurrentImageCoInterpreterFacade>>isInOldSpace: (in category 'testing') -----
+ isInOldSpace: address
+ 	^objectMemory isInOldSpace: address!



More information about the Vm-dev mailing list