Revision: 2875 Author: eliot Date: 2014-03-10 13:26:23 -0700 (Mon, 10 Mar 2014) Log Message: ----------- CogVM source as per VMMaker.oscog-eem.636 Fix byteFormatForNumBytes: and hence fix the new version of positive64BitIntegerFor:. Spur: Make sure expungeDuplicateAndUnmarkedClasses: resets classTableIndex for nil entries. Modified Paths: -------------- branches/Cog/nscogsrc/vm/cointerp.c branches/Cog/nscogsrc/vm/cointerp.h branches/Cog/nscogsrc/vm/gcc3x-cointerp.c branches/Cog/nscogsrc/vm/interp.h branches/Cog/nscogsrc/vm/vmCallback.h branches/Cog/nsspursrc/vm/cointerp.c branches/Cog/nsspursrc/vm/cointerp.h branches/Cog/nsspursrc/vm/gcc3x-cointerp.c branches/Cog/nsspursrc/vm/interp.h branches/Cog/nsspursrc/vm/vmCallback.h branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c branches/Cog/nsspurstacksrc/vm/interp.c branches/Cog/nsspurstacksrc/vm/interp.h branches/Cog/nsspurstacksrc/vm/vmCallback.h branches/Cog/spursrc/vm/cointerp.c branches/Cog/spursrc/vm/cointerp.h branches/Cog/spursrc/vm/gcc3x-cointerp.c branches/Cog/spursrc/vm/interp.h branches/Cog/spursrc/vm/vmCallback.h branches/Cog/spurstacksrc/vm/gcc3x-interp.c branches/Cog/spurstacksrc/vm/interp.c branches/Cog/spurstacksrc/vm/interp.h branches/Cog/spurstacksrc/vm/vmCallback.h 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/src/vm/interp.h branches/Cog/src/vm/vmCallback.h branches/Cog/stacksrc/vm/gcc3x-interp.c branches/Cog/stacksrc/vm/interp.c branches/Cog/stacksrc/vm/interp.h branches/Cog/stacksrc/vm/vmCallback.h Property Changed: ---------------- branches/Cog/platforms/Cross/vm/sqSCCSVersion.h Modified: branches/Cog/nscogsrc/vm/cointerp.c =================================================================== --- branches/Cog/nscogsrc/vm/cointerp.c 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nscogsrc/vm/cointerp.c 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 from - CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1146,7 +1146,7 @@ static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void)); static sqInt roomToPushNArgs(sqInt n); static void runLeakCheckerForFullGC(sqInt fullGCFlag); -static sqInt safeObjectAfter(sqInt oop); +static usqInt safeObjectAfter(sqInt oop); static sqInt safePrintStringOf(sqInt oop); usqInt scavengeThresholdAddress(void); EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext); @@ -2033,7 +2033,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.635"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.636"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace; @@ -4827,7 +4827,6 @@ GIV(framePointer) = localFP; ceEnterCogCodePopReceiverReg(); - null; goto l307; } localIP = pointerForOop(longAt(localFP + FoxIFSavedIP)); @@ -4845,7 +4844,7 @@ /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); - null; + /* return self */ l307: /* end baseFrameReturn */; goto l304; } @@ -23735,17 +23734,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; @@ -23756,21 +23753,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; @@ -23785,7 +23768,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)) { @@ -23839,18 +23822,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 = ((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)) { @@ -29803,7 +29786,7 @@ && ((integerValue ^ (integerValue << 1)) >= 0)) { return ((integerValue << 1) | 1); } - newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + (4 & 3), 1); + newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + ((4 - 4) & 3), 1); byteAtput((newLargeInteger + BaseHeaderSize) + 3, (((usqInt) integerValue) >> 24) & 0xFF); byteAtput((newLargeInteger + BaseHeaderSize) + 2, (((usqInt) integerValue) >> 16) & 0xFF); byteAtput((newLargeInteger + BaseHeaderSize) + 1, (((usqInt) integerValue) >> 8) & 0xFF); @@ -29889,7 +29872,7 @@ if (!(((highWord = ((usqInt) highWord) >> 8)) == 0)) { sz += 1; } - newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + (sz & 3), ((sqInt) 8 >> 2)); + newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + ((4 - sz) & 3), ((sqInt) 8 >> 2)); byteAtput((newLargeInteger + BaseHeaderSize) + 7, (((unsigned sqLong)integerValue) >> 56) & 0xFF); byteAtput((newLargeInteger + BaseHeaderSize) + 6, (((unsigned sqLong)integerValue) >> 48) & 0xFF); byteAtput((newLargeInteger + BaseHeaderSize) + 5, (((unsigned sqLong)integerValue) >> 40) & 0xFF); @@ -50265,7 +50248,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; Modified: branches/Cog/nscogsrc/vm/cointerp.h =================================================================== --- branches/Cog/nscogsrc/vm/cointerp.h 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nscogsrc/vm/cointerp.h 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2014-03-10 20:26:23 UTC (rev 2875) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 from - CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1149,7 +1149,7 @@ static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void)); static sqInt roomToPushNArgs(sqInt n); static void runLeakCheckerForFullGC(sqInt fullGCFlag); -static sqInt safeObjectAfter(sqInt oop); +static usqInt safeObjectAfter(sqInt oop); static sqInt safePrintStringOf(sqInt oop); usqInt scavengeThresholdAddress(void); EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext); @@ -2036,7 +2036,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.635"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.636"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace; @@ -4836,7 +4836,6 @@ GIV(framePointer) = localFP; ceEnterCogCodePopReceiverReg(); - null; goto l307; } localIP = pointerForOop(longAt(localFP + FoxIFSavedIP)); @@ -4854,7 +4853,7 @@ /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); - null; + /* return self */ l307: /* end baseFrameReturn */; goto l304; } @@ -23744,17 +23743,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; @@ -23765,21 +23762,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; @@ -23794,7 +23777,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)) { @@ -23848,18 +23831,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 = ((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)) { @@ -29812,7 +29795,7 @@ && ((integerValue ^ (integerValue << 1)) >= 0)) { return ((integerValue << 1) | 1); } - newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + (4 & 3), 1); + newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + ((4 - 4) & 3), 1); byteAtput((newLargeInteger + BaseHeaderSize) + 3, (((usqInt) integerValue) >> 24) & 0xFF); byteAtput((newLargeInteger + BaseHeaderSize) + 2, (((usqInt) integerValue) >> 16) & 0xFF); byteAtput((newLargeInteger + BaseHeaderSize) + 1, (((usqInt) integerValue) >> 8) & 0xFF); @@ -29898,7 +29881,7 @@ if (!(((highWord = ((usqInt) highWord) >> 8)) == 0)) { sz += 1; } - newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + (sz & 3), ((sqInt) 8 >> 2)); + newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(ClassLargePositiveIntegerCompactIndex, 8 + ((4 - sz) & 3), ((sqInt) 8 >> 2)); byteAtput((newLargeInteger + BaseHeaderSize) + 7, (((unsigned sqLong)integerValue) >> 56) & 0xFF); byteAtput((newLargeInteger + BaseHeaderSize) + 6, (((unsigned sqLong)integerValue) >> 48) & 0xFF); byteAtput((newLargeInteger + BaseHeaderSize) + 5, (((unsigned sqLong)integerValue) >> 40) & 0xFF); @@ -50274,7 +50257,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; Modified: branches/Cog/nscogsrc/vm/interp.h =================================================================== --- branches/Cog/nscogsrc/vm/interp.h 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nscogsrc/vm/interp.h 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ #define VM_PROXY_MAJOR 1 Modified: branches/Cog/nscogsrc/vm/vmCallback.h =================================================================== --- branches/Cog/nscogsrc/vm/vmCallback.h 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nscogsrc/vm/vmCallback.h 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ #define VM_CALLBACK_INC 1 Modified: branches/Cog/nsspursrc/vm/cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.c 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nsspursrc/vm/cointerp.c 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 from - CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1476,6 +1476,7 @@ _iss usqInt freeOldSpaceStart; _iss sqInt longRunningPrimitiveCheckMethod; _iss sqInt profileMethod; +_iss sqInt classTableIndex; _iss sqInt ephemeronQueue; _iss sqInt lastMethodCacheProbeWrite; _iss sqInt lkupClass; @@ -1483,7 +1484,6 @@ _iss sqInt metaclassNumSlots; _iss usqLong nextWakeupUsecs; _iss sqInt preemptionYields; -_iss sqInt classTableIndex; _iss sqInt cogCompiledCodeCompactionCalledFor; _iss sqInt growHeadroom; _iss sqInt highestRunnableProcessPriority; @@ -2191,7 +2191,7 @@ /* 575 */ (void (*)(void))0, 0 }; usqInt heapBase; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.635"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.636"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace; @@ -25712,20 +25712,26 @@ assert((classAtIndex(classIndex)) == classOrNil); assert((classOrNil == GIV(nilObj)) || (addressCouldBeClassObj(classOrNil))); - if ((classOrNil != GIV(nilObj)) - && ((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((rawHashBitsOf(classOrNil)) != classIndex))) { - /* begin storePointerUnchecked:ofObject:withValue: */ - assert(!(isForwarded(classTablePage))); - longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); - assert((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classOrNil == GIV(nilObj)) { if (classIndex < GIV(classTableIndex)) { GIV(classTableIndex) = classIndex; } } + else { + if ((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((rawHashBitsOf(classOrNil)) != classIndex)) { + /* begin storePointerUnchecked:ofObject:withValue: */ + assert(!(isForwarded(classTablePage))); + longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); + assert((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classIndex < GIV(classTableIndex)) { + GIV(classTableIndex) = classIndex; + } + } + } } } } @@ -37865,7 +37871,7 @@ return ((integerValue << 1) | 1); } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (4 & ((wordSize()) - 1)); + objFormat = 16 + ((8 - 4) & ((wordSize()) - 1)); assert((1 >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) @@ -37985,7 +37991,7 @@ sz += 1; } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (sz & ((wordSize()) - 1)); + objFormat = 16 + ((8 - sz) & ((wordSize()) - 1)); assert(((((sqInt) 8 >> 2)) >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) Modified: branches/Cog/nsspursrc/vm/cointerp.h =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.h 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nsspursrc/vm/cointerp.h 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2014-03-10 20:26:23 UTC (rev 2875) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 from - CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1479,6 +1479,7 @@ _iss usqInt freeOldSpaceStart; _iss sqInt longRunningPrimitiveCheckMethod; _iss sqInt profileMethod; +_iss sqInt classTableIndex; _iss sqInt ephemeronQueue; _iss sqInt lastMethodCacheProbeWrite; _iss sqInt lkupClass; @@ -1486,7 +1487,6 @@ _iss sqInt metaclassNumSlots; _iss usqLong nextWakeupUsecs; _iss sqInt preemptionYields; -_iss sqInt classTableIndex; _iss sqInt cogCompiledCodeCompactionCalledFor; _iss sqInt growHeadroom; _iss sqInt highestRunnableProcessPriority; @@ -2194,7 +2194,7 @@ /* 575 */ (void (*)(void))0, 0 }; usqInt heapBase; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.635"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.636"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace; @@ -25721,20 +25721,26 @@ assert((classAtIndex(classIndex)) == classOrNil); assert((classOrNil == GIV(nilObj)) || (addressCouldBeClassObj(classOrNil))); - if ((classOrNil != GIV(nilObj)) - && ((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((rawHashBitsOf(classOrNil)) != classIndex))) { - /* begin storePointerUnchecked:ofObject:withValue: */ - assert(!(isForwarded(classTablePage))); - longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); - assert((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classOrNil == GIV(nilObj)) { if (classIndex < GIV(classTableIndex)) { GIV(classTableIndex) = classIndex; } } + else { + if ((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((rawHashBitsOf(classOrNil)) != classIndex)) { + /* begin storePointerUnchecked:ofObject:withValue: */ + assert(!(isForwarded(classTablePage))); + longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); + assert((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classIndex < GIV(classTableIndex)) { + GIV(classTableIndex) = classIndex; + } + } + } } } } @@ -37874,7 +37880,7 @@ return ((integerValue << 1) | 1); } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (4 & ((wordSize()) - 1)); + objFormat = 16 + ((8 - 4) & ((wordSize()) - 1)); assert((1 >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) @@ -37994,7 +38000,7 @@ sz += 1; } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (sz & ((wordSize()) - 1)); + objFormat = 16 + ((8 - sz) & ((wordSize()) - 1)); assert(((((sqInt) 8 >> 2)) >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) Modified: branches/Cog/nsspursrc/vm/interp.h =================================================================== --- branches/Cog/nsspursrc/vm/interp.h 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nsspursrc/vm/interp.h 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ #define VM_PROXY_MAJOR 1 Modified: branches/Cog/nsspursrc/vm/vmCallback.h =================================================================== --- branches/Cog/nsspursrc/vm/vmCallback.h 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nsspursrc/vm/vmCallback.h 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ #define VM_CALLBACK_INC 1 Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c =================================================================== --- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2014-03-10 20:26:23 UTC (rev 2875) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 from - StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1286,6 +1286,7 @@ _iss sqInt longRunningPrimitiveCheckMethod; _iss sqInt longRunningPrimitiveCheckSemaphore; _iss sqInt profileMethod; +_iss sqInt classTableIndex; _iss sqInt ephemeronQueue; _iss sqInt lastMethodCacheProbeWrite; _iss sqInt growHeadroom; @@ -1293,7 +1294,6 @@ _iss usqLong nextWakeupUsecs; _iss sqInt preemptionYields; _iss sqInt profileSemaphore; -_iss sqInt classTableIndex; _iss sqInt highestRunnableProcessPriority; _iss usqLong longRunningPrimitiveStartUsecs; _iss usqLong longRunningPrimitiveStopUsecs; @@ -1981,7 +1981,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.635"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.636"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -21944,20 +21944,26 @@ assert((classAtIndex(classIndex)) == classOrNil); assert((classOrNil == GIV(nilObj)) || (addressCouldBeClassObj(classOrNil))); - if ((classOrNil != GIV(nilObj)) - && ((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((rawHashBitsOf(classOrNil)) != classIndex))) { - /* begin storePointerUnchecked:ofObject:withValue: */ - assert(!(isForwarded(classTablePage))); - longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); - assert((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classOrNil == GIV(nilObj)) { if (classIndex < GIV(classTableIndex)) { GIV(classTableIndex) = classIndex; } } + else { + if ((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((rawHashBitsOf(classOrNil)) != classIndex)) { + /* begin storePointerUnchecked:ofObject:withValue: */ + assert(!(isForwarded(classTablePage))); + longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); + assert((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classIndex < GIV(classTableIndex)) { + GIV(classTableIndex) = classIndex; + } + } + } } } } @@ -32360,7 +32366,7 @@ return ((integerValue << 1) | 1); } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (4 & ((wordSize()) - 1)); + objFormat = 16 + ((8 - 4) & ((wordSize()) - 1)); assert((1 >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) @@ -32480,7 +32486,7 @@ sz += 1; } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (sz & ((wordSize()) - 1)); + objFormat = 16 + ((8 - sz) & ((wordSize()) - 1)); assert(((((sqInt) 8 >> 2)) >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) Modified: branches/Cog/nsspurstacksrc/vm/interp.c =================================================================== --- branches/Cog/nsspurstacksrc/vm/interp.c 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nsspurstacksrc/vm/interp.c 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 from - StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1283,6 +1283,7 @@ _iss sqInt longRunningPrimitiveCheckMethod; _iss sqInt longRunningPrimitiveCheckSemaphore; _iss sqInt profileMethod; +_iss sqInt classTableIndex; _iss sqInt ephemeronQueue; _iss sqInt lastMethodCacheProbeWrite; _iss sqInt growHeadroom; @@ -1290,7 +1291,6 @@ _iss usqLong nextWakeupUsecs; _iss sqInt preemptionYields; _iss sqInt profileSemaphore; -_iss sqInt classTableIndex; _iss sqInt highestRunnableProcessPriority; _iss usqLong longRunningPrimitiveStartUsecs; _iss usqLong longRunningPrimitiveStopUsecs; @@ -1978,7 +1978,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.635"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.636"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -21935,20 +21935,26 @@ assert((classAtIndex(classIndex)) == classOrNil); assert((classOrNil == GIV(nilObj)) || (addressCouldBeClassObj(classOrNil))); - if ((classOrNil != GIV(nilObj)) - && ((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((rawHashBitsOf(classOrNil)) != classIndex))) { - /* begin storePointerUnchecked:ofObject:withValue: */ - assert(!(isForwarded(classTablePage))); - longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); - assert((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classOrNil == GIV(nilObj)) { if (classIndex < GIV(classTableIndex)) { GIV(classTableIndex) = classIndex; } } + else { + if ((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((rawHashBitsOf(classOrNil)) != classIndex)) { + /* begin storePointerUnchecked:ofObject:withValue: */ + assert(!(isForwarded(classTablePage))); + longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); + assert((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classIndex < GIV(classTableIndex)) { + GIV(classTableIndex) = classIndex; + } + } + } } } } @@ -32351,7 +32357,7 @@ return ((integerValue << 1) | 1); } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (4 & ((wordSize()) - 1)); + objFormat = 16 + ((8 - 4) & ((wordSize()) - 1)); assert((1 >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) @@ -32471,7 +32477,7 @@ sz += 1; } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (sz & ((wordSize()) - 1)); + objFormat = 16 + ((8 - sz) & ((wordSize()) - 1)); assert(((((sqInt) 8 >> 2)) >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) Modified: branches/Cog/nsspurstacksrc/vm/interp.h =================================================================== --- branches/Cog/nsspurstacksrc/vm/interp.h 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nsspurstacksrc/vm/interp.h 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ #define VM_PROXY_MAJOR 1 Modified: branches/Cog/nsspurstacksrc/vm/vmCallback.h =================================================================== --- branches/Cog/nsspurstacksrc/vm/vmCallback.h 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/nsspurstacksrc/vm/vmCallback.h 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ #define VM_CALLBACK_INC 1 Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h ___________________________________________________________________ Modified: checkindate - Sun Mar 9 12:14:16 PDT 2014 + Mon Mar 10 13:25:38 PDT 2014 Modified: branches/Cog/spursrc/vm/cointerp.c =================================================================== --- branches/Cog/spursrc/vm/cointerp.c 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/spursrc/vm/cointerp.c 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 from - CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1466,13 +1466,13 @@ _iss usqInt freeOldSpaceStart; _iss sqInt longRunningPrimitiveCheckMethod; _iss sqInt profileMethod; +_iss sqInt classTableIndex; _iss sqInt ephemeronQueue; _iss sqInt lastMethodCacheProbeWrite; _iss sqInt lkupClass; _iss sqInt metaclassNumSlots; _iss usqLong nextWakeupUsecs; _iss sqInt preemptionYields; -_iss sqInt classTableIndex; _iss sqInt cogCompiledCodeCompactionCalledFor; _iss sqInt growHeadroom; _iss sqInt highestRunnableProcessPriority; @@ -2181,7 +2181,7 @@ /* 575 */ (void (*)(void))0, 0 }; usqInt heapBase; -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.635]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.636]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace; @@ -6397,7 +6397,6 @@ /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), longAt((rcvr1 + (BaseHeaderSize)) + (byte3 << 2))); } - null; goto l4; } if (opType == 3) { @@ -6407,7 +6406,6 @@ assert(GIV(method) == (iframeMethod(localFP))); object = longAt((GIV(method) + (BaseHeaderSize)) + ((byte3 + LiteralStart) << 2)); longAtPointerput((localSP -= BytesPerOop), object); - null; goto l4; } if (opType == 4) { @@ -6435,7 +6433,6 @@ /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), longAt((litVar1 + (BaseHeaderSize)) + (ValueIndex << 2))); - null; goto l4; } top = longAtPointer(localSP); @@ -20790,20 +20787,26 @@ assert((classAtIndex(classIndex)) == classOrNil); assert((classOrNil == GIV(nilObj)) || (addressCouldBeClassObj(classOrNil))); - if ((classOrNil != GIV(nilObj)) - && ((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((rawHashBitsOf(classOrNil)) != classIndex))) { - /* begin storePointerUnchecked:ofObject:withValue: */ - assert(!(isForwarded(classTablePage))); - longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); - assert((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classOrNil == GIV(nilObj)) { if (classIndex < GIV(classTableIndex)) { GIV(classTableIndex) = classIndex; } } + else { + if ((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((rawHashBitsOf(classOrNil)) != classIndex)) { + /* begin storePointerUnchecked:ofObject:withValue: */ + assert(!(isForwarded(classTablePage))); + longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); + assert((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classIndex < GIV(classTableIndex)) { + GIV(classTableIndex) = classIndex; + } + } + } } } } @@ -32506,7 +32509,7 @@ return ((integerValue << 1) | 1); } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (4 & ((wordSize()) - 1)); + objFormat = 16 + ((8 - 4) & ((wordSize()) - 1)); assert((1 >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) @@ -32626,7 +32629,7 @@ sz += 1; } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (sz & ((wordSize()) - 1)); + objFormat = 16 + ((8 - sz) & ((wordSize()) - 1)); assert(((((sqInt) 8 >> 2)) >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) Modified: branches/Cog/spursrc/vm/cointerp.h =================================================================== --- branches/Cog/spursrc/vm/cointerp.h 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/spursrc/vm/cointerp.h 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/spursrc/vm/gcc3x-cointerp.c 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/spursrc/vm/gcc3x-cointerp.c 2014-03-10 20:26:23 UTC (rev 2875) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 from - CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1469,13 +1469,13 @@ _iss usqInt freeOldSpaceStart; _iss sqInt longRunningPrimitiveCheckMethod; _iss sqInt profileMethod; +_iss sqInt classTableIndex; _iss sqInt ephemeronQueue; _iss sqInt lastMethodCacheProbeWrite; _iss sqInt lkupClass; _iss sqInt metaclassNumSlots; _iss usqLong nextWakeupUsecs; _iss sqInt preemptionYields; -_iss sqInt classTableIndex; _iss sqInt cogCompiledCodeCompactionCalledFor; _iss sqInt growHeadroom; _iss sqInt highestRunnableProcessPriority; @@ -2184,7 +2184,7 @@ /* 575 */ (void (*)(void))0, 0 }; usqInt heapBase; -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.635]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.636]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace; @@ -6406,7 +6406,6 @@ /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), longAt((rcvr1 + (BaseHeaderSize)) + (byte3 << 2))); } - null; goto l4; } if (opType == 3) { @@ -6416,7 +6415,6 @@ assert(GIV(method) == (iframeMethod(localFP))); object = longAt((GIV(method) + (BaseHeaderSize)) + ((byte3 + LiteralStart) << 2)); longAtPointerput((localSP -= BytesPerOop), object); - null; goto l4; } if (opType == 4) { @@ -6444,7 +6442,6 @@ /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), longAt((litVar1 + (BaseHeaderSize)) + (ValueIndex << 2))); - null; goto l4; } top = longAtPointer(localSP); @@ -20799,20 +20796,26 @@ assert((classAtIndex(classIndex)) == classOrNil); assert((classOrNil == GIV(nilObj)) || (addressCouldBeClassObj(classOrNil))); - if ((classOrNil != GIV(nilObj)) - && ((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((rawHashBitsOf(classOrNil)) != classIndex))) { - /* begin storePointerUnchecked:ofObject:withValue: */ - assert(!(isForwarded(classTablePage))); - longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); - assert((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classOrNil == GIV(nilObj)) { if (classIndex < GIV(classTableIndex)) { GIV(classTableIndex) = classIndex; } } + else { + if ((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((rawHashBitsOf(classOrNil)) != classIndex)) { + /* begin storePointerUnchecked:ofObject:withValue: */ + assert(!(isForwarded(classTablePage))); + longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); + assert((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classIndex < GIV(classTableIndex)) { + GIV(classTableIndex) = classIndex; + } + } + } } } } @@ -32515,7 +32518,7 @@ return ((integerValue << 1) | 1); } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (4 & ((wordSize()) - 1)); + objFormat = 16 + ((8 - 4) & ((wordSize()) - 1)); assert((1 >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) @@ -32635,7 +32638,7 @@ sz += 1; } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (sz & ((wordSize()) - 1)); + objFormat = 16 + ((8 - sz) & ((wordSize()) - 1)); assert(((((sqInt) 8 >> 2)) >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) Modified: branches/Cog/spursrc/vm/interp.h =================================================================== --- branches/Cog/spursrc/vm/interp.h 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/spursrc/vm/interp.h 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ #define VM_PROXY_MAJOR 1 Modified: branches/Cog/spursrc/vm/vmCallback.h =================================================================== --- branches/Cog/spursrc/vm/vmCallback.h 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/spursrc/vm/vmCallback.h 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ #define VM_CALLBACK_INC 1 Modified: branches/Cog/spurstacksrc/vm/gcc3x-interp.c =================================================================== --- branches/Cog/spurstacksrc/vm/gcc3x-interp.c 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/spurstacksrc/vm/gcc3x-interp.c 2014-03-10 20:26:23 UTC (rev 2875) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 from - StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1279,6 +1279,7 @@ _iss sqInt longRunningPrimitiveCheckMethod; _iss sqInt longRunningPrimitiveCheckSemaphore; _iss sqInt profileMethod; +_iss sqInt classTableIndex; _iss sqInt ephemeronQueue; _iss sqInt lastMethodCacheProbeWrite; _iss sqInt growHeadroom; @@ -1286,7 +1287,6 @@ _iss usqLong nextWakeupUsecs; _iss sqInt preemptionYields; _iss sqInt profileSemaphore; -_iss sqInt classTableIndex; _iss sqInt highestRunnableProcessPriority; _iss usqLong longRunningPrimitiveStartUsecs; _iss usqLong longRunningPrimitiveStopUsecs; @@ -1974,7 +1974,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.635]"; +const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.636]"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -17367,20 +17367,26 @@ assert((classAtIndex(classIndex)) == classOrNil); assert((classOrNil == GIV(nilObj)) || (addressCouldBeClassObj(classOrNil))); - if ((classOrNil != GIV(nilObj)) - && ((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((rawHashBitsOf(classOrNil)) != classIndex))) { - /* begin storePointerUnchecked:ofObject:withValue: */ - assert(!(isForwarded(classTablePage))); - longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); - assert((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classOrNil == GIV(nilObj)) { if (classIndex < GIV(classTableIndex)) { GIV(classTableIndex) = classIndex; } } + else { + if ((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((rawHashBitsOf(classOrNil)) != classIndex)) { + /* begin storePointerUnchecked:ofObject:withValue: */ + assert(!(isForwarded(classTablePage))); + longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); + assert((expungeUnmarked + && (!(isMarked(classOrNil)))) + || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classIndex < GIV(classTableIndex)) { + GIV(classTableIndex) = classIndex; + } + } + } } } } @@ -27372,7 +27378,7 @@ return ((integerValue << 1) | 1); } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (4 & ((wordSize()) - 1)); + objFormat = 16 + ((8 - 4) & ((wordSize()) - 1)); assert((1 >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) @@ -27492,7 +27498,7 @@ sz += 1; } /* begin eeInstantiateSmallClassIndex:format:numSlots: */ - objFormat = 16 + (sz & ((wordSize()) - 1)); + objFormat = 16 + ((8 - sz) & ((wordSize()) - 1)); assert(((((sqInt) 8 >> 2)) >= 0) && (ClassLargePositiveIntegerCompactIndex != 0)); assert(((objFormat < (firstByteFormat()) Modified: branches/Cog/spurstacksrc/vm/interp.c =================================================================== --- branches/Cog/spurstacksrc/vm/interp.c 2014-03-09 19:17:15 UTC (rev 2874) +++ branches/Cog/spurstacksrc/vm/interp.c 2014-03-10 20:26:23 UTC (rev 2875) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 from - StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 + StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.635 uuid: d3e35b87-a79e-44a1-975b-549d6ae06743 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.636 uuid: 97945106-afaf-4c50-be03-a1806625c3b9 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1276,6 +1276,7 @@ _iss sqInt longRunningPrimitiveCheckMethod; _iss sqInt longRunningPrimitiveCheckSemaphore; _iss sqInt profileMethod; +_iss sqInt classTableIndex; _iss sqInt ephemeronQueue; _iss sqInt lastMethodCacheProbeWrite; _iss sqInt growHeadroom; @@ -1283,7 +1284,6 @@ _iss usqLong nextWakeupUsecs; _iss sqInt preemptionYields; _iss sqInt profileSemaphore; -_iss sqInt classTableIndex; _iss sqInt highestRunnableProcessPriority; _iss usqLong longRunningPrimitiveStartUsecs; _iss usqLong longRunningPrimitiveStopUsecs; @@ -1971,7 +1971,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.635]"; +const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.636]"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -17358,20 +17358,26 @@ assert((classAtIndex(classIndex)) == classOrNil); assert((classOrNil == GIV(nilObj)) || (addressCouldBeClassObj(classOrNil))); - if ((classOrNil != GIV(nilObj)) - && ((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((rawHashBitsOf(classOrNil)) != classIndex))) { - /* begin storePointerUnchecked:ofObject:withValue: */ - assert(!(isForwarded(classTablePage))); - longAtput((classTablePage + (BaseHeaderSize)) + ((classIndex & ((1 << 10) - 1)) << 2), GIV(nilObj)); - assert((expungeUnmarked - && (!(isMarked(classOrNil)))) - || ((classAtIndex(rawHashBitsOf(classOrNil))) == classOrNil)); + if (classOrNil == GIV(nilObj)) { @@ Diff output truncated at 50000 characters. @@ |
Free forum by Nabble | Edit this page |