David T. Lewis uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker-dtl.388.mcz==================== Summary ====================
Name: VMMaker-dtl.388
Author: dtl
Time: 11 December 2016, 11:42:49.558 am
UUID: 09c15fd6-eb5a-416d-b481-8bdec834b668
Ancestors: VMMaker-dtl.387
VMMaker 4.15.10 - Fix 'debug it' from the menu for V3 images.
Fix primitiveChangeClass by factoring fetchClassOfNonImm: into a version for ClassicObjectMemory that calls fetchClassofNonInt: and a version for NewObjectMemory that retains the oscog implementation.
TODO: The primitive now works as expected for interpreter VM, but fetchClassOfNonImm: should be revisited for StackInterpreter on V3 image (may depend on Spur logic).
=============== Diff against VMMaker-dtl.387 ===============
Item was added:
+ ----- Method: ClassicObjectMemory>>fetchClassOfNonImm: (in category 'object access') -----
+ fetchClassOfNonImm: oop
+ "Only integers are immediate"
+ <inline: true>
+ ^self fetchClassOfNonInt: oop!
Item was added:
+ ----- Method: NewObjectMemory>>fetchClassOfNonImm: (in category 'object access') -----
+ fetchClassOfNonImm: oop
+ | ccIndex |
+ <inline: true>
+ ^(ccIndex := (self compactClassIndexOf: oop)) = 0
+ ifTrue: [(self classHeader: oop) bitAnd: self allButTypeMask]
+ ifFalse: [self compactClassAt: ccIndex]!
Item was changed:
----- Method: ObjectMemory>>fetchClassOfNonImm: (in category 'object access') -----
+ fetchClassOfNonImm: oop
+ ^self subclassResponsibility!
- fetchClassOfNonImm: oop
- | ccIndex |
- <inline: true>
- ^(ccIndex := (self compactClassIndexOf: oop)) = 0
- ifTrue: [(self classHeader: oop) bitAnd: self allButTypeMask]
- ifFalse: [self compactClassAt: ccIndex]!
Item was changed:
----- Method: VMMaker class>>versionString (in category 'version testing') -----
versionString
"VMMaker versionString"
+ ^'4.15.10'!
- ^'4.15.9'!