[Vm-dev] [commit][3256] CogVM source as per VMMaker.oscog-eem.1064

commits at squeakvm.org commits at squeakvm.org
Sat Feb 14 02:19:07 UTC 2015


Revision: 3256
Author:   eliot
Date:     2015-02-13 18:19:04 -0800 (Fri, 13 Feb 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1064

Slang:
Rescue translation of the non-64-bit Spur VMs by
a) doing a better job of suoper expansions, handling expansions
	that are returning ifs as well as just returns correctly.
b) transforming variable := expr ifTrue: [s1] ifFalse: [s2] into
    expr ifTrue: [variable := s1] ifFalse: [variable := s2]
to allow inlining of s1 & s2.

And take advantage of the better inlining in copyAndForward:

General:
Simplify primitiveDisplayString given isArray:.

Refactor positive32BitIntegerFor: and signed32BitIntegerFor: in the realization
that these reduce to essentially integerObjectOf: in 64-bit Spur.  The idea is
to inline if in 64-bit Spur but not if in the 32-bit VMs.  Add notOption:
processing to allow excluding noInlineSigned32BitIntegerFor: et al.  Add
hasSixtyFourBitImmediates to no longer assume that wordSize = 8 implies 64-bit
immediates.

Use positiveMachineIntegerFor: in place of
positive32BitIntegerFor: in some plugins.

Simplify two B3DAcceleratorPlugin prims given topRemappableOop and isArray:

With these changes 64-bit Spur Stack Linux manages
3548 run, 3495 passes, 0 expected failures, 47 failures, 6 errors, 0 unexpected passes

Builds:
Nuke the newspeak.stack.v3 builds

Modified Paths:
--------------
    branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c
    branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c
    branches/Cog/nscogsrc/plugins/FilePlugin/FilePlugin.c
    branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c
    branches/Cog/nscogsrc/plugins/LargeIntegers/LargeIntegers.c
    branches/Cog/nscogsrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
    branches/Cog/nscogsrc/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c
    branches/Cog/nscogsrc/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/scripts/findUnofficialFiles
    branches/Cog/sistasrc/vm/cointerp.c
    branches/Cog/sistasrc/vm/cointerp.h
    branches/Cog/sistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spurstack64src/vm/gcc3x-interp.c
    branches/Cog/spurstack64src/vm/interp.c
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/src/plugins/B2DPlugin/B2DPlugin.c
    branches/Cog/src/plugins/B3DAcceleratorPlugin/B3DAcceleratorPlugin.c
    branches/Cog/src/plugins/BitBltPlugin/BitBltPlugin.c
    branches/Cog/src/plugins/BochsIA32Plugin/BochsIA32Plugin.c
    branches/Cog/src/plugins/FilePlugin/FilePlugin.c
    branches/Cog/src/plugins/GdbARMPlugin/GdbARMPlugin.c
    branches/Cog/src/plugins/IA32ABI/IA32ABI.c
    branches/Cog/src/plugins/LargeIntegers/LargeIntegers.c
    branches/Cog/src/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
    branches/Cog/src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c
    branches/Cog/src/plugins/SqueakFFIPrims/IA32FFIPlugin.c
    branches/Cog/src/plugins/UnicodePlugin/UnicodePlugin.c
    branches/Cog/src/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c
    branches/Cog/src/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
    branches/Cog/src/vm/cointerp.c
    branches/Cog/src/vm/cointerp.h
    branches/Cog/src/vm/cointerpmt.c
    branches/Cog/src/vm/cointerpmt.h
    branches/Cog/src/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/gcc3x-cointerpmt.c
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c

Added Paths:
-----------
    branches/Cog/scripts/mkvmarchives

Removed Paths:
-------------
    branches/Cog/build.linux32x86/newspeak.stack.v3/
    branches/Cog/build.macos32x86/newspeak.stack.v3/
    branches/Cog/build.win32x86/newspeak.stack.v3/

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

Modified: branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c	2015-02-13 03:00:34 UTC (rev 3255)
+++ branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c	2015-02-14 02:19:04 UTC (rev 3256)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
+	VMPluginCodeGenerator VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
    from
-	BalloonEnginePlugin VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
+	BalloonEnginePlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
  */
-static char __buildInfo[] = "BalloonEnginePlugin VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a " __DATE__ ;
+static char __buildInfo[] = "BalloonEnginePlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
 
 
 
@@ -836,9 +836,9 @@
 static void * loadBBFn;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"B2DPlugin VMMaker.oscog-eem.990 (i)"
+	"B2DPlugin VMMaker.oscog-eem.1064 (i)"
 #else
-	"B2DPlugin VMMaker.oscog-eem.990 (e)"
+	"B2DPlugin VMMaker.oscog-eem.1064 (e)"
 #endif
 ;
 static int* objBuffer;
@@ -9155,9 +9155,12 @@
 		return primitiveFailFor(GEFBadPoint);
 	}
 	/* begin loadBitmapFill:colormap:tile:from:along:normal:xIndex: */
-	tileFlag1 = (tileFlag
-		? 1
-		: 0);
+	if (tileFlag) {
+		tileFlag1 = 1;
+	}
+	else {
+		tileFlag1 = 0;
+	}
 	/* begin point1Get */
 	point1 = ((int *) (workBuffer + GWPoint1));
 	/* begin point2Get */

Modified: branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c	2015-02-13 03:00:34 UTC (rev 3255)
+++ branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c	2015-02-14 02:19:04 UTC (rev 3256)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.998 uuid: 20a6acb3-9a01-4219-b650-8966301ffe11
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
    from
-	BitBltSimulation VMMaker.oscog-eem.998 uuid: 20a6acb3-9a01-4219-b650-8966301ffe11
+	BitBltSimulation VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
  */
-static char __buildInfo[] = "BitBltSimulation VMMaker.oscog-eem.998 uuid: 20a6acb3-9a01-4219-b650-8966301ffe11 " __DATE__ ;
+static char __buildInfo[] = "BitBltSimulation VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
 
 
 
