Skip to content

Commit ac6c70c

Browse files
committed
CogVM source as per VMMaker.oscog-eem.3504
The added assert in SpurMemoryManager>> storePointerUnchecked:ofObject:withValue: was too restrictive. This more relaxed one seems to work and stil catches null assignments, which caught the StackInterpreter marryFrame: bug.
1 parent 01937d6 commit ac6c70c

34 files changed

+20286
-13578
lines changed

src/spur32.cog.lowcode/cointerp.c

Lines changed: 851 additions & 571 deletions
Large diffs are not rendered by default.

src/spur32.cog.lowcode/cointerp.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated by
2-
CCodeGeneratorGlobalStructure VMMaker.oscog-eem.3503 uuid: dd5af38b-cb11-48d5-a1f2-d7a971b76f2c
2+
CCodeGeneratorGlobalStructure VMMaker.oscog-eem.3504 uuid: 2d8fab0c-240d-43fc-a757-c3fea35162a8
33
(Compiler-eem.513)
44
*/
55

src/spur32.cog.lowcode/gcc3x-cointerp.c

Lines changed: 851 additions & 571 deletions
Large diffs are not rendered by default.

src/spur32.cog/cointerp.c

Lines changed: 839 additions & 563 deletions
Large diffs are not rendered by default.

src/spur32.cog/cointerp.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated by
2-
CCodeGeneratorGlobalStructure VMMaker.oscog-eem.3503 uuid: dd5af38b-cb11-48d5-a1f2-d7a971b76f2c
2+
CCodeGeneratorGlobalStructure VMMaker.oscog-eem.3504 uuid: 2d8fab0c-240d-43fc-a757-c3fea35162a8
33
(Compiler-eem.513)
44
*/
55

src/spur32.cog/cointerpmt.c

Lines changed: 876 additions & 593 deletions
Large diffs are not rendered by default.

src/spur32.cog/cointerpmt.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated by
2-
CCodeGeneratorGlobalStructure VMMaker.oscog-eem.3503 uuid: dd5af38b-cb11-48d5-a1f2-d7a971b76f2c
2+
CCodeGeneratorGlobalStructure VMMaker.oscog-eem.3504 uuid: 2d8fab0c-240d-43fc-a757-c3fea35162a8
33
(Compiler-eem.513)
44
*/
55

src/spur32.cog/gcc3x-cointerp.c

Lines changed: 839 additions & 563 deletions
Large diffs are not rendered by default.

src/spur32.cog/gcc3x-cointerpmt.c

Lines changed: 876 additions & 593 deletions
Large diffs are not rendered by default.

src/spur32.sista/cointerp.c

Lines changed: 861 additions & 583 deletions
Large diffs are not rendered by default.

src/spur32.sista/cointerp.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated by
2-
CCodeGeneratorGlobalStructure VMMaker.oscog-eem.3503 uuid: dd5af38b-cb11-48d5-a1f2-d7a971b76f2c
2+
CCodeGeneratorGlobalStructure VMMaker.oscog-eem.3504 uuid: 2d8fab0c-240d-43fc-a757-c3fea35162a8
33
(Compiler-eem.513)
44
*/
55

src/spur32.sista/gcc3x-cointerp.c

Lines changed: 861 additions & 583 deletions
Large diffs are not rendered by default.

src/spur32.stack.lowcode/gcc3x-interp.c

Lines changed: 823 additions & 544 deletions
Large diffs are not rendered by default.

src/spur32.stack.lowcode/interp.c

Lines changed: 823 additions & 544 deletions
Large diffs are not rendered by default.

src/spur32.stack/gcc3x-interp.c

Lines changed: 812 additions & 537 deletions
Large diffs are not rendered by default.

src/spur32.stack/interp.c

Lines changed: 812 additions & 537 deletions
Large diffs are not rendered by default.

