Revision: 3642 Author: eliot Date: 2016-03-09 01:00:31 -0800 (Wed, 09 Mar 2016) Log Message: ----------- CogVM source as per VMMaker.oscog-eem.1718 Spur: Fix the bug in markAndTraceClassOf: that causes the first class table page to become a visible array. Add a hack fix on initialization. Since we /can/ fix the image manually this hack isn't necessary, but the manual fix won't work until the markAndTraceClassOf: bug is fixed. Sigh... Ensure purgeDuplicateClassTableEntriesFor: will not destroy class pun entries. Plugins: Fix primitiveFFIIntegerAt for signed 4-byte results. Wuth the support for 64-bit results, signed 4-byte results must be sign-extended to 64-bits. Don't use cCode: pointer aliasing for storing/fetching float/double in FFI primitives. Replace with a call to mem:cp:y: - the first one is dangerous with modern C compilers - while the second is optimized away (no call to memcpy) Fix a missing guard in SmartSyntaxPlugin like explained at http://forum.world.st/VM-safety-missing-failing-guards-in-SmartSyntaxPlugin-td4816518.html Fix two missing guards in VM profiling primitives: one should not use the result of stackObjectValue: before checking for success, otherwise a null pointer exception will occur in case of failure. Make the MacMenubarPlugin 64bits aware: the menuHandle does not necessarily fit in a 32bits int. Slang: The size of [unsigned] long long was not infered... 3 minor fixes for type inference: 1) remove unecessary block argument assignment 2) infer type of allMask: 3) infer type of rem: instead of mod: (mod: does not exist) Modified Paths: -------------- branches/Cog/nsspur64src/vm/cogit.h branches/Cog/nsspur64src/vm/cointerp.c branches/Cog/nsspur64src/vm/cointerp.h branches/Cog/nsspur64src/vm/gcc3x-cointerp.c branches/Cog/nsspursrc/vm/cogit.h branches/Cog/nsspursrc/vm/cointerp.c branches/Cog/nsspursrc/vm/cointerp.h branches/Cog/nsspursrc/vm/gcc3x-cointerp.c branches/Cog/nsspurstack64src/vm/gcc3x-interp.c branches/Cog/nsspurstack64src/vm/interp.c branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c branches/Cog/nsspurstacksrc/vm/interp.c branches/Cog/spur64src/vm/cogit.h branches/Cog/spur64src/vm/cointerp.c branches/Cog/spur64src/vm/cointerp.h branches/Cog/spur64src/vm/gcc3x-cointerp.c branches/Cog/spursistasrc/vm/cogit.h branches/Cog/spursistasrc/vm/cointerp.c branches/Cog/spursistasrc/vm/cointerp.h branches/Cog/spursistasrc/vm/gcc3x-cointerp.c branches/Cog/spursrc/vm/cogit.h branches/Cog/spursrc/vm/cointerp.c branches/Cog/spursrc/vm/cointerp.h branches/Cog/spursrc/vm/gcc3x-cointerp.c branches/Cog/spurstack64src/vm/gcc3x-interp.c branches/Cog/spurstack64src/vm/interp.c branches/Cog/spurstacksrc/vm/gcc3x-interp.c branches/Cog/spurstacksrc/vm/interp.c branches/Cog/src/plugins/AsynchFilePlugin/AsynchFilePlugin.c branches/Cog/src/plugins/BitBltPlugin/BitBltPlugin.c branches/Cog/src/plugins/GeniePlugin/GeniePlugin.c branches/Cog/src/plugins/HostWindowPlugin/HostWindowPlugin.c branches/Cog/src/plugins/IA32ABI/IA32ABI.c branches/Cog/src/plugins/ImmX11Plugin/ImmX11Plugin.c branches/Cog/src/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c branches/Cog/src/plugins/JoystickTabletPlugin/JoystickTabletPlugin.c branches/Cog/src/plugins/LargeIntegers/LargeIntegers.c branches/Cog/src/plugins/LocalePlugin/LocalePlugin.c branches/Cog/src/plugins/MIDIPlugin/MIDIPlugin.c branches/Cog/src/plugins/MacMenubarPlugin/MacMenubarPlugin.c branches/Cog/src/plugins/Mpeg3Plugin/Mpeg3Plugin.c branches/Cog/src/plugins/QuicktimePlugin/QuicktimePlugin.c branches/Cog/src/plugins/SerialPlugin/SerialPlugin.c branches/Cog/src/plugins/SocketPlugin/SocketPlugin.c branches/Cog/src/plugins/SoundPlugin/SoundPlugin.c branches/Cog/src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c branches/Cog/src/plugins/SqueakFFIPrims/IA32FFIPlugin.c branches/Cog/src/plugins/SqueakFFIPrims/X64SysVFFIPlugin.c branches/Cog/src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.c branches/Cog/src/vm/cogit.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/stacksrc/vm/gcc3x-interp.c branches/Cog/stacksrc/vm/interp.c Property Changed: ---------------- branches/Cog/platforms/Cross/vm/sqSCCSVersion.h Modified: branches/Cog/nsspur64src/vm/cogit.h =================================================================== --- branches/Cog/nsspur64src/vm/cogit.h 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/nsspur64src/vm/cogit.h 2016-03-09 09:00:31 UTC (rev 3642) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGenerator VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ Modified: branches/Cog/nsspur64src/vm/cointerp.c =================================================================== --- branches/Cog/nsspur64src/vm/cointerp.c 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/nsspur64src/vm/cointerp.c 2016-03-09 09:00:31 UTC (rev 3642) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 from - CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -2441,7 +2441,7 @@ /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1709"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1716"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -41748,6 +41748,8 @@ } sampleBuffer = oop; l1: /* end stackObjectValue: */; + } + if (!GIV(primFailCode)) { /* begin assertClassOf:is: */ ok = (sampleBuffer & (tagMask())) == 0; if (ok) { @@ -46015,7 +46017,8 @@ if (classOrNil != GIV(nilObj)) { index = (((long)i1) << (classTableMajorIndexShift())) + j; if ((classOrNil == aClass) - && (index != expectedIndex1)) { + && ((index != expectedIndex1) + && (index > 0x1F))) { classAtIndexput(index, GIV(nilObj)); if (index < GIV(classTableIndex)) { GIV(classTableIndex) = index; @@ -52764,10 +52767,16 @@ assert(validClassTableRootPages()); GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0LL << (shiftForWord()))); assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask())); + flag("remove at some stage"); + if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) { + /* begin setClassIndexOf:to: */ + assert(((16 >= 0) && (16 <= (classIndexMask())))); + longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & (~(classIndexMask()))) + 16); + } GIV(numClassTablePages) = 1LL << (22 - (classTableMajorIndexShift())); - for (i = 2; i < GIV(numClassTablePages); i += 1) { - if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i) << (shiftForWord())))) == GIV(nilObj)) { - GIV(numClassTablePages) = i; + for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) { + if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i1) << (shiftForWord())))) == GIV(nilObj)) { + GIV(numClassTablePages) = i1; GIV(classTableIndex) = ((long)((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1)))) << (classTableMajorIndexShift()); goto l1; } @@ -52785,10 +52794,10 @@ assert((formatOf(freeListObj)) == (wordIndexableFormat())); GIV(freeLists) = firstIndexableField(freeListObj); GIV(freeListsMask) = 0; - for (i1 = 0, iLimiT = (64 - 1); i1 <= iLimiT; i1 += 1) { - if ((GIV(freeLists)[i1]) != 0) { - GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i1); - GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1])); + for (i = 0, iLimiT = (64 - 1); i <= iLimiT; i += 1) { + if ((GIV(freeLists)[i]) != 0) { + GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i); + GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i])); } } collapseSegmentsPostSwizzle(); @@ -55286,7 +55295,8 @@ l1: /* end classOrNilAtIndex: */; assert(objCouldBeClassObj(classObj)); realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask()); - if (classIndex != realClassIndex) { + if ((classIndex != realClassIndex) + && (realClassIndex > 0x1F)) { /* begin setClassIndexOf:to: */ assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask())))); longAtput(objOop, ((longAt(objOop)) & (~(classIndexMask()))) + realClassIndex); @@ -66997,7 +67007,7 @@ sqInt limit; sqInt newEndOfMemory; sqInt next; - usqInt node; + sqInt node; usqInt numSlots; usqInt numSlots1; SpurSegmentInfo *seg; @@ -67126,7 +67136,7 @@ static sqInt NoDbgRegParms readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes) { DECL_MAYBE_SQ_GLOBAL_STRUCT - usqInt bridge; + sqInt bridge; usqInt bridgehead; usqLong bridgeSpan; sqInt bytesRead; Modified: branches/Cog/nsspur64src/vm/cointerp.h =================================================================== --- branches/Cog/nsspur64src/vm/cointerp.h 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/nsspur64src/vm/cointerp.h 2016-03-09 09:00:31 UTC (rev 3642) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ Modified: branches/Cog/nsspur64src/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nsspur64src/vm/gcc3x-cointerp.c 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/nsspur64src/vm/gcc3x-cointerp.c 2016-03-09 09:00:31 UTC (rev 3642) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 from - CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -2444,7 +2444,7 @@ /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1709"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1716"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -41757,6 +41757,8 @@ } sampleBuffer = oop; l1: /* end stackObjectValue: */; + } + if (!GIV(primFailCode)) { /* begin assertClassOf:is: */ ok = (sampleBuffer & (tagMask())) == 0; if (ok) { @@ -46024,7 +46026,8 @@ if (classOrNil != GIV(nilObj)) { index = (((long)i1) << (classTableMajorIndexShift())) + j; if ((classOrNil == aClass) - && (index != expectedIndex1)) { + && ((index != expectedIndex1) + && (index > 0x1F))) { classAtIndexput(index, GIV(nilObj)); if (index < GIV(classTableIndex)) { GIV(classTableIndex) = index; @@ -52773,10 +52776,16 @@ assert(validClassTableRootPages()); GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0LL << (shiftForWord()))); assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask())); + flag("remove at some stage"); + if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) { + /* begin setClassIndexOf:to: */ + assert(((16 >= 0) && (16 <= (classIndexMask())))); + longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & (~(classIndexMask()))) + 16); + } GIV(numClassTablePages) = 1LL << (22 - (classTableMajorIndexShift())); - for (i = 2; i < GIV(numClassTablePages); i += 1) { - if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i) << (shiftForWord())))) == GIV(nilObj)) { - GIV(numClassTablePages) = i; + for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) { + if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i1) << (shiftForWord())))) == GIV(nilObj)) { + GIV(numClassTablePages) = i1; GIV(classTableIndex) = ((long)((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1)))) << (classTableMajorIndexShift()); goto l1; } @@ -52794,10 +52803,10 @@ assert((formatOf(freeListObj)) == (wordIndexableFormat())); GIV(freeLists) = firstIndexableField(freeListObj); GIV(freeListsMask) = 0; - for (i1 = 0, iLimiT = (64 - 1); i1 <= iLimiT; i1 += 1) { - if ((GIV(freeLists)[i1]) != 0) { - GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i1); - GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1])); + for (i = 0, iLimiT = (64 - 1); i <= iLimiT; i += 1) { + if ((GIV(freeLists)[i]) != 0) { + GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i); + GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i])); } } collapseSegmentsPostSwizzle(); @@ -55295,7 +55304,8 @@ l1: /* end classOrNilAtIndex: */; assert(objCouldBeClassObj(classObj)); realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask()); - if (classIndex != realClassIndex) { + if ((classIndex != realClassIndex) + && (realClassIndex > 0x1F)) { /* begin setClassIndexOf:to: */ assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask())))); longAtput(objOop, ((longAt(objOop)) & (~(classIndexMask()))) + realClassIndex); @@ -67006,7 +67016,7 @@ sqInt limit; sqInt newEndOfMemory; sqInt next; - usqInt node; + sqInt node; usqInt numSlots; usqInt numSlots1; SpurSegmentInfo *seg; @@ -67135,7 +67145,7 @@ static sqInt NoDbgRegParms readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes) { DECL_MAYBE_SQ_GLOBAL_STRUCT - usqInt bridge; + sqInt bridge; usqInt bridgehead; usqLong bridgeSpan; sqInt bytesRead; Modified: branches/Cog/nsspursrc/vm/cogit.h =================================================================== --- branches/Cog/nsspursrc/vm/cogit.h 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/nsspursrc/vm/cogit.h 2016-03-09 09:00:31 UTC (rev 3642) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGenerator VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ Modified: branches/Cog/nsspursrc/vm/cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.c 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/nsspursrc/vm/cointerp.c 2016-03-09 09:00:31 UTC (rev 3642) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 from - CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1608,8 +1608,8 @@ _iss sqInt bytesPerPage; _iss sqInt numSegments; _iss sqInt localAbsentReceiver; +_iss sqInt classTableFirstPage; _iss sqInt traceLogIndex; -_iss sqInt classTableFirstPage; _iss sqInt * freeLists; _iss char * stackLimit; _iss sqInt lkupClass; @@ -2410,7 +2410,7 @@ /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1709"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1716"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -41102,6 +41102,8 @@ } sampleBuffer = oop; l1: /* end stackObjectValue: */; + } + if (!GIV(primFailCode)) { /* begin assertClassOf:is: */ ok = (sampleBuffer & (tagMask())) == 0; if (ok) { @@ -45304,7 +45306,8 @@ if (classOrNil != GIV(nilObj)) { index = (i1 << (classTableMajorIndexShift())) + j; if ((classOrNil == aClass) - && (index != expectedIndex1)) { + && ((index != expectedIndex1) + && (index > 0x1F))) { classAtIndexput(index, GIV(nilObj)); if (index < GIV(classTableIndex)) { GIV(classTableIndex) = index; @@ -52030,10 +52033,17 @@ assert(validClassTableRootPages()); GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0L << (shiftForWord()))); assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask())); + flag("remove at some stage"); + if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) { + /* begin setClassIndexOf:to: */ + assert(((16 >= 0) && (16 <= (classIndexMask())))); + flag("endianness"); + longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & ((unsigned int)~(classIndexMask()))) + 16); + } GIV(numClassTablePages) = 1L << (22 - (classTableMajorIndexShift())); - for (i = 2; i < GIV(numClassTablePages); i += 1) { - if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i << (shiftForWord())))) == GIV(nilObj)) { - GIV(numClassTablePages) = i; + for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) { + if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i1 << (shiftForWord())))) == GIV(nilObj)) { + GIV(numClassTablePages) = i1; GIV(classTableIndex) = ((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1))) << (classTableMajorIndexShift()); goto l1; } @@ -52051,10 +52061,10 @@ assert((formatOf(freeListObj)) == (wordIndexableFormat())); GIV(freeLists) = firstIndexableField(freeListObj); GIV(freeListsMask) = 0; - for (i1 = 0, iLimiT = (32 - 1); i1 <= iLimiT; i1 += 1) { - if ((GIV(freeLists)[i1]) != 0) { - GIV(freeListsMask) = GIV(freeListsMask) | (1L << i1); - GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1])); + for (i = 0, iLimiT = (32 - 1); i <= iLimiT; i += 1) { + if ((GIV(freeLists)[i]) != 0) { + GIV(freeListsMask) = GIV(freeListsMask) | (1L << i); + GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i])); } } collapseSegmentsPostSwizzle(); @@ -54548,7 +54558,8 @@ l1: /* end classOrNilAtIndex: */; assert(objCouldBeClassObj(classObj)); realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask()); - if (classIndex != realClassIndex) { + if ((classIndex != realClassIndex) + && (realClassIndex > 0x1F)) { /* begin setClassIndexOf:to: */ assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask())))); flag("endianness"); @@ -66087,7 +66098,7 @@ sqInt limit; sqInt newEndOfMemory; sqInt next; - usqInt node; + sqInt node; usqInt numSlots; usqInt numSlots1; SpurSegmentInfo *seg; Modified: branches/Cog/nsspursrc/vm/cointerp.h =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.h 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/nsspursrc/vm/cointerp.h 2016-03-09 09:00:31 UTC (rev 3642) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2016-03-09 09:00:31 UTC (rev 3642) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 from - CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1611,8 +1611,8 @@ _iss sqInt bytesPerPage; _iss sqInt numSegments; _iss sqInt localAbsentReceiver; +_iss sqInt classTableFirstPage; _iss sqInt traceLogIndex; -_iss sqInt classTableFirstPage; _iss sqInt * freeLists; _iss char * stackLimit; _iss sqInt lkupClass; @@ -2413,7 +2413,7 @@ /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1709"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1716"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -41111,6 +41111,8 @@ } sampleBuffer = oop; l1: /* end stackObjectValue: */; + } + if (!GIV(primFailCode)) { /* begin assertClassOf:is: */ ok = (sampleBuffer & (tagMask())) == 0; if (ok) { @@ -45313,7 +45315,8 @@ if (classOrNil != GIV(nilObj)) { index = (i1 << (classTableMajorIndexShift())) + j; if ((classOrNil == aClass) - && (index != expectedIndex1)) { + && ((index != expectedIndex1) + && (index > 0x1F))) { classAtIndexput(index, GIV(nilObj)); if (index < GIV(classTableIndex)) { GIV(classTableIndex) = index; @@ -52039,10 +52042,17 @@ assert(validClassTableRootPages()); GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0L << (shiftForWord()))); assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask())); + flag("remove at some stage"); + if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) { + /* begin setClassIndexOf:to: */ + assert(((16 >= 0) && (16 <= (classIndexMask())))); + flag("endianness"); + longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & ((unsigned int)~(classIndexMask()))) + 16); + } GIV(numClassTablePages) = 1L << (22 - (classTableMajorIndexShift())); - for (i = 2; i < GIV(numClassTablePages); i += 1) { - if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i << (shiftForWord())))) == GIV(nilObj)) { - GIV(numClassTablePages) = i; + for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) { + if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i1 << (shiftForWord())))) == GIV(nilObj)) { + GIV(numClassTablePages) = i1; GIV(classTableIndex) = ((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1))) << (classTableMajorIndexShift()); goto l1; } @@ -52060,10 +52070,10 @@ assert((formatOf(freeListObj)) == (wordIndexableFormat())); GIV(freeLists) = firstIndexableField(freeListObj); GIV(freeListsMask) = 0; - for (i1 = 0, iLimiT = (32 - 1); i1 <= iLimiT; i1 += 1) { - if ((GIV(freeLists)[i1]) != 0) { - GIV(freeListsMask) = GIV(freeListsMask) | (1L << i1); - GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1])); + for (i = 0, iLimiT = (32 - 1); i <= iLimiT; i += 1) { + if ((GIV(freeLists)[i]) != 0) { + GIV(freeListsMask) = GIV(freeListsMask) | (1L << i); + GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i])); } } collapseSegmentsPostSwizzle(); @@ -54557,7 +54567,8 @@ l1: /* end classOrNilAtIndex: */; assert(objCouldBeClassObj(classObj)); realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask()); - if (classIndex != realClassIndex) { + if ((classIndex != realClassIndex) + && (realClassIndex > 0x1F)) { /* begin setClassIndexOf:to: */ assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask())))); flag("endianness"); @@ -66096,7 +66107,7 @@ sqInt limit; sqInt newEndOfMemory; sqInt next; - usqInt node; + sqInt node; usqInt numSlots; usqInt numSlots1; SpurSegmentInfo *seg; Modified: branches/Cog/nsspurstack64src/vm/gcc3x-interp.c =================================================================== --- branches/Cog/nsspurstack64src/vm/gcc3x-interp.c 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/nsspurstack64src/vm/gcc3x-interp.c 2016-03-09 09:00:31 UTC (rev 3642) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 from - StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -2185,7 +2185,7 @@ /* 575 */ (void (*)(void))0, 0 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1709"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1716"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -28470,6 +28470,8 @@ } sampleBuffer = oop; l1: /* end stackObjectValue: */; + } + if (!GIV(primFailCode)) { /* begin assertClassOf:is: */ ok = (sampleBuffer & (tagMask())) == 0; if (ok) { @@ -32582,7 +32584,8 @@ if (classOrNil != GIV(nilObj)) { index = (((long)i1) << (classTableMajorIndexShift())) + j; if ((classOrNil == aClass) - && (index != expectedIndex1)) { + && ((index != expectedIndex1) + && (index > 0x1F))) { classAtIndexput(index, GIV(nilObj)); if (index < GIV(classTableIndex)) { GIV(classTableIndex) = index; @@ -39443,10 +39446,16 @@ assert(validClassTableRootPages()); GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0LL << (shiftForWord()))); assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask())); + flag("remove at some stage"); + if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) { + /* begin setClassIndexOf:to: */ + assert(((16 >= 0) && (16 <= (classIndexMask())))); + longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & (~(classIndexMask()))) + 16); + } GIV(numClassTablePages) = 1LL << (22 - (classTableMajorIndexShift())); - for (i = 2; i < GIV(numClassTablePages); i += 1) { - if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i) << (shiftForWord())))) == GIV(nilObj)) { - GIV(numClassTablePages) = i; + for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) { + if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i1) << (shiftForWord())))) == GIV(nilObj)) { + GIV(numClassTablePages) = i1; GIV(classTableIndex) = ((long)((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1)))) << (classTableMajorIndexShift()); goto l1; } @@ -39464,10 +39473,10 @@ assert((formatOf(freeListObj)) == (wordIndexableFormat())); GIV(freeLists) = firstIndexableField(freeListObj); GIV(freeListsMask) = 0; - for (i1 = 0, iLimiT = (64 - 1); i1 <= iLimiT; i1 += 1) { - if ((GIV(freeLists)[i1]) != 0) { - GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i1); - GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1])); + for (i = 0, iLimiT = (64 - 1); i <= iLimiT; i += 1) { + if ((GIV(freeLists)[i]) != 0) { + GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i); + GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i])); } } collapseSegmentsPostSwizzle(); @@ -41940,7 +41949,8 @@ l1: /* end classOrNilAtIndex: */; assert(objCouldBeClassObj(classObj)); realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask()); - if (classIndex != realClassIndex) { + if ((classIndex != realClassIndex) + && (realClassIndex > 0x1F)) { /* begin setClassIndexOf:to: */ assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask())))); longAtput(objOop, ((longAt(objOop)) & (~(classIndexMask()))) + realClassIndex); Modified: branches/Cog/nsspurstack64src/vm/interp.c =================================================================== --- branches/Cog/nsspurstack64src/vm/interp.c 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/nsspurstack64src/vm/interp.c 2016-03-09 09:00:31 UTC (rev 3642) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 from - StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -2182,7 +2182,7 @@ /* 575 */ (void (*)(void))0, 0 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1709"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1716"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -28461,6 +28461,8 @@ } sampleBuffer = oop; l1: /* end stackObjectValue: */; + } + if (!GIV(primFailCode)) { /* begin assertClassOf:is: */ ok = (sampleBuffer & (tagMask())) == 0; if (ok) { @@ -32573,7 +32575,8 @@ if (classOrNil != GIV(nilObj)) { index = (((long)i1) << (classTableMajorIndexShift())) + j; if ((classOrNil == aClass) - && (index != expectedIndex1)) { + && ((index != expectedIndex1) + && (index > 0x1F))) { classAtIndexput(index, GIV(nilObj)); if (index < GIV(classTableIndex)) { GIV(classTableIndex) = index; @@ -39434,10 +39437,16 @@ assert(validClassTableRootPages()); GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0LL << (shiftForWord()))); assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask())); + flag("remove at some stage"); + if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) { + /* begin setClassIndexOf:to: */ + assert(((16 >= 0) && (16 <= (classIndexMask())))); + longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & (~(classIndexMask()))) + 16); + } GIV(numClassTablePages) = 1LL << (22 - (classTableMajorIndexShift())); - for (i = 2; i < GIV(numClassTablePages); i += 1) { - if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i) << (shiftForWord())))) == GIV(nilObj)) { - GIV(numClassTablePages) = i; + for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) { + if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i1) << (shiftForWord())))) == GIV(nilObj)) { + GIV(numClassTablePages) = i1; GIV(classTableIndex) = ((long)((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1)))) << (classTableMajorIndexShift()); goto l1; } @@ -39455,10 +39464,10 @@ assert((formatOf(freeListObj)) == (wordIndexableFormat())); GIV(freeLists) = firstIndexableField(freeListObj); GIV(freeListsMask) = 0; - for (i1 = 0, iLimiT = (64 - 1); i1 <= iLimiT; i1 += 1) { - if ((GIV(freeLists)[i1]) != 0) { - GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i1); - GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1])); + for (i = 0, iLimiT = (64 - 1); i <= iLimiT; i += 1) { + if ((GIV(freeLists)[i]) != 0) { + GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i); + GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i])); } } collapseSegmentsPostSwizzle(); @@ -41931,7 +41940,8 @@ l1: /* end classOrNilAtIndex: */; assert(objCouldBeClassObj(classObj)); realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask()); - if (classIndex != realClassIndex) { + if ((classIndex != realClassIndex) + && (realClassIndex > 0x1F)) { /* begin setClassIndexOf:to: */ assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask())))); longAtput(objOop, ((longAt(objOop)) & (~(classIndexMask()))) + realClassIndex); Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c =================================================================== --- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2016-03-09 09:00:31 UTC (rev 3642) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 from - StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1400,8 +1400,8 @@ _iss sqInt numSegments; _iss char * stackMemory; _iss sqInt * freeLists; +_iss sqInt classTableFirstPage; _iss sqInt rememberedSetSize; -_iss sqInt classTableFirstPage; _iss char * stackLimit; _iss sqInt tempOop; _iss sqInt * rememberedSet; @@ -2155,7 +2155,7 @@ /* 575 */ (void (*)(void))0, 0 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1709"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1716"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -27456,6 +27456,8 @@ } sampleBuffer = oop; l1: /* end stackObjectValue: */; + } + if (!GIV(primFailCode)) { /* begin assertClassOf:is: */ ok = (sampleBuffer & (tagMask())) == 0; if (ok) { @@ -31510,7 +31512,8 @@ if (classOrNil != GIV(nilObj)) { index = (i1 << (classTableMajorIndexShift())) + j; if ((classOrNil == aClass) - && (index != expectedIndex1)) { + && ((index != expectedIndex1) + && (index > 0x1F))) { classAtIndexput(index, GIV(nilObj)); if (index < GIV(classTableIndex)) { GIV(classTableIndex) = index; @@ -38348,10 +38351,17 @@ assert(validClassTableRootPages()); GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0L << (shiftForWord()))); assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask())); + flag("remove at some stage"); + if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) { + /* begin setClassIndexOf:to: */ + assert(((16 >= 0) && (16 <= (classIndexMask())))); + flag("endianness"); + longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & ((unsigned int)~(classIndexMask()))) + 16); + } GIV(numClassTablePages) = 1L << (22 - (classTableMajorIndexShift())); - for (i = 2; i < GIV(numClassTablePages); i += 1) { - if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i << (shiftForWord())))) == GIV(nilObj)) { - GIV(numClassTablePages) = i; + for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) { + if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i1 << (shiftForWord())))) == GIV(nilObj)) { + GIV(numClassTablePages) = i1; GIV(classTableIndex) = ((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1))) << (classTableMajorIndexShift()); goto l1; } @@ -38369,10 +38379,10 @@ assert((formatOf(freeListObj)) == (wordIndexableFormat())); GIV(freeLists) = firstIndexableField(freeListObj); GIV(freeListsMask) = 0; - for (i1 = 0, iLimiT = (32 - 1); i1 <= iLimiT; i1 += 1) { - if ((GIV(freeLists)[i1]) != 0) { - GIV(freeListsMask) = GIV(freeListsMask) | (1L << i1); - GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1])); + for (i = 0, iLimiT = (32 - 1); i <= iLimiT; i += 1) { + if ((GIV(freeLists)[i]) != 0) { + GIV(freeListsMask) = GIV(freeListsMask) | (1L << i); + GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i])); } } collapseSegmentsPostSwizzle(); @@ -40841,7 +40851,8 @@ l1: /* end classOrNilAtIndex: */; assert(objCouldBeClassObj(classObj)); realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask()); - if (classIndex != realClassIndex) { + if ((classIndex != realClassIndex) + && (realClassIndex > 0x1F)) { /* begin setClassIndexOf:to: */ assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask())))); flag("endianness"); Modified: branches/Cog/nsspurstacksrc/vm/interp.c =================================================================== --- branches/Cog/nsspurstacksrc/vm/interp.c 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/nsspurstacksrc/vm/interp.c 2016-03-09 09:00:31 UTC (rev 3642) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 from - StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1397,8 +1397,8 @@ _iss sqInt numSegments; _iss char * stackMemory; _iss sqInt * freeLists; +_iss sqInt classTableFirstPage; _iss sqInt rememberedSetSize; -_iss sqInt classTableFirstPage; _iss char * stackLimit; _iss sqInt tempOop; _iss sqInt * rememberedSet; @@ -2152,7 +2152,7 @@ /* 575 */ (void (*)(void))0, 0 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1709"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1716"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -27447,6 +27447,8 @@ } sampleBuffer = oop; l1: /* end stackObjectValue: */; + } + if (!GIV(primFailCode)) { /* begin assertClassOf:is: */ ok = (sampleBuffer & (tagMask())) == 0; if (ok) { @@ -31501,7 +31503,8 @@ if (classOrNil != GIV(nilObj)) { index = (i1 << (classTableMajorIndexShift())) + j; if ((classOrNil == aClass) - && (index != expectedIndex1)) { + && ((index != expectedIndex1) + && (index > 0x1F))) { classAtIndexput(index, GIV(nilObj)); if (index < GIV(classTableIndex)) { GIV(classTableIndex) = index; @@ -38339,10 +38342,17 @@ assert(validClassTableRootPages()); GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0L << (shiftForWord()))); assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask())); + flag("remove at some stage"); + if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) { + /* begin setClassIndexOf:to: */ + assert(((16 >= 0) && (16 <= (classIndexMask())))); + flag("endianness"); + longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & ((unsigned int)~(classIndexMask()))) + 16); + } GIV(numClassTablePages) = 1L << (22 - (classTableMajorIndexShift())); - for (i = 2; i < GIV(numClassTablePages); i += 1) { - if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i << (shiftForWord())))) == GIV(nilObj)) { - GIV(numClassTablePages) = i; + for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) { + if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (i1 << (shiftForWord())))) == GIV(nilObj)) { + GIV(numClassTablePages) = i1; GIV(classTableIndex) = ((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1))) << (classTableMajorIndexShift()); goto l1; } @@ -38360,10 +38370,10 @@ assert((formatOf(freeListObj)) == (wordIndexableFormat())); GIV(freeLists) = firstIndexableField(freeListObj); GIV(freeListsMask) = 0; - for (i1 = 0, iLimiT = (32 - 1); i1 <= iLimiT; i1 += 1) { - if ((GIV(freeLists)[i1]) != 0) { - GIV(freeListsMask) = GIV(freeListsMask) | (1L << i1); - GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1])); + for (i = 0, iLimiT = (32 - 1); i <= iLimiT; i += 1) { + if ((GIV(freeLists)[i]) != 0) { + GIV(freeListsMask) = GIV(freeListsMask) | (1L << i); + GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i])); } } collapseSegmentsPostSwizzle(); @@ -40832,7 +40842,8 @@ l1: /* end classOrNilAtIndex: */; assert(objCouldBeClassObj(classObj)); realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask()); - if (classIndex != realClassIndex) { + if ((classIndex != realClassIndex) + && (realClassIndex > 0x1F)) { /* begin setClassIndexOf:to: */ assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask())))); flag("endianness"); Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h ___________________________________________________________________ Modified: checkindate - Fri Mar 4 17:02:37 PST 2016 + Wed Mar 9 00:58:46 PST 2016 Modified: branches/Cog/spur64src/vm/cogit.h =================================================================== --- branches/Cog/spur64src/vm/cogit.h 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/spur64src/vm/cogit.h 2016-03-09 09:00:31 UTC (rev 3642) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGenerator VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ Modified: branches/Cog/spur64src/vm/cointerp.c =================================================================== --- branches/Cog/spur64src/vm/cointerp.c 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/spur64src/vm/cointerp.c 2016-03-09 09:00:31 UTC (rev 3642) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 from - CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1604,9 +1604,9 @@ _iss sqInt needGCFlag; _iss sqInt * freeLists; _iss sqInt traceLogIndex; +_iss sqInt classTableFirstPage; _iss sqInt rememberedSetSize; _iss char * stackLimit; -_iss sqInt classTableFirstPage; _iss usqInt scavengeThreshold; _iss sqInt * rememberedSet; _iss sqInt remapBufferCount; @@ -2404,7 +2404,7 @@ /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-eem.1709]"; +const char *interpreterVersion = "Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-eem.1716]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -36918,6 +36918,8 @@ } sampleBuffer = oop; l1: /* end stackObjectValue: */; + } + if (!GIV(primFailCode)) { /* begin assertClassOf:is: */ ok = (sampleBuffer & (tagMask())) == 0; if (ok) { @@ -41185,7 +41187,8 @@ if (classOrNil != GIV(nilObj)) { index = (((long)i1) << (classTableMajorIndexShift())) + j; if ((classOrNil == aClass) - && (index != expectedIndex1)) { + && ((index != expectedIndex1) + && (index > 0x1F))) { classAtIndexput(index, GIV(nilObj)); if (index < GIV(classTableIndex)) { GIV(classTableIndex) = index; @@ -47934,10 +47937,16 @@ assert(validClassTableRootPages()); GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0LL << (shiftForWord()))); assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask())); + flag("remove at some stage"); + if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) { + /* begin setClassIndexOf:to: */ + assert(((16 >= 0) && (16 <= (classIndexMask())))); + longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & (~(classIndexMask()))) + 16); + } GIV(numClassTablePages) = 1LL << (22 - (classTableMajorIndexShift())); - for (i = 2; i < GIV(numClassTablePages); i += 1) { - if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i) << (shiftForWord())))) == GIV(nilObj)) { - GIV(numClassTablePages) = i; + for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) { + if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i1) << (shiftForWord())))) == GIV(nilObj)) { + GIV(numClassTablePages) = i1; GIV(classTableIndex) = ((long)((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1)))) << (classTableMajorIndexShift()); goto l1; } @@ -47955,10 +47964,10 @@ assert((formatOf(freeListObj)) == (wordIndexableFormat())); GIV(freeLists) = firstIndexableField(freeListObj); GIV(freeListsMask) = 0; - for (i1 = 0, iLimiT = (64 - 1); i1 <= iLimiT; i1 += 1) { - if ((GIV(freeLists)[i1]) != 0) { - GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i1); - GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1])); + for (i = 0, iLimiT = (64 - 1); i <= iLimiT; i += 1) { + if ((GIV(freeLists)[i]) != 0) { + GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i); + GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i])); } } collapseSegmentsPostSwizzle(); @@ -50456,7 +50465,8 @@ l1: /* end classOrNilAtIndex: */; assert(objCouldBeClassObj(classObj)); realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask()); - if (classIndex != realClassIndex) { + if ((classIndex != realClassIndex) + && (realClassIndex > 0x1F)) { /* begin setClassIndexOf:to: */ assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask())))); longAtput(objOop, ((longAt(objOop)) & (~(classIndexMask()))) + realClassIndex); @@ -56558,7 +56568,7 @@ usqInt prevFree; usqInt prevFreeChunk; usqInt prevPrevFree; - usqInt prevPrevFreeChunk; + sqInt prevPrevFreeChunk; sqInt slotBytes; sqInt slotBytes1; usqInt there; @@ -61903,7 +61913,7 @@ bridgeFromto(SpurSegmentInfo *aSegment, SpurSegmentInfo *nextSegmentOrNil) { usqInt bridgeSpan; - sqInt clifton; + usqInt clifton; usqInt segEnd; segEnd = ((aSegment->segSize)) + ((aSegment->segStart)); @@ -62147,7 +62157,7 @@ sqInt limit; sqInt newEndOfMemory; sqInt next; - sqInt node; + usqInt node; usqInt numSlots; usqInt numSlots1; SpurSegmentInfo *seg; @@ -62276,7 +62286,7 @@ static sqInt NoDbgRegParms readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes) { DECL_MAYBE_SQ_GLOBAL_STRUCT - usqInt bridge; + sqInt bridge; usqInt bridgehead; usqLong bridgeSpan; sqInt bytesRead; Modified: branches/Cog/spur64src/vm/cointerp.h =================================================================== --- branches/Cog/spur64src/vm/cointerp.h 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/spur64src/vm/cointerp.h 2016-03-09 09:00:31 UTC (rev 3642) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ Modified: branches/Cog/spur64src/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/spur64src/vm/gcc3x-cointerp.c 2016-03-08 22:21:51 UTC (rev 3641) +++ branches/Cog/spur64src/vm/gcc3x-cointerp.c 2016-03-09 09:00:31 UTC (rev 3642) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 from - CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b + CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1709 uuid: 10ded6ee-4717-4e34-84d0-9c501aed252b " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1716 uuid: 9115c93b-f425-4118-96e7-7130adeff1f2 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1607,9 +1607,9 @@ _iss sqInt needGCFlag; _iss sqInt * freeLists; _iss sqInt traceLogIndex; +_iss sqInt classTableFirstPage; _iss sqInt rememberedSetSize; _iss char * stackLimit; -_iss sqInt classTableFirstPage; _iss usqInt scavengeThreshold; _iss sqInt * rememberedSet; _iss sqInt remapBufferCount; @@ -2407,7 +2407,7 @@ /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-eem.1709]"; +const char *interpreterVersion = "Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-eem.1716]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -36927,6 +36927,8 @@ } sampleBuffer = oop; l1: /* end stackObjectValue: */; + } + if (!GIV(primFailCode)) { /* begin assertClassOf:is: */ ok = (sampleBuffer & (tagMask())) == 0; if (ok) { @@ -41194,7 +41196,8 @@ if (classOrNil != GIV(nilObj)) { index = (((long)i1) << (classTableMajorIndexShift())) + j; if ((classOrNil == aClass) - && (index != expectedIndex1)) { + && ((index != expectedIndex1) + && (index > 0x1F))) { classAtIndexput(index, GIV(nilObj)); if (index < GIV(classTableIndex)) { GIV(classTableIndex) = index; @@ -47943,10 +47946,16 @@ assert(validClassTableRootPages()); GIV(classTableFirstPage) = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (0LL << (shiftForWord()))); assert(((numSlotsOf(GIV(classTableFirstPage))) - 1) == (classTableMinorIndexMask())); + flag("remove at some stage"); + if (((longAt(GIV(classTableFirstPage))) & (classIndexMask())) != 16) { + /* begin setClassIndexOf:to: */ + assert(((16 >= 0) && (16 <= (classIndexMask())))); + longAtput(GIV(classTableFirstPage), ((longAt(GIV(classTableFirstPage))) & (~(classIndexMask()))) + 16); + } GIV(numClassTablePages) = 1LL << (22 - (classTableMajorIndexShift())); - for (i = 2; i < GIV(numClassTablePages); i += 1) { - if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i) << (shiftForWord())))) == GIV(nilObj)) { - GIV(numClassTablePages) = i; + for (i1 = 2; i1 < GIV(numClassTablePages); i1 += 1) { + if ((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)i1) << (shiftForWord())))) == GIV(nilObj)) { + GIV(numClassTablePages) = i1; GIV(classTableIndex) = ((long)((((GIV(numClassTablePages) - 1) < 1) ? 1 : (GIV(numClassTablePages) - 1)))) << (classTableMajorIndexShift()); goto l1; } @@ -47964,10 +47973,10 @@ assert((formatOf(freeListObj)) == (wordIndexableFormat())); GIV(freeLists) = firstIndexableField(freeListObj); GIV(freeListsMask) = 0; - for (i1 = 0, iLimiT = (64 - 1); i1 <= iLimiT; i1 += 1) { - if ((GIV(freeLists)[i1]) != 0) { - GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i1); - GIV(freeLists)[i1] = (swizzleObj(GIV(freeLists)[i1])); + for (i = 0, iLimiT = (64 - 1); i <= iLimiT; i += 1) { + if ((GIV(freeLists)[i]) != 0) { + GIV(freeListsMask) = GIV(freeListsMask) | (1LL << i); + GIV(freeLists)[i] = (swizzleObj(GIV(freeLists)[i])); } } collapseSegmentsPostSwizzle(); @@ -50465,7 +50474,8 @@ l1: /* end classOrNilAtIndex: */; assert(objCouldBeClassObj(classObj)); realClassIndex = (long32At(classObj + 4)) & (identityHashHalfWordMask()); - if (classIndex != realClassIndex) { + if ((classIndex != realClassIndex) + && (realClassIndex > 0x1F)) { /* begin setClassIndexOf:to: */ assert(((realClassIndex >= 0) && (realClassIndex <= (classIndexMask())))); longAtput(objOop, ((longAt(objOop)) & (~(classIndexMask()))) + realClassIndex); @@ -56567,7 +56577,7 @@ usqInt prevFree; usqInt prevFreeChunk; usqInt prevPrevFree; - usqInt prevPrevFreeChunk; + sqInt prevPrevFreeChunk; sqInt slotBytes; sqInt slotBytes1; usqInt there; @@ -61912,7 +61922,7 @@ bridgeFromto(SpurSegmentInfo *aSegment, SpurSegmentInfo *nextSegmentOrNil) { usqInt bridgeSpan; - sqInt clifton; + usqInt clifton; usqInt segEnd; segEnd = ((aSegment->segSize)) + ((aSegment->segStart)); @@ -62156,7 +62166,7 @@ sqInt limit; sqInt newEndOfMemory; sqInt next; - sqInt node; + usqInt node; usqInt numSlots; usqInt numSlots1; SpurSegmentInfo *seg; @@ -62285,7 +62295,7 @@ static sqInt NoDbgRegParms readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes) { DECL_MAYBE_SQ_GLOBAL_STRUCT - usqInt bridge; + sqInt bridge; usqInt bridgehead; usqLong bridgeSpan; sqInt bytesRead; Modified: branches/Cog/spursistasrc/vm/cogit.h =================================================================== --- branches/Cog/spursistasrc/vm/cogit.h 2016-03-08 22:21:51 UTC (rev 3641) @@ Diff output truncated at 50000 characters. @@ |
Free forum by Nabble | Edit this page |