@@ -269,9 +269,7 @@
 
 #if !defined(SQUEAK_BUILTIN_PLUGIN)
 static sqInt (*byteSizeOf)(sqInt oop);
-static sqInt (*classArray)(void);
 static sqInt (*failed)(void);
-static sqInt (*fetchClassOf)(sqInt oop);
 static sqInt (*fetchIntegerofObject)(sqInt fieldIndex, sqInt objectPointer);
 static sqInt (*fetchLong32ofObject)(sqInt fieldIndex, sqInt oop);
 static sqInt (*fetchPointerofObject)(sqInt index, sqInt oop);
@@ -280,6 +278,7 @@
 static sqInt (*integerObjectOf)(sqInt value);
 static sqInt (*integerValueOf)(sqInt oop);
 static void * (*ioLoadFunctionFrom)(char *functionName, char *moduleName);
+static sqInt (*isArray)(sqInt oop);
 static sqInt (*isBytes)(sqInt oop);
 static sqInt (*isIntegerObject)(sqInt objectPointer);
 static sqInt (*isPointers)(sqInt oop);
@@ -302,9 +301,7 @@
 static sqInt (*storeIntegerofObjectwithValue)(sqInt index, sqInt oop, sqInt integer);
 #else /* !defined(SQUEAK_BUILTIN_PLUGIN) */
 extern sqInt byteSizeOf(sqInt oop);
-extern sqInt classArray(void);
 extern sqInt failed(void);
-extern sqInt fetchClassOf(sqInt oop);
 extern sqInt fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
 extern sqInt fetchLong32ofObject(sqInt fieldIndex, sqInt oop);
 extern sqInt fetchPointerofObject(sqInt index, sqInt oop);
@@ -313,6 +310,7 @@
 extern sqInt integerObjectOf(sqInt value);
 extern sqInt integerValueOf(sqInt oop);
 extern void * ioLoadFunctionFrom(char *functionName, char *moduleName);
+extern sqInt isArray(sqInt oop);
 extern sqInt isBytes(sqInt oop);
 extern sqInt isIntegerObject(sqInt objectPointer);
 extern sqInt isPointers(sqInt oop);
@@ -346,9 +344,9 @@
 };
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"BitBltPlugin VMMaker.oscog-eem.998 (i)"
+	"BitBltPlugin VMMaker.oscog-eem.1064 (i)"
 #else
-	"BitBltPlugin VMMaker.oscog-eem.998 (e)"
+	"BitBltPlugin VMMaker.oscog-eem.1064 (e)"
 #endif
 ;
 static sqInt noHalftone;
@@ -5033,12 +5031,18 @@
 	sqInt val;
 	sqInt _return_value;
 
