[Vm-dev] [commit][2834] CogVM source as per VMMaker.oscog-eem.565.

commits at squeakvm.org commits at squeakvm.org
Fri Dec 20 19:21:12 UTC 2013


Revision: 2834
Author:   eliot
Date:     2013-12-20 11:21:10 -0800 (Fri, 20 Dec 2013)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.565.

Rescue the Stack VM by refactoring the snapshot bereavement code
to be CoInterpreter-agnostic.  Give CoInterpreter its own method
cache print routine for the same reason.

Make the Spur instantiation primtives fail for format 7 (forwarded format)
and name this for use as the format of immediate classes.

Modified Paths:
--------------
    branches/Cog/nscogsrc/vm/cogit.c
    branches/Cog/nscogsrc/vm/cogit.h
    branches/Cog/nscogsrc/vm/cogmethod.h
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/nscogsrc/vm/interp.h
    branches/Cog/nscogsrc/vm/vmCallback.h
    branches/Cog/spursrc/vm/cogit.c
    branches/Cog/spursrc/vm/cogit.h
    branches/Cog/spursrc/vm/cogmethod.h
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/interp.h
    branches/Cog/spursrc/vm/vmCallback.h
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/spurstacksrc/vm/interp.h
    branches/Cog/spurstacksrc/vm/vmCallback.h
    branches/Cog/src/vm/cogit.c
    branches/Cog/src/vm/cogit.h
    branches/Cog/src/vm/cogmethod.h
    branches/Cog/src/vm/cointerp.c
    branches/Cog/src/vm/cointerp.h
    branches/Cog/src/vm/cointerpmt.c
    branches/Cog/src/vm/cointerpmt.h
    branches/Cog/src/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/gcc3x-cointerpmt.c
    branches/Cog/src/vm/interp.h
    branches/Cog/src/vm/vmCallback.h
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c
    branches/Cog/stacksrc/vm/interp.h
    branches/Cog/stacksrc/vm/vmCallback.h

Property Changed:
----------------
    branches/Cog/platforms/Cross/vm/sqSCCSVersion.h

Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/nscogsrc/vm/cogit.c	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGenerator VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	StackToRegisterMappingCogit VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/nscogsrc/vm/cogit.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGenerator VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 