src/spur32.stack/validImage.c

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
/* Automatically generated by
2-
CCodeGeneratorGlobalStructure VMMaker.oscog-eem.3503 uuid: dd5af38b-cb11-48d5-a1f2-d7a971b76f2c
2+
CCodeGeneratorGlobalStructure VMMaker.oscog-eem.3504 uuid: 2d8fab0c-240d-43fc-a757-c3fea35162a8
33
(Compiler-eem.513)
44
from
5-
ImageLeakChecker VMMaker.oscog-eem.3503 uuid: dd5af38b-cb11-48d5-a1f2-d7a971b76f2c
5+
ImageLeakChecker VMMaker.oscog-eem.3504 uuid: 2d8fab0c-240d-43fc-a757-c3fea35162a8
66
*/
7-
static char __buildInfo[] = "ImageLeakChecker VMMaker.oscog-eem.3503 uuid: dd5af38b-cb11-48d5-a1f2-d7a971b76f2c " __DATE__ ;
7+
static char __buildInfo[] = "ImageLeakChecker VMMaker.oscog-eem.3504 uuid: 2d8fab0c-240d-43fc-a757-c3fea35162a8 " __DATE__ ;
88
char *__interpBuildInfo = __buildInfo;
99

1010

@@ -998,7 +998,7 @@ sqInt extraVMMemory;
998998
sqInt ffiExceptionResponse;
999999
sqInt inIOProcessEvents;
10001000
struct VirtualMachine* interpreterProxy;
1001-
const char *interpreterVersion = "Open Smalltalk ImageChecker VM [ImageLeakChecker VMMaker.oscog-eem.3503]";
1001+
const char *interpreterVersion = "Open Smalltalk ImageChecker VM [ImageLeakChecker VMMaker.oscog-eem.3504]";
10021002
usqInt maxOldSpaceSize;
10031003
sqInt suppressHeartbeatFlag;
10041004
char expensiveAsserts = 0;
@@ -4503,10 +4503,11 @@ cloneInOldSpaceforPinning(sqInt objOop, sqInt forPinning)
45034503
/* begin storePointerUnchecked:ofObject:withValue: */
45044504
assert((isNonImmediate(newObj))
45054505
&& (!(isForwarded(newObj))));
4506-
assert((addressCouldBeOop(oop))
4506+
assert((isImmediate(oop))
4507+
|| ((isInHeapBounds(oop))
45074508
|| ((isWordsOrBytesNonImm(newObj))
45084509
|| ((i == 0)
4509-
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress))));
4510+
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress)))));
45104511
longAtput((newObj + BaseHeaderSize) + ((((usqInt)(i) << (shiftForWord())))), oop);
45114512
}
45124513
if (hasYoung) {
@@ -4520,10 +4521,11 @@ cloneInOldSpaceforPinning(sqInt objOop, sqInt forPinning)
45204521
/* begin storePointerUnchecked:ofObject:withValue: */
45214522
assert((isNonImmediate(newObj))
45224523
&& (!(isForwarded(newObj))));
4523-
assert((addressCouldBeOop(valuePointer))
4524+
assert((isImmediate(valuePointer))
4525+
|| ((isInHeapBounds(valuePointer))
45244526
|| ((isWordsOrBytesNonImm(newObj))
45254527
|| ((i == 0)
4526-
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress))));
4528+
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress)))));
45274529
longAtput((newObj + BaseHeaderSize) + ((((usqInt)(i) << (shiftForWord())))), valuePointer);
45284530
}
45294531
if (fmt >= (firstCompiledMethodFormat())) {
@@ -4623,10 +4625,11 @@ l1:;
46234625
/* begin storePointerUnchecked:ofObject:withValue: */
46244626
assert((isNonImmediate(newObj))
46254627
&& (!(isForwarded(newObj))));
4626-
assert((addressCouldBeOop(oop))
4628+
assert((isImmediate(oop))
4629+
|| ((isInHeapBounds(oop))
46274630
|| ((isWordsOrBytesNonImm(newObj))
46284631
|| ((i == 0)
4629-
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress))));
4632+
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress)))));
46304633
longAtput((newObj + BaseHeaderSize) + ((((usqInt)(i) << (shiftForWord())))), oop);
46314634
}
46324635
if (hasYoung
@@ -4641,10 +4644,11 @@ l1:;
46414644
/* begin storePointerUnchecked:ofObject:withValue: */
46424645
assert((isNonImmediate(newObj))
46434646
&& (!(isForwarded(newObj))));
4644-
assert((addressCouldBeOop(valuePointer))
4647+
assert((isImmediate(valuePointer))
4648+
|| ((isInHeapBounds(valuePointer))
46454649
|| ((isWordsOrBytesNonImm(newObj))
46464650
|| ((i == 0)
4647-
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress))));
4651+
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress)))));
46484652
longAtput((newObj + BaseHeaderSize) + ((((usqInt)(i) << (shiftForWord())))), valuePointer);
46494653
}
46504654
if (fmt >= (firstCompiledMethodFormat())) {
@@ -4916,10 +4920,11 @@ doShortentoIndexableSize(sqInt objOop, sqInt indexableSize)
49164920
/* begin storePointerUnchecked:ofObject:withValue: */
49174921
assert((isNonImmediate(copy))
49184922
&& (!(isForwarded(copy))));
4919-
assert((addressCouldBeOop(valuePointer))
4923+
assert((isImmediate(valuePointer))
4924+
|| ((isInHeapBounds(valuePointer))
49204925
|| ((isWordsOrBytesNonImm(copy))
49214926
|| ((i == 0)
4922-
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress))));
4927+
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress)))));
49234928
longAtput((copy + BaseHeaderSize) + ((((usqInt)(i) << (shiftForWord())))), valuePointer);
49244929
}
49254930
}
@@ -8770,10 +8775,11 @@ postBecomeScanClassTable(sqInt effectsFlags)
87708775
/* begin storePointerUnchecked:ofObject:withValue: */
87718776
assert((isNonImmediate(page))
87728777
&& (!(isForwarded(page))));
8773-
assert((addressCouldBeOop(GIV(nilObj)))
8778+
assert((isImmediate(GIV(nilObj)))
8779+
|| ((isInHeapBounds(GIV(nilObj)))
87748780
|| ((isWordsOrBytesNonImm(page))
87758781
|| ((j == 0)
8776-
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress))));
8782+
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress)))));
87778783
longAtput((page + BaseHeaderSize) + ((((usqInt)(j) << (shiftForWord())))), GIV(nilObj));
87788784