-	colorA = (BytesPerOop == 4
-		? positive32BitValueOf(stackValue(2))
-		: positive64BitValueOf(stackValue(2)));
-	colorB = (BytesPerOop == 4
-		? positive32BitValueOf(stackValue(1))
-		: positive64BitValueOf(stackValue(1)));
+	if (BytesPerOop == 4) {
+		colorA = positive32BitValueOf(stackValue(2));
+	}
+	else {
+		colorA = positive64BitValueOf(stackValue(2));
+	}
+	if (BytesPerOop == 4) {
+		colorB = positive32BitValueOf(stackValue(1));
+	}
+	else {
+		colorB = positive64BitValueOf(stackValue(1));
+	}
 	testID = stackIntegerValue(0);
 	rcvr = stackValue(3);
 	if (failed()) {
@@ -5157,39 +5161,32 @@
 	kernDelta = stackIntegerValue(0);
 	xTable = stackObjectValue(1);
 	glyphMap = stackObjectValue(2);
-	if (!(((fetchClassOf(xTable)) == (classArray()))
-		 && ((fetchClassOf(glyphMap)) == (classArray())))) {
-		return primitiveFail();
-	}
-	if (!((slotSizeOf(glyphMap)) == 256)) {
-		return primitiveFail();
-	}
-	if (failed()) {
-		return null;
-	}
-	maxGlyph = (slotSizeOf(xTable)) - 2;
 	stopIndex = stackIntegerValue(3);
 	startIndex = stackIntegerValue(4);
 	sourceString = stackObjectValue(5);
-	if (!(isBytes(sourceString))) {
-		return primitiveFail();
+	bbObj = stackObjectValue(6);
+	if (failed()) {
+		return null;
 	}
-	if (!((startIndex > 0)
+	if (!((isArray(xTable))
+		 && ((isArray(glyphMap))
+		 && (((slotSizeOf(glyphMap)) == 256)
+		 && ((isBytes(sourceString))
+		 && ((startIndex > 0)
 		 && ((stopIndex > 0)
-		 && (stopIndex <= (byteSizeOf(sourceString)))))) {
+		 && ((stopIndex <= (byteSizeOf(sourceString)))
+		 && ((loadBitBltFromwarping(bbObj, 0))
+		 && ((combinationRule != 30)
+		 && (combinationRule != 0x1F))))))))))) {
 		return primitiveFail();
 	}
-	bbObj = stackObjectValue(6);
-	if (!(loadBitBltFromwarping(bbObj, 0))) {
-		return primitiveFail();
-	}
-	if ((combinationRule == 30)
-	 || (combinationRule == 0x1F)) {
 
-		/* needs extra source alpha */
+	/* See if we can go directly into copyLoopPixMap (usually we can) */
 
-		return primitiveFail();
-	}
+	maxGlyph = (slotSizeOf(xTable)) - 2;
+
+	/* no point using slower version */
+
 	quickBlt = (destBits != 0)
 	 && ((sourceBits != 0)
 	 && ((noSource == 0)
@@ -6653,9 +6650,7 @@
 		
 #if !defined(SQUEAK_BUILTIN_PLUGIN)
 		byteSizeOf = interpreterProxy->byteSizeOf;
-		classArray = interpreterProxy->classArray;
 		failed = interpreterProxy->failed;
-		fetchClassOf = interpreterProxy->fetchClassOf;
 		fetchIntegerofObject = interpreterProxy->fetchIntegerofObject;
 		fetchLong32ofObject = interpreterProxy->fetchLong32ofObject;
 		fetchPointerofObject = interpreterProxy->fetchPointerofObject;
@@ -6664,6 +6659,7 @@
 		integerObjectOf = interpreterProxy->integerObjectOf;
 		integerValueOf = interpreterProxy->integerValueOf;
 		ioLoadFunctionFrom = interpreterProxy->ioLoadFunctionFrom;
+		isArray = interpreterProxy->isArray;
 		isBytes = interpreterProxy->isBytes;
 		isIntegerObject = interpreterProxy->isIntegerObject;
 		isPointers = interpreterProxy->isPointers;

Modified: branches/Cog/nscogsrc/plugins/FilePlugin/FilePlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/FilePlugin/FilePlugin.c	2015-02-13 03:00:34 UTC (rev 3255)
+++ branches/Cog/nscogsrc/plugins/FilePlugin/FilePlugin.c	2015-02-14 02:19:04 UTC (rev 3256)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	VMPluginCodeGenerator VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
    from
-	FilePlugin VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	FilePlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
  */
-static char __buildInfo[] = "FilePlugin VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d " __DATE__ ;
+static char __buildInfo[] = "FilePlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
 
 
 
@@ -177,9 +177,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"FilePlugin VMMaker.oscog-eem.983 (i)"
+	"FilePlugin VMMaker.oscog-eem.1064 (i)"
 #else
-	"FilePlugin VMMaker.oscog-eem.983 (e)"
+	"FilePlugin VMMaker.oscog-eem.1064 (e)"
 #endif
 ;
 static void * sCCPfn;
@@ -853,9 +853,12 @@
 		 || (!(isWordsOrBytes(array)))) {
 			return primitiveFailFor(PrimErrBadArgument);
 		}
-		elementSize = (isWords(array)
-			? 4
-			: 1);
+		if (isWords(array)) {
+			elementSize = 4;
+		}
+		else {
+			elementSize = 1;
+		}
 		if (!((startIndex >= 1)
 			 && (((startIndex + count) - 1) <= (slotSizeOf(array))))) {
 			return primitiveFailFor(PrimErrBadIndex);
@@ -1080,9 +1083,12 @@
 	 || (!(isWordsOrBytes(array)))) {
 		return primitiveFailFor(PrimErrBadArgument);
 	}
-	elementSize = (isWords(array)
-		? 4
-		: 1);
+	if (isWords(array)) {
+		elementSize = 4;
+	}
+	else {
+		elementSize = 1;
+	}
 	if (!((startIndex >= 1)
 		 && (((startIndex + count) - 1) <= (slotSizeOf(array))))) {
 		return primitiveFailFor(PrimErrBadIndex);

Modified: branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c
===================================================================
--- branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c	2015-02-13 03:00:34 UTC (rev 3255)
+++ branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c	2015-02-14 02:19:04 UTC (rev 3256)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.1032 uuid: a3c915e6-d663-4d65-ab41-493c71498549
+	VMPluginCodeGenerator VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
    from
-	NewsqueakIA32ABIPlugin VMMaker.oscog-eem.1032 uuid: a3c915e6-d663-4d65-ab41-493c71498549
+	NewsqueakIA32ABIPlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
  */
-static char __buildInfo[] = "NewsqueakIA32ABIPlugin VMMaker.oscog-eem.1032 uuid: a3c915e6-d663-4d65-ab41-493c71498549 " __DATE__ ;
+static char __buildInfo[] = "NewsqueakIA32ABIPlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
 
 
 
@@ -223,9 +223,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"IA32ABI VMMaker.oscog-eem.1032 (i)"
+	"IA32ABI VMMaker.oscog-eem.1064 (i)"
 #else
-	"IA32ABI VMMaker.oscog-eem.1032 (e)"
+	"IA32ABI VMMaker.oscog-eem.1064 (e)"
 #endif
 ;
 
@@ -288,9 +288,12 @@
 
 	rcvr = stackValue(0);
 	value = longAt((rcvr + BaseHeaderSize) + BytesPerOop);
-	valueOop = (BytesPerWord == 8
-		? positive64BitIntegerFor(value)
-		: positive32BitIntegerFor(value));
+	if (BytesPerWord == 8) {
+		valueOop = positive64BitIntegerFor(value);
+	}
+	else {
+		valueOop = positive32BitIntegerFor(value);
+	}
 	return methodReturnValue(valueOop);
 }
 
@@ -704,9 +707,9 @@
 		 || (((((usqInt)byteOffset)) + 8) <= (abs(dataSize))))) {
 		return primitiveFailFor(PrimErrBadIndex);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -752,9 +755,9 @@
 	if (isOopImmutable(rcvr)) {
 		return primitiveFailFor(PrimErrNoModification);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -793,9 +796,9 @@
 		 || (((((usqInt)byteOffset)) + 4) <= (abs(dataSize))))) {
 		return primitiveFailFor(PrimErrBadIndex);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -841,9 +844,9 @@
 	if (isOopImmutable(rcvr)) {
 		return primitiveFailFor(PrimErrNoModification);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1086,9 +1089,9 @@
 		 || (((((usqInt)byteOffset)) + 1) <= (abs(dataSize))))) {
 		return primitiveFailFor(PrimErrBadIndex);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1131,9 +1134,9 @@
 	if (isOopImmutable(rcvr)) {
 		return primitiveFailFor(PrimErrNoModification);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1168,9 +1171,9 @@
 		 || (((((usqInt)byteOffset)) + 4) <= (abs(dataSize))))) {
 		return primitiveFailFor(PrimErrBadIndex);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1211,9 +1214,9 @@
 	if (isOopImmutable(rcvr)) {
 		return primitiveFailFor(PrimErrNoModification);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1251,9 +1254,9 @@
 		 || (((((usqInt)byteOffset)) + 8) <= (abs(dataSize))))) {
 		return primitiveFailFor(PrimErrBadIndex);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1299,9 +1302,9 @@
 	if (isOopImmutable(rcvr)) {
 		return primitiveFailFor(PrimErrNoModification);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1337,9 +1340,9 @@
 		 || (((((usqInt)byteOffset)) + 2) <= (abs(dataSize))))) {
 		return primitiveFailFor(PrimErrBadIndex);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1382,9 +1385,9 @@
 	if (isOopImmutable(rcvr)) {
 		return primitiveFailFor(PrimErrNoModification);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1408,9 +1411,12 @@
 
 	rcvr = stackValue(0);
 	value = ((sqInt) (longAt(rcvr + BaseHeaderSize)));
-	valueOop = (BytesPerWord == 8
-		? signed64BitIntegerFor(value)
-		: signed32BitIntegerFor(value));
+	if (BytesPerWord == 8) {
+		valueOop = signed64BitIntegerFor(value);
+	}
+	else {
+		valueOop = signed32BitIntegerFor(value);
+	}
 	return methodReturnValue(valueOop);
 }
 
@@ -1563,9 +1569,9 @@
 		 || (((((usqInt)byteOffset)) + 1) <= (abs(dataSize))))) {
 		return primitiveFailFor(PrimErrBadIndex);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1607,9 +1613,9 @@
 	if (isOopImmutable(rcvr)) {
 		return primitiveFailFor(PrimErrNoModification);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1644,9 +1650,9 @@
 		 || (((((usqInt)byteOffset)) + 4) <= (abs(dataSize))))) {
 		return primitiveFailFor(PrimErrBadIndex);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1687,9 +1693,9 @@
 	if (isOopImmutable(rcvr)) {
 		return primitiveFailFor(PrimErrNoModification);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1727,9 +1733,9 @@
 		 || (((((usqInt)byteOffset)) + 8) <= (abs(dataSize))))) {
 		return primitiveFailFor(PrimErrBadIndex);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1776,9 +1782,9 @@
 	if (isOopImmutable(rcvr)) {
 		return primitiveFailFor(PrimErrNoModification);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1814,9 +1820,9 @@
 		 || (((((usqInt)byteOffset)) + 2) <= (abs(dataSize))))) {
 		return primitiveFailFor(PrimErrBadIndex);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;
@@ -1858,9 +1864,9 @@
 	if (isOopImmutable(rcvr)) {
 		return primitiveFailFor(PrimErrNoModification);
 	}
-	if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
-	? (rcvr + BaseHeaderSize) + BytesPerOop
-	: longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
+	if ((((longAt(rcvr + BaseHeaderSize)) > 0
+	? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
+	: (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
 		return primitiveFailFor(PrimErrBadReceiver);
 	}
 	addr = startAddr + byteOffset;

Modified: branches/Cog/nscogsrc/plugins/LargeIntegers/LargeIntegers.c
===================================================================
--- branches/Cog/nscogsrc/plugins/LargeIntegers/LargeIntegers.c	2015-02-13 03:00:34 UTC (rev 3255)
+++ branches/Cog/nscogsrc/plugins/LargeIntegers/LargeIntegers.c	2015-02-14 02:19:04 UTC (rev 3256)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
    from
-	LargeIntegersPlugin VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f
+	LargeIntegersPlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
  */
-static char __buildInfo[] = "LargeIntegersPlugin VMMaker.oscog-eem.1048 uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f " __DATE__ ;
+static char __buildInfo[] = "LargeIntegersPlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
 
 
 
@@ -173,9 +173,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"LargeIntegers v1.5 VMMaker.oscog-eem.1048 (i)"
+	"LargeIntegers v1.5 VMMaker.oscog-eem.1064 (i)"
 #else
-	"LargeIntegers v1.5 VMMaker.oscog-eem.1048 (e)"
+	"LargeIntegers v1.5 VMMaker.oscog-eem.1064 (e)"
 #endif
 ;
 static const int  orOpIndex = 1;
@@ -731,9 +731,12 @@
 	dl = divLen - 1;
 	ql = quoLen;
 	dh = pDiv[dl - 1];
-	dnh = (dl == 1
-		? 0
-		: pDiv[dl - 2]);
+	if (dl == 1) {
+		dnh = 0;
+	}
+	else {
+		dnh = pDiv[dl - 2];
+	}
 	for (k = 1; k <= ql; k += 1) {
 
 		/* maintain quo*arg+rem=self */
@@ -1557,9 +1560,12 @@
 	dl = divLen - 1;
 	ql = quoLen;
 	dh = pDiv[dl - 1];
-	dnh = (dl == 1
-		? 0
-		: pDiv[dl - 2]);
+	if (dl == 1) {
+		dnh = 0;
+	}
+	else {
+		dnh = pDiv[dl - 2];
+	}
 	for (k = 1; k <= ql; k += 1) {
 
 		/* maintain quo*arg+rem=self */
@@ -2167,12 +2173,12 @@
 	if (len == 0) {
 		return integerObjectOf(0);
 	}
-
-	/* SmallInteger minVal digitLength */
-
-	sLen = ((MinSmallInteger) < -1073741824
-		? 8
-		: 4);
+	if ((MinSmallInteger) < -1073741824) {
+		sLen = 8;
+	}
+	else {
+		sLen = 4;
+	}
 	if (len <= sLen) {
 
 		/* SmallInteger minVal */
@@ -2244,9 +2250,15 @@
 	if (len == 0) {
 		return integerObjectOf(0);
 	}
-	sLen = ((MinSmallInteger) > 0x3FFFFFFF
-		? 8
-		: 4);
+	if ((MinSmallInteger) > 0x3FFFFFFF) {
+
+		/* SmallInteger maxVal digitLength. */
+
+		sLen = 8;
+	}
+	else {
+		sLen = 4;
+	}
 	if ((len <= sLen)
 	 && ((digitOfBytesat(aLargePositiveInteger, sLen)) <= (cDigitOfCSIat(MaxSmallInteger, sLen)))) {
 

Modified: branches/Cog/nscogsrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c	2015-02-13 03:00:34 UTC (rev 3255)
+++ branches/Cog/nscogsrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c	2015-02-14 02:19:04 UTC (rev 3256)
@@ -1,16 +1,16 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	VMPluginCodeGenerator VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
    from
-	MiscPrimitivePlugin VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
-	Bitmap * Graphics-bf.303 uuid: 59c75040-7563-4061-8425-81f4467d3eb8
-	ByteArray * Collections.spur-bf.588 uuid: 80ef5d3c-140e-4225-98f4-354435f1372e
-	ByteString * Collections.spur-bf.588 uuid: 80ef5d3c-140e-4225-98f4-354435f1372e
+	MiscPrimitivePlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
+	Bitmap * Graphics-kfr.305 uuid: ad7be66f-dd0c-8443-b773-b96836359b05
+	ByteArray * Collections.spur-mt.591, Collections.spur-eem.603 uuid: dd41c76b-9063-421b-87bc-4229ac3f5243
+	ByteString * Collections.spur-mt.591, Collections.spur-eem.603 uuid: dd41c76b-9063-421b-87bc-4229ac3f5243
 	SampledSound Sound-bf.42 uuid: 01b2784a-0ad7-4a6b-a996-3388ab820acd
  */
-static char __buildInfo[] = "MiscPrimitivePlugin VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d\n\
-Bitmap * Graphics-bf.303 uuid: 59c75040-7563-4061-8425-81f4467d3eb8\n\
-ByteArray * Collections.spur-bf.588 uuid: 80ef5d3c-140e-4225-98f4-354435f1372e\n\
-ByteString * Collections.spur-bf.588 uuid: 80ef5d3c-140e-4225-98f4-354435f1372e\n\
+static char __buildInfo[] = "MiscPrimitivePlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3\n\
+Bitmap * Graphics-kfr.305 uuid: ad7be66f-dd0c-8443-b773-b96836359b05\n\
+ByteArray * Collections.spur-mt.591, Collections.spur-eem.603 uuid: dd41c76b-9063-421b-87bc-4229ac3f5243\n\
+ByteString * Collections.spur-mt.591, Collections.spur-eem.603 uuid: dd41c76b-9063-421b-87bc-4229ac3f5243\n\
 SampledSound Sound-bf.42 uuid: 01b2784a-0ad7-4a6b-a996-3388ab820acd " __DATE__ ;
 
 
@@ -94,9 +94,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"MiscPrimitivePlugin VMMaker.oscog-eem.983 (i)"
+	"MiscPrimitivePlugin VMMaker.oscog-eem.1064 (i)"
 #else
-	"MiscPrimitivePlugin VMMaker.oscog-eem.983 (e)"
+	"MiscPrimitivePlugin VMMaker.oscog-eem.1064 (e)"
 #endif
 ;
 

Modified: branches/Cog/nscogsrc/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c	2015-02-13 03:00:34 UTC (rev 3255)
+++ branches/Cog/nscogsrc/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c	2015-02-14 02:19:04 UTC (rev 3256)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	VMPluginCodeGenerator VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
    from
-	VMProfileLinuxSupportPlugin VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	VMProfileLinuxSupportPlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
  */
-static char __buildInfo[] = "VMProfileLinuxSupportPlugin VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d " __DATE__ ;
+static char __buildInfo[] = "VMProfileLinuxSupportPlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
 
 
 
@@ -51,6 +51,7 @@
 /*** Function Prototypes ***/
 static int countnummodules(struct dl_phdr_info *info, size_t size, void *ignored);
 EXPORT(const char*) getModuleName(void);
+static sqInt positiveMachineIntegerFor(unsigned long value);
 EXPORT(sqInt) primitiveDLSymInLibrary(void);
 EXPORT(sqInt) primitiveExecutableModules(void);
 EXPORT(sqInt) primitiveInterpretAddress(void);
@@ -73,6 +74,7 @@
 static sqInt (*nilObject)(void);
 static sqInt (*popRemappableOop)(void);
 static sqInt (*positive32BitIntegerFor)(sqInt integerValue);
+static sqInt (*positive64BitIntegerFor)(sqLong integerValue);
 static sqInt (*primitiveFailFor)(sqInt reasonCode);
 static sqInt (*pushRemappableOop)(sqInt oop);
 static sqInt (*stackValue)(sqInt offset);
@@ -90,6 +92,7 @@
 extern sqInt nilObject(void);
 extern sqInt popRemappableOop(void);
 extern sqInt positive32BitIntegerFor(sqInt integerValue);
+extern sqInt positive64BitIntegerFor(sqLong integerValue);
 extern sqInt primitiveFailFor(sqInt reasonCode);
 extern sqInt pushRemappableOop(sqInt oop);
 extern sqInt stackValue(sqInt offset);
@@ -100,9 +103,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"VMProfileLinuxSupportPlugin VMMaker.oscog-eem.983 (i)"
+	"VMProfileLinuxSupportPlugin VMMaker.oscog-eem.1064 (i)"
 #else
-	"VMProfileLinuxSupportPlugin VMMaker.oscog-eem.983 (e)"
+	"VMProfileLinuxSupportPlugin VMMaker.oscog-eem.1064 (e)"
 #endif
 ;
 static sqInt numModules;
@@ -128,7 +131,15 @@
 	return moduleName;
 }
 
+static sqInt
+positiveMachineIntegerFor(unsigned long value)
+{
+	return (BytesPerWord == 8
+		? positive64BitIntegerFor(value)
+		: positive32BitIntegerFor(value));
+}
 
+
 /*	Answer the address of the symbol whose name is the first argument
 	in the library whose name is the second argument, or nil if none. */
 
@@ -175,7 +186,9 @@
 	if (!ok) {
 		return primitiveFailFor(PrimErrNotFound);
 	}
-	return methodReturnValue(positive32BitIntegerFor(((unsigned long)addr)));
+	return methodReturnValue((BytesPerWord == 8
+		? positive64BitIntegerFor(((unsigned long)addr))
+		: positive32BitIntegerFor(((unsigned long)addr))));
 }
 
 
@@ -217,8 +230,9 @@
 {
     extern void interpret();
 
-	
-	return methodReturnValue(positive32BitIntegerFor(((unsigned long)interpret)));
+	return methodReturnValue((BytesPerWord == 8
+		? positive64BitIntegerFor(((unsigned long)interpret))
+		: positive32BitIntegerFor(((unsigned long)interpret))));
 }
 
 static int
@@ -313,6 +327,7 @@
 		nilObject = interpreterProxy->nilObject;
 		popRemappableOop = interpreterProxy->popRemappableOop;
 		positive32BitIntegerFor = interpreterProxy->positive32BitIntegerFor;
+		positive64BitIntegerFor = interpreterProxy->positive64BitIntegerFor;
 		primitiveFailFor = interpreterProxy->primitiveFailFor;
 		pushRemappableOop = interpreterProxy->pushRemappableOop;
 		stackValue = interpreterProxy->stackValue;

Modified: branches/Cog/nscogsrc/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c	2015-02-13 03:00:34 UTC (rev 3255)
+++ branches/Cog/nscogsrc/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c	2015-02-14 02:19:04 UTC (rev 3256)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	VMPluginCodeGenerator VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
    from
-	VMProfileMacSupportPlugin VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	VMProfileMacSupportPlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
  */
-static char __buildInfo[] = "VMProfileMacSupportPlugin VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d " __DATE__ ;
+static char __buildInfo[] = "VMProfileMacSupportPlugin VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
 
 
 
@@ -45,6 +45,7 @@
 
 /*** Function Prototypes ***/
 EXPORT(const char*) getModuleName(void);
+static sqInt positiveMachineIntegerFor(unsigned long value);
 EXPORT(sqInt) primitiveDLSym(void);
 EXPORT(sqInt) primitiveExecutableModulesAndOffsets(void);
 EXPORT(sqInt) setInterpreter(struct VirtualMachine*anInterpreter);
@@ -66,6 +67,7 @@
 static sqInt (*popthenPush)(sqInt nItems, sqInt oop);
 static sqInt (*popRemappableOop)(void);
 static sqInt (*positive32BitIntegerFor)(sqInt integerValue);
+static sqInt (*positive64BitIntegerFor)(sqLong integerValue);
 static sqInt (*primitiveFail)(void);
 static sqInt (*primitiveFailFor)(sqInt reasonCode);
 static sqInt (*pushRemappableOop)(sqInt oop);
@@ -87,6 +89,7 @@
 extern sqInt popthenPush(sqInt nItems, sqInt oop);
 extern sqInt popRemappableOop(void);
 extern sqInt positive32BitIntegerFor(sqInt integerValue);
+extern sqInt positive64BitIntegerFor(sqLong integerValue);
 extern sqInt primitiveFail(void);
 extern sqInt primitiveFailFor(sqInt reasonCode);
 extern sqInt pushRemappableOop(sqInt oop);
@@ -99,9 +102,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"VMProfileMacSupportPlugin VMMaker.oscog-eem.983 (i)"
+	"VMProfileMacSupportPlugin VMMaker.oscog-eem.1064 (i)"
 #else
-	"VMProfileMacSupportPlugin VMMaker.oscog-eem.983 (e)"
+	"VMProfileMacSupportPlugin VMMaker.oscog-eem.1064 (e)"
 #endif
 ;
 
@@ -118,7 +121,15 @@
 	return moduleName;
 }
 
+static sqInt
+positiveMachineIntegerFor(unsigned long value)
+{
+	return (BytesPerWord == 8
+		? positive64BitIntegerFor(value)
+		: positive32BitIntegerFor(value));
+}
 
+
 /*	Answer the address of the argument in the current process or nil if none. */
 
 EXPORT(sqInt)
@@ -146,7 +157,9 @@
 	free(name);
 	return methodReturnValue((addr == 0
 		? nilObject()
-		: positive32BitIntegerFor(((unsigned long)addr))));
+		: (BytesPerWord == 8
+				? positive64BitIntegerFor(((unsigned long)addr))
+				: positive32BitIntegerFor(((unsigned long)addr)))));
 }
 
 
@@ -209,13 +222,23 @@
 			return primitiveFail();
 		}
 		storePointerofObjectwithValue((i * 4) + 1, topRemappableOop(), valueObj);
-		valueObj = positive32BitIntegerFor(start);
+		if (BytesPerWord == 8) {
+			valueObj = positive64BitIntegerFor(start);
+		}
+		else {
+			valueObj = positive32BitIntegerFor(start);
+		}
 		if (failed()) {
 			popRemappableOop();
 			return primitiveFail();
 		}
 		storePointerofObjectwithValue((i * 4) + 2, topRemappableOop(), valueObj);
-		valueObj = positive32BitIntegerFor(size);
+		if (BytesPerWord == 8) {
+			valueObj = positive64BitIntegerFor(size);
+		}
+		else {
+			valueObj = positive32BitIntegerFor(size);
+		}
 		if (failed()) {
 			popRemappableOop();
 			return primitiveFail();
@@ -253,6 +276,7 @@
 		popthenPush = interpreterProxy->popthenPush;
 		popRemappableOop = interpreterProxy->popRemappableOop;
 		positive32BitIntegerFor = interpreterProxy->positive32BitIntegerFor;
+		positive64BitIntegerFor = interpreterProxy->positive64BitIntegerFor;
 		primitiveFail = interpreterProxy->primitiveFail;
 		primitiveFailFor = interpreterProxy->primitiveFailFor;
 		pushRemappableOop = interpreterProxy->pushRemappableOop;

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2015-02-13 03:00:34 UTC (rev 3255)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2015-02-14 02:19:04 UTC (rev 3256)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1060 uuid: c43c476e-10ff-420e-a2eb-c17d4624e338
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
    from
-	CoInterpreter VMMaker.oscog-eem.1060 uuid: c43c476e-10ff-420e-a2eb-c17d4624e338
+	CoInterpreter VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1060 uuid: c43c476e-10ff-420e-a2eb-c17d4624e338 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -766,6 +766,7 @@
 EXPORT(void) primitiveSubtractLargeIntegers(void);
 static void primitiveTestAndSetOwnershipOfCriticalSection(void);
 static void primitiveTestDisplayDepth(void);
+static void primitiveTimesTwoPower(void);
 static void primitiveTruncated(void);
 static void primitiveUnloadModule(void);
 static void primitiveUpdateTimezone(void);
@@ -914,7 +915,6 @@
 sqInt falseObject(void);
 sqInt fetchByteofObject(sqInt byteIndex, sqInt oop);
 sqInt fetchClassOf(sqInt oop);
-static sqInt fetchLong32ofFloatObject(sqInt fieldIndex, sqInt oop) NoDbgRegParms;
 sqInt fetchLong32ofObject(sqInt fieldIndex, sqInt oop);
 sqInt fetchPointerofObject(sqInt fieldIndex, sqInt oop);
 static void finalizeReference(usqInt oop) NoDbgRegParms;
@@ -931,6 +931,7 @@
 static sqInt fwdBlockValid(sqInt addr) NoDbgRegParms;
 static sqInt goodContextSize(sqInt oop) NoDbgRegParms;
 static sqInt hasForwardingBlock(sqInt objOop) NoDbgRegParms;
+static sqInt hasSixtyFourBitImmediates(void);
 static sqInt headerWhileForwardingOf(sqInt oop) NoDbgRegParms;
 sqInt indexablePointersFormat(void);
 sqInt instanceSizeOf(sqInt classObj);
@@ -1146,6 +1147,7 @@
 static sqInt marriedContextpointsTostackDeltaForCurrentFrame(sqInt spouseContext, sqInt anOop, sqInt stackDeltaForCurrentFrame) NoDbgRegParms;
 static void marryContextInNewStackPageAndInitializeInterpreterRegisters(sqInt aContext) NoDbgRegParms;
 static sqInt marryFrameSP(char *theFP, char *theSP) NoDbgRegParms;
+static sqInt maybeInlinePositive32BitIntegerFor(sqInt integerValue) NoDbgRegParms;
 static sqInt maybeSelectorOfMethod(sqInt methodObj) NoDbgRegParms;
 sqInt methodArgumentCount(void);
 sqInt methodArg(sqInt index);
@@ -1159,6 +1161,7 @@
 EXPORT(void) moduleUnloaded(char *aModuleName);
 static char * nameOfClass(sqInt classOop) NoDbgRegParms;
 static StackPage * newStackPage(void);
+static sqInt noInlineSigned32BitIntegerFor(sqInt integerValue) NoDbgRegParms;
 static sqInt noInlineTemporaryin(sqInt offset, char *theFP) NoDbgRegParms;
 static sqInt noInlineTemporaryinput(sqInt offset, char *theFP, sqInt valueOop) NoDbgRegParms;
 static sqInt noMarkedContextsOnPage(StackPage *thePage) NoDbgRegParms;
@@ -1365,17 +1368,18 @@
 _iss sqInt profileProcess;
 _iss sqInt profileSemaphore;
 _iss usqInt fwdTableNext;
-_iss sqInt longRunningPrimitiveCheckMethod;
 _iss sqInt profileMethod;
 _iss usqInt compStart;
+_iss sqInt longRunningPrimitiveCheckMethod;
+_iss sqInt weakRootCount;
 _iss sqInt extraRootCount;
 _iss sqInt growHeadroom;
 _iss sqInt statGrowMemory;
 _iss sqInt tempOop2;
-_iss sqInt weakRootCount;
 _iss sqInt classNameIndex;
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt preemptionYields;
+_iss sqInt cogCodeSize;
 _iss usqLong nextWakeupUsecs;
 _iss sqInt statMarkCount;
 _iss sqInt cogCompiledCodeCompactionCalledFor;
@@ -1393,7 +1397,6 @@
 _iss usqLong statCheckForEvents;
 _iss usqLong statGCEndUsecs;
 _iss sqInt statSweepCount;
-_iss sqInt cogCodeSize;
 _iss usqInt compEnd;
 _iss sqInt externalPrimitiveTableFirstFreeIndex;
 _iss sqInt shrinkThreshold;
@@ -1422,11 +1425,13 @@
 _iss sqInt totalObjectCount;
 _iss sqInt fullScreenFlag;
 _iss usqInt gcBiasToGrowThreshold;
+_iss sqInt imageFloatsBigEndian;
 _iss sqInt interruptKeycode;
 _iss sqInt interruptPending;
 _iss usqInt memory;
 _iss sqInt methodDictLinearSearchLimit;
 _iss usqLong nextPollUsecs;
+_iss sqInt savedWindowSize;
 _iss usqLong statForceInterruptCheck;
 _iss usqLong statIGCDeltaUsecs;
 _iss sqInt statPendingFinalizationSignals;
@@ -1439,22 +1444,20 @@
 _iss sqInt gcBiasToGrow;
 _iss sqInt gcBiasToGrowGCLimit;
 _iss sqInt globalSessionID;
-_iss sqInt imageFloatsBigEndian;
+_iss usqLong longRunningPrimitiveGCUsecs;
 _iss sqInt longRunningPrimitiveSignalUndelivered;
 _iss sqInt maxExtSemTabSizeSet;
-_iss sqInt savedWindowSize;
 _iss sqInt statCodeCompactionCount;
 _iss usqLong statCodeCompactionUsecs;
 _iss sqInt statRootTableCount;
 _iss sqInt statSurvivorCount;
+_iss sqInt the2ndUnknownShort;
 _iss sqInt classByteArrayCompactIndex;
 _iss sqInt fullGCLock;
 _iss sqInt gcSemaphoreIndex;
 _iss sqInt imageHeaderFlags;
-_iss usqLong longRunningPrimitiveGCUsecs;
 _iss sqInt overflowLimit;
 _iss StackPage * overflowedPage;
-_iss sqInt the2ndUnknownShort;
 _iss long methodCache[MethodCacheSize + 1 /* 4097 */];
 _iss sqInt atCache[AtCacheTotalSize + 1 /* 65 */];
 _iss sqInt traceLog[TraceBufferSize /* 768 */];
@@ -1572,7 +1575,7 @@
 	/* 51 */ primitiveTruncated,
 	/* 52 */ primitiveFractionalPart,
 	/* 53 */ primitiveExponent,
-	/* 54 */ (void (*)(void))0,
+	/* 54 */ primitiveTimesTwoPower,
 	/* 55 */ primitiveSquareRoot,
 	/* 56 */ primitiveSine,
 	/* 57 */ primitiveArctan,
@@ -2096,7 +2099,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1060";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1064";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -2434,9 +2437,12 @@
 
 				/* begin pushTemporaryVariable: */
 				/* begin internalPush: */
-				object = (0 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
-					? longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 0 /* currentBytecode bitAnd: 15 */) * BytesPerWord))
-					: longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 0 /* currentBytecode bitAnd: 15 */) * BytesPerWord)));
+				if (0 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
+					object = longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 0 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
+				else {
+					object = longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 0 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
 				longAtPointerput((localSP -= BytesPerOop), object);
 			}
 			break;
@@ -2453,9 +2459,12 @@
 
 				/* begin pushTemporaryVariable: */
 				/* begin internalPush: */
-				object = (1 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
-					? longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 1 /* currentBytecode bitAnd: 15 */) * BytesPerWord))
-					: longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 1 /* currentBytecode bitAnd: 15 */) * BytesPerWord)));
+				if (1 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
+					object = longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 1 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
+				else {
+					object = longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 1 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
 				longAtPointerput((localSP -= BytesPerOop), object);
 			}
 			break;
@@ -2472,9 +2481,12 @@
 
 				/* begin pushTemporaryVariable: */
 				/* begin internalPush: */
-				object = (2 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
-					? longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 2 /* currentBytecode bitAnd: 15 */) * BytesPerWord))
-					: longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 2 /* currentBytecode bitAnd: 15 */) * BytesPerWord)));
+				if (2 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
+					object = longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 2 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
+				else {
+					object = longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 2 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
 				longAtPointerput((localSP -= BytesPerOop), object);
 			}
 			break;
@@ -2491,9 +2503,12 @@
 
 				/* begin pushTemporaryVariable: */
 				/* begin internalPush: */
-				object = (3 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
-					? longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 3 /* currentBytecode bitAnd: 15 */) * BytesPerWord))
-					: longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 3 /* currentBytecode bitAnd: 15 */) * BytesPerWord)));
+				if (3 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
+					object = longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 3 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
+				else {
+					object = longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 3 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
 				longAtPointerput((localSP -= BytesPerOop), object);
 			}
 			break;
@@ -2510,9 +2525,12 @@
 
 				/* begin pushTemporaryVariable: */
 				/* begin internalPush: */
-				object = (4 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
-					? longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 4 /* currentBytecode bitAnd: 15 */) * BytesPerWord))
-					: longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 4 /* currentBytecode bitAnd: 15 */) * BytesPerWord)));
+				if (4 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
+					object = longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 4 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
+				else {
+					object = longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 4 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
 				longAtPointerput((localSP -= BytesPerOop), object);
 			}
 			break;
@@ -2529,9 +2547,12 @@
 
 				/* begin pushTemporaryVariable: */
 				/* begin internalPush: */
-				object = (5 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
-					? longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 5 /* currentBytecode bitAnd: 15 */) * BytesPerWord))
-					: longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 5 /* currentBytecode bitAnd: 15 */) * BytesPerWord)));
+				if (5 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
+					object = longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 5 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
+				else {
+					object = longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 5 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
 				longAtPointerput((localSP -= BytesPerOop), object);
 			}
 			break;
@@ -2548,9 +2569,12 @@
 
 				/* begin pushTemporaryVariable: */
 				/* begin internalPush: */
-				object = (6 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
-					? longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 6 /* currentBytecode bitAnd: 15 */) * BytesPerWord))
-					: longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 6 /* currentBytecode bitAnd: 15 */) * BytesPerWord)));
+				if (6 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
+					object = longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 6 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
+				else {
+					object = longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 6 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
 				longAtPointerput((localSP -= BytesPerOop), object);
 			}
 			break;
@@ -2567,9 +2591,12 @@
 
 				/* begin pushTemporaryVariable: */
 				/* begin internalPush: */
-				object = (7 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
-					? longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 7 /* currentBytecode bitAnd: 15 */) * BytesPerWord))
-					: longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 7 /* currentBytecode bitAnd: 15 */) * BytesPerWord)));
+				if (7 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
+					object = longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 7 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
+				else {
+					object = longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 7 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
 				longAtPointerput((localSP -= BytesPerOop), object);
 			}
 			break;
@@ -2586,9 +2613,12 @@
 
 				/* begin pushTemporaryVariable: */
 				/* begin internalPush: */
-				object = (8 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
-					? longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 8 /* currentBytecode bitAnd: 15 */) * BytesPerWord))
-					: longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 8 /* currentBytecode bitAnd: 15 */) * BytesPerWord)));
+				if (8 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
+					object = longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 8 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
+				else {
+					object = longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 8 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
 				longAtPointerput((localSP -= BytesPerOop), object);
 			}
 			break;
@@ -2605,9 +2635,12 @@
 
 				/* begin pushTemporaryVariable: */
 				/* begin internalPush: */
-				object = (9 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
-					? longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 9 /* currentBytecode bitAnd: 15 */) * BytesPerWord))
-					: longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 9 /* currentBytecode bitAnd: 15 */) * BytesPerWord)));
+				if (9 /* currentBytecode bitAnd: 15 */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
+					object = longAt((localFP + FoxCallerSavedIP) + ((frameNumArgs - 9 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}
+				else {
+					object = longAt(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 9 /* currentBytecode bitAnd: 15 */) * BytesPerWord));
+				}

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list