[Vm-dev] [commit] r2455 - CogVM source as per VMMaker.oscog-eem.98. Functional Alien callbacks on Cog &

commits at squeakvm.org commits at squeakvm.org
Tue Jul 12 21:07:35 UTC 2011


Author: eliot
Date: 2011-07-12 14:07:35 -0700 (Tue, 12 Jul 2011)
New Revision: 2455

Added:
   branches/Cog/scripts/lsmodified
Modified:
   branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c
   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/scripts/findUnofficialFiles
   branches/Cog/src/plugins/IA32ABI/IA32ABI.c
   branches/Cog/src/vm/cointerp.c
   branches/Cog/src/vm/cointerp.h
   branches/Cog/src/vm/gcc3x-cointerp.c
   branches/Cog/src/vm/interp.h
   branches/Cog/src/vm/vmCallback.h
Log:
CogVM source as per VMMaker.oscog-eem.98.  Functional Alien callbacks on Cog &
Stack VMs.  Functional Newspeak VM on win32 with native Hopscotch windows.


Modified: branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c
===================================================================
--- branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c	2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c	2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator * VMMaker.oscog-eem.84 uuid: 65d3d0e0-a9bb-4d56-ad24-df44e8dc0e37
+	VMPluginCodeGenerator * VMMaker.oscog-eem.96 uuid: b9686449-0418-4b93-b40f-40049e108776
    from
-	NewsqueakIA32ABIPlugin * VMMaker.oscog-eem.84 uuid: 65d3d0e0-a9bb-4d56-ad24-df44e8dc0e37
+	NewsqueakIA32ABIPlugin * VMMaker.oscog-eem.96 uuid: b9686449-0418-4b93-b40f-40049e108776
  */
-static char __buildInfo[] = "NewsqueakIA32ABIPlugin * VMMaker.oscog-eem.84 uuid: 65d3d0e0-a9bb-4d56-ad24-df44e8dc0e37 " __DATE__ ;
+static char __buildInfo[] = "NewsqueakIA32ABIPlugin * VMMaker.oscog-eem.96 uuid: b9686449-0418-4b93-b40f-40049e108776 " __DATE__ ;
 
 
 
@@ -134,9 +134,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"IA32ABI * VMMaker.oscog-eem.84 (i)"
+	"IA32ABI * VMMaker.oscog-eem.96 (i)"
 #else
-	"IA32ABI * VMMaker.oscog-eem.84 (e)"
+	"IA32ABI * VMMaker.oscog-eem.96 (e)"
 #endif
 ;
 
@@ -291,8 +291,8 @@
 	if (interpreterProxy->includesBehaviorThatOf(interpreterProxy->fetchClassOf(array), interpreterProxy->classAlien())) {
 		totalLength = longAt(array + BaseHeaderSize);
 		dest = (((totalLength > 0
-	? (array + BaseHeaderSize) + BytesPerOop
-	: longAt((array + BaseHeaderSize) + BytesPerOop))) + start) - 1;
+	? ((array + BaseHeaderSize) + BytesPerOop)
+	: (longAt((array + BaseHeaderSize) + BytesPerOop)))) + start) - 1;
 		if (totalLength == 0) {
 
 			/* no bounds checks for zero-sized (pointer) Aliens */
@@ -329,8 +329,8 @@
 			if (interpreterProxy->includesBehaviorThatOf(interpreterProxy->fetchClassOf(repl), interpreterProxy->classAlien())) {
 				totalLength = longAt(repl + BaseHeaderSize);
 				src = (((totalLength > 0
-	? (repl + BaseHeaderSize) + BytesPerOop
-	: longAt((repl + BaseHeaderSize) + BytesPerOop))) + replStart) - 1;
+	? ((repl + BaseHeaderSize) + BytesPerOop)
+	: (longAt((repl + BaseHeaderSize) + BytesPerOop)))) + replStart) - 1;
 				if (totalLength == 0) {
 
 					/* no bounds checks for zero-sized (pointer) Aliens */
@@ -445,19 +445,19 @@
 
 	mac = interpreterProxy->methodArgumentCount();
 	
-#  if STACKVM
+#  if (STACKVM)
 	errCode = callIA32DoubleReturn(interpreterProxy->getStackPointer() + mac - 2, /* arg vec */
 															1 - mac	/* nargs */,
 															mac	/* funcOffset*/,
 															mac - 1	/* resultOffset */);
 
-#  else /* STACKVM */
+#  else /* (STACKVM) */
 	errCode = callIA32DoubleReturn(interpreterProxy->getStackPointer() - mac + 2, /* arg vec */
 															mac - 1	/* nargs */,
 															mac	/* funcOffset*/,
 															mac - 1	/* resultOffset */);
 
-#  endif /* STACKVM */
+#  endif /* (STACKVM) */
 
 	if (errCode != 0) {
 		return interpreterProxy->primitiveFailFor(errCode);
@@ -487,19 +487,19 @@
 
 	mac = interpreterProxy->methodArgumentCount();
 	
-#  if STACKVM
+#  if (STACKVM)
 	errCode = callIA32FloatReturn(interpreterProxy->getStackPointer() + mac - 2, /* arg vec */
 															1 - mac	/* nargs */,
 															mac	/* funcOffset*/,
 															mac - 1	/* resultOffset */);
 
-#  else /* STACKVM */
+#  else /* (STACKVM) */
 	errCode = callIA32FloatReturn(interpreterProxy->getStackPointer() - mac + 2, /* arg vec */
 															mac - 1	/* nargs */,
 															mac	/* funcOffset*/,
 															mac - 1	/* resultOffset */);
 
-#  endif /* STACKVM */
+#  endif /* (STACKVM) */
 
 	if (errCode != 0) {
 		return interpreterProxy->primitiveFailFor(errCode);
@@ -529,19 +529,19 @@
 
 	mac = interpreterProxy->methodArgumentCount();
 	
-#  if STACKVM
+#  if (STACKVM)
 	errCode = callIA32IntegralReturn(interpreterProxy->getStackPointer() + mac - 2, /* arg vec */
 															1 - mac	/* nargs */,
 															mac	/* funcOffset*/,
 															mac - 1	/* resultOffset */);
 
-#  else /* STACKVM */
+#  else /* (STACKVM) */
 	errCode = callIA32IntegralReturn(interpreterProxy->getStackPointer() - mac + 2, /* arg vec */
 															mac - 1	/* nargs */,
 															mac	/* funcOffset*/,
 															mac - 1	/* resultOffset */);
 
-#  endif /* STACKVM */
+#  endif /* (STACKVM) */
 
 	if (errCode != 0) {
 		return interpreterProxy->primitiveFailFor(errCode);
@@ -599,8 +599,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	((long *)(&floatValue))[0] = ((long *)addr)[0]; ((long *)(&floatValue))[1] = ((long *)addr)[1];
 	interpreterProxy->pop(2);
 	return interpreterProxy->pushFloat(floatValue);
@@ -643,8 +643,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrNoModification);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	((int*)addr)[0] = ((int*)(&floatValue))[0];
 	((int*)addr)[1] = ((int*)(&floatValue))[1];
 	interpreterProxy->methodReturnValue(valueOop);
@@ -680,8 +680,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	((long *)(&floatValue))[0] = ((long *)addr)[0];
 	interpreterProxy->pop(2);
 	return interpreterProxy->pushFloat(floatValue);
@@ -724,8 +724,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrNoModification);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	((long *)addr)[0] = ((long *)(&floatValue))[0];
 	interpreterProxy->methodReturnValue(valueOop);
 }
@@ -895,11 +895,10 @@
 		}
 	}
 	vmCallbackReturnValue = ((VMCallbackReturnValue *) (startOfData(interpreterProxy->stackValue(mac))));
