Revision: 3104 Author: eliot Date: 2014-10-13 16:35:34 -0700 (Mon, 13 Oct 2014) Log Message: ----------- CogVM source as per VMMaker.oscog-eem.900 Change a couple of between:and:'s that should be oop:isGreaterThanOrEqualTo: andLessThan:'s Fix signed/unsigned comparisons with freeStart in V3. Assert for empty remap buffer means Spur's accessor must be defined as a macro. Modified Paths: -------------- branches/Cog/nscogsrc/vm/cointerp.c branches/Cog/nscogsrc/vm/cointerp.h branches/Cog/nscogsrc/vm/gcc3x-cointerp.c branches/Cog/nsspursrc/vm/cointerp.c branches/Cog/nsspursrc/vm/cointerp.h branches/Cog/nsspursrc/vm/gcc3x-cointerp.c branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c branches/Cog/nsspurstacksrc/vm/interp.c branches/Cog/sistasrc/vm/cointerp.c branches/Cog/sistasrc/vm/cointerp.h branches/Cog/sistasrc/vm/gcc3x-cointerp.c branches/Cog/spursistasrc/vm/cointerp.c branches/Cog/spursistasrc/vm/cointerp.h branches/Cog/spursistasrc/vm/gcc3x-cointerp.c branches/Cog/spursrc/vm/cointerp.c branches/Cog/spursrc/vm/cointerp.h branches/Cog/spursrc/vm/gcc3x-cointerp.c branches/Cog/spurstacksrc/vm/gcc3x-interp.c branches/Cog/spurstacksrc/vm/interp.c branches/Cog/src/vm/cointerp.c branches/Cog/src/vm/cointerp.h branches/Cog/src/vm/cointerpmt.c branches/Cog/src/vm/cointerpmt.h branches/Cog/src/vm/gcc3x-cointerp.c branches/Cog/src/vm/gcc3x-cointerpmt.c branches/Cog/stacksrc/vm/gcc3x-interp.c branches/Cog/stacksrc/vm/interp.c Property Changed: ---------------- branches/Cog/platforms/Cross/vm/sqSCCSVersion.h Modified: branches/Cog/nscogsrc/vm/cointerp.c =================================================================== --- branches/Cog/nscogsrc/vm/cointerp.c 2014-10-13 21:24:18 UTC (rev 3103) +++ branches/Cog/nscogsrc/vm/cointerp.c 2014-10-13 23:35:34 UTC (rev 3104) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 from - CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -852,7 +852,7 @@ void printWronglySizedContexts(sqInt printContexts); static void restoreHeadersFromtofromandtofrom(sqInt firstIn, sqInt lastIn, sqInt hdrBaseIn, sqInt firstOut, sqInt lastOut, sqInt hdrBaseOut) NoDbgRegParms; static void runLeakCheckerForFullGC(sqInt fullGCFlag) NoDbgRegParms; -static sqInt safeObjectAfter(sqInt oop) NoDbgRegParms; +static usqInt safeObjectAfter(sqInt oop) NoDbgRegParms; static sqInt safePrintStringOf(sqInt oop) NoDbgRegParms; static sqInt shortentoIndexableSize(sqInt obj, sqInt nSlots) NoDbgRegParms; static sqInt sizeBitsOfSafe(sqInt oop) NoDbgRegParms; @@ -2084,7 +2084,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.897"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.900"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -18913,7 +18913,8 @@ } printFrameOopat("receiver", rcvrAddress); topThing = longAt(theSP); - if (((topThing >= theMethod) && (topThing <= theMethodEnd))) { + if (((((usqInt) topThing)) >= (((usqInt) theMethod))) + && ((((usqInt) topThing)) < (((usqInt) theMethodEnd)))) { for (addr = (rcvrAddress - BytesPerWord); addr >= (theSP + BytesPerWord); addr += (-BytesPerWord)) { index = ((rcvrAddress - addr) / BytesPerWord) + numArgs; if (index <= numTemps) { @@ -20909,7 +20910,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { fmt = (((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15; if ((fmt == 3) @@ -22368,7 +22369,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if ((((((usqInt) (longAt(oop1))) >> (compactClassFieldLSB())) & 0x1F) == ClassMethodContextCompactIndex) && ((longAt((oop1 + BaseHeaderSize) + (MethodIndex << ShiftForWord))) == methodObj)) { @@ -27721,7 +27722,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) { @@ -33682,7 +33683,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) { @@ -34861,7 +34862,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { if (((longAt(oop)) & MarkBit) != 0) { return 0; @@ -36771,17 +36772,15 @@ sqInt header1; sqInt header2; sqInt header3; - sqInt header4; usqInt lastWord; sqInt newFreeChunk; sqInt newOop; - sqInt next; + usqInt next; sqInt oop; sqInt realHeader; sqInt sz; sqInt sz1; sqInt sz2; - sqInt sz3; sqInt target; usqInt w; @@ -36792,21 +36791,7 @@ /* begin objectAfterWhileForwarding: */ header2 = longAt(oop); if ((header2 & MarkBit) == 0) { - /* begin objectAfter: */ - if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) { - error("no objects after the end of memory"); - } - if (((longAt(oop)) & TypeMask) == HeaderTypeFree) { - sz2 = (longAt(oop)) & AllButTypeMask; - } - else { - /* begin sizeBitsOf: */ - header3 = longAt(oop); - sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass - ? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask - : header3 & SizeMask); - } - next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]); + next = ((sqInt) (objectAfter(oop))); goto l1; } fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1; @@ -36821,7 +36806,7 @@ else { sz1 = realHeader & SizeMask; } - next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]); + next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]))); l1: /* end objectAfterWhileForwarding: */; if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { @@ -36875,18 +36860,18 @@ } /* begin safeObjectAfter: */ if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) { - sz3 = (longAt(newFreeChunk)) & AllButTypeMask; + sz2 = (longAt(newFreeChunk)) & AllButTypeMask; } else { /* begin sizeBitsOf: */ - header4 = longAt(newFreeChunk); - sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass + header3 = longAt(newFreeChunk); + sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass ? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask - : header4 & SizeMask); + : header3 & SizeMask); } - next = ((newFreeChunk + sz3) >= GIV(freeStart) + next = ((((usqInt)(newFreeChunk + sz2))) >= GIV(freeStart) ? GIV(freeStart) - : (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask])); + : (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask])); assert((next == GIV(freeStart)) || (next == (oopFromChunk(GIV(compEnd))))); if (next == GIV(freeStart)) { @@ -38759,7 +38744,7 @@ given object or free chunk in memory. Return freeStart when enumeration is complete. This is for assertion checking only. */ -static sqInt +static usqInt safeObjectAfter(sqInt oop) { DECL_MAYBE_SQ_GLOBAL_STRUCT sqInt header; @@ -38775,7 +38760,7 @@ ? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask : header & SizeMask); } - return ((oop + sz) >= GIV(freeStart) + return ((((usqInt)(oop + sz))) >= GIV(freeStart) ? GIV(freeStart) : (oop + sz) + (headerTypeBytes[(longAt(oop + sz)) & TypeMask])); } @@ -38798,7 +38783,7 @@ if ((oop & 1)) { return null; } - if (!(((oop >= (startOfMemory())) && (oop <= GIV(freeStart))))) { + if (!(oopisGreaterThanOrEqualToandLessThan(oop, startOfMemory(), GIV(freeStart)))) { return null; } if ((oop & (BytesPerWord - 1)) != 0) { @@ -39734,7 +39719,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { count += 1; @@ -43542,7 +43527,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { ok = ok && (checkOkayFields(oop1)); @@ -44836,7 +44821,7 @@ /* begin oopFromChunk: */ chunk1 = startOfMemory(); oop1 = chunk1 + (headerTypeBytes[(longAt(chunk1)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { fmt = (((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15; if (fmt >= 8) { @@ -44905,7 +44890,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F) == ClassFloatCompactIndex) { temp = longAt(oop + BaseHeaderSize); @@ -48672,7 +48657,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { classObj = (((ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F)) == 0 ? (longAt(oop - BaseHeaderSize)) & AllButTypeMask @@ -49215,7 +49200,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15) >= 12) { /* begin penultimateLiteralOf: */ @@ -55856,7 +55841,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { hdr = longAt(oop); if ((hdr & MarkBit) != 0) { Modified: branches/Cog/nscogsrc/vm/cointerp.h =================================================================== --- branches/Cog/nscogsrc/vm/cointerp.h 2014-10-13 21:24:18 UTC (rev 3103) +++ branches/Cog/nscogsrc/vm/cointerp.h 2014-10-13 23:35:34 UTC (rev 3104) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 */ Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2014-10-13 21:24:18 UTC (rev 3103) +++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2014-10-13 23:35:34 UTC (rev 3104) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 from - CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -855,7 +855,7 @@ void printWronglySizedContexts(sqInt printContexts); static void restoreHeadersFromtofromandtofrom(sqInt firstIn, sqInt lastIn, sqInt hdrBaseIn, sqInt firstOut, sqInt lastOut, sqInt hdrBaseOut) NoDbgRegParms; static void runLeakCheckerForFullGC(sqInt fullGCFlag) NoDbgRegParms; -static sqInt safeObjectAfter(sqInt oop) NoDbgRegParms; +static usqInt safeObjectAfter(sqInt oop) NoDbgRegParms; static sqInt safePrintStringOf(sqInt oop) NoDbgRegParms; static sqInt shortentoIndexableSize(sqInt obj, sqInt nSlots) NoDbgRegParms; static sqInt sizeBitsOfSafe(sqInt oop) NoDbgRegParms; @@ -2087,7 +2087,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.897"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.900"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -18922,7 +18922,8 @@ } printFrameOopat("receiver", rcvrAddress); topThing = longAt(theSP); - if (((topThing >= theMethod) && (topThing <= theMethodEnd))) { + if (((((usqInt) topThing)) >= (((usqInt) theMethod))) + && ((((usqInt) topThing)) < (((usqInt) theMethodEnd)))) { for (addr = (rcvrAddress - BytesPerWord); addr >= (theSP + BytesPerWord); addr += (-BytesPerWord)) { index = ((rcvrAddress - addr) / BytesPerWord) + numArgs; if (index <= numTemps) { @@ -20918,7 +20919,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { fmt = (((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15; if ((fmt == 3) @@ -22377,7 +22378,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if ((((((usqInt) (longAt(oop1))) >> (compactClassFieldLSB())) & 0x1F) == ClassMethodContextCompactIndex) && ((longAt((oop1 + BaseHeaderSize) + (MethodIndex << ShiftForWord))) == methodObj)) { @@ -27730,7 +27731,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) { @@ -33691,7 +33692,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) { @@ -34870,7 +34871,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { if (((longAt(oop)) & MarkBit) != 0) { return 0; @@ -36780,17 +36781,15 @@ sqInt header1; sqInt header2; sqInt header3; - sqInt header4; usqInt lastWord; sqInt newFreeChunk; sqInt newOop; - sqInt next; + usqInt next; sqInt oop; sqInt realHeader; sqInt sz; sqInt sz1; sqInt sz2; - sqInt sz3; sqInt target; usqInt w; @@ -36801,21 +36800,7 @@ /* begin objectAfterWhileForwarding: */ header2 = longAt(oop); if ((header2 & MarkBit) == 0) { - /* begin objectAfter: */ - if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) { - error("no objects after the end of memory"); - } - if (((longAt(oop)) & TypeMask) == HeaderTypeFree) { - sz2 = (longAt(oop)) & AllButTypeMask; - } - else { - /* begin sizeBitsOf: */ - header3 = longAt(oop); - sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass - ? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask - : header3 & SizeMask); - } - next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]); + next = ((sqInt) (objectAfter(oop))); goto l1; } fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1; @@ -36830,7 +36815,7 @@ else { sz1 = realHeader & SizeMask; } - next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]); + next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]))); l1: /* end objectAfterWhileForwarding: */; if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { @@ -36884,18 +36869,18 @@ } /* begin safeObjectAfter: */ if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) { - sz3 = (longAt(newFreeChunk)) & AllButTypeMask; + sz2 = (longAt(newFreeChunk)) & AllButTypeMask; } else { /* begin sizeBitsOf: */ - header4 = longAt(newFreeChunk); - sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass + header3 = longAt(newFreeChunk); + sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass ? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask - : header4 & SizeMask); + : header3 & SizeMask); } - next = ((newFreeChunk + sz3) >= GIV(freeStart) + next = ((((usqInt)(newFreeChunk + sz2))) >= GIV(freeStart) ? GIV(freeStart) - : (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask])); + : (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask])); assert((next == GIV(freeStart)) || (next == (oopFromChunk(GIV(compEnd))))); if (next == GIV(freeStart)) { @@ -38768,7 +38753,7 @@ given object or free chunk in memory. Return freeStart when enumeration is complete. This is for assertion checking only. */ -static sqInt +static usqInt safeObjectAfter(sqInt oop) { DECL_MAYBE_SQ_GLOBAL_STRUCT sqInt header; @@ -38784,7 +38769,7 @@ ? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask : header & SizeMask); } - return ((oop + sz) >= GIV(freeStart) + return ((((usqInt)(oop + sz))) >= GIV(freeStart) ? GIV(freeStart) : (oop + sz) + (headerTypeBytes[(longAt(oop + sz)) & TypeMask])); } @@ -38807,7 +38792,7 @@ if ((oop & 1)) { return null; } - if (!(((oop >= (startOfMemory())) && (oop <= GIV(freeStart))))) { + if (!(oopisGreaterThanOrEqualToandLessThan(oop, startOfMemory(), GIV(freeStart)))) { return null; } if ((oop & (BytesPerWord - 1)) != 0) { @@ -39743,7 +39728,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { count += 1; @@ -43551,7 +43536,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { ok = ok && (checkOkayFields(oop1)); @@ -44845,7 +44830,7 @@ /* begin oopFromChunk: */ chunk1 = startOfMemory(); oop1 = chunk1 + (headerTypeBytes[(longAt(chunk1)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { fmt = (((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15; if (fmt >= 8) { @@ -44914,7 +44899,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F) == ClassFloatCompactIndex) { temp = longAt(oop + BaseHeaderSize); @@ -48681,7 +48666,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { classObj = (((ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F)) == 0 ? (longAt(oop - BaseHeaderSize)) & AllButTypeMask @@ -49224,7 +49209,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15) >= 12) { /* begin penultimateLiteralOf: */ @@ -55865,7 +55850,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { hdr = longAt(oop); if ((hdr & MarkBit) != 0) { Modified: branches/Cog/nsspursrc/vm/cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.c 2014-10-13 21:24:18 UTC (rev 3103) +++ branches/Cog/nsspursrc/vm/cointerp.c 2014-10-13 23:35:34 UTC (rev 3104) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 from - CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1125,7 +1125,6 @@ static sqInt pushonObjStack(sqInt objOop, sqInt objStack) NoDbgRegParms; static sqInt rawHashBitsOf(sqInt objOop) NoDbgRegParms; static void rebuildFreeListsForPigCompact(void); -static sqInt remapBufferCount(void); sqInt remapObj(sqInt objOop); sqInt rememberedBitShift(void); sqInt removeGCRoot(sqInt *varLoc); @@ -2323,7 +2322,7 @@ /*540*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.897"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.900"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -2364,6 +2363,7 @@ #define memory() GIV(memory) #define newSpaceLimit() GIV(newSpaceLimit) #define oldSpaceStart() GIV(oldSpaceStart) +#define remapBufferCount() GIV(remapBufferCount) #define numSegments() GIV(numSegments) #define checkAllocFiller() GIV(checkAllocFiller) #define dispatchFunctionPointer(aFunctionPointer) (aFunctionPointer)() @@ -21362,7 +21362,8 @@ } printFrameOopat("receiver", rcvrAddress); topThing = longAt(theSP); - if (((topThing >= theMethod) && (topThing <= theMethodEnd))) { + if (((((usqInt) topThing)) >= (((usqInt) theMethod))) + && ((((usqInt) topThing)) < (((usqInt) theMethodEnd)))) { for (addr = (rcvrAddress - BytesPerWord); addr >= (theSP + BytesPerWord); addr += (-BytesPerWord)) { index = ((rcvrAddress - addr) / BytesPerWord) + numArgs; if (index <= numTemps) { @@ -49218,7 +49219,7 @@ if (!(GIV(tempOop) == 0)) { markAndTrace(GIV(tempOop)); } - for (i2 = 1, iLimiT = GIV(remapBufferCount); i2 <= iLimiT; i2 += 1) { + for (i2 = 1, iLimiT = (remapBufferCount()); i2 <= iLimiT; i2 += 1) { oop1 = GIV(remapBuffer)[i2]; if (!((oop1 & 1))) { markAndTrace(oop1); @@ -51829,13 +51830,7 @@ assert(GIV(totalFreeOldSpace) == (totalFreeListBytes())); } -static sqInt -remapBufferCount(void) -{ DECL_MAYBE_SQ_GLOBAL_STRUCT - return GIV(remapBufferCount); -} - /* Scavenge or simply follow objOop. Answer the new location of objOop. The send should have been guarded by a send of shouldRemapOop:. The method is called remapObj: for compatibility with ObjectMemory. */ @@ -54308,7 +54303,7 @@ ok = ok && (checkOkayFields(GIV(methodCache)[i + MethodCacheMethod])); } } - for (i = 1, iLimiT = GIV(remapBufferCount); i <= iLimiT; i += 1) { + for (i = 1, iLimiT = (remapBufferCount()); i <= iLimiT; i += 1) { oop = GIV(remapBuffer)[i]; if (!((oop & 1))) { ok = ok && (checkOkayFields(oop)); Modified: branches/Cog/nsspursrc/vm/cointerp.h =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.h 2014-10-13 21:24:18 UTC (rev 3103) +++ branches/Cog/nsspursrc/vm/cointerp.h 2014-10-13 23:35:34 UTC (rev 3104) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 */ Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2014-10-13 21:24:18 UTC (rev 3103) +++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2014-10-13 23:35:34 UTC (rev 3104) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 from - CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1128,7 +1128,6 @@ static sqInt pushonObjStack(sqInt objOop, sqInt objStack) NoDbgRegParms; static sqInt rawHashBitsOf(sqInt objOop) NoDbgRegParms; static void rebuildFreeListsForPigCompact(void); -static sqInt remapBufferCount(void); sqInt remapObj(sqInt objOop); sqInt rememberedBitShift(void); sqInt removeGCRoot(sqInt *varLoc); @@ -2326,7 +2325,7 @@ /*540*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.897"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.900"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -2367,6 +2366,7 @@ #define memory() GIV(memory) #define newSpaceLimit() GIV(newSpaceLimit) #define oldSpaceStart() GIV(oldSpaceStart) +#define remapBufferCount() GIV(remapBufferCount) #define numSegments() GIV(numSegments) #define checkAllocFiller() GIV(checkAllocFiller) #define dispatchFunctionPointer(aFunctionPointer) (aFunctionPointer)() @@ -21371,7 +21371,8 @@ } printFrameOopat("receiver", rcvrAddress); topThing = longAt(theSP); - if (((topThing >= theMethod) && (topThing <= theMethodEnd))) { + if (((((usqInt) topThing)) >= (((usqInt) theMethod))) + && ((((usqInt) topThing)) < (((usqInt) theMethodEnd)))) { for (addr = (rcvrAddress - BytesPerWord); addr >= (theSP + BytesPerWord); addr += (-BytesPerWord)) { index = ((rcvrAddress - addr) / BytesPerWord) + numArgs; if (index <= numTemps) { @@ -49227,7 +49228,7 @@ if (!(GIV(tempOop) == 0)) { markAndTrace(GIV(tempOop)); } - for (i2 = 1, iLimiT = GIV(remapBufferCount); i2 <= iLimiT; i2 += 1) { + for (i2 = 1, iLimiT = (remapBufferCount()); i2 <= iLimiT; i2 += 1) { oop1 = GIV(remapBuffer)[i2]; if (!((oop1 & 1))) { markAndTrace(oop1); @@ -51838,13 +51839,7 @@ assert(GIV(totalFreeOldSpace) == (totalFreeListBytes())); } -static sqInt -remapBufferCount(void) -{ DECL_MAYBE_SQ_GLOBAL_STRUCT - return GIV(remapBufferCount); -} - /* Scavenge or simply follow objOop. Answer the new location of objOop. The send should have been guarded by a send of shouldRemapOop:. The method is called remapObj: for compatibility with ObjectMemory. */ @@ -54317,7 +54312,7 @@ ok = ok && (checkOkayFields(GIV(methodCache)[i + MethodCacheMethod])); } } - for (i = 1, iLimiT = GIV(remapBufferCount); i <= iLimiT; i += 1) { + for (i = 1, iLimiT = (remapBufferCount()); i <= iLimiT; i += 1) { oop = GIV(remapBuffer)[i]; if (!((oop & 1))) { ok = ok && (checkOkayFields(oop)); Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c =================================================================== --- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2014-10-13 21:24:18 UTC (rev 3103) +++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2014-10-13 23:35:34 UTC (rev 3104) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.898 uuid: c7464fab-57af-4c31-955e-20f718082965 from - StackInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + StackInterpreter VMMaker.oscog-eem.898 uuid: c7464fab-57af-4c31-955e-20f718082965 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.898 uuid: c7464fab-57af-4c31-955e-20f718082965 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -876,7 +876,6 @@ static sqInt pushonObjStack(sqInt objOop, sqInt objStack) NoDbgRegParms; static sqInt rawHashBitsOf(sqInt objOop) NoDbgRegParms; static void rebuildFreeListsForPigCompact(void); -static sqInt remapBufferCount(void); sqInt remapObj(sqInt objOop); sqInt rememberedBitShift(void); sqInt removeGCRoot(sqInt *varLoc); @@ -2071,7 +2070,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.897"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.898"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -2091,6 +2090,7 @@ #define memory() GIV(memory) #define newSpaceLimit() GIV(newSpaceLimit) #define oldSpaceStart() GIV(oldSpaceStart) +#define remapBufferCount() GIV(remapBufferCount) #define startOfMemory() GIV(memory) #define numSegments() GIV(numSegments) #define checkAllocFiller() GIV(checkAllocFiller) @@ -37844,7 +37844,7 @@ if (!(GIV(tempOop) == 0)) { markAndTrace(GIV(tempOop)); } - for (i3 = 1, iLimiT = GIV(remapBufferCount); i3 <= iLimiT; i3 += 1) { + for (i3 = 1, iLimiT = (remapBufferCount()); i3 <= iLimiT; i3 += 1) { oop1 = GIV(remapBuffer)[i3]; if (!((oop1 & 1))) { markAndTrace(oop1); @@ -40425,13 +40425,7 @@ assert(GIV(totalFreeOldSpace) == (totalFreeListBytes())); } -static sqInt -remapBufferCount(void) -{ DECL_MAYBE_SQ_GLOBAL_STRUCT - return GIV(remapBufferCount); -} - /* Scavenge or simply follow objOop. Answer the new location of objOop. The send should have been guarded by a send of shouldRemapOop:. The method is called remapObj: for compatibility with ObjectMemory. */ @@ -43177,7 +43171,7 @@ ok = ok && (checkOkayFields(GIV(methodCache)[i + MethodCacheMethod])); } } - for (i = 1, iLimiT = GIV(remapBufferCount); i <= iLimiT; i += 1) { + for (i = 1, iLimiT = (remapBufferCount()); i <= iLimiT; i += 1) { oop = GIV(remapBuffer)[i]; if (!((oop & 1))) { ok = ok && (checkOkayFields(oop)); Modified: branches/Cog/nsspurstacksrc/vm/interp.c =================================================================== --- branches/Cog/nsspurstacksrc/vm/interp.c 2014-10-13 21:24:18 UTC (rev 3103) +++ branches/Cog/nsspurstacksrc/vm/interp.c 2014-10-13 23:35:34 UTC (rev 3104) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.898 uuid: c7464fab-57af-4c31-955e-20f718082965 from - StackInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + StackInterpreter VMMaker.oscog-eem.898 uuid: c7464fab-57af-4c31-955e-20f718082965 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.898 uuid: c7464fab-57af-4c31-955e-20f718082965 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -873,7 +873,6 @@ static sqInt pushonObjStack(sqInt objOop, sqInt objStack) NoDbgRegParms; static sqInt rawHashBitsOf(sqInt objOop) NoDbgRegParms; static void rebuildFreeListsForPigCompact(void); -static sqInt remapBufferCount(void); sqInt remapObj(sqInt objOop); sqInt rememberedBitShift(void); sqInt removeGCRoot(sqInt *varLoc); @@ -2068,7 +2067,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.897"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.898"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -2088,6 +2087,7 @@ #define memory() GIV(memory) #define newSpaceLimit() GIV(newSpaceLimit) #define oldSpaceStart() GIV(oldSpaceStart) +#define remapBufferCount() GIV(remapBufferCount) #define startOfMemory() GIV(memory) #define numSegments() GIV(numSegments) #define checkAllocFiller() GIV(checkAllocFiller) @@ -37835,7 +37835,7 @@ if (!(GIV(tempOop) == 0)) { markAndTrace(GIV(tempOop)); } - for (i3 = 1, iLimiT = GIV(remapBufferCount); i3 <= iLimiT; i3 += 1) { + for (i3 = 1, iLimiT = (remapBufferCount()); i3 <= iLimiT; i3 += 1) { oop1 = GIV(remapBuffer)[i3]; if (!((oop1 & 1))) { markAndTrace(oop1); @@ -40416,13 +40416,7 @@ assert(GIV(totalFreeOldSpace) == (totalFreeListBytes())); } -static sqInt -remapBufferCount(void) -{ DECL_MAYBE_SQ_GLOBAL_STRUCT - return GIV(remapBufferCount); -} - /* Scavenge or simply follow objOop. Answer the new location of objOop. The send should have been guarded by a send of shouldRemapOop:. The method is called remapObj: for compatibility with ObjectMemory. */ @@ -43168,7 +43162,7 @@ ok = ok && (checkOkayFields(GIV(methodCache)[i + MethodCacheMethod])); } } - for (i = 1, iLimiT = GIV(remapBufferCount); i <= iLimiT; i += 1) { + for (i = 1, iLimiT = (remapBufferCount()); i <= iLimiT; i += 1) { oop = GIV(remapBuffer)[i]; if (!((oop & 1))) { ok = ok && (checkOkayFields(oop)); Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h ___________________________________________________________________ Modified: checkindate - Mon Oct 13 14:24:26 PDT 2014 + Mon Oct 13 16:35:00 PDT 2014 Modified: branches/Cog/sistasrc/vm/cointerp.c =================================================================== --- branches/Cog/sistasrc/vm/cointerp.c 2014-10-13 21:24:18 UTC (rev 3103) +++ branches/Cog/sistasrc/vm/cointerp.c 2014-10-13 23:35:34 UTC (rev 3104) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 from - CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -851,7 +851,7 @@ void printWronglySizedContexts(sqInt printContexts); static void restoreHeadersFromtofromandtofrom(sqInt firstIn, sqInt lastIn, sqInt hdrBaseIn, sqInt firstOut, sqInt lastOut, sqInt hdrBaseOut) NoDbgRegParms; static void runLeakCheckerForFullGC(sqInt fullGCFlag) NoDbgRegParms; -static usqInt safeObjectAfter(sqInt oop) NoDbgRegParms; +static sqInt safeObjectAfter(sqInt oop) NoDbgRegParms; static sqInt safePrintStringOf(sqInt oop) NoDbgRegParms; static sqInt shortentoIndexableSize(sqInt obj, sqInt nSlots) NoDbgRegParms; static sqInt sizeBitsOfSafe(sqInt oop) NoDbgRegParms; @@ -2081,7 +2081,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.897]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.900]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -18932,7 +18932,8 @@ } printFrameOopat("receiver", rcvrAddress); topThing = longAt(theSP); - if (((topThing >= theMethod) && (topThing <= theMethodEnd))) { + if (((((usqInt) topThing)) >= (((usqInt) theMethod))) + && ((((usqInt) topThing)) < (((usqInt) theMethodEnd)))) { for (addr = (rcvrAddress - BytesPerWord); addr >= (theSP + BytesPerWord); addr += (-BytesPerWord)) { index = ((rcvrAddress - addr) / BytesPerWord) + numArgs; if (index <= numTemps) { @@ -20923,7 +20924,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { fmt = (((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15; if ((fmt == 3) @@ -22446,7 +22447,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if ((((((usqInt) (longAt(oop1))) >> (compactClassFieldLSB())) & 0x1F) == ClassMethodContextCompactIndex) && ((longAt((oop1 + BaseHeaderSize) + (MethodIndex << ShiftForWord))) == methodObj)) { @@ -27799,7 +27800,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) { @@ -33753,7 +33754,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) { @@ -34932,7 +34933,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { if (((longAt(oop)) & MarkBit) != 0) { return 0; @@ -36842,15 +36843,17 @@ sqInt header1; sqInt header2; sqInt header3; + sqInt header4; usqInt lastWord; sqInt newFreeChunk; sqInt newOop; - usqInt next; + sqInt next; sqInt oop; sqInt realHeader; sqInt sz; sqInt sz1; sqInt sz2; + sqInt sz3; sqInt target; usqInt w; @@ -36861,7 +36864,21 @@ /* begin objectAfterWhileForwarding: */ header2 = longAt(oop); if ((header2 & MarkBit) == 0) { - next = ((sqInt) (objectAfter(oop))); + /* begin objectAfter: */ + if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) { + error("no objects after the end of memory"); + } + if (((longAt(oop)) & TypeMask) == HeaderTypeFree) { + sz2 = (longAt(oop)) & AllButTypeMask; + } + else { + /* begin sizeBitsOf: */ + header3 = longAt(oop); + sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass + ? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask + : header3 & SizeMask); + } + next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]); goto l1; } fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1; @@ -36876,7 +36893,7 @@ else { sz1 = realHeader & SizeMask; } - next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]))); + next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]); l1: /* end objectAfterWhileForwarding: */; if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { @@ -36930,18 +36947,18 @@ } /* begin safeObjectAfter: */ if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) { - sz2 = (longAt(newFreeChunk)) & AllButTypeMask; + sz3 = (longAt(newFreeChunk)) & AllButTypeMask; } else { /* begin sizeBitsOf: */ - header3 = longAt(newFreeChunk); - sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass + header4 = longAt(newFreeChunk); + sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass ? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask - : header3 & SizeMask); + : header4 & SizeMask); } - next = ((newFreeChunk + sz2) >= GIV(freeStart) + next = ((((usqInt)(newFreeChunk + sz3))) >= GIV(freeStart) ? GIV(freeStart) - : (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask])); + : (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask])); assert((next == GIV(freeStart)) || (next == (oopFromChunk(GIV(compEnd))))); if (next == GIV(freeStart)) { @@ -38814,7 +38831,7 @@ given object or free chunk in memory. Return freeStart when enumeration is complete. This is for assertion checking only. */ -static usqInt +static sqInt safeObjectAfter(sqInt oop) { DECL_MAYBE_SQ_GLOBAL_STRUCT sqInt header; @@ -38830,7 +38847,7 @@ ? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask : header & SizeMask); } - return ((oop + sz) >= GIV(freeStart) + return ((((usqInt)(oop + sz))) >= GIV(freeStart) ? GIV(freeStart) : (oop + sz) + (headerTypeBytes[(longAt(oop + sz)) & TypeMask])); } @@ -38853,7 +38870,7 @@ if ((oop & 1)) { return null; } - if (!(((oop >= (startOfMemory())) && (oop <= GIV(freeStart))))) { + if (!(oopisGreaterThanOrEqualToandLessThan(oop, startOfMemory(), GIV(freeStart)))) { return null; } if ((oop & (BytesPerWord - 1)) != 0) { @@ -39789,7 +39806,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { count += 1; @@ -43597,7 +43614,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { ok = ok && (checkOkayFields(oop1)); @@ -44845,7 +44862,7 @@ /* begin oopFromChunk: */ chunk1 = startOfMemory(); oop1 = chunk1 + (headerTypeBytes[(longAt(chunk1)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { fmt = (((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15; if (fmt >= 8) { @@ -44914,7 +44931,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F) == ClassFloatCompactIndex) { temp = longAt(oop + BaseHeaderSize); @@ -48652,7 +48669,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { classObj = (((ccIndex1 = (((usqInt) (longAt(oop))) >> (compactClassFieldLSB())) & 0x1F)) == 0 ? (longAt(oop - BaseHeaderSize)) & AllButTypeMask @@ -49195,7 +49212,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15) >= 12) { /* begin penultimateLiteralOf: */ @@ -55836,7 +55853,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { hdr = longAt(oop); if ((hdr & MarkBit) != 0) { Modified: branches/Cog/sistasrc/vm/cointerp.h =================================================================== --- branches/Cog/sistasrc/vm/cointerp.h 2014-10-13 21:24:18 UTC (rev 3103) +++ branches/Cog/sistasrc/vm/cointerp.h 2014-10-13 23:35:34 UTC (rev 3104) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 */ Modified: branches/Cog/sistasrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/sistasrc/vm/gcc3x-cointerp.c 2014-10-13 21:24:18 UTC (rev 3103) +++ branches/Cog/sistasrc/vm/gcc3x-cointerp.c 2014-10-13 23:35:34 UTC (rev 3104) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 from - CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 + CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.897 uuid: fcc5e4e2-808e-4ab1-97ae-079cc4b9d7b8 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.900 uuid: 3d11cf21-4f5f-406a-85ae-ccbc786612a0 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -854,7 +854,7 @@ void printWronglySizedContexts(sqInt printContexts); static void restoreHeadersFromtofromandtofrom(sqInt firstIn, sqInt lastIn, sqInt hdrBaseIn, sqInt firstOut, sqInt lastOut, sqInt hdrBaseOut) NoDbgRegParms; static void runLeakCheckerForFullGC(sqInt fullGCFlag) NoDbgRegParms; -static usqInt safeObjectAfter(sqInt oop) NoDbgRegParms; +static sqInt safeObjectAfter(sqInt oop) NoDbgRegParms; static sqInt safePrintStringOf(sqInt oop) NoDbgRegParms; static sqInt shortentoIndexableSize(sqInt obj, sqInt nSlots) NoDbgRegParms; static sqInt sizeBitsOfSafe(sqInt oop) NoDbgRegParms; @@ -2084,7 +2084,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.897]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.900]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -18941,7 +18941,8 @@ } printFrameOopat("receiver", rcvrAddress); topThing = longAt(theSP); - if (((topThing >= theMethod) && (topThing <= theMethodEnd))) { + if (((((usqInt) topThing)) >= (((usqInt) theMethod))) + && ((((usqInt) topThing)) < (((usqInt) theMethodEnd)))) { for (addr = (rcvrAddress - BytesPerWord); addr >= (theSP + BytesPerWord); addr += (-BytesPerWord)) { index = ((rcvrAddress - addr) / BytesPerWord) + numArgs; if (index <= numTemps) { @@ -20932,7 +20933,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { fmt = (((usqInt) (longAt(oop))) >> (instFormatFieldLSB())) & 15; if ((fmt == 3) @@ -22455,7 +22456,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if ((((((usqInt) (longAt(oop1))) >> (compactClassFieldLSB())) & 0x1F) == ClassMethodContextCompactIndex) && ((longAt((oop1 + BaseHeaderSize) + (MethodIndex << ShiftForWord))) == methodObj)) { @@ -27808,7 +27809,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) { @@ -33762,7 +33763,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop1 = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop1 < GIV(freeStart)) { + while ((((usqInt)oop1)) < GIV(freeStart)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (!(((longAt(oop1)) & TypeMask) == HeaderTypeFree)) { if (((((usqInt) (longAt(oop1))) >> (instFormatFieldLSB())) & 15) >= 12) { @@ -34941,7 +34942,7 @@ /* begin oopFromChunk: */ chunk = startOfMemory(); oop = chunk + (headerTypeBytes[(longAt(chunk)) & TypeMask]); - while (oop < GIV(freeStart)) { + while ((((usqInt)oop)) < GIV(freeStart)) { if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { if (((longAt(oop)) & MarkBit) != 0) { return 0; @@ -36851,15 +36852,17 @@ sqInt header1; sqInt header2; sqInt header3; + sqInt header4; usqInt lastWord; sqInt newFreeChunk; sqInt newOop; @@ Diff output truncated at 50000 characters. @@ |
Free forum by Nabble | Edit this page |