[Vm-dev] [commit][3234] CogVM source as per VMMaker.oscog-eem.1026

commits at squeakvm.org commits at squeakvm.org
Fri Jan 23 01:06:19 UTC 2015


Revision: 3234
Author:   eliot
Date:     2015-01-22 17:06:16 -0800 (Thu, 22 Jan 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1026

Fix type regression in primitiveBitShift due to 64-bits.

Reduce the max num literals in the alternate header format to 15, and steal
the bit for the Sista optimized method flag.

Spur: Optionalize some api methods the Spur Cogit doesn't use.

Modified Paths:
--------------
    branches/Cog/nscogsrc/vm/cogit.c
    branches/Cog/nscogsrc/vm/cogit.h
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/vm/cogit.c
    branches/Cog/nsspursrc/vm/cogit.h
    branches/Cog/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/sistasrc/vm/cogit.c
    branches/Cog/sistasrc/vm/cogit.h
    branches/Cog/sistasrc/vm/cointerp.c
    branches/Cog/sistasrc/vm/cointerp.h
    branches/Cog/sistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursistasrc/vm/cogit.c
    branches/Cog/spursistasrc/vm/cogit.h
    branches/Cog/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/cogit.c
    branches/Cog/spursrc/vm/cogit.h
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spurstack64src/vm/gcc3x-interp.c
    branches/Cog/spurstack64src/vm/interp.c
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/src/vm/cogit.c
    branches/Cog/src/vm/cogit.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/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c

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

Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c	2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nscogsrc/vm/cogit.c	2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	CCodeGenerator VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -9328,7 +9328,7 @@
 		cogMethod = ((CogMethod *) (roundUpLength((((sqInt)cogMethod)) + ((cogMethod->blockSize)))));
 	}
 	if ((((label = stringForCString("CCFree"))) == null)
-	 || (((value = positive32BitIntegerFor(freeStart()))) == null)) {
+	 || (((value = positive32BitIntegerFor(mzFreeStart))) == null)) {
 		popRemappableOop();
 		return null;
 	}

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h	2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nscogsrc/vm/cogit.h	2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	CCodeGenerator VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee
  */
 
 

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
    from
-	CoInterpreter VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	CoInterpreter VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -102,6 +102,7 @@
 #define AllButRootBit 0xBFFFFFFFUL
 #define AllButTypeMask 0xFFFFFFFCUL
 #define AlternateHeaderHasPrimFlag 0x20000
+#define AlternateHeaderNumLiteralsMask 0x7FFF
 #define AltLongStoreBytecode 234
 #define AtCacheFixedFields 4
 #define AtCacheFmt 3
@@ -1081,7 +1082,6 @@
 static char * findSPOfon(char *theFP, StackPage *thePage) NoDbgRegParms;
 static sqInt findUnwindThroughContext(sqInt homeContext) NoDbgRegParms;
 double floatArg(sqInt index);
-sqInt followLiteralofMethod(sqInt offset, sqInt methodPointer);
 sqInt forceInterruptCheck(void);
 static char * frameCallerFP(char *theFP) NoDbgRegParms;
 static char * frameCallerSavedIP(char *theFP) NoDbgRegParms;