Modified: branches/Cog/nscogsrc/vm/cogmethod.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogmethod.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/nscogsrc/vm/cogmethod.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGenerator VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 typedef struct {

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
    from
-	CoInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CoInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2030,7 +2030,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.563";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.565";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -54405,7 +54405,6 @@
     sqInt activeContext;
     sqInt activeContext1;
     sqInt chunk;
-    sqInt decodedIP;
     sqInt fmt;
     sqInt fwdBlock;
     sqInt header;
@@ -54414,6 +54413,7 @@
     sqInt iLimiT;
     sqInt obj;
     sqInt oop;
+    sqInt pc;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
@@ -54443,11 +54443,13 @@
 					longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), GIV(nilObj));
 				}
 				else {
-					decodedIP = longAt((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord));
-					if (((decodedIP & 1))
-					 && ((((sqInt) decodedIP)) < 0)) {
-						decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), oop);
-						longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), decodedIP);
+					/* begin ensureContextHasBytecodePC: */
+					assert(!(isMarriedOrWidowedContext(oop)));
+					pc = longAt((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord));
+					if (((pc & 1))
+					 && (((pc = (pc >> 1))) < 0)) {
+						pc = mustMapMachineCodePCcontext(pc, oop);
+						longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), pc);
 					}
 				}
 				for (i = ((fetchStackPointerOf(oop)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(oop)) - 1); i <= iLimiT; i += 1) {

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2013-12-20 19:21:10 UTC (rev 2834)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
    from
-	CoInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CoInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2033,7 +2033,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.563";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.565";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -54414,7 +54414,6 @@
     sqInt activeContext;
     sqInt activeContext1;
     sqInt chunk;
-    sqInt decodedIP;
     sqInt fmt;
     sqInt fwdBlock;
     sqInt header;
@@ -54423,6 +54422,7 @@
     sqInt iLimiT;
     sqInt obj;
     sqInt oop;
+    sqInt pc;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
@@ -54452,11 +54452,13 @@
 					longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), GIV(nilObj));
 				}
 				else {
-					decodedIP = longAt((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord));
-					if (((decodedIP & 1))
-					 && ((((sqInt) decodedIP)) < 0)) {
-						decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), oop);
-						longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), decodedIP);
+					/* begin ensureContextHasBytecodePC: */
+					assert(!(isMarriedOrWidowedContext(oop)));
+					pc = longAt((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord));
+					if (((pc & 1))
+					 && (((pc = (pc >> 1))) < 0)) {
+						pc = mustMapMachineCodePCcontext(pc, oop);
+						longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), pc);
 					}
 				}
 				for (i = ((fetchStackPointerOf(oop)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(oop)) - 1); i <= iLimiT; i += 1) {

Modified: branches/Cog/nscogsrc/vm/interp.h
===================================================================
--- branches/Cog/nscogsrc/vm/interp.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/nscogsrc/vm/interp.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nscogsrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nscogsrc/vm/vmCallback.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/nscogsrc/vm/vmCallback.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 #define VM_CALLBACK_INC 1


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Mon Dec 16 15:49:50 PST 2013
   + Fri Dec 20 11:19:05 PST 2013

Modified: branches/Cog/spursrc/vm/cogit.c
===================================================================
--- branches/Cog/spursrc/vm/cogit.c	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/spursrc/vm/cogit.c	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGenerator VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	StackToRegisterMappingCogit VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -15661,9 +15661,12 @@
 getInlineCacheClassTagFrominto(sqInt sourceReg, sqInt destReg)
 {
     AbstractInstruction *entryLabel;
+    AbstractInstruction *immLabel;
     AbstractInstruction *jumpCompare;
     AbstractInstruction *jumpNotImm;
     sqInt quickConstant;
+    sqInt quickConstant1;
+    sqInt quickConstant2;
 
 	/* begin AlignmentNops: */
 	genoperand(AlignmentNops, ((BytesPerWord < 8) ? 8 : BytesPerWord));
@@ -15683,6 +15686,7 @@
 	flag("endianness");
 	jmpTarget(jumpNotImm, gMoveMwrR(0, sourceReg, destReg));
 	jmpTarget(jumpCompare, gAndCqR(classIndexMask(), destReg));
+
 	return entryLabel;
 }
 

Modified: branches/Cog/spursrc/vm/cogit.h
===================================================================
--- branches/Cog/spursrc/vm/cogit.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/spursrc/vm/cogit.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGenerator VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 

Modified: branches/Cog/spursrc/vm/cogmethod.h
===================================================================
--- branches/Cog/spursrc/vm/cogmethod.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/spursrc/vm/cogmethod.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGenerator VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 typedef struct {

Modified: branches/Cog/spursrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/cointerp.c	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/spursrc/vm/cointerp.c	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
    from
-	CoInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CoInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2162,7 +2162,7 @@
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
 usqInt heapBase;
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.563]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.565]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -6363,7 +6363,6 @@
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), longAt((rcvr1 + (BaseHeaderSize)) + (byte3 << 2)));
 					}
-					null;
 					goto l4;
 				}
 				if (opType == 3) {
@@ -6373,7 +6372,6 @@
 					assert(GIV(method) == (iframeMethod(localFP)));
 					object = longAt((GIV(method) + (BaseHeaderSize)) + ((byte3 + LiteralStart) << 2));
 					longAtPointerput((localSP -= BytesPerOop), object);
-					null;
 					goto l4;
 				}
 				if (opType == 4) {
@@ -6401,7 +6399,6 @@
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), longAt((litVar1 + (BaseHeaderSize)) + (ValueIndex << 2)));
 
-					null;
 					goto l4;
 				}
 				top = longAtPointer(localSP);
@@ -25703,7 +25700,7 @@
 		   Allow fixed classes to be instantiated here iff nElements = 0. */
 
 		if ((nElements != 0)
-		 || (instSpec >= 9)) {
+		 || (instSpec > 5)) {
 			return null;
 		}
 		numSlots = classFormat & ((1 << 16) - 1);
@@ -57830,7 +57827,6 @@
     sqInt activeContext1;
     sqInt address;
     sqInt address1;
