Revision: 3204 Author: eliot Date: 2015-01-01 13:42:13 -0800 (Thu, 01 Jan 2015) Log Message: ----------- CogVM source as per VMMaker.oscog-eem.1007
Fix stupid regression in findUnwindThroughContext:.
Minor streamline to commonReturn in CoInterpreter.
Add range check for 64-bit SmallInteger to Float conversion since in 64-bits this can overflow the exact float range.
Modified Paths: -------------- branches/Cog/nscogsrc/vm/cointerp.c branches/Cog/nscogsrc/vm/cointerp.h branches/Cog/nscogsrc/vm/gcc3x-cointerp.c branches/Cog/nsspursrc/vm/cointerp.c branches/Cog/nsspursrc/vm/cointerp.h branches/Cog/nsspursrc/vm/gcc3x-cointerp.c branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c branches/Cog/nsspurstacksrc/vm/interp.c branches/Cog/scripts/uploadvms branches/Cog/sistasrc/vm/cointerp.c branches/Cog/sistasrc/vm/cointerp.h branches/Cog/sistasrc/vm/gcc3x-cointerp.c branches/Cog/spursistasrc/vm/cointerp.c branches/Cog/spursistasrc/vm/cointerp.h branches/Cog/spursistasrc/vm/gcc3x-cointerp.c branches/Cog/spursrc/vm/cointerp.c branches/Cog/spursrc/vm/cointerp.h branches/Cog/spursrc/vm/gcc3x-cointerp.c branches/Cog/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/vm/cointerp.c branches/Cog/src/vm/cointerp.h branches/Cog/src/vm/cointerpmt.c branches/Cog/src/vm/cointerpmt.h branches/Cog/src/vm/gcc3x-cointerp.c branches/Cog/src/vm/gcc3x-cointerpmt.c branches/Cog/stacksrc/vm/gcc3x-interp.c branches/Cog/stacksrc/vm/interp.c
Property Changed: ---------------- branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/nscogsrc/vm/cointerp.c =================================================================== --- branches/Cog/nscogsrc/vm/cointerp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/nscogsrc/vm/cointerp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e from - CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2101,7 +2101,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1004"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1006"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -4353,9 +4353,7 @@ /* If this is a method simply return to the sender/caller. */
- if (!(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory()) - ? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0 - : (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) { + if (!((byteAt((localFP + FoxIFrameFlags) + 3)) != 0)) { goto commonCallerReturn; goto l294; } @@ -46088,7 +46086,9 @@ unwind-protects nilObj home context could not be found => cannotReturn context the context of an intervening unwind-protect implies home context was found */ -/* Almost always (98%) the home is on the same page. */ +/* Almost always (98%) the home is on the same page, in which case we know it + will be found. + */
static sqInt findUnwindThroughContext(sqInt homeContext) @@ -46176,15 +46176,16 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, homeContext); l1: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((homeContext + BaseHeaderSize) + (MethodIndex << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { return homeContext; } - return 0; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, homeContext)) == GIV(nilObj)) { return GIV(nilObj); }
Modified: branches/Cog/nscogsrc/vm/cointerp.h =================================================================== --- branches/Cog/nscogsrc/vm/cointerp.h 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/nscogsrc/vm/cointerp.h 2015-01-01 21:42:13 UTC (rev 3204) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */
Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e from - CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2104,7 +2104,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1004"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1006"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -4362,9 +4362,7 @@ /* If this is a method simply return to the sender/caller. */
- if (!(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory()) - ? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0 - : (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) { + if (!((byteAt((localFP + FoxIFrameFlags) + 3)) != 0)) { goto commonCallerReturn; goto l294; } @@ -46097,7 +46095,9 @@ unwind-protects nilObj home context could not be found => cannotReturn context the context of an intervening unwind-protect implies home context was found */ -/* Almost always (98%) the home is on the same page. */ +/* Almost always (98%) the home is on the same page, in which case we know it + will be found. + */
static sqInt findUnwindThroughContext(sqInt homeContext) @@ -46185,15 +46185,16 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, homeContext); l1: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((homeContext + BaseHeaderSize) + (MethodIndex << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { return homeContext; } - return 0; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, homeContext)) == GIV(nilObj)) { return GIV(nilObj); }
Modified: branches/Cog/nsspursrc/vm/cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/nsspursrc/vm/cointerp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e from - CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2353,7 +2353,7 @@ /*540*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1004"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1006"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -5100,9 +5100,7 @@ /* If this is a method simply return to the sender/caller. */
- if (!(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory()) - ? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0 - : (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) { + if (!((byteAt((localFP + FoxIFrameFlags) + 3)) != 0)) { goto commonCallerReturn; goto l248; } @@ -65491,7 +65489,9 @@ unwind-protects nilObj home context could not be found => cannotReturn context the context of an intervening unwind-protect implies home context was found */ -/* Almost always (98%) the home is on the same page. */ +/* Almost always (98%) the home is on the same page, in which case we know it + will be found. + */
static sqInt findUnwindThroughContext(sqInt homeContext) @@ -65579,15 +65579,16 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, homeContext); l1: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((homeContext + BaseHeaderSize) + (MethodIndex << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { return homeContext; } - return 0; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, homeContext)) == GIV(nilObj)) { return GIV(nilObj); }
Modified: branches/Cog/nsspursrc/vm/cointerp.h =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.h 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/nsspursrc/vm/cointerp.h 2015-01-01 21:42:13 UTC (rev 3204) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */
Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e from - CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2356,7 +2356,7 @@ /*540*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1004"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1006"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -5109,9 +5109,7 @@ /* If this is a method simply return to the sender/caller. */
- if (!(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory()) - ? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0 - : (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) { + if (!((byteAt((localFP + FoxIFrameFlags) + 3)) != 0)) { goto commonCallerReturn; goto l248; } @@ -65500,7 +65498,9 @@ unwind-protects nilObj home context could not be found => cannotReturn context the context of an intervening unwind-protect implies home context was found */ -/* Almost always (98%) the home is on the same page. */ +/* Almost always (98%) the home is on the same page, in which case we know it + will be found. + */
static sqInt findUnwindThroughContext(sqInt homeContext) @@ -65588,15 +65588,16 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, homeContext); l1: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((homeContext + BaseHeaderSize) + (MethodIndex << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { return homeContext; } - return 0; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, homeContext)) == GIV(nilObj)) { return GIV(nilObj); }
Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c =================================================================== --- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e from - StackInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + StackInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2101,7 +2101,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1004"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1006"; volatile int sendTrace; sqInt suppressHeartbeatFlag;
@@ -4913,17 +4913,17 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, home); l248: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((home + BaseHeaderSize) + (MethodIndex << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { unwindContextOrNilOrZero = home; goto l245; } - unwindContextOrNilOrZero = 0; - goto l245; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, home)) == GIV(nilObj)) { unwindContextOrNilOrZero = GIV(nilObj); goto l245;
Modified: branches/Cog/nsspurstacksrc/vm/interp.c =================================================================== --- branches/Cog/nsspurstacksrc/vm/interp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/nsspurstacksrc/vm/interp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e from - StackInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + StackInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2098,7 +2098,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1004"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1006"; volatile int sendTrace; sqInt suppressHeartbeatFlag;
@@ -4904,17 +4904,17 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, home); l248: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((home + BaseHeaderSize) + (MethodIndex << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { unwindContextOrNilOrZero = home; goto l245; } - unwindContextOrNilOrZero = 0; - goto l245; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, home)) == GIV(nilObj)) { unwindContextOrNilOrZero = GIV(nilObj); goto l245;
Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h ___________________________________________________________________ Modified: checkindate - Wed Dec 31 14:34:37 PST 2014 + Thu Jan 1 13:41:39 PST 2015
Modified: branches/Cog/scripts/uploadvms =================================================================== --- branches/Cog/scripts/uploadvms 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/scripts/uploadvms 2015-01-01 21:42:13 UTC (rev 3204) @@ -148,12 +148,12 @@ fi if [ -n "$CheckDMG" -a -n "$MNSSPUR" -a ! -f "Newspeak Spur Virtual Machine-$TAG.dmg" ]; then NMID=../build.macos32x86/newspeak.cog.spur/installer - if [ -f "Newspeak Virtual Spur Machine-$TAG.dmg" ]; then + if [ -f "Newspeak Spur Virtual Machine-$TAG.dmg" ]; then true - elif [ -f "$NMID/Newspeak Virtual Spur Machine-$TAG.dmg" ]; then - ln "$NMID/Newspeak Virtual Spur Machine-$TAG.dmg" . + elif [ -f "$NMID/Newspeak Spur Virtual Machine-$TAG.dmg" ]; then + ln "$NMID/Newspeak Spur Virtual Machine-$TAG.dmg" . else - echo Newspeak Virtual Spur Machine-$TAG.dmg is missing 1>&2 + echo Newspeak Spur Virtual Machine-$TAG.dmg is missing 1>&2 exit 1 fi fi
Modified: branches/Cog/sistasrc/vm/cointerp.c =================================================================== --- branches/Cog/sistasrc/vm/cointerp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/sistasrc/vm/cointerp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e from - CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2098,7 +2098,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1004]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1006]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -4353,9 +4353,7 @@ /* If this is a method simply return to the sender/caller. */
- if (!(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory()) - ? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0 - : (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) { + if (!((byteAt((localFP + FoxIFrameFlags) + 3)) != 0)) { goto commonCallerReturn; goto l293; } @@ -7951,7 +7949,7 @@ /* bytecodePrimBitShift */ { sqInt integerArgument; - usqInt integerReceiver; + sqLong integerReceiver; sqInt shifted; char *sp;
@@ -8011,7 +8009,7 @@ null; goto l108; } - shifted = ((usqInt) integerReceiver) >> (0 - integerArgument); + shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument); } shifted = positive32BitIntegerFor(shifted); /* begin pop:thenPush: */ @@ -10936,7 +10934,7 @@ /* bytecodePrimBitShift */ { sqInt integerArgument; - usqInt integerReceiver; + sqLong integerReceiver; sqInt shifted; char *sp;
@@ -10996,7 +10994,7 @@ null; goto l242; } - shifted = ((usqInt) integerReceiver) >> (0 - integerArgument); + shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument); } shifted = positive32BitIntegerFor(shifted); /* begin pop:thenPush: */ @@ -24480,7 +24478,7 @@ primitiveBitShift(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT sqInt integerArgument; - usqInt integerReceiver; + sqLong integerReceiver; sqInt shifted; char *sp;
@@ -24527,7 +24525,7 @@ } return; } - shifted = ((usqInt) integerReceiver) >> (0 - integerArgument); + shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument); } shifted = positive32BitIntegerFor(shifted); /* begin pop:thenPush: */ @@ -46061,7 +46059,9 @@ unwind-protects nilObj home context could not be found => cannotReturn context the context of an intervening unwind-protect implies home context was found */ -/* Almost always (98%) the home is on the same page. */ +/* Almost always (98%) the home is on the same page, in which case we know it + will be found. + */
static sqInt findUnwindThroughContext(sqInt homeContext) @@ -46149,15 +46149,16 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, homeContext); l1: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((homeContext + BaseHeaderSize) + (MethodIndex << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { return homeContext; } - return 0; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, homeContext)) == GIV(nilObj)) { return GIV(nilObj); }
Modified: branches/Cog/sistasrc/vm/cointerp.h =================================================================== --- branches/Cog/sistasrc/vm/cointerp.h 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/sistasrc/vm/cointerp.h 2015-01-01 21:42:13 UTC (rev 3204) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */
Modified: branches/Cog/sistasrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/sistasrc/vm/gcc3x-cointerp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/sistasrc/vm/gcc3x-cointerp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e from - CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2101,7 +2101,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1004]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1006]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -4362,9 +4362,7 @@ /* If this is a method simply return to the sender/caller. */
- if (!(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory()) - ? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0 - : (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) { + if (!((byteAt((localFP + FoxIFrameFlags) + 3)) != 0)) { goto commonCallerReturn; goto l293; } @@ -7960,7 +7958,7 @@ /* bytecodePrimBitShift */ { sqInt integerArgument; - usqInt integerReceiver; + sqLong integerReceiver; sqInt shifted; char *sp;
@@ -8020,7 +8018,7 @@ null; goto l108; } - shifted = ((usqInt) integerReceiver) >> (0 - integerArgument); + shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument); } shifted = positive32BitIntegerFor(shifted); /* begin pop:thenPush: */ @@ -10945,7 +10943,7 @@ /* bytecodePrimBitShift */ { sqInt integerArgument; - usqInt integerReceiver; + sqLong integerReceiver; sqInt shifted; char *sp;
@@ -11005,7 +11003,7 @@ null; goto l242; } - shifted = ((usqInt) integerReceiver) >> (0 - integerArgument); + shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument); } shifted = positive32BitIntegerFor(shifted); /* begin pop:thenPush: */ @@ -24489,7 +24487,7 @@ primitiveBitShift(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT sqInt integerArgument; - usqInt integerReceiver; + sqLong integerReceiver; sqInt shifted; char *sp;
@@ -24536,7 +24534,7 @@ } return; } - shifted = ((usqInt) integerReceiver) >> (0 - integerArgument); + shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument); } shifted = positive32BitIntegerFor(shifted); /* begin pop:thenPush: */ @@ -46070,7 +46068,9 @@ unwind-protects nilObj home context could not be found => cannotReturn context the context of an intervening unwind-protect implies home context was found */ -/* Almost always (98%) the home is on the same page. */ +/* Almost always (98%) the home is on the same page, in which case we know it + will be found. + */
static sqInt findUnwindThroughContext(sqInt homeContext) @@ -46158,15 +46158,16 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, homeContext); l1: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((homeContext + BaseHeaderSize) + (MethodIndex << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { return homeContext; } - return 0; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, homeContext)) == GIV(nilObj)) { return GIV(nilObj); }
Modified: branches/Cog/spursistasrc/vm/cointerp.c =================================================================== --- branches/Cog/spursistasrc/vm/cointerp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/spursistasrc/vm/cointerp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e from - CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2349,7 +2349,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 [CoInterpreterPrimitives VMMaker.oscog-eem.1004]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1006]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -5099,9 +5099,7 @@ /* If this is a method simply return to the sender/caller. */
- if (!(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory()) - ? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0 - : (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) { + if (!((byteAt((localFP + FoxIFrameFlags) + 3)) != 0)) { goto commonCallerReturn; goto l250; } @@ -9168,7 +9166,7 @@ /* bytecodePrimBitShift */ { sqInt integerArgument; - sqLong integerReceiver; + usqInt integerReceiver; sqInt shifted; char *sp;
@@ -9228,7 +9226,7 @@ null; goto l77; } - shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument); + shifted = ((usqInt) integerReceiver) >> (0 - integerArgument); } shifted = positive32BitIntegerFor(shifted); /* begin pop:thenPush: */ @@ -11965,7 +11963,7 @@ /* bytecodePrimBitShift */ { sqInt integerArgument; - sqLong integerReceiver; + usqInt integerReceiver; sqInt shifted; char *sp;
@@ -12025,7 +12023,7 @@ null; goto l183; } - shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument); + shifted = ((usqInt) integerReceiver) >> (0 - integerArgument); } shifted = positive32BitIntegerFor(shifted); /* begin pop:thenPush: */ @@ -29590,7 +29588,7 @@ primitiveBitShift(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT sqInt integerArgument; - sqLong integerReceiver; + usqInt integerReceiver; sqInt shifted; char *sp;
@@ -29637,7 +29635,7 @@ } return; } - shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument); + shifted = ((usqInt) integerReceiver) >> (0 - integerArgument); } shifted = positive32BitIntegerFor(shifted); /* begin pop:thenPush: */ @@ -65603,7 +65601,9 @@ unwind-protects nilObj home context could not be found => cannotReturn context the context of an intervening unwind-protect implies home context was found */ -/* Almost always (98%) the home is on the same page. */ +/* Almost always (98%) the home is on the same page, in which case we know it + will be found. + */
static sqInt findUnwindThroughContext(sqInt homeContext) @@ -65691,15 +65691,16 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, homeContext); l1: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((homeContext + BaseHeaderSize) + (MethodIndex << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { return homeContext; } - return 0; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, homeContext)) == GIV(nilObj)) { return GIV(nilObj); }
Modified: branches/Cog/spursistasrc/vm/cointerp.h =================================================================== --- branches/Cog/spursistasrc/vm/cointerp.h 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/spursistasrc/vm/cointerp.h 2015-01-01 21:42:13 UTC (rev 3204) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */
Modified: branches/Cog/spursistasrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/spursistasrc/vm/gcc3x-cointerp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/spursistasrc/vm/gcc3x-cointerp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e from - CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2352,7 +2352,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 [CoInterpreterPrimitives VMMaker.oscog-eem.1004]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1006]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -5108,9 +5108,7 @@ /* If this is a method simply return to the sender/caller. */
- if (!(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory()) - ? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0 - : (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) { + if (!((byteAt((localFP + FoxIFrameFlags) + 3)) != 0)) { goto commonCallerReturn; goto l250; } @@ -9177,7 +9175,7 @@ /* bytecodePrimBitShift */ { sqInt integerArgument; - sqLong integerReceiver; + usqInt integerReceiver; sqInt shifted; char *sp;
@@ -9237,7 +9235,7 @@ null; goto l77; } - shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument); + shifted = ((usqInt) integerReceiver) >> (0 - integerArgument); } shifted = positive32BitIntegerFor(shifted); /* begin pop:thenPush: */ @@ -11974,7 +11972,7 @@ /* bytecodePrimBitShift */ { sqInt integerArgument; - sqLong integerReceiver; + usqInt integerReceiver; sqInt shifted; char *sp;
@@ -12034,7 +12032,7 @@ null; goto l183; } - shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument); + shifted = ((usqInt) integerReceiver) >> (0 - integerArgument); } shifted = positive32BitIntegerFor(shifted); /* begin pop:thenPush: */ @@ -29599,7 +29597,7 @@ primitiveBitShift(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT sqInt integerArgument; - sqLong integerReceiver; + usqInt integerReceiver; sqInt shifted; char *sp;
@@ -29646,7 +29644,7 @@ } return; } - shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument); + shifted = ((usqInt) integerReceiver) >> (0 - integerArgument); } shifted = positive32BitIntegerFor(shifted); /* begin pop:thenPush: */ @@ -65612,7 +65610,9 @@ unwind-protects nilObj home context could not be found => cannotReturn context the context of an intervening unwind-protect implies home context was found */ -/* Almost always (98%) the home is on the same page. */ +/* Almost always (98%) the home is on the same page, in which case we know it + will be found. + */
static sqInt findUnwindThroughContext(sqInt homeContext) @@ -65700,15 +65700,16 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, homeContext); l1: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((homeContext + BaseHeaderSize) + (MethodIndex << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { return homeContext; } - return 0; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, homeContext)) == GIV(nilObj)) { return GIV(nilObj); }
Modified: branches/Cog/spursrc/vm/cointerp.c =================================================================== --- branches/Cog/spursrc/vm/cointerp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/spursrc/vm/cointerp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e from - CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2340,7 +2340,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 [CoInterpreterPrimitives VMMaker.oscog-eem.1004]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1006]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -4989,9 +4989,7 @@ /* If this is a method simply return to the sender/caller. */
- if (!(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory()) - ? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0 - : (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) { + if (!((byteAt((localFP + FoxIFrameFlags) + 3)) != 0)) { goto commonCallerReturn; goto l123; } @@ -60492,7 +60490,9 @@ unwind-protects nilObj home context could not be found => cannotReturn context the context of an intervening unwind-protect implies home context was found */ -/* Almost always (98%) the home is on the same page. */ +/* Almost always (98%) the home is on the same page, in which case we know it + will be found. + */
static sqInt findUnwindThroughContext(sqInt homeContext) @@ -60580,15 +60580,16 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, homeContext); l1: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((homeContext + BaseHeaderSize) + (MethodIndex << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { return homeContext; } - return 0; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, homeContext)) == GIV(nilObj)) { return GIV(nilObj); }
Modified: branches/Cog/spursrc/vm/cointerp.h =================================================================== --- branches/Cog/spursrc/vm/cointerp.h 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/spursrc/vm/cointerp.h 2015-01-01 21:42:13 UTC (rev 3204) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */
Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/spursrc/vm/gcc3x-cointerp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/spursrc/vm/gcc3x-cointerp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e from - CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1006 uuid: 9d3cd4bd-d2d0-476b-bf87-1b040eaaf57e " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -2343,7 +2343,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 [CoInterpreterPrimitives VMMaker.oscog-eem.1004]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1006]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -4998,9 +4998,7 @@ /* If this is a method simply return to the sender/caller. */
- if (!(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory()) - ? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0 - : (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) { + if (!((byteAt((localFP + FoxIFrameFlags) + 3)) != 0)) { goto commonCallerReturn; goto l123; } @@ -60501,7 +60499,9 @@ unwind-protects nilObj home context could not be found => cannotReturn context the context of an intervening unwind-protect implies home context was found */ -/* Almost always (98%) the home is on the same page. */ +/* Almost always (98%) the home is on the same page, in which case we know it + will be found. + */
static sqInt findUnwindThroughContext(sqInt homeContext) @@ -60589,15 +60589,16 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, homeContext); l1: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((homeContext + BaseHeaderSize) + (MethodIndex << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { return homeContext; } - return 0; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, homeContext)) == GIV(nilObj)) { return GIV(nilObj); }
Modified: branches/Cog/spurstack64src/vm/gcc3x-interp.c =================================================================== --- branches/Cog/spurstack64src/vm/gcc3x-interp.c 2015-01-01 00:32:58 UTC (rev 3203) +++ branches/Cog/spurstack64src/vm/gcc3x-interp.c 2015-01-01 21:42:13 UTC (rev 3204) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1007 uuid: 5ab9382c-cd68-43ef-a5e4-0c107083d0c6 from - StackInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 + StackInterpreter VMMaker.oscog-eem.1007 uuid: 5ab9382c-cd68-43ef-a5e4-0c107083d0c6 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1004 uuid: 132642b3-ab26-4957-82a4-8aa19b60f188 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1007 uuid: 5ab9382c-cd68-43ef-a5e4-0c107083d0c6 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -127,7 +127,7 @@ /*** Constants ***/ #define ActiveProcessIndex 1 #define AlternateHeaderHasPrimFlag 0x80000 -#define AltLongStoreBytecode 234 +#define AltLongStoreBytecode 129 #define AtCacheFixedFields 4 #define AtCacheFmt 3 #define AtCacheMask 0x1C @@ -2121,7 +2121,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.1004]"; +const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.1007]"; volatile int sendTrace; sqInt suppressHeartbeatFlag;
@@ -4835,17 +4835,17 @@ } ctxtOrNilOrZero = findMethodWithPrimitiveFromContextUpToContext(198, senderContext, home); l102: /* end findMethodWithPrimitive:FromFP:UpToContext: */; - if (onSamePage - || (ctxtOrNilOrZero == 0)) { + assert(!((onSamePage + && (ctxtOrNilOrZero == (nilObject()))))); + if (ctxtOrNilOrZero == 0) { theMethod = longAt((home + BaseHeaderSize) + (((long)MethodIndex) << (shiftForWord()))); if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) { unwindContextOrNilOrZero = home; goto l99; } - unwindContextOrNilOrZero = 0; - goto l99; } - if (!(ctxtOrNilOrZero == GIV(nilObj))) { + if (!(onSamePage + || (ctxtOrNilOrZero == GIV(nilObj)))) { if ((findMethodWithPrimitiveFromContextUpToContext(0, ctxtOrNilOrZero, home)) == GIV(nilObj)) { unwindContextOrNilOrZero = GIV(nilObj); goto l99; @@ -6810,6 +6810,8 @@ double result2; sqInt rot; sqInt rot1; + sqInt shift; + sqInt shift1; char *sp; sqInt tagBits; sqInt tagBits1; @@ -6855,7 +6857,9 @@ rcvr1 = (((double *) ((&bits))))[0]; goto l17; } - if (tagBits == 1) { + if ((tagBits == 1) + && (((shift = (64 - 3) - 52), + (((sqInt) (((long)rcvr) << shift)) >> shift) == rcvr))) { rcvr1 = ((double) ((rcvr >> 3)) ); goto l17; } @@ -6892,7 +6896,9 @@ arg1 = (((double *) ((&bits1))))[0]; goto l18; } - if (tagBits1 == 1) { + if ((tagBits1 == 1) + && (((shift1 = (64 - 3) - 52), + (((sqInt) (((long)arg) << shift1)) >> shift1) == arg))) { arg1 = ((double) ((arg >> 3)) ); goto l18; } @@ -6948,6 +6954,8 @@ double result2; sqInt rot; sqInt rot1; + sqInt shift; + sqInt shift1; char *sp; sqInt tagBits; sqInt tagBits1; @@ -6993,7 +7001,9 @@ rcvr1 = (((double *) ((&bits))))[0]; goto l20; } - if (tagBits == 1) { + if ((tagBits == 1) + && (((shift = (64 - 3) - 52), + (((sqInt) (((long)rcvr) << shift)) >> shift) == rcvr))) { rcvr1 = ((double) ((rcvr >> 3)) ); goto l20; } @@ -7030,7 +7040,9 @@ arg1 = (((double *) ((&bits1))))[0]; goto l21; } - if (tagBits1 == 1) { + if ((tagBits1 == 1) + && (((shift1 = (64 - 3) - 52), + (((sqInt) (((long)arg) << shift1)) >> shift1) == arg))) { arg1 = ((double) ((arg >> 3)) ); goto l21; } @@ -7086,6 +7098,8 @@ double result1; sqInt rot; sqInt rot1; + sqInt shift; + sqInt shift1; sqInt tagBits; sqInt tagBits1;
@@ -7128,7 +7142,9 @@ rcvr1 = (((double *) ((&bits))))[0]; goto l23; } - if (tagBits == 1) { + if ((tagBits == 1) + && (((shift = (64 - 3) - 52), + (((sqInt) (((long)rcvr) << shift)) >> shift) == rcvr))) { rcvr1 = ((double) ((rcvr >> 3)) ); goto l23; } @@ -7165,7 +7181,9 @@ arg1 = (((double *) ((&bits1))))[0]; goto l24; } - if (tagBits1 == 1) { + if ((tagBits1 == 1) + && (((shift1 = (64 - 3) - 52), + (((sqInt) (((long)arg) << shift1)) >> shift1) == arg))) { arg1 = ((double) ((arg >> 3)) ); goto l24; } @@ -7269,6 +7287,8 @@ double result1; sqInt rot; sqInt rot1; + sqInt shift; + sqInt shift1; sqInt tagBits; sqInt tagBits1;
@@ -7311,7 +7331,9 @@ rcvr1 = (((double *) ((&bits))))[0]; goto l26; } - if (tagBits == 1) { + if ((tagBits == 1) + && (((shift = (64 - 3) - 52), + (((sqInt) (((long)rcvr) << shift)) >> shift) == rcvr))) { rcvr1 = ((double) ((rcvr >> 3)) ); goto l26; } @@ -7348,7 +7370,9 @@ arg1 = (((double *) ((&bits1))))[0]; goto l27; } - if (tagBits1 == 1) { + if ((tagBits1 == 1) + && (((shift1 = (64 - 3) - 52), + (((sqInt) (((long)arg) << shift1)) >> shift1) == arg))) { arg1 = ((double) ((arg >> 3)) ); goto l27; } @@ -7441,6 +7465,8 @@ double result1; sqInt rot; sqInt rot1; + sqInt shift; + sqInt shift1; sqInt tagBits; sqInt tagBits1;
@@ -7483,7 +7509,9 @@ rcvr1 = (((double *) ((&bits))))[0]; goto l29; } - if (tagBits == 1) { + if ((tagBits == 1) + && (((shift = (64 - 3) - 52), + (((sqInt) (((long)rcvr) << shift)) >> shift) == rcvr))) { rcvr1 = ((double) ((rcvr >> 3)) ); goto l29; } @@ -7520,7 +7548,9 @@ arg1 = (((double *) ((&bits1))))[0]; goto l30; } - if (tagBits1 == 1) {
@@ Diff output truncated at 50000 characters. @@
vm-dev@lists.squeakfoundation.org