[Vm-dev] [commit][3204] CogVM source as per VMMaker.oscog-eem.1007

commits at squeakvm.org commits at squeakvm.org
Thu Jan 1 21:42:18 UTC 2015


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. @@


More information about the Vm-dev mailing list