-    sqInt decodedIP;
     sqInt fmt;
     sqInt i;
     sqInt iLimiT;
@@ -57842,6 +57838,7 @@
     sqInt objOop1;
     sqInt objOop11;
     sqInt objOop2;
+    sqInt pc;
     sqInt prevObj;
     sqInt prevObj1;
     sqInt prevPrevObj;
@@ -57891,13 +57888,15 @@
 				longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), GIV(nilObj));
 			}
 			else {
-				decodedIP = longAt((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
-				if (((decodedIP & 1))
-				 && ((((sqInt) decodedIP)) < 0)) {
-					decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), objOop1);
+				/* begin ensureContextHasBytecodePC: */
+				assert(!(isMarriedOrWidowedContext(objOop1)));
+				pc = longAt((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
+				if (((pc & 1))
+				 && (((pc = (pc >> 1))) < 0)) {
+					pc = mustMapMachineCodePCcontext(pc, objOop1);
 					/* begin storePointerUnchecked:ofObject:withValue: */
 					assert(!(isForwarded(objOop1)));
-					longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), decodedIP);
+					longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), pc);
 				}
 			}
 			for (i = ((fetchStackPointerOf(objOop1)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(objOop1)) - 1); i <= iLimiT; i += 1) {
@@ -57948,13 +57947,15 @@
 				longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), GIV(nilObj));
 			}
 			else {
-				decodedIP = longAt((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
-				if (((decodedIP & 1))
-				 && ((((sqInt) decodedIP)) < 0)) {
-					decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), objOop1);
+				/* begin ensureContextHasBytecodePC: */
+				assert(!(isMarriedOrWidowedContext(objOop1)));
+				pc = longAt((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
+				if (((pc & 1))
+				 && (((pc = (pc >> 1))) < 0)) {
+					pc = mustMapMachineCodePCcontext(pc, objOop1);
 					/* begin storePointerUnchecked:ofObject:withValue: */
 					assert(!(isForwarded(objOop1)));
-					longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), decodedIP);
+					longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), pc);
 				}
 			}
 			for (i = ((fetchStackPointerOf(objOop1)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(objOop1)) - 1); i <= iLimiT; i += 1) {
@@ -58007,13 +58008,15 @@
 					longAtput((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), GIV(nilObj));
 				}
 				else {
-					decodedIP = longAt((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
-					if (((decodedIP & 1))
-					 && ((((sqInt) decodedIP)) < 0)) {
-						decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), objOop11);
+					/* begin ensureContextHasBytecodePC: */
+					assert(!(isMarriedOrWidowedContext(objOop11)));
+					pc = longAt((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
+					if (((pc & 1))
+					 && (((pc = (pc >> 1))) < 0)) {
+						pc = mustMapMachineCodePCcontext(pc, objOop11);
 						/* begin storePointerUnchecked:ofObject:withValue: */
 						assert(!(isForwarded(objOop11)));
-						longAtput((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), decodedIP);
+						longAtput((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), pc);
 					}
 				}
 				for (i = ((fetchStackPointerOf(objOop11)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(objOop11)) - 1); i <= iLimiT; i += 1) {

Modified: branches/Cog/spursrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursrc/vm/cointerp.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/spursrc/vm/cointerp.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 

Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/gcc3x-cointerp.c	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/spursrc/vm/gcc3x-cointerp.c	2013-12-20 19:21:10 UTC (rev 2834)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
    from
-	CoInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CoInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2165,7 +2165,7 @@
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
 usqInt heapBase;
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.563]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.565]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -6372,7 +6372,6 @@
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), longAt((rcvr1 + (BaseHeaderSize)) + (byte3 << 2)));
 					}
-					null;
 					goto l4;
 				}
 				if (opType == 3) {
@@ -6382,7 +6381,6 @@
 					assert(GIV(method) == (iframeMethod(localFP)));
 					object = longAt((GIV(method) + (BaseHeaderSize)) + ((byte3 + LiteralStart) << 2));
 					longAtPointerput((localSP -= BytesPerOop), object);
-					null;
 					goto l4;
 				}
 				if (opType == 4) {
@@ -6410,7 +6408,6 @@
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), longAt((litVar1 + (BaseHeaderSize)) + (ValueIndex << 2)));
 