-	if (!(interpreterProxy->reestablishContextPriorToCallback(interpreterProxy->stackValue(1)))) {
+	memcpy((&((vmCallbackContext->rvs))), (&((vmCallbackReturnValue->crvrvs))), sizeof((vmCallbackContext->rvs)));
+	if (!(interpreterProxy->returnAsThroughCallbackContext((((((vmCallbackReturnValue->type)) + 1) << 1) | 1), vmCallbackContext, interpreterProxy->stackValue(1)))) {
 		return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
 	}
-	memcpy((&((vmCallbackContext->rvs))), (&((vmCallbackReturnValue->crvrvs))), sizeof((vmCallbackContext->rvs)));
-	longjmp((vmCallbackContext->trampoline), ((vmCallbackReturnValue->type)) + 1);
 }
 
 
@@ -929,8 +928,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	value = byteAt(addr);
 	valueOop = interpreterProxy->signed32BitIntegerFor(value);
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -970,8 +969,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrNoModification);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	byteAtput(addr, value);
 	return interpreterProxy->methodReturnValue(valueOop);
 }
@@ -1003,8 +1002,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	value = longAt(addr);
 	valueOop = interpreterProxy->signed32BitIntegerFor(value);
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1042,8 +1041,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrNoModification);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	longAtput(addr, value);
 	return interpreterProxy->methodReturnValue(valueOop);
 }
@@ -1078,8 +1077,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	signedlonglongvaluePtr = ((long long*) addr);
 	signedlonglongvalue = *signedlonglongvaluePtr;
 	valueOop = interpreterProxy->signed64BitIntegerFor(signedlonglongvalue);
@@ -1122,8 +1121,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrNoModification);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	signedlonglongvaluePtr = ((long long*) addr);
 	*signedlonglongvaluePtr = signedlonglongvalue;
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1156,8 +1155,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	value = shortAt(addr);
 	valueOop = interpreterProxy->signed32BitIntegerFor(value);
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1197,8 +1196,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrNoModification);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	shortAtput(addr, value);
 	return interpreterProxy->methodReturnValue(valueOop);
 }
@@ -1279,8 +1278,8 @@
 	}
 	limit = longAt(rcvr + BaseHeaderSize);
 	ptr = ((char *) (((limit > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset));
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset));
 	if (limit == 0) {
 		index = strlen(ptr);
 	}
@@ -1322,8 +1321,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	ptr = ((char *) (longAt(addr)));
 	return interpreterProxy->methodReturnValue(interpreterProxy->positive32BitIntegerFor(strlen(ptr)));
 }
@@ -1370,8 +1369,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	value = byteAt(addr);
 	valueOop = interpreterProxy->positive32BitIntegerFor(value);
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1410,8 +1409,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrNoModification);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	byteAtput(addr, value);
 	return interpreterProxy->methodReturnValue(valueOop);
 }
@@ -1443,8 +1442,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	value = longAt(addr);
 	valueOop = interpreterProxy->positive32BitIntegerFor(value);
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1482,8 +1481,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrNoModification);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	longAtput(addr, value);
 	return interpreterProxy->methodReturnValue(valueOop);
 }
