Revision: 3052 Author: eliot Date: 2014-07-22 10:45:31 -0700 (Tue, 22 Jul 2014) Log Message: ----------- CogVM source as per VMMaker.oscog-eem.831
Spur: Fix bug with class table management and two-way become. Because two-way become may do an in-place swap obj1 & obj2 in SpurMemoryManager>>doBecome:and:copyHash: may not be forwarded after the inner become. Hence they should not be followed if not forwarded. The bug manifested as Object's identityHash changing: superclass is the first slot in a class. Following an unforwarded subclass of object yields Object. Setting the hash bits of the followed object smashes Object's identityHash.
Thanks to Stephane Rollandin for finding the bug.
Modified Paths: -------------- 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/spursistasrc/vm/cointerp.c branches/Cog/spursistasrc/vm/cointerp.h branches/Cog/spursistasrc/vm/gcc3x-cointerp.c branches/Cog/spursistasrc/vm/interp.h branches/Cog/spursistasrc/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
Property Changed: ---------------- branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/nsspursrc/vm/cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.c 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/nsspursrc/vm/cointerp.c 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 from - CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2311,7 +2311,7 @@ /*540*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.830"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.831"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace;
@@ -42466,14 +42466,19 @@
/* o2 wasn't in the table; put it there */
- /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj1)); - referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); - while (((referent9 & 3) == 0) - && (((longAt(referent9)) & 0x3FFFFF) == 8)) { - referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj1)); + referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); + while (((referent9 & 3) == 0) + && (((longAt(referent9)) & 0x3FFFFF) == 8)) { + referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2)); + } + newObj2 = referent9; } - newObj2 = referent9; + else { + newObj2 = obj1; + } assert((rawHashBitsOf(newObj2)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -42484,14 +42489,19 @@ } else { if (o2ClassIndex != 0) { - /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj2)); - referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); - while (((referent13 & 3) == 0) - && (((longAt(referent13)) & 0x3FFFFF) == 8)) { - referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj2)); + referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); + while (((referent13 & 3) == 0) + && (((longAt(referent13)) & 0x3FFFFF) == 8)) { + referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + } + newObj1 = referent13; } - newObj1 = referent13; + else { + newObj1 = obj2; + } assert((rawHashBitsOf(newObj1)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -64375,7 +64385,7 @@ index = longAt(GIV(stackPointer) + (1 * BytesPerWord)); aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord)); if (!((index & 1))) { - GIV(primFailCode) = PrimErrBadArgument; + (GIV(primFailCode) = PrimErrBadArgument); return; } hdr = long64At(aContext); @@ -64621,7 +64631,7 @@ stSize = (sp1 >> 1); l2: /* end fetchStackPointerOf: */; if (!(((index >= 1) && (index <= stSize)))) { - GIV(primFailCode) = PrimErrBadIndex; + (GIV(primFailCode) = PrimErrBadIndex); return; } /* begin subscript:with:storing:format: */ @@ -64677,7 +64687,7 @@ assert((senderOop & 1)); spouseFP = pointerForOop(senderOop - 1); if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) { - GIV(primFailCode) = PrimErrBadIndex; + (GIV(primFailCode) = PrimErrBadIndex); return; } if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {
Modified: branches/Cog/nsspursrc/vm/cointerp.h =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/nsspursrc/vm/cointerp.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2014-07-22 17:45:31 UTC (rev 3052) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 from - CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2314,7 +2314,7 @@ /*540*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.830"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.831"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace;
@@ -42475,14 +42475,19 @@
/* o2 wasn't in the table; put it there */
- /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj1)); - referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); - while (((referent9 & 3) == 0) - && (((longAt(referent9)) & 0x3FFFFF) == 8)) { - referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj1)); + referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); + while (((referent9 & 3) == 0) + && (((longAt(referent9)) & 0x3FFFFF) == 8)) { + referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2)); + } + newObj2 = referent9; } - newObj2 = referent9; + else { + newObj2 = obj1; + } assert((rawHashBitsOf(newObj2)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -42493,14 +42498,19 @@ } else { if (o2ClassIndex != 0) { - /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj2)); - referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); - while (((referent13 & 3) == 0) - && (((longAt(referent13)) & 0x3FFFFF) == 8)) { - referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj2)); + referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); + while (((referent13 & 3) == 0) + && (((longAt(referent13)) & 0x3FFFFF) == 8)) { + referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + } + newObj1 = referent13; } - newObj1 = referent13; + else { + newObj1 = obj2; + } assert((rawHashBitsOf(newObj1)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -64384,7 +64394,7 @@ index = longAt(GIV(stackPointer) + (1 * BytesPerWord)); aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord)); if (!((index & 1))) { - GIV(primFailCode) = PrimErrBadArgument; + (GIV(primFailCode) = PrimErrBadArgument); return; } hdr = long64At(aContext); @@ -64630,7 +64640,7 @@ stSize = (sp1 >> 1); l2: /* end fetchStackPointerOf: */; if (!(((index >= 1) && (index <= stSize)))) { - GIV(primFailCode) = PrimErrBadIndex; + (GIV(primFailCode) = PrimErrBadIndex); return; } /* begin subscript:with:storing:format: */ @@ -64686,7 +64696,7 @@ assert((senderOop & 1)); spouseFP = pointerForOop(senderOop - 1); if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) { - GIV(primFailCode) = PrimErrBadIndex; + (GIV(primFailCode) = PrimErrBadIndex); return; } if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {
Modified: branches/Cog/nsspursrc/vm/interp.h =================================================================== --- branches/Cog/nsspursrc/vm/interp.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/nsspursrc/vm/interp.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
#define VM_PROXY_MAJOR 1
Modified: branches/Cog/nsspursrc/vm/vmCallback.h =================================================================== --- branches/Cog/nsspursrc/vm/vmCallback.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/nsspursrc/vm/vmCallback.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
#define VM_CALLBACK_INC 1
Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c =================================================================== --- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2014-07-22 17:45:31 UTC (rev 3052) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 from - StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2062,7 +2062,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.830"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.831"; volatile int sendTrace; sqInt suppressHeartbeatFlag;
@@ -30999,14 +30999,19 @@
/* o2 wasn't in the table; put it there */
- /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj1)); - referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); - while (((referent7 & 3) == 0) - && (((longAt(referent7)) & 0x3FFFFF) == 8)) { - referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj1)); + referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); + while (((referent7 & 3) == 0) + && (((longAt(referent7)) & 0x3FFFFF) == 8)) { + referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2)); + } + newObj2 = referent7; } - newObj2 = referent7; + else { + newObj2 = obj1; + } assert((rawHashBitsOf(newObj2)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -31017,14 +31022,19 @@ } else { if (o2ClassIndex != 0) { - /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj2)); - referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); - while (((referent13 & 3) == 0) - && (((longAt(referent13)) & 0x3FFFFF) == 8)) { - referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj2)); + referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); + while (((referent13 & 3) == 0) + && (((longAt(referent13)) & 0x3FFFFF) == 8)) { + referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + } + newObj1 = referent13; } - newObj1 = referent13; + else { + newObj1 = obj2; + } assert((rawHashBitsOf(newObj1)) == 0); /* begin setHashBitsOf:to: */ flag("endianness");
Modified: branches/Cog/nsspurstacksrc/vm/interp.c =================================================================== --- branches/Cog/nsspurstacksrc/vm/interp.c 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/nsspurstacksrc/vm/interp.c 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 from - StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2059,7 +2059,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.830"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.831"; volatile int sendTrace; sqInt suppressHeartbeatFlag;
@@ -30990,14 +30990,19 @@
/* o2 wasn't in the table; put it there */
- /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj1)); - referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); - while (((referent7 & 3) == 0) - && (((longAt(referent7)) & 0x3FFFFF) == 8)) { - referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj1)); + referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); + while (((referent7 & 3) == 0) + && (((longAt(referent7)) & 0x3FFFFF) == 8)) { + referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2)); + } + newObj2 = referent7; } - newObj2 = referent7; + else { + newObj2 = obj1; + } assert((rawHashBitsOf(newObj2)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -31008,14 +31013,19 @@ } else { if (o2ClassIndex != 0) { - /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj2)); - referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); - while (((referent13 & 3) == 0) - && (((longAt(referent13)) & 0x3FFFFF) == 8)) { - referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj2)); + referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); + while (((referent13 & 3) == 0) + && (((longAt(referent13)) & 0x3FFFFF) == 8)) { + referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + } + newObj1 = referent13; } - newObj1 = referent13; + else { + newObj1 = obj2; + } assert((rawHashBitsOf(newObj1)) == 0); /* begin setHashBitsOf:to: */ flag("endianness");
Modified: branches/Cog/nsspurstacksrc/vm/interp.h =================================================================== --- branches/Cog/nsspurstacksrc/vm/interp.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/nsspurstacksrc/vm/interp.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
#define VM_PROXY_MAJOR 1
Modified: branches/Cog/nsspurstacksrc/vm/vmCallback.h =================================================================== --- branches/Cog/nsspurstacksrc/vm/vmCallback.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/nsspurstacksrc/vm/vmCallback.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
#define VM_CALLBACK_INC 1
Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h ___________________________________________________________________ Modified: checkindate - Tue Jul 22 06:32:10 HST 2014 + Tue Jul 22 07:44:01 HST 2014
Modified: branches/Cog/spursistasrc/vm/cointerp.c =================================================================== --- branches/Cog/spursistasrc/vm/cointerp.c 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spursistasrc/vm/cointerp.c 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 from - CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -1116,7 +1116,7 @@ sqInt removeGCRoot(sqInt *varLoc); static void runLeakCheckerForFullGCexcludeUnmarkedNewSpaceObjsclassIndicesShouldBeValid(sqInt fullGCFlag, sqInt excludeUnmarkedNewSpaceObjs, sqInt classIndicesShouldBeValid) NoDbgRegParms; static void scavengingGCTenuringIf(sqInt tenuringCriterion) NoDbgRegParms; -static sqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms; +static usqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms; void shortPrintObjectsFromto(sqInt startAddress, sqInt endAddress); sqInt shouldRemapObj(sqInt objOop); sqInt shouldRemapOop(sqInt oop); @@ -2306,7 +2306,7 @@ /*540*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.830]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.831]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace;
@@ -5494,6 +5494,7 @@ GIV(framePointer) = localFP; ceEnterCogCodePopReceiverReg(); + null; goto l147; } localIP = pointerForOop(longAt(localFP + FoxIFSavedIP)); @@ -5508,7 +5509,7 @@ /* begin fetchNextBytecode */ currentBytecode = byteAtPointer(++localIP);
- /* return self */ + null; l147: /* end baseFrameReturn */; goto l146; } @@ -37293,14 +37294,19 @@
/* o2 wasn't in the table; put it there */
- /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj1)); - referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); - while (((referent9 & 3) == 0) - && (((longAt(referent9)) & 0x3FFFFF) == 8)) { - referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj1)); + referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); + while (((referent9 & 3) == 0) + && (((longAt(referent9)) & 0x3FFFFF) == 8)) { + referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2)); + } + newObj2 = referent9; } - newObj2 = referent9; + else { + newObj2 = obj1; + } assert((rawHashBitsOf(newObj2)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -37311,14 +37317,19 @@ } else { if (o2ClassIndex != 0) { - /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj2)); - referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); - while (((referent13 & 3) == 0) - && (((longAt(referent13)) & 0x3FFFFF) == 8)) { - referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj2)); + referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); + while (((referent13 & 3) == 0) + && (((longAt(referent13)) & 0x3FFFFF) == 8)) { + referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + } + newObj1 = referent13; } - newObj1 = referent13; + else { + newObj1 = obj2; + } assert((rawHashBitsOf(newObj1)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -46455,7 +46466,7 @@ zero if no change was possible. */
-static sqInt +static usqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) { usqInt bytesAfter; @@ -58758,7 +58769,7 @@
index = longAt(GIV(stackPointer)); if (!((index & 1))) { - (GIV(primFailCode) = PrimErrBadArgument); + GIV(primFailCode) = PrimErrBadArgument; return; } index = (index >> 1); @@ -58975,7 +58986,7 @@ stSize = (sp1 >> 1); l2: /* end fetchStackPointerOf: */; if (!(((index >= 1) && (index <= stSize)))) { - (GIV(primFailCode) = PrimErrBadIndex); + GIV(primFailCode) = PrimErrBadIndex; return; } /* begin subscript:with:format: */ @@ -59000,7 +59011,7 @@ assert((senderOop & 1)); spouseFP = pointerForOop(senderOop - 1); if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) { - (GIV(primFailCode) = PrimErrBadIndex); + GIV(primFailCode) = PrimErrBadIndex; return; } value = ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())
Modified: branches/Cog/spursistasrc/vm/cointerp.h =================================================================== --- branches/Cog/spursistasrc/vm/cointerp.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spursistasrc/vm/cointerp.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
Modified: branches/Cog/spursistasrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/spursistasrc/vm/gcc3x-cointerp.c 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spursistasrc/vm/gcc3x-cointerp.c 2014-07-22 17:45:31 UTC (rev 3052) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 from - CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -1119,7 +1119,7 @@ sqInt removeGCRoot(sqInt *varLoc); static void runLeakCheckerForFullGCexcludeUnmarkedNewSpaceObjsclassIndicesShouldBeValid(sqInt fullGCFlag, sqInt excludeUnmarkedNewSpaceObjs, sqInt classIndicesShouldBeValid) NoDbgRegParms; static void scavengingGCTenuringIf(sqInt tenuringCriterion) NoDbgRegParms; -static sqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms; +static usqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms; void shortPrintObjectsFromto(sqInt startAddress, sqInt endAddress); sqInt shouldRemapObj(sqInt objOop); sqInt shouldRemapOop(sqInt oop); @@ -2309,7 +2309,7 @@ /*540*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.830]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.831]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace;
@@ -5503,6 +5503,7 @@ GIV(framePointer) = localFP; ceEnterCogCodePopReceiverReg(); + null; goto l147; } localIP = pointerForOop(longAt(localFP + FoxIFSavedIP)); @@ -5517,7 +5518,7 @@ /* begin fetchNextBytecode */ currentBytecode = byteAtPointer(++localIP);
- /* return self */ + null; l147: /* end baseFrameReturn */; goto l146; } @@ -37302,14 +37303,19 @@
/* o2 wasn't in the table; put it there */
- /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj1)); - referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); - while (((referent9 & 3) == 0) - && (((longAt(referent9)) & 0x3FFFFF) == 8)) { - referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj1)); + referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); + while (((referent9 & 3) == 0) + && (((longAt(referent9)) & 0x3FFFFF) == 8)) { + referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2)); + } + newObj2 = referent9; } - newObj2 = referent9; + else { + newObj2 = obj1; + } assert((rawHashBitsOf(newObj2)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -37320,14 +37326,19 @@ } else { if (o2ClassIndex != 0) { - /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj2)); - referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); - while (((referent13 & 3) == 0) - && (((longAt(referent13)) & 0x3FFFFF) == 8)) { - referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj2)); + referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); + while (((referent13 & 3) == 0) + && (((longAt(referent13)) & 0x3FFFFF) == 8)) { + referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + } + newObj1 = referent13; } - newObj1 = referent13; + else { + newObj1 = obj2; + } assert((rawHashBitsOf(newObj1)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -46464,7 +46475,7 @@ zero if no change was possible. */
-static sqInt +static usqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) { usqInt bytesAfter; @@ -58767,7 +58778,7 @@
index = longAt(GIV(stackPointer)); if (!((index & 1))) { - (GIV(primFailCode) = PrimErrBadArgument); + GIV(primFailCode) = PrimErrBadArgument; return; } index = (index >> 1); @@ -58984,7 +58995,7 @@ stSize = (sp1 >> 1); l2: /* end fetchStackPointerOf: */; if (!(((index >= 1) && (index <= stSize)))) { - (GIV(primFailCode) = PrimErrBadIndex); + GIV(primFailCode) = PrimErrBadIndex; return; } /* begin subscript:with:format: */ @@ -59009,7 +59020,7 @@ assert((senderOop & 1)); spouseFP = pointerForOop(senderOop - 1); if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) { - (GIV(primFailCode) = PrimErrBadIndex); + GIV(primFailCode) = PrimErrBadIndex; return; } value = ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())
Modified: branches/Cog/spursistasrc/vm/interp.h =================================================================== --- branches/Cog/spursistasrc/vm/interp.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spursistasrc/vm/interp.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
#define VM_PROXY_MAJOR 1
Modified: branches/Cog/spursistasrc/vm/vmCallback.h =================================================================== --- branches/Cog/spursistasrc/vm/vmCallback.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spursistasrc/vm/vmCallback.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
#define VM_CALLBACK_INC 1
Modified: branches/Cog/spursrc/vm/cointerp.c =================================================================== --- branches/Cog/spursrc/vm/cointerp.c 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spursrc/vm/cointerp.c 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 from - CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2301,7 +2301,7 @@ /*540*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.830]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.831]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace;
@@ -37089,14 +37089,19 @@
/* o2 wasn't in the table; put it there */
- /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj1)); - referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); - while (((referent9 & 3) == 0) - && (((longAt(referent9)) & 0x3FFFFF) == 8)) { - referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj1)); + referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); + while (((referent9 & 3) == 0) + && (((longAt(referent9)) & 0x3FFFFF) == 8)) { + referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2)); + } + newObj2 = referent9; } - newObj2 = referent9; + else { + newObj2 = obj1; + } assert((rawHashBitsOf(newObj2)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -37107,14 +37112,19 @@ } else { if (o2ClassIndex != 0) { - /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj2)); - referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); - while (((referent13 & 3) == 0) - && (((longAt(referent13)) & 0x3FFFFF) == 8)) { - referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj2)); + referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); + while (((referent13 & 3) == 0) + && (((longAt(referent13)) & 0x3FFFFF) == 8)) { + referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + } + newObj1 = referent13; } - newObj1 = referent13; + else { + newObj1 = obj2; + } assert((rawHashBitsOf(newObj1)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -58518,7 +58528,7 @@
index = longAt(GIV(stackPointer)); if (!((index & 1))) { - (GIV(primFailCode) = PrimErrBadArgument); + GIV(primFailCode) = PrimErrBadArgument; return; } index = (index >> 1); @@ -58735,7 +58745,7 @@ stSize = (sp1 >> 1); l2: /* end fetchStackPointerOf: */; if (!(((index >= 1) && (index <= stSize)))) { - (GIV(primFailCode) = PrimErrBadIndex); + GIV(primFailCode) = PrimErrBadIndex; return; } /* begin subscript:with:format: */ @@ -58760,7 +58770,7 @@ assert((senderOop & 1)); spouseFP = pointerForOop(senderOop - 1); if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) { - (GIV(primFailCode) = PrimErrBadIndex); + GIV(primFailCode) = PrimErrBadIndex; return; } value = ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory()) @@ -58823,7 +58833,7 @@ index = longAt(GIV(stackPointer) + (1 * BytesPerWord)); aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord)); if (!((index & 1))) { - GIV(primFailCode) = PrimErrBadArgument; + (GIV(primFailCode) = PrimErrBadArgument); return; } hdr = long64At(aContext); @@ -59069,7 +59079,7 @@ stSize = (sp1 >> 1); l2: /* end fetchStackPointerOf: */; if (!(((index >= 1) && (index <= stSize)))) { - GIV(primFailCode) = PrimErrBadIndex; + (GIV(primFailCode) = PrimErrBadIndex); return; } /* begin subscript:with:storing:format: */ @@ -59125,7 +59135,7 @@ assert((senderOop & 1)); spouseFP = pointerForOop(senderOop - 1); if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) { - GIV(primFailCode) = PrimErrBadIndex; + (GIV(primFailCode) = PrimErrBadIndex); return; } if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {
Modified: branches/Cog/spursrc/vm/cointerp.h =================================================================== --- branches/Cog/spursrc/vm/cointerp.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spursrc/vm/cointerp.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/spursrc/vm/gcc3x-cointerp.c 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spursrc/vm/gcc3x-cointerp.c 2014-07-22 17:45:31 UTC (rev 3052) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 from - CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2304,7 +2304,7 @@ /*540*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.830]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.831]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace;
@@ -37098,14 +37098,19 @@
/* o2 wasn't in the table; put it there */
- /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj1)); - referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); - while (((referent9 & 3) == 0) - && (((longAt(referent9)) & 0x3FFFFF) == 8)) { - referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj1)); + referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); + while (((referent9 & 3) == 0) + && (((longAt(referent9)) & 0x3FFFFF) == 8)) { + referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2)); + } + newObj2 = referent9; } - newObj2 = referent9; + else { + newObj2 = obj1; + } assert((rawHashBitsOf(newObj2)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -37116,14 +37121,19 @@ } else { if (o2ClassIndex != 0) { - /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj2)); - referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); - while (((referent13 & 3) == 0) - && (((longAt(referent13)) & 0x3FFFFF) == 8)) { - referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj2)); + referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); + while (((referent13 & 3) == 0) + && (((longAt(referent13)) & 0x3FFFFF) == 8)) { + referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + } + newObj1 = referent13; } - newObj1 = referent13; + else { + newObj1 = obj2; + } assert((rawHashBitsOf(newObj1)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -58527,7 +58537,7 @@
index = longAt(GIV(stackPointer)); if (!((index & 1))) { - (GIV(primFailCode) = PrimErrBadArgument); + GIV(primFailCode) = PrimErrBadArgument; return; } index = (index >> 1); @@ -58744,7 +58754,7 @@ stSize = (sp1 >> 1); l2: /* end fetchStackPointerOf: */; if (!(((index >= 1) && (index <= stSize)))) { - (GIV(primFailCode) = PrimErrBadIndex); + GIV(primFailCode) = PrimErrBadIndex; return; } /* begin subscript:with:format: */ @@ -58769,7 +58779,7 @@ assert((senderOop & 1)); spouseFP = pointerForOop(senderOop - 1); if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) { - (GIV(primFailCode) = PrimErrBadIndex); + GIV(primFailCode) = PrimErrBadIndex; return; } value = ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory()) @@ -58832,7 +58842,7 @@ index = longAt(GIV(stackPointer) + (1 * BytesPerWord)); aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord)); if (!((index & 1))) { - GIV(primFailCode) = PrimErrBadArgument; + (GIV(primFailCode) = PrimErrBadArgument); return; } hdr = long64At(aContext); @@ -59078,7 +59088,7 @@ stSize = (sp1 >> 1); l2: /* end fetchStackPointerOf: */; if (!(((index >= 1) && (index <= stSize)))) { - GIV(primFailCode) = PrimErrBadIndex; + (GIV(primFailCode) = PrimErrBadIndex); return; } /* begin subscript:with:storing:format: */ @@ -59134,7 +59144,7 @@ assert((senderOop & 1)); spouseFP = pointerForOop(senderOop - 1); if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) { - GIV(primFailCode) = PrimErrBadIndex; + (GIV(primFailCode) = PrimErrBadIndex); return; } if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {
Modified: branches/Cog/spursrc/vm/interp.h =================================================================== --- branches/Cog/spursrc/vm/interp.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spursrc/vm/interp.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
#define VM_PROXY_MAJOR 1
Modified: branches/Cog/spursrc/vm/vmCallback.h =================================================================== --- branches/Cog/spursrc/vm/vmCallback.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spursrc/vm/vmCallback.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
#define VM_CALLBACK_INC 1
Modified: branches/Cog/spurstacksrc/vm/gcc3x-interp.c =================================================================== --- branches/Cog/spurstacksrc/vm/gcc3x-interp.c 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spurstacksrc/vm/gcc3x-interp.c 2014-07-22 17:45:31 UTC (rev 3052) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 from - StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2055,7 +2055,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.830]"; +const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.831]"; volatile int sendTrace; sqInt suppressHeartbeatFlag;
@@ -26473,14 +26473,19 @@
/* o2 wasn't in the table; put it there */
- /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj1)); - referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); - while (((referent7 & 3) == 0) - && (((longAt(referent7)) & 0x3FFFFF) == 8)) { - referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj1)); + referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); + while (((referent7 & 3) == 0) + && (((longAt(referent7)) & 0x3FFFFF) == 8)) { + referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2)); + } + newObj2 = referent7; } - newObj2 = referent7; + else { + newObj2 = obj1; + } assert((rawHashBitsOf(newObj2)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -26491,14 +26496,19 @@ } else { if (o2ClassIndex != 0) { - /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj2)); - referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); - while (((referent13 & 3) == 0) - && (((longAt(referent13)) & 0x3FFFFF) == 8)) { - referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj2)); + referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); + while (((referent13 & 3) == 0) + && (((longAt(referent13)) & 0x3FFFFF) == 8)) { + referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + } + newObj1 = referent13; } - newObj1 = referent13; + else { + newObj1 = obj2; + } assert((rawHashBitsOf(newObj1)) == 0); /* begin setHashBitsOf:to: */ flag("endianness");
Modified: branches/Cog/spurstacksrc/vm/interp.c =================================================================== --- branches/Cog/spurstacksrc/vm/interp.c 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spurstacksrc/vm/interp.c 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 from - StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2052,7 +2052,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.830]"; +const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.831]"; volatile int sendTrace; sqInt suppressHeartbeatFlag;
@@ -26464,14 +26464,19 @@
/* o2 wasn't in the table; put it there */
- /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj1)); - referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); - while (((referent7 & 3) == 0) - && (((longAt(referent7)) & 0x3FFFFF) == 8)) { - referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj1)); + referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2)); + while (((referent7 & 3) == 0) + && (((longAt(referent7)) & 0x3FFFFF) == 8)) { + referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2)); + } + newObj2 = referent7; } - newObj2 = referent7; + else { + newObj2 = obj1; + } assert((rawHashBitsOf(newObj2)) == 0); /* begin setHashBitsOf:to: */ flag("endianness"); @@ -26482,14 +26487,19 @@ } else { if (o2ClassIndex != 0) { - /* begin followForwarded: */ - assert(isUnambiguouslyForwarder(obj2)); - referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); - while (((referent13 & 3) == 0) - && (((longAt(referent13)) & 0x3FFFFF) == 8)) { - referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) { + /* begin followForwarded: */ + assert(isUnambiguouslyForwarder(obj2)); + referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2)); + while (((referent13 & 3) == 0) + && (((longAt(referent13)) & 0x3FFFFF) == 8)) { + referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2)); + } + newObj1 = referent13; } - newObj1 = referent13; + else { + newObj1 = obj2; + } assert((rawHashBitsOf(newObj1)) == 0); /* begin setHashBitsOf:to: */ flag("endianness");
Modified: branches/Cog/spurstacksrc/vm/interp.h =================================================================== --- branches/Cog/spurstacksrc/vm/interp.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spurstacksrc/vm/interp.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
#define VM_PROXY_MAJOR 1
Modified: branches/Cog/spurstacksrc/vm/vmCallback.h =================================================================== --- branches/Cog/spurstacksrc/vm/vmCallback.h 2014-07-22 16:38:54 UTC (rev 3051) +++ branches/Cog/spurstacksrc/vm/vmCallback.h 2014-07-22 17:45:31 UTC (rev 3052) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 */
#define VM_CALLBACK_INC 1
vm-dev@lists.squeakfoundation.org