-					null;
 					goto l4;
 				}
 				top = longAtPointer(localSP);
@@ -25712,7 +25709,7 @@
 		   Allow fixed classes to be instantiated here iff nElements = 0. */
 
 		if ((nElements != 0)
-		 || (instSpec >= 9)) {
+		 || (instSpec > 5)) {
 			return null;
 		}
 		numSlots = classFormat & ((1 << 16) - 1);
@@ -57839,7 +57836,6 @@
     sqInt activeContext1;
     sqInt address;
     sqInt address1;
-    sqInt decodedIP;
     sqInt fmt;
     sqInt i;
     sqInt iLimiT;
@@ -57851,6 +57847,7 @@
     sqInt objOop1;
     sqInt objOop11;
     sqInt objOop2;
+    sqInt pc;
     sqInt prevObj;
     sqInt prevObj1;
     sqInt prevPrevObj;
@@ -57900,13 +57897,15 @@
 				longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), GIV(nilObj));
 			}
 			else {
-				decodedIP = longAt((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
-				if (((decodedIP & 1))
-				 && ((((sqInt) decodedIP)) < 0)) {
-					decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), objOop1);
+				/* begin ensureContextHasBytecodePC: */
+				assert(!(isMarriedOrWidowedContext(objOop1)));
+				pc = longAt((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
+				if (((pc & 1))
+				 && (((pc = (pc >> 1))) < 0)) {
+					pc = mustMapMachineCodePCcontext(pc, objOop1);
 					/* begin storePointerUnchecked:ofObject:withValue: */
 					assert(!(isForwarded(objOop1)));
-					longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), decodedIP);
+					longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), pc);
 				}
 			}
 			for (i = ((fetchStackPointerOf(objOop1)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(objOop1)) - 1); i <= iLimiT; i += 1) {
@@ -57957,13 +57956,15 @@
 				longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), GIV(nilObj));
 			}
 			else {
-				decodedIP = longAt((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
-				if (((decodedIP & 1))
-				 && ((((sqInt) decodedIP)) < 0)) {
-					decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), objOop1);
+				/* begin ensureContextHasBytecodePC: */
+				assert(!(isMarriedOrWidowedContext(objOop1)));
+				pc = longAt((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
+				if (((pc & 1))
+				 && (((pc = (pc >> 1))) < 0)) {
+					pc = mustMapMachineCodePCcontext(pc, objOop1);
 					/* begin storePointerUnchecked:ofObject:withValue: */
 					assert(!(isForwarded(objOop1)));
-					longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), decodedIP);
+					longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), pc);
 				}
 			}
 			for (i = ((fetchStackPointerOf(objOop1)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(objOop1)) - 1); i <= iLimiT; i += 1) {
@@ -58016,13 +58017,15 @@
 					longAtput((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), GIV(nilObj));
 				}
 				else {
-					decodedIP = longAt((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
-					if (((decodedIP & 1))
-					 && ((((sqInt) decodedIP)) < 0)) {
-						decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), objOop11);
+					/* begin ensureContextHasBytecodePC: */
+					assert(!(isMarriedOrWidowedContext(objOop11)));
+					pc = longAt((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
+					if (((pc & 1))
+					 && (((pc = (pc >> 1))) < 0)) {
+						pc = mustMapMachineCodePCcontext(pc, objOop11);
 						/* begin storePointerUnchecked:ofObject:withValue: */
 						assert(!(isForwarded(objOop11)));
-						longAtput((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), decodedIP);
+						longAtput((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), pc);
 					}
 				}
 				for (i = ((fetchStackPointerOf(objOop11)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(objOop11)) - 1); i <= iLimiT; i += 1) {

Modified: branches/Cog/spursrc/vm/interp.h
===================================================================
--- branches/Cog/spursrc/vm/interp.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/spursrc/vm/interp.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spursrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spursrc/vm/vmCallback.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/spursrc/vm/vmCallback.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/spurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/gcc3x-interp.c	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/spurstacksrc/vm/gcc3x-interp.c	2013-12-20 19:21:10 UTC (rev 2834)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
    from
-	StackInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	StackInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1955,7 +1955,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.563]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.565]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -23150,7 +23150,7 @@
 		   Allow fixed classes to be instantiated here iff nElements = 0. */
 
 		if ((nElements != 0)
-		 || (instSpec >= 9)) {
+		 || (instSpec > 5)) {
 			return null;
 		}
 		numSlots = classFormat & ((1 << 16) - 1);
@@ -46021,10 +46021,7 @@
  || ((s == thing)
  || ((c == thing)
  || ((p == thing)
- || ((m == thing)
- || ((addressCouldBeObj(m))
- && ((maybeMethodHasCogMethod(m))
- && ((((sqInt)(cogMethodOf(m)))) == thing))))))))
+ || (m == thing)))))
 		 && ((((s & 3) != 0)
  || (addressCouldBeObj(s)))
 		 && ((c != 0)
@@ -53185,7 +53182,6 @@
     sqInt activeContext;
     sqInt address;
     sqInt address1;
-    sqInt decodedIP;
     sqInt firstBytecode;
     sqInt fmt;
     sqInt i;
@@ -53244,14 +53240,7 @@
 				longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), GIV(nilObj));
 			}
 			else {
-				decodedIP = longAt((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
-				if (((decodedIP & 1))
-				 && ((((sqInt) decodedIP)) < 0)) {
-					decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), objOop1);
-					/* begin storePointerUnchecked:ofObject:withValue: */
-					assert(!(isForwarded(objOop1)));
-					longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), decodedIP);
-				}
+				/* begin ensureContextHasBytecodePC: */
 			}
 			for (i = ((fetchStackPointerOf(objOop1)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(objOop1)) - 1); i <= iLimiT; i += 1) {
 				/* begin storePointerUnchecked:ofObject:withValue: */
@@ -53314,14 +53303,7 @@
 				longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), GIV(nilObj));
 			}
 			else {
-				decodedIP = longAt((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
-				if (((decodedIP & 1))
-				 && ((((sqInt) decodedIP)) < 0)) {
-					decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), objOop1);
-					/* begin storePointerUnchecked:ofObject:withValue: */
-					assert(!(isForwarded(objOop1)));
-					longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), decodedIP);
-				}
+				/* begin ensureContextHasBytecodePC: */
 			}
 			for (i = ((fetchStackPointerOf(objOop1)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(objOop1)) - 1); i <= iLimiT; i += 1) {
 				/* begin storePointerUnchecked:ofObject:withValue: */
@@ -53386,14 +53368,7 @@
 					longAtput((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), GIV(nilObj));
 				}
 				else {
-					decodedIP = longAt((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
-					if (((decodedIP & 1))
-					 && ((((sqInt) decodedIP)) < 0)) {
-						decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), objOop11);
-						/* begin storePointerUnchecked:ofObject:withValue: */
-						assert(!(isForwarded(objOop11)));
-						longAtput((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), decodedIP);
-					}
+					/* begin ensureContextHasBytecodePC: */
 				}
 				for (i = ((fetchStackPointerOf(objOop11)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(objOop11)) - 1); i <= iLimiT; i += 1) {
 					/* begin storePointerUnchecked:ofObject:withValue: */

Modified: branches/Cog/spurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.c	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/spurstacksrc/vm/interp.c	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
    from
-	StackInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	StackInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1952,7 +1952,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.563]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.565]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -23141,7 +23141,7 @@
 		   Allow fixed classes to be instantiated here iff nElements = 0. */
 
 		if ((nElements != 0)
-		 || (instSpec >= 9)) {
+		 || (instSpec > 5)) {
 			return null;
 		}
 		numSlots = classFormat & ((1 << 16) - 1);