@@ -1518,8 +1517,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	unsignedlonglongvaluePtr = ((unsigned long long*) addr);
 	unsignedlonglongvalue = *unsignedlonglongvaluePtr;
 	valueOop = interpreterProxy->positive64BitIntegerFor(unsignedlonglongvalue);
@@ -1563,8 +1562,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrNoModification);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	unsignedlonglongvaluePtr = ((unsigned long long*) addr);
 	*unsignedlonglongvaluePtr = unsignedlonglongvalue;
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1597,8 +1596,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	value = shortAt(addr);
 	valueOop = interpreterProxy->positive32BitIntegerFor(value);
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1637,8 +1636,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrNoModification);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	shortAtput(addr, value);
 	return interpreterProxy->methodReturnValue(valueOop);
 }
@@ -1760,11 +1759,8 @@
     sqInt ok;
 
 	interpreterProxy = anInterpreter;
-	ok = interpreterProxy->majorVersion() == VM_PROXY_MAJOR;
-	if (ok == 0) {
-		return 0;
-	}
-	ok = interpreterProxy->minorVersion() >= VM_PROXY_MINOR;
+	ok = ((interpreterProxy->majorVersion()) == 1)
+	 && ((interpreterProxy->minorVersion()) >= 12);
 	return ok;
 }
 
@@ -1799,8 +1795,8 @@
 startOfData(sqInt rcvr)
 {
 	return ((longAt(rcvr + BaseHeaderSize)) > 0
-		? (rcvr + BaseHeaderSize) + BytesPerOop
-		: longAt((rcvr + BaseHeaderSize) + BytesPerOop));
+		? ((rcvr + BaseHeaderSize) + BytesPerOop)
+		: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)));
 }
 
 
@@ -1814,8 +1810,8 @@
 startOfDatawithSize(sqInt rcvr, sqInt sizeField)
 {
 	return (sizeField > 0
-		? (rcvr + BaseHeaderSize) + BytesPerOop
-		: longAt((rcvr + BaseHeaderSize) + BytesPerOop));
+		? ((rcvr + BaseHeaderSize) + BytesPerOop)
+		: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)));
 }
 
 

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
    from
-	CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1140,8 +1140,8 @@
 _iss sqInt nilObj;
 _iss usqInt instructionPointer;
 _iss usqInt method;
+_iss usqInt freeStart;
 _iss sqInt argumentCount;
-_iss usqInt freeStart;
 _iss usqInt newMethod;
 _iss sqInt messageSelector;
 _iss StackPage * pages;
@@ -1883,7 +1883,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.97";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.98";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -38795,11 +38795,7 @@
 		printFloat(dbgFloatValueOf(oop));
 		goto l2;
 	}
-	/* begin fetchClassOf: */
-	if ((oop & 1)) {
-		classOop = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassInteger << ShiftForWord));
-		goto l1;
-	}
+	/* begin fetchClassOfNonInt: */
 	if (((ccIndex = (((usqInt) (longAt(oop))) >> 12) & 31)) == 0) {
 		classOop = (longAt(oop - BaseHeaderSize)) & AllButTypeMask;
 		goto l1;
@@ -38808,7 +38804,14 @@
 		classOop = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
 		goto l1;
 	}
