Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2731.mcz==================== Summary ====================
Name: VMMaker.oscog-eem.2731
Author: eem
Time: 21 March 2020, 7:31:28.606014 pm
UUID: 3c8dda9e-4706-4c3d-8c58-a284c47f5705
Ancestors: VMMaker.oscog-eem.2730
Fix a slip in the previous commit that only shows up during simulaiton.
=============== Diff against VMMaker.oscog-eem.2730 ===============
Item was changed:
----- Method: CoInterpreter>>compilationBreakpoint:classTag:isMNUCase: (in category 'debug support') -----
compilationBreakpoint: selectorOop classTag: classTag isMNUCase: isMNUCase
<api>
<cmacro: '(sel, classTag, isMNU) do { \
if (numBytesOf(sel) == (isMNU ? -breakSelectorLength : breakSelectorLength) \
&& !!strncmp((char *)((sel) + BaseHeaderSize), breakSelector, (isMNU ? -breakSelectorLength : breakSelectorLength))) { \
suppressHeartbeatFlag = 1; \
compilationBreakpointFor(sel); \
} \
} while (0)'>
| bsl i |
isMNUCase
ifTrue:
[(breakSelectorLength = 18 "doesNotUnderstand: size"
and: [(self strncmp: 'doesNotUnderstand:' _: breakSelector _: 18) == 0]) ifTrue:
[(breakLookupClassTag < 0 or: [breakLookupClassTag = classTag]) ifTrue:
[^self compilationBreakpointFor: selectorOop]].
bsl := breakSelectorLength negated]
ifFalse: [bsl := breakSelectorLength].
+ bsl = (objectMemory numBytesOf: selectorOop) ifTrue:
- bsl = (self numBytesOf: selectorOop) ifTrue:
[i := bsl.
[i > 0] whileTrue:
[(objectMemory byteAt: selectorOop + i + objectMemory baseHeaderSize - 1) = (breakSelector at: i) asInteger
ifTrue:
[((i := i - 1) = 0
and: [breakLookupClassTag < 0 or: [breakLookupClassTag = classTag]]) ifTrue:
[self compilationBreakpointFor: selectorOop]]
ifFalse: [i := 0]]]!
Item was changed:
----- Method: CoInterpreter>>compilationBreakpoint:isMNUCase: (in category 'debug support') -----
compilationBreakpoint: selectorOop isMNUCase: isMNUCase
<api>
<cmacro: '(sel, isMNU) do { \
if (numBytesOf(sel) == (isMNU ? -breakSelectorLength : breakSelectorLength) \
&& !!strncmp((char *)((sel) + BaseHeaderSize), breakSelector, (isMNU ? -breakSelectorLength : breakSelectorLength))) { \
suppressHeartbeatFlag = 1; \
compilationBreakpointFor(sel); \
} \
} while (0)'>
| bsl i |
bsl := isMNUCase ifTrue: [breakSelectorLength negated] ifFalse: [breakSelectorLength].
+ bsl = (objectMemory numBytesOf: selectorOop) ifTrue:
- bsl = (self numBytesOf: selectorOop) ifTrue:
[i := bsl.
[i > 0] whileTrue:
[(objectMemory byteAt: selectorOop + i + objectMemory baseHeaderSize - 1) = (breakSelector at: i) asInteger
ifTrue: [(i := i - 1) = 0 ifTrue:
[self compilationBreakpointFor: selectorOop]]
ifFalse: [i := 0]]]!