87798785
/* If the removed class is before the classTableIndex, set the
@@ -11071,8 +11077,9 @@ rememberedSetObj(sqInt anObj)
1107111077
/* begin storePointerUnchecked:ofObject:withValue: */
1107211078
assert((isNonImmediate(GIV(hiddenRootsObj)))
1107311079
&& (!(isForwarded(GIV(hiddenRootsObj)))));
11074-
assert((addressCouldBeOop(anObj))
11075-
|| ((isWordsOrBytesNonImm(GIV(hiddenRootsObj)))));
11080+
assert((isImmediate(anObj))
11081+
|| ((isInHeapBounds(anObj))
11082+
|| ((isWordsOrBytesNonImm(GIV(hiddenRootsObj))))));
1107611083
longAtput((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt)(RememberedSetRootIndex) << (shiftForWord())))), anObj);
1107711084
}
1107811085

@@ -11448,10 +11455,11 @@ storePointerUncheckedofObjectwithValue(sqInt fieldIndex, sqInt objOop, sqInt val
1144811455
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
1144911456
assert((isNonImmediate(objOop))
1145011457
&& (!(isForwarded(objOop))));
11451-
assert((addressCouldBeOop(valuePointer))
11458+
assert((isImmediate(valuePointer))
11459+
|| ((isInHeapBounds(valuePointer))
1145211460
|| ((isWordsOrBytesNonImm(objOop))
1145311461
|| ((fieldIndex == 0)
11454-
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress))));
11462+
&& (GIV(gcPhaseInProgress) == SlidingCompactionInProgress)))));
1145511463
return longAtput((objOop + BaseHeaderSize) + ((((usqInt)(fieldIndex) << (shiftForWord())))), valuePointer);
1145611464
}
1145711465

0 commit comments

Comments
 (0)