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

commits at source.squeak.org commits at source.squeak.org
Sat Dec 6 04:27:24 UTC 2014


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

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

Name: VMMaker.oscog-eem.970
Author: eem
Time: 5 December 2014, 8:22:43.499 pm
UUID: 3869e39d-0172-4f38-9db5-cdca677eab92
Ancestors: VMMaker.oscog-eem.969

Revert those two cases; they were already covered.

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

Item was changed:
  ----- Method: Cogit>>compileCPIC:Case0:Case1Method:tag:isMNUCase:numArgs: (in category 'in-line cacheing') -----
  compileCPIC: cPIC Case0: case0CogMethod Case1Method: case1Method tag: case1Tag isMNUCase: isMNUCase numArgs: numArgs
  	"Compile the code for a two-case PIC for case0CogMethod and  case1Method,case1Tag.
  	 The tag for case0CogMethod is at the send site and so doesn't need to be generated.
  	 case1Method may be any of
  		- a Cog method; jump to its unchecked entry-point
  		- a CompiledMethod; jump to the ceInterpretFromPIC trampoline
  		- nil; call ceMNUFromPIC"
  	<var: #cPIC type: #'CogMethod *'>
  	| operand targetEntry jumpNext |
  	<var: #case0CogMethod type: #'CogMethod *'>
  	<var: #targetEntry type: #'void *'>
  	<var: #jumpNext type: #'AbstractInstruction *'>
  	self assert: case1Method notNil.
- 	coInterpreter
- 		compilationBreak: cPIC selector
- 		point: (objectMemory numBytesOf: cPIC selector)
- 		isMNUCase: isMNUCase.
  	self compilePICProlog: numArgs.
  	self assert: (objectRepresentation inlineCacheTagIsYoung: case1Tag) not.
  	(isMNUCase not
  	 and: [coInterpreter methodHasCogMethod: case1Method])
  		ifTrue:
  			[operand := 0.
  			 targetEntry := ((coInterpreter cogMethodOf: case1Method) asInteger + cmNoCheckEntryOffset) asVoidPointer]
  		ifFalse:
  			[self assert: (case1Method isNil or: [(objectMemory isYoungObject: case1Method) not]).
  			 operand := case1Method.
  			 targetEntry := case1Method isNil ifTrue: [mnuCall] ifFalse: [interpretLabel]].
  
  	jumpNext := self compileCPICEntry.
  	self MoveCw: 0 R: SendNumArgsReg.
  	self JumpLong: case0CogMethod asInteger + cmNoCheckEntryOffset.
  	endCPICCase0 := self CmpCw: case1Tag R: TempReg.
  	jumpNext jmpTarget: endCPICCase0.
  	self MoveCw: operand R: SendNumArgsReg.
  	self JumpLongZero: (isMNUCase ifTrue: [mnuCall] ifFalse: [targetEntry]) asInteger.
  	endCPICCase1 := self MoveCw: cPIC asInteger R: ClassReg.
  	self JumpLong: (self cPICMissTrampolineFor: numArgs).
  	^0
  !

Item was changed:
  ----- Method: Cogit>>compileMNUCPIC:methodOperand:numArgs: (in category 'in-line cacheing') -----
  compileMNUCPIC: cPIC methodOperand: methodOperand numArgs: numArgs
  	"Compile the code for a one-case MNU PIC that calls ceMNUFromPIC for case0Tag
  	 The tag for case0 is at the send site and so doesn't need to be generated."
  	<var: #cPIC type: #'CogMethod *'>
  	| jumpNext |
  	<var: #jumpNext type: #'AbstractInstruction *'>
- 	coInterpreter
- 		compilationBreak: cPIC selector
- 		point: (objectMemory numBytesOf: cPIC selector)
- 		isMNUCase: true.
  	self compilePICProlog: numArgs.
  	jumpNext := self compileCPICEntry.
  	self MoveCw: methodOperand R: SendNumArgsReg.
  	self JumpLong: mnuCall asInteger.
  	jumpNext jmpTarget: (self MoveCw: cPIC asInteger R: ClassReg).
  	self JumpLong: (self cPICMissTrampolineFor: numArgs).
  	^0
  !



More information about the Vm-dev mailing list