@@ -46012,10 +46012,7 @@
  || ((s == thing)
  || ((c == thing)
  || ((p == thing)
- || ((m == thing)
- || ((addressCouldBeObj(m))
- && ((maybeMethodHasCogMethod(m))
- && ((((sqInt)(cogMethodOf(m)))) == thing))))))))
+ || (m == thing)))))
 		 && ((((s & 3) != 0)
  || (addressCouldBeObj(s)))
 		 && ((c != 0)
@@ -53176,7 +53173,6 @@
     sqInt activeContext;
     sqInt address;
     sqInt address1;
-    sqInt decodedIP;
     sqInt firstBytecode;
     sqInt fmt;
     sqInt i;
@@ -53235,14 +53231,7 @@
 				longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), GIV(nilObj));
 			}
 			else {
-				decodedIP = longAt((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
-				if (((decodedIP & 1))
-				 && ((((sqInt) decodedIP)) < 0)) {
-					decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), objOop1);
-					/* begin storePointerUnchecked:ofObject:withValue: */
-					assert(!(isForwarded(objOop1)));
-					longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), decodedIP);
-				}
+				/* begin ensureContextHasBytecodePC: */
 			}
 			for (i = ((fetchStackPointerOf(objOop1)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(objOop1)) - 1); i <= iLimiT; i += 1) {
 				/* begin storePointerUnchecked:ofObject:withValue: */
@@ -53305,14 +53294,7 @@
 				longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), GIV(nilObj));
 			}
 			else {
-				decodedIP = longAt((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
-				if (((decodedIP & 1))
-				 && ((((sqInt) decodedIP)) < 0)) {
-					decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), objOop1);
-					/* begin storePointerUnchecked:ofObject:withValue: */
-					assert(!(isForwarded(objOop1)));
-					longAtput((objOop1 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), decodedIP);
-				}
+				/* begin ensureContextHasBytecodePC: */
 			}
 			for (i = ((fetchStackPointerOf(objOop1)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(objOop1)) - 1); i <= iLimiT; i += 1) {
 				/* begin storePointerUnchecked:ofObject:withValue: */
@@ -53377,14 +53359,7 @@
 					longAtput((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), GIV(nilObj));
 				}
 				else {
-					decodedIP = longAt((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2));
-					if (((decodedIP & 1))
-					 && ((((sqInt) decodedIP)) < 0)) {
-						decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), objOop11);
-						/* begin storePointerUnchecked:ofObject:withValue: */
-						assert(!(isForwarded(objOop11)));
-						longAtput((objOop11 + (BaseHeaderSize)) + (InstructionPointerIndex << 2), decodedIP);
-					}
+					/* begin ensureContextHasBytecodePC: */
 				}
 				for (i = ((fetchStackPointerOf(objOop11)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(objOop11)) - 1); i <= iLimiT; i += 1) {
 					/* begin storePointerUnchecked:ofObject:withValue: */

Modified: branches/Cog/spurstacksrc/vm/interp.h
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/spurstacksrc/vm/interp.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spurstacksrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spurstacksrc/vm/vmCallback.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/spurstacksrc/vm/vmCallback.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/src/vm/cogit.c
===================================================================
--- branches/Cog/src/vm/cogit.c	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/src/vm/cogit.c	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGenerator VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	StackToRegisterMappingCogit VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 

Modified: branches/Cog/src/vm/cogit.h
===================================================================
--- branches/Cog/src/vm/cogit.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/src/vm/cogit.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGenerator VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 

Modified: branches/Cog/src/vm/cogmethod.h
===================================================================
--- branches/Cog/src/vm/cogmethod.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/src/vm/cogmethod.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGenerator VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 typedef struct {

Modified: branches/Cog/src/vm/cointerp.c
===================================================================
--- branches/Cog/src/vm/cointerp.c	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/src/vm/cointerp.c	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
    from
-	CoInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CoInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2020,7 +2020,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.563]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.565]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -5532,6 +5532,7 @@
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), longAt((rcvr + BaseHeaderSize) + (byte3 << ShiftForWord)));
 					}