-l1:	/* end fetchClassOf: */;
+l1:	/* end fetchClassOfNonInt: */;
+	if (!(((classOop & 3) == 0)
+		 && (((((usqInt)classOop)) >= heapBase)
+		 && (((((usqInt)classOop)) < GIV(freeStart))
+		 && (((longAt(classOop)) & TypeMask) != HeaderTypeGC))))) {
+		print("a ??");
+		goto l2;
+	}
 	if ((sizeBitsOf(classOop)) == GIV(metaclassSizeBytes)) {
 		printNameOfClasscount(oop, 5);
 		goto l2;
@@ -39900,6 +39903,7 @@
     StackPage *aPage;
     sqInt calloutContext;
     sqInt index;
+    char *sp;
     char *theFP;
     char *theFP1;
     StackPage *thePage;
@@ -39915,6 +39919,21 @@
 	if (!(isLiveContext(calloutContext))) {
 		return 0;
 	}
+	/* begin push: */
+	longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+	GIV(stackPointer) = sp;
+	/* begin externalWriteBackHeadFramePointers */
+	assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+	assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+	/* begin setHeadFP:andSP:inPage: */
+	assert(GIV(stackPointer) < GIV(framePointer));
+	assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+	assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+	(GIV(stackPage)->headFP = GIV(framePointer));
+	(GIV(stackPage)->headSP = GIV(stackPointer));
+	assert(pageListIsWellFormed());
 	if (((longAt((callbackContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
 		/* begin markContextAsDead: */
 		assert(isContext(callbackContext));
@@ -40174,6 +40193,7 @@
     StackPage *aPage;
     sqInt calloutMethodContext;
     sqInt index;
+    char *sp;
     char *theFP;
     char *theFP1;
     StackPage *thePage;
@@ -40189,6 +40209,21 @@
 	if (!(isLiveContext(calloutMethodContext))) {
 		return 0;
 	}
+	/* begin push: */
+	longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+	GIV(stackPointer) = sp;
+	/* begin externalWriteBackHeadFramePointers */
+	assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+	assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+	/* begin setHeadFP:andSP:inPage: */
+	assert(GIV(stackPointer) < GIV(framePointer));
+	assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+	assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+	(GIV(stackPage)->headFP = GIV(framePointer));
+	(GIV(stackPage)->headSP = GIV(stackPointer));
+	assert(pageListIsWellFormed());
 	if (((longAt((callbackMethodContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
 		/* begin markContextAsDead: */
 		assert(isContext(callbackMethodContext));

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2011-07-12 21:07:35 UTC (rev 2455)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
    from
-	CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1143,8 +1143,8 @@
 _iss sqInt nilObj;
 _iss usqInt instructionPointer;
 _iss usqInt method;
+_iss usqInt freeStart;
 _iss sqInt argumentCount;
-_iss usqInt freeStart;
 _iss usqInt newMethod;
 _iss sqInt messageSelector;
 _iss StackPage * pages;
@@ -1886,7 +1886,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.97";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.98";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -38799,11 +38799,7 @@
 		printFloat(dbgFloatValueOf(oop));
 		goto l2;
 	}
-	/* begin fetchClassOf: */
-	if ((oop & 1)) {
-		classOop = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassInteger << ShiftForWord));
-		goto l1;
-	}
+	/* begin fetchClassOfNonInt: */
 	if (((ccIndex = (((usqInt) (longAt(oop))) >> 12) & 31)) == 0) {
 		classOop = (longAt(oop - BaseHeaderSize)) & AllButTypeMask;
 		goto l1;
@@ -38812,7 +38808,14 @@
 		classOop = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
 		goto l1;
 	}
-l1:	/* end fetchClassOf: */;
+l1:	/* end fetchClassOfNonInt: */;
+	if (!(((classOop & 3) == 0)
+		 && (((((usqInt)classOop)) >= heapBase)
+		 && (((((usqInt)classOop)) < GIV(freeStart))
+		 && (((longAt(classOop)) & TypeMask) != HeaderTypeGC))))) {
+		print("a ??");
+		goto l2;
+	}
 	if ((sizeBitsOf(classOop)) == GIV(metaclassSizeBytes)) {
 		printNameOfClasscount(oop, 5);
 		goto l2;
@@ -39904,6 +39907,7 @@
     StackPage *aPage;
     sqInt calloutContext;
     sqInt index;
+    char *sp;
     char *theFP;
     char *theFP1;
     StackPage *thePage;
@@ -39919,6 +39923,21 @@
 	if (!(isLiveContext(calloutContext))) {
 		return 0;
 	}
+	/* begin push: */
+	longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+	GIV(stackPointer) = sp;
+	/* begin externalWriteBackHeadFramePointers */
+	assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+	assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+	/* begin setHeadFP:andSP:inPage: */
+	assert(GIV(stackPointer) < GIV(framePointer));
+	assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+	assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+	(GIV(stackPage)->headFP = GIV(framePointer));
+	(GIV(stackPage)->headSP = GIV(stackPointer));
+	assert(pageListIsWellFormed());
 	if (((longAt((callbackContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
 		/* begin markContextAsDead: */
 		assert(isContext(callbackContext));
@@ -40178,6 +40197,7 @@
     StackPage *aPage;
     sqInt calloutMethodContext;
     sqInt index;
+    char *sp;
     char *theFP;
     char *theFP1;
     StackPage *thePage;
@@ -40193,6 +40213,21 @@
 	if (!(isLiveContext(calloutMethodContext))) {
 		return 0;
 	}
+	/* begin push: */
+	longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+	GIV(stackPointer) = sp;
+	/* begin externalWriteBackHeadFramePointers */
+	assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+	assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+	/* begin setHeadFP:andSP:inPage: */
+	assert(GIV(stackPointer) < GIV(framePointer));
+	assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+	assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+	(GIV(stackPage)->headFP = GIV(framePointer));
+	(GIV(stackPage)->headSP = GIV(stackPointer));
+	assert(pageListIsWellFormed());
 	if (((longAt((callbackMethodContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
 		/* begin markContextAsDead: */
 		assert(isContext(callbackMethodContext));

Modified: branches/Cog/nscogsrc/vm/interp.h
===================================================================
--- branches/Cog/nscogsrc/vm/interp.h	2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/nscogsrc/vm/interp.h	2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nscogsrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nscogsrc/vm/vmCallback.h	2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/nscogsrc/vm/vmCallback.h	2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
  */
 
 #define VM_CALLBACK_INC 1


Property changes on: branches/Cog/scripts/findUnofficialFiles
___________________________________________________________________
Deleted: svn:execute
   - true
Added: svn:executable
   + *

Added: branches/Cog/scripts/lsmodified
===================================================================
--- branches/Cog/scripts/lsmodified	                        (rev 0)
+++ branches/Cog/scripts/lsmodified	2011-07-12 21:07:35 UTC (rev 2455)
@@ -0,0 +1,2 @@
+#!/bin/sh
+fgrep -l '* VMMaker' *src*/vm/*


Property changes on: branches/Cog/scripts/lsmodified
___________________________________________________________________
Added: svn:executable
   + *

Modified: branches/Cog/src/plugins/IA32ABI/IA32ABI.c
===================================================================
--- branches/Cog/src/plugins/IA32ABI/IA32ABI.c	2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/src/plugins/IA32ABI/IA32ABI.c	2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.79 uuid: d1cc45e3-9cc0-4399-a644-2bacab32b83b
+	VMPluginCodeGenerator VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
    from
-	IA32ABIPlugin VMMaker.oscog-eem.79 uuid: d1cc45e3-9cc0-4399-a644-2bacab32b83b
+	IA32ABIPlugin VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
  */
-static char __buildInfo[] = "IA32ABIPlugin VMMaker.oscog-eem.79 uuid: d1cc45e3-9cc0-4399-a644-2bacab32b83b " __DATE__ ;
+static char __buildInfo[] = "IA32ABIPlugin VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278 " __DATE__ ;
 
 
 
@@ -63,7 +63,7 @@
 #define PrimErrNoMemory 9
 #define PrimErrNotFound 11
 #define PrimErrUnsupported 7
-#define STACKVM 0
+#define STACKVM 1
 
 
 /*** Function Prototypes ***/
@@ -132,9 +132,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"IA32ABI VMMaker.oscog-eem.79 (i)"
+	"IA32ABI VMMaker.oscog-eem.98 (i)"
 #else
-	"IA32ABI VMMaker.oscog-eem.79 (e)"
+	"IA32ABI VMMaker.oscog-eem.98 (e)"
 #endif
 ;
 
@@ -286,8 +286,8 @@
 	if (interpreterProxy->includesBehaviorThatOf(interpreterProxy->fetchClassOf(array), interpreterProxy->classAlien())) {
 		totalLength = longAt(array + BaseHeaderSize);
 		dest = (((totalLength > 0
-	? (array + BaseHeaderSize) + BytesPerOop
-	: longAt((array + BaseHeaderSize) + BytesPerOop))) + start) - 1;
+	? ((array + BaseHeaderSize) + BytesPerOop)
+	: (longAt((array + BaseHeaderSize) + BytesPerOop)))) + start) - 1;
 		if (totalLength == 0) {
 
 			/* no bounds checks for zero-sized (pointer) Aliens */
@@ -304,7 +304,7 @@
 	}
 	if (!((start >= 1)
 		 && (((start - 1) <= stop)
- && (stop <= totalLength)))) {
+		 && (stop <= totalLength)))) {
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	if ((repl & 1)) {
@@ -324,8 +324,8 @@
 			if (interpreterProxy->includesBehaviorThatOf(interpreterProxy->fetchClassOf(repl), interpreterProxy->classAlien())) {
 				totalLength = longAt(repl + BaseHeaderSize);
 				src = (((totalLength > 0
-	? (repl + BaseHeaderSize) + BytesPerOop
-	: longAt((repl + BaseHeaderSize) + BytesPerOop))) + replStart) - 1;
+	? ((repl + BaseHeaderSize) + BytesPerOop)
+	: (longAt((repl + BaseHeaderSize) + BytesPerOop)))) + replStart) - 1;
 				if (totalLength == 0) {
 
 					/* no bounds checks for zero-sized (pointer) Aliens */
@@ -408,7 +408,7 @@
 	addr = ptr[1];
 	if ((sizeField >= 0)
 	 || ((addr == 0)
- || (interpreterProxy->isInMemory(addr)))) {
+	 || (interpreterProxy->isInMemory(addr)))) {
 		return interpreterProxy->primitiveFailFor(PrimErrInappropriate);
 	}
 	free((void *)addr);
@@ -437,19 +437,19 @@
 
 	mac = interpreterProxy->methodArgumentCount();
 	
-#  if STACKVM
+#  if (STACKVM)
 	errCode = callIA32DoubleReturn(interpreterProxy->getStackPointer() + mac - 2, /* arg vec */
 															1 - mac	/* nargs */,
 															mac	/* funcOffset*/,
 															mac - 1	/* resultOffset */);
 
-#  else /* STACKVM */
+#  else /* (STACKVM) */
 	errCode = callIA32DoubleReturn(interpreterProxy->getStackPointer() - mac + 2, /* arg vec */
 															mac - 1	/* nargs */,
 															mac	/* funcOffset*/,
 															mac - 1	/* resultOffset */);
 
-#  endif /* STACKVM */
+#  endif /* (STACKVM) */
 
 	if (errCode != 0) {
 		return interpreterProxy->primitiveFailFor(errCode);
@@ -479,19 +479,19 @@
 
 	mac = interpreterProxy->methodArgumentCount();
 	
-#  if STACKVM
+#  if (STACKVM)
 	errCode = callIA32FloatReturn(interpreterProxy->getStackPointer() + mac - 2, /* arg vec */
 														1 - mac	/* nargs */,
 														mac	/* funcOffset*/,
 														mac - 1	/* resultOffset */);
 
-#  else /* STACKVM */
+#  else /* (STACKVM) */
 	errCode = callIA32FloatReturn(interpreterProxy->getStackPointer() - mac + 2, /* arg vec */
 														mac - 1	/* nargs */,
 														mac	/* funcOffset*/,
 														mac - 1	/* resultOffset */);
 
-#  endif /* STACKVM */
+#  endif /* (STACKVM) */
 
 	if (errCode != 0) {
 		return interpreterProxy->primitiveFailFor(errCode);
@@ -521,19 +521,19 @@
 
 	mac = interpreterProxy->methodArgumentCount();
 	
-#  if STACKVM
+#  if (STACKVM)
 	errCode = callIA32IntegralReturn(interpreterProxy->getStackPointer() + mac - 2, /* arg vec */
 															1 - mac	/* nargs */,
 															mac	/* funcOffset*/,
 															mac - 1	/* resultOffset */);
 
-#  else /* STACKVM */
+#  else /* (STACKVM) */
 	errCode = callIA32IntegralReturn(interpreterProxy->getStackPointer() - mac + 2, /* arg vec */
 															mac - 1	/* nargs */,
 															mac	/* funcOffset*/,
 															mac - 1	/* resultOffset */);
 
-#  endif /* STACKVM */
+#  endif /* (STACKVM) */
 
 	if (errCode != 0) {
 		return interpreterProxy->primitiveFailFor(errCode);
@@ -591,8 +591,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	((long *)(&floatValue))[0] = ((long *)addr)[0]; ((long *)(&floatValue))[1] = ((long *)addr)[1];
 	interpreterProxy->pop(2);
 	return interpreterProxy->pushFloat(floatValue);
@@ -632,8 +632,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	((int*)addr)[0] = ((int*)(&floatValue))[0];
 	((int*)addr)[1] = ((int*)(&floatValue))[1];
 	interpreterProxy->methodReturnValue(valueOop);
@@ -663,8 +663,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	((long *)(&floatValue))[0] = ((long *)addr)[0];
 	interpreterProxy->pop(2);
 	return interpreterProxy->pushFloat(floatValue);
@@ -704,8 +704,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	((long *)addr)[0] = ((long *)(&floatValue))[0];
 	interpreterProxy->methodReturnValue(valueOop);
 }
@@ -767,7 +767,7 @@
 	libraryProxy = interpreterProxy->stackValue(1);
 	if (!((interpreterProxy->includesBehaviorThatOf(interpreterProxy->fetchClassOf(libraryProxy), interpreterProxy->classAlien()))
 		 && ((((interpreterProxy->byteSizeOf(libraryProxy)) >= 2) * BytesPerOop)
- && (interpreterProxy->isBytes(functionName))))) {
+		 && (interpreterProxy->isBytes(functionName))))) {
 		return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
 	}
 	address = interpreterProxy->ioLoadSymbolOfLengthFromModule(((sqInt) (interpreterProxy->firstIndexableField(functionName))), interpreterProxy->byteSizeOf(functionName), longAt((libraryProxy + BaseHeaderSize) + BytesPerOop));
@@ -875,11 +875,10 @@
 		}
 	}
 	vmCallbackReturnValue = ((VMCallbackReturnValue *) (startOfData(interpreterProxy->stackValue(mac))));
-	if (!(interpreterProxy->reestablishContextPriorToCallback(interpreterProxy->stackValue(1)))) {
+	memcpy((&((vmCallbackContext->rvs))), (&((vmCallbackReturnValue->crvrvs))), sizeof((vmCallbackContext->rvs)));
+	if (!(interpreterProxy->returnAsThroughCallbackContext((((((vmCallbackReturnValue->type)) + 1) << 1) | 1), vmCallbackContext, interpreterProxy->stackValue(1)))) {
 		return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
 	}
-	memcpy((&((vmCallbackContext->rvs))), (&((vmCallbackReturnValue->crvrvs))), sizeof((vmCallbackContext->rvs)));
-	longjmp((vmCallbackContext->trampoline), ((vmCallbackReturnValue->type)) + 1);
 }
 
 
@@ -909,8 +908,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	value = byteAt(addr);
 	valueOop = interpreterProxy->signed32BitIntegerFor(value);
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -939,7 +938,7 @@
 	value = interpreterProxy->signed32BitValueOf(valueOop);
 	if ((interpreterProxy->failed())
 	 || ((value < -128)
- || (value > 127))) {
+	 || (value > 127))) {
 		return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
 	}
 	if (!((((dataSize = longAt(rcvr + BaseHeaderSize))) == 0)
@@ -947,8 +946,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	byteAtput(addr, value);
 	return interpreterProxy->methodReturnValue(valueOop);
 }
@@ -980,8 +979,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	value = longAt(addr);
 	valueOop = interpreterProxy->signed32BitIntegerFor(value);
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1016,8 +1015,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	longAtput(addr, value);
 	return interpreterProxy->methodReturnValue(valueOop);
 }
@@ -1052,8 +1051,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	signedlonglongvaluePtr = ((long long*) addr);
 	signedlonglongvalue = *signedlonglongvaluePtr;
 	valueOop = interpreterProxy->signed64BitIntegerFor(signedlonglongvalue);
@@ -1093,8 +1092,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	signedlonglongvaluePtr = ((long long*) addr);
 	*signedlonglongvaluePtr = signedlonglongvalue;
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1127,8 +1126,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	value = shortAt(addr);
 	valueOop = interpreterProxy->signed32BitIntegerFor(value);
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1157,7 +1156,7 @@
 	value = interpreterProxy->signed32BitValueOf(valueOop);
 	if ((interpreterProxy->failed())
 	 || ((value < -32768)
- || (value > 32767))) {
+	 || (value > 32767))) {
 		return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
 	}
 	if (!((((dataSize = longAt(rcvr + BaseHeaderSize))) == 0)
@@ -1165,8 +1164,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	shortAtput(addr, value);
 	return interpreterProxy->methodReturnValue(valueOop);
 }
@@ -1244,8 +1243,8 @@
 	}
 	limit = longAt(rcvr + BaseHeaderSize);
 	ptr = ((char *) (((limit > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset));
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset));
 	if (limit == 0) {
 		index = strlen(ptr);
 	}
@@ -1253,7 +1252,7 @@
 		limit = abs(limit);
 		index = 0;
 		while ((index < limit)
- && ((ptr[index]) != 0)) {
+		 && ((ptr[index]) != 0)) {
 			index += 1;
 		}
 	}
@@ -1287,8 +1286,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	ptr = ((char *) (longAt(addr)));
 	return interpreterProxy->methodReturnValue(interpreterProxy->positive32BitIntegerFor(strlen(ptr)));
 }
@@ -1335,8 +1334,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	value = byteAt(addr);
 	valueOop = interpreterProxy->positive32BitIntegerFor(value);
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1372,8 +1371,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	byteAtput(addr, value);
 	return interpreterProxy->methodReturnValue(valueOop);
 }
@@ -1405,8 +1404,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	value = longAt(addr);
 	valueOop = interpreterProxy->positive32BitIntegerFor(value);
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1441,8 +1440,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	longAtput(addr, value);
 	return interpreterProxy->methodReturnValue(valueOop);
 }
@@ -1477,8 +1476,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	unsignedlonglongvaluePtr = ((unsigned long long*) addr);
 	unsignedlonglongvalue = *unsignedlonglongvaluePtr;
 	valueOop = interpreterProxy->positive64BitIntegerFor(unsignedlonglongvalue);
@@ -1519,8 +1518,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	unsignedlonglongvaluePtr = ((unsigned long long*) addr);
 	*unsignedlonglongvaluePtr = unsignedlonglongvalue;
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1553,8 +1552,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	value = shortAt(addr);
 	valueOop = interpreterProxy->positive32BitIntegerFor(value);
 	return interpreterProxy->methodReturnValue(valueOop);
@@ -1590,8 +1589,8 @@
 		return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
 	}
 	addr = (((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+	? ((rcvr + BaseHeaderSize) + BytesPerOop)
+	: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
 	shortAtput(addr, value);
 	return interpreterProxy->methodReturnValue(valueOop);
 }
@@ -1713,11 +1712,8 @@
     sqInt ok;
 
 	interpreterProxy = anInterpreter;
-	ok = interpreterProxy->majorVersion() == VM_PROXY_MAJOR;
-	if (ok == 0) {
-		return 0;
-	}
-	ok = interpreterProxy->minorVersion() >= VM_PROXY_MINOR;
+	ok = ((interpreterProxy->majorVersion()) == 1)
+	 && ((interpreterProxy->minorVersion()) >= 12);
 	return ok;
 }
 
@@ -1752,8 +1748,8 @@
 startOfData(sqInt rcvr)
 {
 	return ((longAt(rcvr + BaseHeaderSize)) > 0
-		? (rcvr + BaseHeaderSize) + BytesPerOop
-		: longAt((rcvr + BaseHeaderSize) + BytesPerOop));
+		? ((rcvr + BaseHeaderSize) + BytesPerOop)
+		: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)));
 }
 
 
@@ -1767,8 +1763,8 @@
 startOfDatawithSize(sqInt rcvr, sqInt sizeField)
 {
 	return (sizeField > 0
-		? (rcvr + BaseHeaderSize) + BytesPerOop
-		: longAt((rcvr + BaseHeaderSize) + BytesPerOop));
+		? ((rcvr + BaseHeaderSize) + BytesPerOop)
+		: (longAt((rcvr + BaseHeaderSize) + BytesPerOop)));
 }
 
 

Modified: branches/Cog/src/vm/cointerp.c
===================================================================
--- branches/Cog/src/vm/cointerp.c	2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/src/vm/cointerp.c	2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
    from
-	CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1875,7 +1875,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.97]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.98]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -38128,11 +38128,7 @@
 		printFloat(dbgFloatValueOf(oop));
 		goto l2;
 	}
