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

commits at source.squeak.org commits at source.squeak.org
Mon Sep 28 19:46:26 UTC 2015


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

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

Name: VMMaker.oscog-eem.1475
Author: eem
Time: 28 September 2015, 12:43:54.791 pm
UUID: dd428db7-b55c-422a-9a51-b6ee788a2aee
Ancestors: VMMaker.oscog-eem.1474

x64 Cogit: At last, a beautiful inline cache check sequence since there's no convincing reason to go for a 1-bit SmallInteger tag.

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

Item was added:
+ ----- Method: CogObjectRepresentationFor64BitSpur>>genGetInlineCacheClassTagFrom:into:forEntry: (in category 'compile abstract instructions') -----
+ genGetInlineCacheClassTagFrom: sourceReg into: destReg forEntry: forEntry
+ 	"Extract the inline cache tag for the object in sourceReg into destReg. The inline
+ 	 cache tag for a given object is the value loaded in inline caches to distinguish
+ 	 objects of different classes.  In Spur this is either the tags for immediates, or
+ 	 the receiver's classIndex.  Answer the label for the start of the sequence."
+ 	| jumpImm entryLabel |
+ 	<var: #jumpImm type: #'AbstractInstruction *'>
+ 	<var: #entryLabel type: #'AbstractInstruction *'>
+ 	forEntry ifTrue:
+ 		[cogit AlignmentNops: objectMemory wordSize].
+ 	entryLabel := cogit Label.
+ 	cogit AndCq: objectMemory tagMask R: sourceReg R: destReg.
+ 	jumpImm := cogit JumpNonZero: 0.
+ 	"Get least significant half of header word in destReg"
+ 	self flag: #endianness.
+ 	cogit MoveMw: 0 r: sourceReg R: destReg.
+ 	cogit AndCq: objectMemory classIndexMask R: destReg.
+ 	jumpImm jmpTarget: cogit Label.
+ 	^entryLabel!

Item was added:
+ ----- Method: CogX64Compiler>>concretizeAlignmentNops (in category 'generate machine code') -----
+ concretizeAlignmentNops
+ 	<inline: true>
+ 	self flag: 'if performance is an issue generate longer nops'.
+ 	0 to: machineCodeSize - 1 do:
+ 		[:i|
+ 		machineCode at: i put: 16r90]!



More information about the Vm-dev mailing list