+					null;
 					goto l4;
 				}
 				if (opType == 3) {
@@ -5541,6 +5542,7 @@
 					assert(GIV(method) == (iframeMethod(localFP)));
 					object = longAt((GIV(method) + BaseHeaderSize) + ((byte3 + LiteralStart) << ShiftForWord));
 					longAtPointerput((localSP -= BytesPerOop), object);
+					null;
 					goto l4;
 				}
 				if (opType == 4) {
@@ -5554,6 +5556,7 @@
 					object2 = longAt((oop + BaseHeaderSize) + (ValueIndex << ShiftForWord));
 					longAtPointerput((localSP -= BytesPerOop), object2);
 
+					null;
 					goto l4;
 				}
 				top = longAtPointer(localSP);
@@ -49649,7 +49652,6 @@
     sqInt activeContext;
     sqInt activeContext1;
     sqInt chunk;
-    sqInt decodedIP;
     sqInt fmt;
     sqInt fwdBlock;
     sqInt header;
@@ -49658,6 +49660,7 @@
     sqInt iLimiT;
     sqInt obj;
     sqInt oop;
+    sqInt pc;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
@@ -49687,11 +49690,13 @@
 					longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), GIV(nilObj));
 				}
 				else {
-					decodedIP = longAt((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord));
-					if (((decodedIP & 1))
-					 && ((((sqInt) decodedIP)) < 0)) {
-						decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), oop);
-						longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), decodedIP);
+					/* begin ensureContextHasBytecodePC: */
+					assert(!(isMarriedOrWidowedContext(oop)));
+					pc = longAt((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord));
+					if (((pc & 1))
+					 && (((pc = (pc >> 1))) < 0)) {
+						pc = mustMapMachineCodePCcontext(pc, oop);
+						longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), pc);
 					}
 				}
 				for (i = ((fetchStackPointerOf(oop)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(oop)) - 1); i <= iLimiT; i += 1) {

Modified: branches/Cog/src/vm/cointerp.h
===================================================================
--- branches/Cog/src/vm/cointerp.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/src/vm/cointerp.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 

Modified: branches/Cog/src/vm/cointerpmt.c
===================================================================
--- branches/Cog/src/vm/cointerpmt.c	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/src/vm/cointerpmt.c	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
    from
-	CoInterpreterMT VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CoInterpreterMT VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
-static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1201,7 +1201,7 @@
 static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void));
 static sqInt roomToPushNArgs(sqInt n);
 static void runLeakCheckerForFullGC(sqInt fullGCFlag);
