[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