-	/* begin fetchClassOf: */
-	if ((oop & 1)) {
-		classOop = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassInteger << ShiftForWord));
-		goto l1;
-	}
+	/* begin fetchClassOfNonInt: */
 	if (((ccIndex = (((usqInt) (longAt(oop))) >> 12) & 31)) == 0) {
 		classOop = (longAt(oop - BaseHeaderSize)) & AllButTypeMask;
 		goto l1;
@@ -38141,7 +38137,14 @@
 		classOop = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
 		goto l1;
 	}
-l1:	/* end fetchClassOf: */;
+l1:	/* end fetchClassOfNonInt: */;
+	if (!(((classOop & 3) == 0)
+		 && (((((usqInt)classOop)) >= heapBase)
+		 && (((((usqInt)classOop)) < GIV(freeStart))
+		 && (((longAt(classOop)) & TypeMask) != HeaderTypeGC))))) {
+		print("a ??");
+		goto l2;
+	}
 	if ((sizeBitsOf(classOop)) == GIV(metaclassSizeBytes)) {
 		printNameOfClasscount(oop, 5);
 		goto l2;
@@ -39233,6 +39236,7 @@
     StackPage *aPage;
     sqInt calloutContext;
     sqInt index;
+    char *sp;
     char *theFP;
     char *theFP1;
     StackPage *thePage;
@@ -39248,6 +39252,21 @@
 	if (!(isLiveContext(calloutContext))) {
 		return 0;
 	}
+	/* begin push: */
+	longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+	GIV(stackPointer) = sp;
+	/* begin externalWriteBackHeadFramePointers */
+	assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+	assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+	/* begin setHeadFP:andSP:inPage: */
+	assert(GIV(stackPointer) < GIV(framePointer));
+	assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+	assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+	(GIV(stackPage)->headFP = GIV(framePointer));
+	(GIV(stackPage)->headSP = GIV(stackPointer));
+	assert(pageListIsWellFormed());
 	if (((longAt((callbackContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
 		/* begin markContextAsDead: */
 		assert(isContext(callbackContext));
@@ -39507,6 +39526,7 @@
     StackPage *aPage;
     sqInt calloutMethodContext;
     sqInt index;
+    char *sp;
     char *theFP;
     char *theFP1;
     StackPage *thePage;
@@ -39522,6 +39542,21 @@
 	if (!(isLiveContext(calloutMethodContext))) {
 		return 0;
 	}
+	/* begin push: */
+	longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+	GIV(stackPointer) = sp;
+	/* begin externalWriteBackHeadFramePointers */
+	assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+	assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+	/* begin setHeadFP:andSP:inPage: */
+	assert(GIV(stackPointer) < GIV(framePointer));
+	assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+	assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+	(GIV(stackPage)->headFP = GIV(framePointer));
+	(GIV(stackPage)->headSP = GIV(stackPointer));
+	assert(pageListIsWellFormed());
 	if (((longAt((callbackMethodContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
 		/* begin markContextAsDead: */
 		assert(isContext(callbackMethodContext));

Modified: branches/Cog/src/vm/cointerp.h
===================================================================
--- branches/Cog/src/vm/cointerp.h	2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/src/vm/cointerp.h	2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
  */
 
 

Modified: branches/Cog/src/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/src/vm/gcc3x-cointerp.c	2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/src/vm/gcc3x-cointerp.c	2011-07-12 21:07:35 UTC (rev 2455)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
    from
-	CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1878,7 +1878,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.97]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.98]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -38132,11 +38132,7 @@
 		printFloat(dbgFloatValueOf(oop));
 		goto l2;
 	}
-	/* begin fetchClassOf: */
-	if ((oop & 1)) {
-		classOop = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassInteger << ShiftForWord));
-		goto l1;
-	}
+	/* begin fetchClassOfNonInt: */
 	if (((ccIndex = (((usqInt) (longAt(oop))) >> 12) & 31)) == 0) {
 		classOop = (longAt(oop - BaseHeaderSize)) & AllButTypeMask;
 		goto l1;
@@ -38145,7 +38141,14 @@
 		classOop = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
 		goto l1;
 	}
-l1:	/* end fetchClassOf: */;
+l1:	/* end fetchClassOfNonInt: */;
+	if (!(((classOop & 3) == 0)
+		 && (((((usqInt)classOop)) >= heapBase)
+		 && (((((usqInt)classOop)) < GIV(freeStart))
+		 && (((longAt(classOop)) & TypeMask) != HeaderTypeGC))))) {
+		print("a ??");
+		goto l2;
+	}
 	if ((sizeBitsOf(classOop)) == GIV(metaclassSizeBytes)) {
 		printNameOfClasscount(oop, 5);
 		goto l2;
@@ -39237,6 +39240,7 @@
     StackPage *aPage;
     sqInt calloutContext;
     sqInt index;
+    char *sp;
     char *theFP;
     char *theFP1;
     StackPage *thePage;
@@ -39252,6 +39256,21 @@
 	if (!(isLiveContext(calloutContext))) {
 		return 0;
 	}
+	/* begin push: */
+	longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+	GIV(stackPointer) = sp;
+	/* begin externalWriteBackHeadFramePointers */
+	assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+	assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+	/* begin setHeadFP:andSP:inPage: */
+	assert(GIV(stackPointer) < GIV(framePointer));
+	assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+	assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+	(GIV(stackPage)->headFP = GIV(framePointer));
+	(GIV(stackPage)->headSP = GIV(stackPointer));
+	assert(pageListIsWellFormed());
 	if (((longAt((callbackContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
 		/* begin markContextAsDead: */
 		assert(isContext(callbackContext));
@@ -39511,6 +39530,7 @@
     StackPage *aPage;
     sqInt calloutMethodContext;
     sqInt index;
+    char *sp;
     char *theFP;
     char *theFP1;
     StackPage *thePage;
@@ -39526,6 +39546,21 @@
 	if (!(isLiveContext(calloutMethodContext))) {
 		return 0;
 	}
+	/* begin push: */
+	longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+	GIV(stackPointer) = sp;
+	/* begin externalWriteBackHeadFramePointers */
+	assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+	assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+	/* begin setHeadFP:andSP:inPage: */
+	assert(GIV(stackPointer) < GIV(framePointer));
+	assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+	assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+	 && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+	(GIV(stackPage)->headFP = GIV(framePointer));
+	(GIV(stackPage)->headSP = GIV(stackPointer));
+	assert(pageListIsWellFormed());
 	if (((longAt((callbackMethodContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
 		/* begin markContextAsDead: */
 		assert(isContext(callbackMethodContext));

Modified: branches/Cog/src/vm/interp.h
===================================================================
--- branches/Cog/src/vm/interp.h	2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/src/vm/interp.h	2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/src/vm/vmCallback.h
===================================================================
--- branches/Cog/src/vm/vmCallback.h	2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/src/vm/vmCallback.h	2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.93 uuid: a811c33a-a695-452b-9090-e0984e33c100
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
  */
 
 #define VM_CALLBACK_INC 1



More information about the Vm-dev mailing list