-static usqInt safeObjectAfter(sqInt oop);
+static sqInt safeObjectAfter(sqInt oop);
 static sqInt safePrintStringOf(sqInt oop);
 usqInt scavengeThresholdAddress(void);
 EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext);
@@ -2118,7 +2118,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.563]";
+const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.565]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 sqInt willNotThreadWarnCount;
@@ -19888,15 +19888,17 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
+    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;
-    usqInt next;
+    sqInt next;
     sqInt oop;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
     sqInt sz2;
+    sqInt sz3;
     sqInt target;
     usqInt w;
 
@@ -19907,7 +19909,21 @@
 		/* begin objectAfterWhileForwarding: */
 		header2 = longAt(oop);
 		if ((header2 & MarkBit) == 0) {
-			next = ((sqInt) (objectAfter(oop)));
+			/* begin objectAfter: */
+			if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) {
+				error("no objects after the end of memory");
+			}
+			if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
+				sz2 = (longAt(oop)) & AllButTypeMask;
+			}
+			else {
+				/* begin sizeBitsOf: */
+				header3 = longAt(oop);
+				sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
+					? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
+					: header3 & SizeMask);
+			}
+			next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
 			goto l1;
 		}
 		fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1;
@@ -19922,7 +19938,7 @@
 		else {
 			sz1 = realHeader & SizeMask;
 		}
-		next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask])));
+		next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]);
 	l1:	/* end objectAfterWhileForwarding: */;
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 
@@ -19976,18 +19992,18 @@
 	}
 	/* begin safeObjectAfter: */
 	if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) {
-		sz2 = (longAt(newFreeChunk)) & AllButTypeMask;
+		sz3 = (longAt(newFreeChunk)) & AllButTypeMask;
 	}
 	else {
 		/* begin sizeBitsOf: */
-		header3 = longAt(newFreeChunk);
-		sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
+		header4 = longAt(newFreeChunk);
+		sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass
 			? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask
-			: header3 & SizeMask);
+			: header4 & SizeMask);
 	}
