Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscogSPC-eem.2121.mcz==================== Summary ====================
Name: VMMaker.oscogSPC-eem.2121
Author: eem
Time: 5 February 2017, 1:33:43.291073 pm
UUID: abe8d392-f88f-4a14-9149-ae41afe9ecf2
Ancestors: VMMaker.oscogSPC-eem.2120
Fix a couple of typos that cause the generated C code to miscompile or not compile.
=============== Diff against VMMaker.oscogSPC-eem.2120 ===============
Item was changed:
----- Method: CogObjectRepresentationForSpur>>branchIf:isNotOop:target: (in category 'sista support') -----
+ branchIf: reg isNotOop: oop target: targetFixUp
- branchIf: reg isNotOop: oop target: targetFixup
<var: #targetFixUp type: #'AbstractInstruction *'>
<inline: true>
cogit CmpCq: oop R: reg.
+ cogit JumpNonZero: targetFixUp.
+ ^0!
- cogit JumpNonZero: targetFixup.
- ^ 0!
Item was changed:
----- Method: CogObjectRepresentationForSpur>>branchIf:isOop:target: (in category 'sista support') -----
+ branchIf: reg isOop: oop target: targetFixUp
- branchIf: reg isOop: oop target: targetFixup
<var: #targetFixUp type: #'AbstractInstruction *'>
<inline: true>
cogit CmpCq: oop R: reg.
+ cogit JumpZero: targetFixUp.
+ ^0!
- cogit JumpZero: targetFixup.
- ^ 0!
Item was changed:
----- Method: SpurPlanningCompactor>>unmarkObjectsAfterLastMobileObject (in category 'compaction') -----
unmarkObjectsAfterLastMobileObject
"Sweep the final immobile heap, freeing and coalescing unmarked and free objects,
and unmarking all marked objects up to the end of memory."
| startOfFree freeBytes |
freeBytes := 0.
manager allOldSpaceEntitiesFrom: objectAfterLastMobileObject do:
[:o|
self check: o.
(manager isMarked: o)
ifFalse:
[startOfFree ifNil: [startOfFree := manager startOfObject: o].
+ freeBytes := freeBytes + (manager bytesInObject: o)]
- freeBytes := freeBytes + manager bytesInObject: o]
ifTrue:
[startOfFree ifNotNil:
[manager addFreeChunkWithBytes: freeBytes at: startOfFree.
startOfFree := nil.
freeBytes := 0].
+ (manager isPinned: o)
+ ifTrue: [self unmarkPinned: o]
+ ifFalse: [manager setIsMarkedOf: o to: false]]]!
- (manager isSegmentBridge: o) ifFalse:
- [manager setIsMarkedOf: o to: false]]]!