@@ -2099,7 +2099,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1024";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1026";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -7963,7 +7963,7 @@
 			/* bytecodePrimBitShift */
 			{
 				sqInt integerArgument;
-				usqInt integerReceiver;
+				sqInt integerReceiver;
 				sqInt shifted;
 				char *sp;
 
@@ -10917,7 +10917,7 @@
 			/* bytecodePrimBitShift */
 			{
 				sqInt integerArgument;
-				usqInt integerReceiver;
+				sqInt integerReceiver;
 				sqInt shifted;
 				char *sp;
 
@@ -13493,7 +13493,7 @@
 				((((CogMethod *) header))->methodHeader)));
 		primitiveIndex = ((((sqInt) methodHeader)) < 0
 			? (methodHeader & AlternateHeaderHasPrimFlag
-					? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+					? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 						(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 					: 0)
 			: ((primBits = (methodHeader >> 1)),
@@ -14471,7 +14471,7 @@
 			((((CogMethod *) header))->methodHeader)));
 	primitiveIndex = ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -14543,7 +14543,7 @@
 				((((CogMethod *) header))->methodHeader)));
 		primitiveIndex = ((((sqInt) methodHeader)) < 0
 			? (methodHeader & AlternateHeaderHasPrimFlag
-					? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+					? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 						(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 					: 0)
 			: ((primBits = (methodHeader >> 1)),
@@ -18420,7 +18420,7 @@
 		methodHeader = (cogMethod->methodHeader);
 		primitive = ((((sqInt) methodHeader)) < 0
 			? (methodHeader & AlternateHeaderHasPrimFlag
-					? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+					? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 						(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 					: 0)
 			: ((primBits = (methodHeader >> 1)),
@@ -21190,7 +21190,7 @@
 			((((CogMethod *) header))->methodHeader)));
 	primIdx = ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -22203,7 +22203,7 @@
 			((((CogMethod *) header))->methodHeader)));
 	primIdx = ((((sqInt) methodHeader1)) < 0
 		? (methodHeader1 & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader1 >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader1 >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader1 >> 1)),
@@ -24415,7 +24415,7 @@
 primitiveBitShift(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt integerArgument;
-    usqInt integerReceiver;
+    sqInt integerReceiver;
     sqInt shifted;
     char *sp;
 
@@ -27750,7 +27750,7 @@
 							((((CogMethod *) header))->methodHeader)));
 					primIdx = ((((sqInt) methodHeader)) < 0
 						? (methodHeader & AlternateHeaderHasPrimFlag
-								? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+								? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 									(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 								: 0)
 						: ((primBits = (methodHeader >> 1)),
@@ -30133,7 +30133,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	literalCount = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	size = ((literalCount + LiteralStart) * BytesPerOop) + bytecodeCount;
 	theMethod = instantiateClassindexableSize(class, size);
@@ -33703,7 +33703,7 @@
 							((((CogMethod *) header))->methodHeader)));
 					primIdx = ((((sqInt) methodHeader)) < 0
 						? (methodHeader & AlternateHeaderHasPrimFlag
-								? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+								? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 									(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 								: 0)
 						: ((primBits = (methodHeader >> 1)),
@@ -35003,7 +35003,7 @@
 		/* begin literalCountOfMethodHeader: */
 		assert((header & 1));
 		numLiterals = ((((sqInt) header)) < 0
-			? ((header >> 1)) & 0xFFFF
+			? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 			: (((usqInt) header) >> 10) & 0xFF);
 		fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 	l2:	/* end lastPointerOf: */;
@@ -37264,7 +37264,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	numLiterals = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	return (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 }
@@ -37298,7 +37298,7 @@
 {
 	assert((header & 1));
 	return ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 }
 
@@ -38194,7 +38194,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	numLiterals = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 l4:	/* end lastPointerOf: */;
@@ -39899,7 +39899,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	numLiterals = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 l2:	/* end lastPointerOf: */;
@@ -40550,7 +40550,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	numLiterals = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 l2:	/* end lastPointerOf: */;
@@ -40618,7 +40618,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	numLiterals = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 l2:	/* end lastPointerOf: */;
@@ -40770,7 +40770,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	numLiterals = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	lastField = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 l2:	/* end lastPointerOf: */;
@@ -41781,7 +41781,7 @@
 			((((CogMethod *) header1))->methodHeader)));
 	assert((header & 1));
 	return ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 }
 
@@ -42052,7 +42052,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header4 & 1));
 	numLiterals1 = ((((sqInt) header4)) < 0
-		? ((header4 >> 1)) & 0xFFFF
+		? ((header4 >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header4) >> 10) & 0xFF);
 	lastFieldOffset = (((numLiterals1 + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 l7:	/* end lastPointerOf:recordWeakRoot: */;
@@ -42192,7 +42192,7 @@
 			/* begin literalCountOfMethodHeader: */
 			assert((header3 & 1));
 			numLiterals = ((((sqInt) header3)) < 0
-				? ((header3 >> 1)) & 0xFFFF
+				? ((header3 >> 1)) & AlternateHeaderNumLiteralsMask
 				: (((usqInt) header3) >> 10) & 0xFF);
 			lastFieldOffset1 = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 		l5:	/* end lastPointerOf:recordWeakRoot: */;
@@ -43102,7 +43102,7 @@
 			/* begin literalCountOfMethodHeader: */
 			assert((header3 & 1));
 			numLiterals = ((((sqInt) header3)) < 0
-				? ((header3 >> 1)) & 0xFFFF
+				? ((header3 >> 1)) & AlternateHeaderNumLiteralsMask
 				: (((usqInt) header3) >> 10) & 0xFF);
 			fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 		l3:	/* end lastPointerWhileForwarding: */;
@@ -43280,7 +43280,7 @@
 			/* begin literalCountOfMethodHeader: */
 			assert((header & 1));
 			numLiterals = ((((sqInt) header)) < 0
-				? ((header >> 1)) & 0xFFFF
+				? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 				: (((usqInt) header) >> 10) & 0xFF);
 			fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 		l3:	/* end lastPointerWhileForwarding: */;
@@ -43596,7 +43596,7 @@
 
 	primitiveIndex = ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -46118,13 +46118,7 @@
 	return 0.0;
 }
 
-sqInt
-followLiteralofMethod(sqInt offset, sqInt methodPointer)
-{
-	return longAt((methodPointer + BaseHeaderSize) + ((offset + LiteralStart) << (shiftForWord())));
-}
 
-
 /*	Force an interrupt check ASAP.
 	Must set the stack page's limit before stackLimit to avoid
 	a race condition if this is called from an interrupt handler. */
@@ -48423,7 +48417,7 @@
 			((((CogMethod *) header))->methodHeader)));
 	return ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -48788,7 +48782,7 @@
 
 	return ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -48814,7 +48808,7 @@
 			((((CogMethod *) header))->methodHeader)));
 	return ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (methodPointer + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (methodPointer + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -54209,7 +54203,7 @@
 		 && (((lengthOf(spec)) == 4)
 		 && ((((((sqInt) methodHeader)) < 0
 	? (methodHeader & AlternateHeaderHasPrimFlag
-			? ((firstBytecode = (methodArg + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+			? ((firstBytecode = (methodArg + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 				(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 			: 0)
 	: ((primBits = (methodHeader >> 1)),
@@ -54574,7 +54568,7 @@
 			((((CogMethod *) header))->methodHeader)));
 	primitiveIndex = ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -54668,7 +54662,7 @@
 			((((CogMethod *) header2))->methodHeader)));
 	primitiveIndex = ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
  */
 
 
@@ -220,7 +220,6 @@
 sqInt checkOkayInterpreterObjects(sqInt writeBack);
 sqInt copiedValueCountOfClosure(sqInt closurePointer);
 sqInt doSignalSemaphoreWithIndex(sqInt index);
-sqInt followLiteralofMethod(sqInt offset, sqInt methodPointer);
 void (*functionPointerForinClass(sqInt primIdx,sqInt theClass))(void) ;
 usqLong getNextWakeupUsecs(void);
 sqInt * getStackPointer(void);

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2015-01-23 01:06:16 UTC (rev 3234)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
    from
-	CoInterpreter VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	CoInterpreter VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -105,6 +105,7 @@
 #define AllButRootBit 0xBFFFFFFFUL
 #define AllButTypeMask 0xFFFFFFFCUL
 #define AlternateHeaderHasPrimFlag 0x20000
+#define AlternateHeaderNumLiteralsMask 0x7FFF
 #define AltLongStoreBytecode 234
 #define AtCacheFixedFields 4
 #define AtCacheFmt 3
@@ -1084,7 +1085,6 @@
 static char * findSPOfon(char *theFP, StackPage *thePage) NoDbgRegParms;
 static sqInt findUnwindThroughContext(sqInt homeContext) NoDbgRegParms;
 double floatArg(sqInt index);
-sqInt followLiteralofMethod(sqInt offset, sqInt methodPointer);
 sqInt forceInterruptCheck(void);
 static char * frameCallerFP(char *theFP) NoDbgRegParms;
 static char * frameCallerSavedIP(char *theFP) NoDbgRegParms;
@@ -2102,7 +2102,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1024";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1026";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -7972,7 +7972,7 @@
 			/* bytecodePrimBitShift */
 			{
 				sqInt integerArgument;
-				usqInt integerReceiver;
+				sqInt integerReceiver;
 				sqInt shifted;
 				char *sp;
 
@@ -10926,7 +10926,7 @@
 			/* bytecodePrimBitShift */
 			{
 				sqInt integerArgument;
-				usqInt integerReceiver;
+				sqInt integerReceiver;
 				sqInt shifted;
 				char *sp;
 
@@ -13502,7 +13502,7 @@
 				((((CogMethod *) header))->methodHeader)));
 		primitiveIndex = ((((sqInt) methodHeader)) < 0
 			? (methodHeader & AlternateHeaderHasPrimFlag
-					? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+					? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 						(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 					: 0)
 			: ((primBits = (methodHeader >> 1)),
@@ -14480,7 +14480,7 @@
 			((((CogMethod *) header))->methodHeader)));
 	primitiveIndex = ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -14552,7 +14552,7 @@
 				((((CogMethod *) header))->methodHeader)));
 		primitiveIndex = ((((sqInt) methodHeader)) < 0
 			? (methodHeader & AlternateHeaderHasPrimFlag
-					? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+					? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 						(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 					: 0)
 			: ((primBits = (methodHeader >> 1)),
@@ -18429,7 +18429,7 @@
 		methodHeader = (cogMethod->methodHeader);
 		primitive = ((((sqInt) methodHeader)) < 0
 			? (methodHeader & AlternateHeaderHasPrimFlag
-					? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+					? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 						(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 					: 0)
 			: ((primBits = (methodHeader >> 1)),
@@ -21199,7 +21199,7 @@
 			((((CogMethod *) header))->methodHeader)));
 	primIdx = ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -22212,7 +22212,7 @@
 			((((CogMethod *) header))->methodHeader)));
 	primIdx = ((((sqInt) methodHeader1)) < 0
 		? (methodHeader1 & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader1 >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader1 >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader1 >> 1)),
@@ -24424,7 +24424,7 @@
 primitiveBitShift(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt integerArgument;
-    usqInt integerReceiver;
+    sqInt integerReceiver;
     sqInt shifted;
     char *sp;
 
@@ -27759,7 +27759,7 @@
 							((((CogMethod *) header))->methodHeader)));
 					primIdx = ((((sqInt) methodHeader)) < 0
 						? (methodHeader & AlternateHeaderHasPrimFlag
-								? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+								? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 									(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 								: 0)
 						: ((primBits = (methodHeader >> 1)),
@@ -30142,7 +30142,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	literalCount = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	size = ((literalCount + LiteralStart) * BytesPerOop) + bytecodeCount;
 	theMethod = instantiateClassindexableSize(class, size);
@@ -33712,7 +33712,7 @@
 							((((CogMethod *) header))->methodHeader)));
 					primIdx = ((((sqInt) methodHeader)) < 0
 						? (methodHeader & AlternateHeaderHasPrimFlag
-								? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+								? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 									(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 								: 0)
 						: ((primBits = (methodHeader >> 1)),
@@ -35012,7 +35012,7 @@
 		/* begin literalCountOfMethodHeader: */
 		assert((header & 1));
 		numLiterals = ((((sqInt) header)) < 0
-			? ((header >> 1)) & 0xFFFF
+			? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 			: (((usqInt) header) >> 10) & 0xFF);
 		fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 	l2:	/* end lastPointerOf: */;
@@ -37273,7 +37273,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	numLiterals = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	return (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 }
@@ -37307,7 +37307,7 @@
 {
 	assert((header & 1));
 	return ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 }
 
@@ -38203,7 +38203,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	numLiterals = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 l4:	/* end lastPointerOf: */;
@@ -39908,7 +39908,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	numLiterals = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 l2:	/* end lastPointerOf: */;
@@ -40559,7 +40559,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	numLiterals = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 l2:	/* end lastPointerOf: */;
@@ -40627,7 +40627,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	numLiterals = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 l2:	/* end lastPointerOf: */;
@@ -40779,7 +40779,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header & 1));
 	numLiterals = ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 	lastField = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 l2:	/* end lastPointerOf: */;
@@ -41790,7 +41790,7 @@
 			((((CogMethod *) header1))->methodHeader)));
 	assert((header & 1));
 	return ((((sqInt) header)) < 0
-		? ((header >> 1)) & 0xFFFF
+		? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header) >> 10) & 0xFF);
 }
 
@@ -42061,7 +42061,7 @@
 	/* begin literalCountOfMethodHeader: */
 	assert((header4 & 1));
 	numLiterals1 = ((((sqInt) header4)) < 0
-		? ((header4 >> 1)) & 0xFFFF
+		? ((header4 >> 1)) & AlternateHeaderNumLiteralsMask
 		: (((usqInt) header4) >> 10) & 0xFF);
 	lastFieldOffset = (((numLiterals1 + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 l7:	/* end lastPointerOf:recordWeakRoot: */;
@@ -42201,7 +42201,7 @@
 			/* begin literalCountOfMethodHeader: */
 			assert((header3 & 1));
 			numLiterals = ((((sqInt) header3)) < 0
-				? ((header3 >> 1)) & 0xFFFF
+				? ((header3 >> 1)) & AlternateHeaderNumLiteralsMask
 				: (((usqInt) header3) >> 10) & 0xFF);
 			lastFieldOffset1 = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 		l5:	/* end lastPointerOf:recordWeakRoot: */;
@@ -43111,7 +43111,7 @@
 			/* begin literalCountOfMethodHeader: */
 			assert((header3 & 1));
 			numLiterals = ((((sqInt) header3)) < 0
-				? ((header3 >> 1)) & 0xFFFF
+				? ((header3 >> 1)) & AlternateHeaderNumLiteralsMask
 				: (((usqInt) header3) >> 10) & 0xFF);
 			fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 		l3:	/* end lastPointerWhileForwarding: */;
@@ -43289,7 +43289,7 @@
 			/* begin literalCountOfMethodHeader: */
 			assert((header & 1));
 			numLiterals = ((((sqInt) header)) < 0
-				? ((header >> 1)) & 0xFFFF
+				? ((header >> 1)) & AlternateHeaderNumLiteralsMask
 				: (((usqInt) header) >> 10) & 0xFF);
 			fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
 		l3:	/* end lastPointerWhileForwarding: */;
@@ -43605,7 +43605,7 @@
 
 	primitiveIndex = ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -46127,13 +46127,7 @@
 	return 0.0;
 }
 
-sqInt
-followLiteralofMethod(sqInt offset, sqInt methodPointer)
-{
-	return longAt((methodPointer + BaseHeaderSize) + ((offset + LiteralStart) << (shiftForWord())));
-}
 
-
 /*	Force an interrupt check ASAP.
 	Must set the stack page's limit before stackLimit to avoid
 	a race condition if this is called from an interrupt handler. */
@@ -48432,7 +48426,7 @@
 			((((CogMethod *) header))->methodHeader)));
 	return ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -48797,7 +48791,7 @@
 
 	return ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -48823,7 +48817,7 @@
 			((((CogMethod *) header))->methodHeader)));
 	return ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (methodPointer + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (methodPointer + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -54218,7 +54212,7 @@
 		 && (((lengthOf(spec)) == 4)
 		 && ((((((sqInt) methodHeader)) < 0
 	? (methodHeader & AlternateHeaderHasPrimFlag
-			? ((firstBytecode = (methodArg + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+			? ((firstBytecode = (methodArg + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 				(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 			: 0)
 	: ((primBits = (methodHeader >> 1)),
@@ -54583,7 +54577,7 @@
 			((((CogMethod *) header))->methodHeader)));
 	primitiveIndex = ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),
@@ -54677,7 +54671,7 @@
 			((((CogMethod *) header2))->methodHeader)));
 	primitiveIndex = ((((sqInt) methodHeader)) < 0
 		? (methodHeader & AlternateHeaderHasPrimFlag
-				? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+				? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 					(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 				: 0)
 		: ((primBits = (methodHeader >> 1)),

Modified: branches/Cog/nsspursrc/vm/cogit.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.c	2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nsspursrc/vm/cogit.c	2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	CCodeGenerator VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -9286,7 +9286,7 @@
 		cogMethod = ((CogMethod *) (roundUpLength((((sqInt)cogMethod)) + ((cogMethod->blockSize)))));
 	}
 	if ((((label = stringForCString("CCFree"))) == null)
-	 || (((value = positive32BitIntegerFor(freeStart()))) == null)) {
+	 || (((value = positive32BitIntegerFor(mzFreeStart))) == null)) {
 		popRemappableOop();
 		return null;
 	}

Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h	2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nsspursrc/vm/cogit.h	2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	CCodeGenerator VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee
  */
 
 

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
    from
-	CoInterpreter VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+	CoInterpreter VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -128,6 +128,7 @@
 /*** Constants ***/
 #define ActiveProcessIndex 1
 #define AlternateHeaderHasPrimFlag 0x20000
+#define AlternateHeaderNumLiteralsMask 0x7FFF
 #define AltLongStoreBytecode 234
 #define AtCacheFixedFields 4
 #define AtCacheFmt 3
@@ -406,7 +407,6 @@
 void callForCogCompiledCodeCompaction(void);
 static void callRegisterArgCogMethodatreceiver(CogMethod *cogMethod, sqInt entryOffset, sqInt rcvr) NoDbgRegParms;
 void ceActivateFailingPrimitiveMethod(sqInt aPrimitiveMethod);
-sqInt ceActiveContext(void);
 sqInt ceBaseFrameReturn(sqInt returnValue);
 sqInt ceCannotResume(void);
 sqInt ceCheckForAndFollowForwardedPrimitiveState(void);
@@ -418,7 +418,6 @@
 sqInt ceEnclosingObjectAt(sqInt level);
 sqInt ceInterpretMethodFromPICreceiver(sqInt aMethodObj, sqInt rcvr);
 sqInt ceMNUFromPICMNUMethodreceiver(sqInt aMethodObj, sqInt rcvr);
-sqInt ceNewArraySlotSize(sqInt slotSize);
 sqInt ceNonLocalReturn(sqInt returnValue);
 sqInt ceReturnToInterpreter(sqInt anOop);
 sqInt ceSendAborttonumArgs(sqInt selector, sqInt rcvr, sqInt numArgs);
@@ -439,7 +438,6 @@
 static void commenceCogCompiledCodeCompaction(void);
 void compilationBreakpointFor(sqInt selectorOop);
 static sqInt contextInstructionPointerframe(sqInt theIP, char *theFP) NoDbgRegParms;
-sqInt createClosureNumArgsnumCopiedstartpc(sqInt numArgs, sqInt numCopied, sqInt initialIP);
 static sqInt defaultCogCodeSize(void);
 static sqInt deferStackLimitSmashAroundwith(void (*functionSymbol)(sqInt), sqInt arg) NoDbgRegParms;
 static sqInt divorceAMachineCodeFrameWithCogMethodin(CogMethod *cogMethod, StackPage *aStackPage) NoDbgRegParms;
@@ -1272,7 +1270,6 @@
 static sqInt findUnwindThroughContext(sqInt homeContext) NoDbgRegParms;
 double floatArg(sqInt index);
 static void followForwardedFrameContentsstackPointer(char *theFP, char *theSP) NoDbgRegParms;
-sqInt followLiteralofMethod(sqInt offset, sqInt methodPointer);
 sqInt forceInterruptCheck(void);
 static char * frameCallerFP(char *theFP) NoDbgRegParms;
 static char * frameCallerSavedIP(char *theFP) NoDbgRegParms;
@@ -1532,8 +1529,8 @@
 _iss StackPage * stackPage;
 _iss sqInt specialObjectsOop;
 _iss sqInt bytecodeSetSelector;
-_iss usqInt freeStart;
 _iss sqInt argumentCount;
+_iss usqInt freeStart;
 _iss sqInt markStack;
 _iss usqInt instructionPointer;
 _iss usqInt newMethod;
@@ -1546,8 +1543,8 @@
 _iss sqInt weaklingStack;
 _iss usqInt newSpaceStart;
 _iss SpurSegmentInfo * segments;
-_iss sqInt needGCFlag;
 _iss sqInt trueObj;
+_iss sqInt needGCFlag;
 _iss sqInt falseObj;
 _iss usqInt totalFreeOldSpace;
 _iss sqInt bytesPerPage;
@@ -2353,7 +2350,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1024";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1026";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -8900,7 +8897,7 @@
 			/* bytecodePrimBitShift */
 			{
 				sqInt integerArgument;
-				usqInt integerReceiver;
+				sqInt integerReceiver;
 				sqInt shifted;
 				char *sp;
 
@@ -11646,7 +11643,7 @@
 			/* bytecodePrimBitShift */
 			{
 				sqInt integerArgument;
-				usqInt integerReceiver;
+				sqInt integerReceiver;
 				sqInt shifted;
 				char *sp;
 
@@ -14780,7 +14777,7 @@
 				assert((((((CogMethod *) header))->objectHeader)) == (nullHeaderForMachineCodeMethod())),
 				((((CogMethod *) header))->methodHeader)));
 		primitiveIndex = (methodHeader & AlternateHeaderHasPrimFlag
-			? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+			? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 				(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 			: 0);
 		/* begin functionPointerFor:inClass: */
@@ -15293,19 +15290,6 @@
 }
 
 
-/*	Since the trampoline checks for marriage we should only be here for a
-	single frame.
- */
-
-sqInt
-ceActiveContext(void)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-	assert(isMachineCodeFrame(GIV(framePointer)));
-	assert(!(frameHasContext(GIV(framePointer))));
-	return marryFrameSP(GIV(framePointer), GIV(stackPointer) + BytesPerWord);
-}
-
-
 /*	Return across a page boundary. The context to return to (which may be
 	married) is stored in the first word of the stack. We get here when a
 	return instruction jumps
@@ -15835,7 +15819,7 @@
 			assert((((((CogMethod *) header))->objectHeader)) == (nullHeaderForMachineCodeMethod())),
 			((((CogMethod *) header))->methodHeader)));
 	primitiveIndex = (methodHeader & AlternateHeaderHasPrimFlag
-		? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+		? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 			(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 		: 0);
 	/* begin functionPointerFor:inClass: */
@@ -15897,7 +15881,7 @@
 				assert((((((CogMethod *) header))->objectHeader)) == (nullHeaderForMachineCodeMethod())),
 				((((CogMethod *) header))->methodHeader)));
 		primitiveIndex = (methodHeader & AlternateHeaderHasPrimFlag
-			? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+			? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
 				(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
 			: 0);
 		/* begin functionPointerFor:inClass: */
@@ -15911,53 +15895,6 @@
 }
 
 sqInt
-ceNewArraySlotSize(sqInt slotSize)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt newObj;
-    usqInt numBytes;
-    sqInt obj;
-    usqInt p;
-
-	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	assert((slotSize >= 0)
-	 && (ClassArrayCompactIndex != 0));
-	assert((2) == (instSpecOfClass(knownClassAtIndex(ClassArrayCompactIndex))));
-	/* begin allocateSmallNewSpaceSlots:format:classIndex: */
-	assert(slotSize < (numSlotsMask()));
-	newObj = GIV(freeStart);
-	numBytes = BaseHeaderSize + ((slotSize <= 1
-	? 8
-	: (slotSize + (slotSize & 1)) * BytesPerOop));
-	assert((numBytes % (allocationUnit())) == 0);
-	assert((newObj % (allocationUnit())) == 0);
-	if ((GIV(freeStart) + numBytes) > GIV(scavengeThreshold)) {
-		if (!GIV(needGCFlag)) {
-			/* begin scheduleScavenge */
-			GIV(needGCFlag) = 1;
-			forceInterruptCheck();
-		}
-		if ((GIV(freeStart) + numBytes) > (((eden()).limit))) {
-			error("no room in eden for allocateSmallNewSpaceSlots:format:classIndex:");
-			obj = 0;
-			goto l1;
-		}
-	}
-	long64Atput(newObj, (((((usqLong) slotSize)) << 56) + (2 << 24)) + ClassArrayCompactIndex);
-	GIV(freeStart) += numBytes;
-	obj = newObj;
-l1:	/* end allocateSmallNewSpaceSlots:format:classIndex: */;
-	/* begin fillObj:numSlots:with: */
-	assert(oopisLessThan(((obj + BaseHeaderSize) + (slotSize * BytesPerOop)) - 1, addressAfter(obj)));
-	for (p = (((usqInt)(obj + BaseHeaderSize))); p <= (((usqInt)(((obj + BaseHeaderSize) + (slotSize * BytesPerOop)) - 1))); p += 8) {
-		longAtput(p, GIV(nilObj));
-		longAtput(p + 4, GIV(nilObj));
-	}
-	return obj;
-
-	return eeInstantiateAndInitializeClassindexableSize(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassArray << (shiftForWord()))), slotSize);
-}
-
-sqInt
 ceNonLocalReturn(sqInt returnValue)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt callerContextOrNil;
@@ -17220,98 +17157,7 @@
 	: theIP)) - (longAt(theFP + FoxMethod))) - BaseHeaderSize) + 2) << 1) | 1);
 }
 
-sqInt
-createClosureNumArgsnumCopiedstartpc(sqInt numArgs, sqInt numCopied, sqInt initialIP)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt classObj;
-    sqInt context;
-    sqInt i;
-    sqInt newClosure;
-    sqInt newClosure1;
-    sqInt newObj;
-    sqInt newObj1;
-    usqInt numBytes;
-    usqInt numBytes1;
-    sqInt objFormat;
-    char *theSP;
 
-	assert(isMachineCodeFrame(GIV(framePointer)));
-	/* begin ensureFrameIsMarried:SP: */
-	theSP = GIV(stackPointer) + ((1 + numCopied) * BytesPerWord);
-	if (((((usqInt)(longAt(GIV(framePointer) + FoxMethod)))) < (startOfMemory())
-		? ((longAt(GIV(framePointer) + FoxMethod)) & MFMethodFlagHasContextFlag) != 0
-		: (byteAt((GIV(framePointer) + FoxIFrameFlags) + 2)) != 0)) {
-		assert(isContext(frameContext(GIV(framePointer))));
-		context = longAt(GIV(framePointer) + FoxThisContext);
-		goto l1;
-	}
-	context = marryFrameSP(GIV(framePointer), theSP);
-l1:	/* end ensureFrameIsMarried:SP: */;
-	/* begin closureIn:numArgs:instructionPointer:numCopiedValues: */
-	/* begin eeInstantiateSmallClassIndex:format:numSlots: */
-	assert(((ClosureFirstCopiedValueIndex + numCopied) >= 0)
-	 && (ClassBlockClosureCompactIndex != 0));
-	assert((3) == (instSpecOfClass(knownClassAtIndex(ClassBlockClosureCompactIndex))));
-	/* begin allocateSmallNewSpaceSlots:format:classIndex: */
-	assert((ClosureFirstCopiedValueIndex + numCopied) < (numSlotsMask()));
-	newObj = GIV(freeStart);
-	numBytes = BaseHeaderSize + (((ClosureFirstCopiedValueIndex + numCopied) <= 1
-	? 8
-	: ((ClosureFirstCopiedValueIndex + numCopied) + ((ClosureFirstCopiedValueIndex + numCopied) & 1)) * BytesPerOop));
-	assert((numBytes % (allocationUnit())) == 0);
-	assert((newObj % (allocationUnit())) == 0);
-	if ((GIV(freeStart) + numBytes) > GIV(scavengeThreshold)) {
-		if (!GIV(needGCFlag)) {
-			/* begin scheduleScavenge */
-			GIV(needGCFlag) = 1;
-			forceInterruptCheck();
-		}
-		if ((GIV(freeStart) + numBytes) > (((eden()).limit))) {
-			error("no room in eden for allocateSmallNewSpaceSlots:format:classIndex:");
-			newClosure1 = 0;
-			goto l2;
-		}
-	}
-	long64Atput(newObj, (((((usqLong) (ClosureFirstCopiedValueIndex + numCopied))) << 56) + (3 << 24)) + ClassBlockClosureCompactIndex);
-	GIV(freeStart) += numBytes;
-	newClosure1 = newObj;
-l2:	/* end allocateSmallNewSpaceSlots:format:classIndex: */;
-
-	/* begin storePointerUnchecked:ofObject:withValue: */
-	assert(!(isForwarded(newClosure1)));
-	longAtput((newClosure1 + BaseHeaderSize) + (ClosureOuterContextIndex << (shiftForWord())), context);
-	/* begin storePointerUnchecked:ofObject:withValue: */
-	assert(!(isForwarded(newClosure1)));
-	longAtput((newClosure1 + BaseHeaderSize) + (ClosureStartPCIndex << (shiftForWord())), ((initialIP << 1) | 1));
-	/* begin storePointerUnchecked:ofObject:withValue: */
-	assert(!(isForwarded(newClosure1)));
-	longAtput((newClosure1 + BaseHeaderSize) + (ClosureNumArgsIndex << (shiftForWord())), ((numArgs << 1) | 1));
-	newClosure = newClosure1;
-	if (recordSendTrace()) {
-		/* begin recordTrace:thing:source: */
-		GIV(traceLog)[GIV(traceLogIndex)] = TraceBlockCreation;
-		GIV(traceLog)[GIV(traceLogIndex) + 1] = newClosure;
-		GIV(traceLog)[GIV(traceLogIndex) + 2] = TraceIsFromMachineCode;
-		GIV(traceLogIndex) = (GIV(traceLogIndex) + 3) % TraceBufferSize;
-	}
-	if (numCopied > 0) {
-
-		/* N.B. the expression ((numCopied - i) * BytesPerWord)) skips the return address */
-
-		for (i = 0; i < numCopied; i += 1) {
-
-			/* Assume: have just allocated a new BlockClosure; it must be young.
-			   Thus, can use unchecked stores. */
-
-			/* begin storePointerUnchecked:ofObject:withValue: */
-			assert(!(isForwarded(newClosure)));
-			longAtput((newClosure + BaseHeaderSize) + ((i + ClosureFirstCopiedValueIndex) << (shiftForWord())), longAt(GIV(stackPointer) + ((numCopied - i) * BytesPerWord)));
-		}
-	}
-	return newClosure;
-}
-
-
 /*	Return the default number of bytes to allocate for native code at startup.
 	The actual value can be set via vmParameterAt: and/or a preference in the
 	ini file. */
@@ -19489,7 +19335,7 @@
 								((((CogMethod *) header1))->methodHeader)));
 						/* begin literalCountOfMethodHeader: */
 						assert((header & 1));
-						numLiterals = ((header >> 1)) & 0xFFFF;
+						numLiterals = ((header >> 1)) & AlternateHeaderNumLiteralsMask;
 						numStrongSlots = numLiterals + LiteralStart;
 					l9:	/* end numStrongSlotsOfInephemeral: */;
 						scanLargeObject = numStrongSlots > 64;
@@ -19768,7 +19614,7 @@
 							((((CogMethod *) header11))->methodHeader)));
 					/* begin literalCountOfMethodHeader: */
 					assert((header2 & 1));
-					numLiterals1 = ((header2 >> 1)) & 0xFFFF;
+					numLiterals1 = ((header2 >> 1)) & AlternateHeaderNumLiteralsMask;
 					numStrongSlots1 = numLiterals1 + LiteralStart;
 				l12:	/* end numStrongSlotsOfInephemeral: */;

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list