-	next = ((newFreeChunk + sz2) >= GIV(freeStart)
+	next = ((newFreeChunk + sz3) >= GIV(freeStart)
 		? GIV(freeStart)
-		: (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask]));
+		: (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask]));
 	assert((next == GIV(freeStart))
 	 || (next == (oopFromChunk(GIV(compEnd)))));
 	if (next == GIV(freeStart)) {
@@ -46779,7 +46795,7 @@
 	given object or free chunk in memory. Return freeStart when
 	enumeration is complete. This is for assertion checking only. */
 
-static usqInt
+static sqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;
@@ -51389,7 +51405,6 @@
     sqInt activeContext;
     sqInt activeContext1;
     sqInt chunk;
-    sqInt decodedIP;
     sqInt fmt;
     sqInt fwdBlock;
     sqInt header;
@@ -51398,6 +51413,7 @@
     sqInt iLimiT;
     sqInt obj;
     sqInt oop;
+    sqInt pc;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
@@ -51427,11 +51443,13 @@
 					longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), GIV(nilObj));
 				}
 				else {
-					decodedIP = longAt((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord));
-					if (((decodedIP & 1))
-					 && ((((sqInt) decodedIP)) < 0)) {
-						decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), oop);
-						longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), decodedIP);
+					/* begin ensureContextHasBytecodePC: */
+					assert(!(isMarriedOrWidowedContext(oop)));
+					pc = longAt((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord));
+					if (((pc & 1))
+					 && (((pc = (pc >> 1))) < 0)) {
+						pc = mustMapMachineCodePCcontext(pc, oop);
+						longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), pc);
 					}
 				}
 				for (i = ((fetchStackPointerOf(oop)) + CtxtTempFrameStart), iLimiT = ((numSlotsOf(oop)) - 1); i <= iLimiT; i += 1) {

Modified: branches/Cog/src/vm/cointerpmt.h
===================================================================
--- branches/Cog/src/vm/cointerpmt.h	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/src/vm/cointerpmt.h	2013-12-20 19:21:10 UTC (rev 2834)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
 
 

Modified: branches/Cog/src/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/src/vm/gcc3x-cointerp.c	2013-12-16 23:52:11 UTC (rev 2833)
+++ branches/Cog/src/vm/gcc3x-cointerp.c	2013-12-20 19:21:10 UTC (rev 2834)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
    from
-	CoInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247
+	CoInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.563 uuid: 3116fc1b-f9a5-45f5-bc7e-4b5c68ec8247 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.565 uuid: aa89a317-26e5-404d-aaff-e2433a344379 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2023,7 +2023,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.563]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.565]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -5541,6 +5541,7 @@
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), longAt((rcvr + BaseHeaderSize) + (byte3 << ShiftForWord)));
 					}
+					null;
 					goto l4;
 				}
 				if (opType == 3) {
@@ -5550,6 +5551,7 @@
 					assert(GIV(method) == (iframeMethod(localFP)));
 					object = longAt((GIV(method) + BaseHeaderSize) + ((byte3 + LiteralStart) << ShiftForWord));
 					longAtPointerput((localSP -= BytesPerOop), object);
+					null;
 					goto l4;
 				}
 				if (opType == 4) {
@@ -5563,6 +5565,7 @@
 					object2 = longAt((oop + BaseHeaderSize) + (ValueIndex << ShiftForWord));
 					longAtPointerput((localSP -= BytesPerOop), object2);
 
+					null;
 					goto l4;
 				}
 				top = longAtPointer(localSP);
@@ -49658,7 +49661,6 @@
     sqInt activeContext;
     sqInt activeContext1;
     sqInt chunk;
-    sqInt decodedIP;
     sqInt fmt;
     sqInt fwdBlock;
     sqInt header;
@@ -49667,6 +49669,7 @@
     sqInt iLimiT;
     sqInt obj;
     sqInt oop;
+    sqInt pc;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
@@ -49696,11 +49699,13 @@
 					longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), GIV(nilObj));
 				}
 				else {
-					decodedIP = longAt((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord));
-					if (((decodedIP & 1))
-					 && ((((sqInt) decodedIP)) < 0)) {
-						decodedIP = mustMapMachineCodePCcontext((decodedIP >> 1), oop);
-						longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), decodedIP);
+					/* begin ensureContextHasBytecodePC: */
+					assert(!(isMarriedOrWidowedContext(oop)));
+					pc = longAt((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord));
+					if (((pc & 1))
+					 && (((pc = (pc >> 1))) < 0)) {
+						pc = mustMapMachineCodePCcontext(pc, oop);
+						longAtput((oop + BaseHeaderSize) + (InstructionPointerIndex << ShiftForWord), pc);
 					}
 				}

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list