[Vm-dev] [commit][3190] CogVM source as per VMMaker.oscog-eem.991

commits at squeakvm.org commits at squeakvm.org
Wed Dec 17 22:30:37 UTC 2014


Revision: 3190
Author:   eliot
Date:     2014-12-17 14:30:32 -0800 (Wed, 17 Dec 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.991

Fix bitInvert32 for 64-bits.  Now window border
colours are correct in the 64-bit Spur Stack linux VM.

Cast a left shift to long if in the 64-bit interpreter code.

Fix printFreeListHeads

Update the ScratchPlugin bilinear scaling prim to include the correct alpha channel value for non-transparent output pixels.

Add boundary cases for isSmallFloatValue:
Fix isSmallFloatValue: for the low boundary case.

Fix generateIsIntegerObject:on:indent: for 64-bit Spur.

Make primitiveFloatAt support immedate floats.

Fix the regression of breakmnu (breakSelectorLength must be initialized early).

Make shortPrintOop: print immediate floats.

Double the stack page size for 64-bits.

No longer build or upload the Newspeak V3 VMs, now superceded by Spur.

Modified Paths:
--------------
    branches/Cog/build.linux32ARM/makeproduct
    branches/Cog/build.linux32x86/makeproduct
    branches/Cog/build.macos32x86/makeproduct
    branches/Cog/build.win32x86/makeproduct
    branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c
    branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c
    branches/Cog/nscogsrc/plugins/DSAPrims/DSAPrims.c
    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/scripts/mkcogvmarchives
    branches/Cog/scripts/uploadvms
    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/plugins/B2DPlugin/B2DPlugin.c
    branches/Cog/src/plugins/BitBltPlugin/BitBltPlugin.c
    branches/Cog/src/plugins/DSAPrims/DSAPrims.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/build.linux32ARM/makeproduct
===================================================================
--- branches/Cog/build.linux32ARM/makeproduct	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/build.linux32ARM/makeproduct	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,6 +1,6 @@
 #!/bin/bash
 trap 'exit 2' HUP INT PIPE TERM
-for d in newspeak.cog.spur newspeak.cog.spur squeak.cog.spur squeak.cog.v3; do
+for d in newspeak.cog.spur squeak.cog.spur squeak.cog.v3; do
 	if test -d "$d"; then
 		(cd $d;./makeallclean "$@")
 	else

Modified: branches/Cog/build.linux32x86/makeproduct
===================================================================
--- branches/Cog/build.linux32x86/makeproduct	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/build.linux32x86/makeproduct	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,6 +1,6 @@
 #!/bin/bash
 trap 'exit 2' HUP INT PIPE TERM
-for d in newspeak.cog.spur newspeak.cog.v3 squeak.cog.spur squeak.cog.v3; do
+for d in newspeak.cog.spur squeak.cog.spur squeak.cog.v3; do
 	if test -d "$d"; then
 		(cd $d;./makeallclean "$@")
 	else

Modified: branches/Cog/build.macos32x86/makeproduct
===================================================================
--- branches/Cog/build.macos32x86/makeproduct	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/build.macos32x86/makeproduct	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,6 +1,6 @@
 #!/bin/bash
 trap 'exit 2' HUP INT PIPE TERM
-PRODUCTDIRS="newspeak.cog.spur newspeak.cog.v3 squeak.cog.spur squeak.cog.v3"
+PRODUCTDIRS="newspeak.cog.spur squeak.cog.spur squeak.cog.v3"
 for d in $PRODUCTDIRS; do
 	if test -d "$d"; then
 		(cd $d;./mvm -A)

Modified: branches/Cog/build.win32x86/makeproduct
===================================================================
--- branches/Cog/build.win32x86/makeproduct	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/build.win32x86/makeproduct	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,6 +1,6 @@
 #!/bin/bash
 trap 'exit 2' HUP INT PIPE TERM
-for d in newspeak.cog.spur newspeak.cog.v3 squeak.cog.spur squeak.cog.v3; do
+for d in newspeak.cog.spur squeak.cog.spur squeak.cog.v3; do
 	if test -d "$d"; then
 		(cd $d;./mvm)
 	else

Modified: branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	VMPluginCodeGenerator VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
    from
-	BalloonEnginePlugin VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	BalloonEnginePlugin VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
  */
-static char __buildInfo[] = "BalloonEnginePlugin VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d " __DATE__ ;
+static char __buildInfo[] = "BalloonEnginePlugin VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a " __DATE__ ;
 
 
 
@@ -836,9 +836,9 @@
 static void * loadBBFn;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"B2DPlugin VMMaker.oscog-eem.983 (i)"
+	"B2DPlugin VMMaker.oscog-eem.990 (i)"
 #else
-	"B2DPlugin VMMaker.oscog-eem.983 (e)"
+	"B2DPlugin VMMaker.oscog-eem.990 (e)"
 #endif
 ;
 static int* objBuffer;
@@ -879,7 +879,7 @@
 {
     sqInt firstPixel;
 
-	firstPixel = ((leftX + (workBuffer[GWAALevel])) - 1) & (~((workBuffer[GWAALevel]) - 1));
+	firstPixel = ((leftX + (workBuffer[GWAALevel])) - 1) & ((unsigned int)~((workBuffer[GWAALevel]) - 1));
 	if (firstPixel > rightX) {
 		return rightX;
 	}
@@ -906,7 +906,7 @@
 static sqInt
 aaLastPixelFromto(sqInt leftX, sqInt rightX)
 {
-	return (rightX - 1) & (~((workBuffer[GWAALevel]) - 1));
+	return (rightX - 1) & ((unsigned int)~((workBuffer[GWAALevel]) - 1));
 }
 
 static sqInt
@@ -1023,7 +1023,7 @@
     sqInt x1;
 
 	adjustShift = 8 - (workBuffer[GWAAColorShift]);
-	adjustMask = ~(workBuffer[GWAAColorMask]);
+	adjustMask = (unsigned int)~(workBuffer[GWAAColorMask]);
 	x0 = ((usqInt) (workBuffer[GWSpanStart])) >> (workBuffer[GWAAShift]);
 	x1 = ((usqInt) (workBuffer[GWSpanEnd])) >> (workBuffer[GWAAShift]);
 	while (x0 < x1) {
@@ -2567,7 +2567,7 @@
 static sqInt
 edgeFillsValidate(sqInt edge)
 {
-	return objBuffer[edge + GEObjectType] = (((objBuffer[edge + GEObjectType]) & GEPrimitiveTypeMask) & (~GEEdgeFillsInvalid));
+	return objBuffer[edge + GEObjectType] = (((objBuffer[edge + GEObjectType]) & GEPrimitiveTypeMask) & ((unsigned int)~GEEdgeFillsInvalid));
 }
 
 static sqInt
@@ -2876,7 +2876,7 @@
 	dt = (deltaX * dtX) + (deltaY * (objBuffer[bmFill + GFNormalY]));
 	aaLevel = workBuffer[GWAALevel];
 	/* begin aaFirstPixelFrom:to: */
-	firstPixel1 = ((leftX + (workBuffer[GWAALevel])) - 1) & (~((workBuffer[GWAALevel]) - 1));
+	firstPixel1 = ((leftX + (workBuffer[GWAALevel])) - 1) & ((unsigned int)~((workBuffer[GWAALevel]) - 1));
 	if (firstPixel1 > rightX) {
 		firstPixel = rightX;
 		goto l10;
@@ -2886,7 +2886,7 @@
 		goto l10;
 	}
 l10:	/* end aaFirstPixelFrom:to: */;
-	lastPixel = (rightX - 1) & (~((workBuffer[GWAALevel]) - 1));
+	lastPixel = (rightX - 1) & ((unsigned int)~((workBuffer[GWAALevel]) - 1));
 	baseShift = workBuffer[GWAAShift];
 	cMask = workBuffer[GWAAColorMask];
 	cShift = workBuffer[GWAAColorShift];
@@ -3518,7 +3518,7 @@
 	/* Compute the pixel boundaries. */
 
 	/* begin aaFirstPixelFrom:to: */
-	firstPixel1 = ((leftX + (workBuffer[GWAALevel])) - 1) & (~((workBuffer[GWAALevel]) - 1));
+	firstPixel1 = ((leftX + (workBuffer[GWAALevel])) - 1) & ((unsigned int)~((workBuffer[GWAALevel]) - 1));
 	if (firstPixel1 > rightX) {
 		firstPixel = rightX;
 		goto l1;
@@ -3528,7 +3528,7 @@
 		goto l1;
 	}
 l1:	/* end aaFirstPixelFrom:to: */;
-	lastPixel = (rightX - 1) & (~((workBuffer[GWAALevel]) - 1));
+	lastPixel = (rightX - 1) & ((unsigned int)~((workBuffer[GWAALevel]) - 1));
 	aaLevel = workBuffer[GWAALevel];
 	baseShift = workBuffer[GWAAShift];
 
@@ -3654,7 +3654,7 @@
 	x = leftX;
 	rampIndex = ds / 65536;
 	/* begin aaFirstPixelFrom:to: */
-	firstPixel1 = ((leftX + (workBuffer[GWAALevel])) - 1) & (~((workBuffer[GWAALevel]) - 1));
+	firstPixel1 = ((leftX + (workBuffer[GWAALevel])) - 1) & ((unsigned int)~((workBuffer[GWAALevel]) - 1));
 	if (firstPixel1 > rightX) {
 		firstPixel = rightX;
 		goto l1;
@@ -3667,7 +3667,7 @@
 
 	/* Deal with the first n sub-pixels */
 
-	lastPixel = (rightX - 1) & (~((workBuffer[GWAALevel]) - 1));
+	lastPixel = (rightX - 1) & ((unsigned int)~((workBuffer[GWAALevel]) - 1));
 	colorMask = workBuffer[GWAAColorMask];
 	colorShift = workBuffer[GWAAColorShift];
 	while ((x < firstPixel)
@@ -3996,7 +3996,7 @@
 		x1 = rightX;
 	}
 	/* begin aaFirstPixelFrom:to: */
-	firstPixel1 = ((leftX + (workBuffer[GWAALevel])) - 1) & (~((workBuffer[GWAALevel]) - 1));
+	firstPixel1 = ((leftX + (workBuffer[GWAALevel])) - 1) & ((unsigned int)~((workBuffer[GWAALevel]) - 1));
 	if (firstPixel1 > x1) {
 		firstPixel = x1;
 		goto l1;
@@ -4009,7 +4009,7 @@
 
 	/* Deal with the first n sub-pixels */
 
-	lastPixel = (x1 - 1) & (~((workBuffer[GWAALevel]) - 1));
+	lastPixel = (x1 - 1) & ((unsigned int)~((workBuffer[GWAALevel]) - 1));
 	if (x < firstPixel) {
 		colorMask = workBuffer[GWAAColorMask];
 		colorShift = workBuffer[GWAAColorShift];
@@ -4393,7 +4393,7 @@
 	lastLength = ((ds / 65536) * (ds / 65536)) + ((dt / 65536) * (dt / 65536));
 	x = leftX;
 	/* begin aaFirstPixelFrom:to: */
-	firstPixel1 = ((leftX + (workBuffer[GWAALevel])) - 1) & (~((workBuffer[GWAALevel]) - 1));
+	firstPixel1 = ((leftX + (workBuffer[GWAALevel])) - 1) & ((unsigned int)~((workBuffer[GWAALevel]) - 1));
 	if (firstPixel1 > rightX) {
 		firstPixel = rightX;
 		goto l1;
@@ -4406,7 +4406,7 @@
 
 	/* Deal with the first n subPixels */
 
-	lastPixel = (rightX - 1) & (~((workBuffer[GWAALevel]) - 1));
+	lastPixel = (rightX - 1) & ((unsigned int)~((workBuffer[GWAALevel]) - 1));
 	if ((x < firstPixel)
 	 && (lastLength < length2)) {
 		colorMask = workBuffer[GWAAColorMask];
@@ -12541,7 +12541,7 @@
 	objBuffer[bezier + GBWideExit] = yExit;
 	if ((yEntry >= lineOffset)
 	 && (yExit < 0)) {
-		objBuffer[bezier + GEObjectType] = (((objBuffer[bezier + GEObjectType]) & GEPrimitiveTypeMask) & (~GEEdgeFillsInvalid));
+		objBuffer[bezier + GEObjectType] = (((objBuffer[bezier + GEObjectType]) & GEPrimitiveTypeMask) & ((unsigned int)~GEEdgeFillsInvalid));
 	}
 	else {
 		objBuffer[bezier + GEObjectType] = (((objBuffer[bezier + GEObjectType]) & GEPrimitiveTypeMask) | GEEdgeFillsInvalid);
@@ -12630,7 +12630,7 @@
 	objBuffer[line + GLWideExit] = yExit;
 	if ((yEntry >= lineOffset)
 	 && (yExit < 0)) {
-		objBuffer[line + GEObjectType] = (((objBuffer[line + GEObjectType]) & GEPrimitiveTypeMask) & (~GEEdgeFillsInvalid));
+		objBuffer[line + GEObjectType] = (((objBuffer[line + GEObjectType]) & GEPrimitiveTypeMask) & ((unsigned int)~GEEdgeFillsInvalid));
 	}
 	else {
 		objBuffer[line + GEObjectType] = (((objBuffer[line + GEObjectType]) & GEPrimitiveTypeMask) | GEEdgeFillsInvalid);
@@ -12645,7 +12645,7 @@
 			lineWidth1 = objBuffer[line + GLWideExtent];
 			lineOffset1 = lineWidth1 / 2;
 			if (yEntry1 >= lineOffset1) {
-				objBuffer[line + GEObjectType] = (((objBuffer[line + GEObjectType]) & GEPrimitiveTypeMask) & (~GEEdgeFillsInvalid));
+				objBuffer[line + GEObjectType] = (((objBuffer[line + GEObjectType]) & GEPrimitiveTypeMask) & ((unsigned int)~GEEdgeFillsInvalid));
 			}
 			if (yExit1 >= 0) {
 				objBuffer[line + GEObjectType] = (((objBuffer[line + GEObjectType]) & GEPrimitiveTypeMask) | GEEdgeFillsInvalid);
@@ -12889,7 +12889,7 @@
 	objBuffer[bezier + GBWideEntry] = yEntry;
 	objBuffer[bezier + GBWideExit] = yExit;
 	if (yEntry >= lineOffset) {
-		objBuffer[bezier + GEObjectType] = (((objBuffer[bezier + GEObjectType]) & GEPrimitiveTypeMask) & (~GEEdgeFillsInvalid));
+		objBuffer[bezier + GEObjectType] = (((objBuffer[bezier + GEObjectType]) & GEPrimitiveTypeMask) & ((unsigned int)~GEEdgeFillsInvalid));
 	}
 	if (yExit >= 0) {
 		objBuffer[bezier + GEObjectType] = (((objBuffer[bezier + GEObjectType]) & GEPrimitiveTypeMask) | GEEdgeFillsInvalid);
@@ -12982,7 +12982,7 @@
 	lineWidth = objBuffer[(aetBuffer[workBuffer[GWAETStart]]) + GLWideExtent];
 	lineOffset = lineWidth / 2;
 	if (yEntry >= lineOffset) {
-		objBuffer[(aetBuffer[workBuffer[GWAETStart]]) + GEObjectType] = (((objBuffer[(aetBuffer[workBuffer[GWAETStart]]) + GEObjectType]) & GEPrimitiveTypeMask) & (~GEEdgeFillsInvalid));
+		objBuffer[(aetBuffer[workBuffer[GWAETStart]]) + GEObjectType] = (((objBuffer[(aetBuffer[workBuffer[GWAETStart]]) + GEObjectType]) & GEPrimitiveTypeMask) & ((unsigned int)~GEEdgeFillsInvalid));
 	}
 	if (yExit >= 0) {
 		objBuffer[(aetBuffer[workBuffer[GWAETStart]]) + GEObjectType] = (((objBuffer[(aetBuffer[workBuffer[GWAETStart]]) + GEObjectType]) & GEPrimitiveTypeMask) | GEEdgeFillsInvalid);
@@ -13036,7 +13036,7 @@
 	lineWidth = objBuffer[line + GLWideExtent];
 	lineOffset = lineWidth / 2;
 	if (yEntry >= lineOffset) {
-		objBuffer[line + GEObjectType] = (((objBuffer[line + GEObjectType]) & GEPrimitiveTypeMask) & (~GEEdgeFillsInvalid));
+		objBuffer[line + GEObjectType] = (((objBuffer[line + GEObjectType]) & GEPrimitiveTypeMask) & ((unsigned int)~GEEdgeFillsInvalid));
 	}
 	if (yExit >= 0) {
 		objBuffer[line + GEObjectType] = (((objBuffer[line + GEObjectType]) & GEPrimitiveTypeMask) | GEEdgeFillsInvalid);

Modified: branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
    from
-	BitBltSimulation VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	BitBltSimulation VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
  */
-static char __buildInfo[] = "BitBltSimulation VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d " __DATE__ ;
+static char __buildInfo[] = "BitBltSimulation VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a " __DATE__ ;
 
 
 
@@ -342,9 +342,9 @@
 };
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"BitBltPlugin VMMaker.oscog-eem.983 (i)"
+	"BitBltPlugin VMMaker.oscog-eem.990 (i)"
 #else
-	"BitBltPlugin VMMaker.oscog-eem.983 (e)"
+	"BitBltPlugin VMMaker.oscog-eem.990 (e)"
 #endif
 ;
 static sqInt noHalftone;
@@ -501,7 +501,7 @@
 					blend = ((((((((usqInt) sourcePixVal) >> shift) & rgbMask) * sourceAlpha) + (((((usqInt) destPixVal) >> shift) & rgbMask) * unAlpha)) + 0xFE) / 0xFF) & rgbMask;
 					pixBlend = pixBlend | (blend << shift);
 				}
-				result = (result & (~(pixMask << ((j - 1) * 16)))) | (pixBlend << ((j - 1) * 16));
+				result = (result & ((unsigned int)~(pixMask << ((j - 1) * 16)))) | (pixBlend << ((j - 1) * 16));
 			}
 			maskShifted = ((usqInt) maskShifted) >> destDepth;
 			sourceShifted = ((usqInt) sourceShifted) >> destDepth;
@@ -707,7 +707,7 @@
 					/* If we have to mix colors then just copy a single word */
 
 					destWord = long32At(dstIndex);
-					destWord = destWord & (~dstMask);
+					destWord = destWord & ((unsigned int)~dstMask);
 
 					/* Expand from 16 to 32 bit by adding zero bits */
 
@@ -751,7 +751,7 @@
 			/* Toggle between 0 and 16 */
 
 			srcShift = srcShift ^ 16;
-			dstMask = ~dstMask;
+			dstMask = (unsigned int)~dstMask;
 		}
 		srcY += 1;
 		dstY += 1;
@@ -924,7 +924,7 @@
 
 	/* begin default8To32Table */
 	mappingTable = theTable;
-	mapperFlags = cmFlags & (~ColorMapNewStyle);
+	mapperFlags = cmFlags & ((unsigned int)~ColorMapNewStyle);
 
 	/* So we can pre-decrement */
 
@@ -959,7 +959,7 @@
 
 		dstMask = mask2;
 		while (((deltaX -= 1)) != 0) {
-			sourceWord = ((long32At(srcIndex)) & (~adjust)) + adjust;
+			sourceWord = ((long32At(srcIndex)) & ((unsigned int)~adjust)) + adjust;
 			srcAlpha = ((usqInt) sourceWord) >> 24;
 			if (srcAlpha > 0x1F) {
 
@@ -970,7 +970,7 @@
 					/* Everything above 224 is opaque */
 
 					destWord = long32At(dstIndex);
-					destWord = destWord & (~dstMask);
+					destWord = destWord & ((unsigned int)~dstMask);
 					destWord = ((usqInt) destWord) >> srcShift;
 					destWord = mappingTable[destWord];
 					sourceWord = alphaBlendScaledwith(sourceWord, destWord);
@@ -1037,7 +1037,7 @@
 static sqInt
 bitAndInvertwith(sqInt sourceWord, sqInt destinationWord)
 {
-	return sourceWord & (~destinationWord);
+	return sourceWord & ((unsigned int)~destinationWord);
 }
 
 static sqInt
@@ -1049,49 +1049,49 @@
 static sqInt
 bitInvertAndInvertwith(sqInt sourceWord, sqInt destinationWord)
 {
-	return (~sourceWord) & (~destinationWord);
+	return ((unsigned int)~sourceWord) & ((unsigned int)~destinationWord);
 }
 
 static sqInt
 bitInvertAndwith(sqInt sourceWord, sqInt destinationWord)
 {
-	return (~sourceWord) & destinationWord;
+	return ((unsigned int)~sourceWord) & destinationWord;
 }
 
 static sqInt
 bitInvertDestinationwith(sqInt sourceWord, sqInt destinationWord)
 {
-	return ~destinationWord;
+	return (unsigned int)~destinationWord;
 }
 
 static sqInt
 bitInvertOrInvertwith(sqInt sourceWord, sqInt destinationWord)
 {
-	return (~sourceWord) | (~destinationWord);
+	return ((unsigned int)~sourceWord) | ((unsigned int)~destinationWord);
 }
 
 static sqInt
 bitInvertOrwith(sqInt sourceWord, sqInt destinationWord)
 {
-	return (~sourceWord) | destinationWord;
+	return ((unsigned int)~sourceWord) | destinationWord;
 }
 
 static sqInt
 bitInvertSourcewith(sqInt sourceWord, sqInt destinationWord)
 {
-	return ~sourceWord;
+	return (unsigned int)~sourceWord;
 }
 
 static sqInt
 bitInvertXorwith(sqInt sourceWord, sqInt destinationWord)
 {
-	return (~sourceWord) ^ destinationWord;
+	return ((unsigned int)~sourceWord) ^ destinationWord;
 }
 
 static sqInt
 bitOrInvertwith(sqInt sourceWord, sqInt destinationWord)
 {
-	return sourceWord | (~destinationWord);
+	return sourceWord | ((unsigned int)~destinationWord);
 }
 
 static sqInt
@@ -2026,7 +2026,7 @@
 			}
 		}
 	}
-	notSkewMask = ~skewMask;
+	notSkewMask = (unsigned int)~skewMask;
 	if (noHalftone) {
 		halftoneWord = AllOnes;
 		halftoneHeight = 0;
@@ -2069,7 +2069,7 @@
 		prevWord = thisWord;
 		destWord = long32At(destIndex);
 		mergeWord = mergeFnwith(skewWord & halftoneWord, destWord);
-		destWord = (destMask & mergeWord) | (destWord & (~destMask));
+		destWord = (destMask & mergeWord) | (destWord & ((unsigned int)~destMask));
 		long32Atput(destIndex, destWord);
 
 		/* This central horizontal loop requires no store masking */
@@ -2154,7 +2154,7 @@
 			skewWord = (((unskew < 0) ? ((usqInt) (prevWord & notSkewMask) >> -unskew) : ((usqInt) (prevWord & notSkewMask) << unskew))) | (((skew < 0) ? ((usqInt) (thisWord & skewMask) >> -skew) : ((usqInt) (thisWord & skewMask) << skew)));
 			destWord = long32At(destIndex);
 			mergeWord = mergeFnwith(skewWord & halftoneWord, destWord);
-			destWord = (destMask & mergeWord) | (destWord & (~destMask));
+			destWord = (destMask & mergeWord) | (destWord & ((unsigned int)~destMask));
 			long32Atput(destIndex, destWord);
 			destIndex += hInc;
 		}
@@ -2192,7 +2192,7 @@
 		destMask = mask1;
 		destWord = long32At(destIndex);
 		mergeWord = mergeFnwith(halftoneWord, destWord);
-		destWord = (destMask & mergeWord) | (destWord & (~destMask));
+		destWord = (destMask & mergeWord) | (destWord & ((unsigned int)~destMask));
 		long32Atput(destIndex, destWord);
 
 		/* This central horizontal loop requires no store masking */
@@ -2227,7 +2227,7 @@
 			destMask = mask2;
 			destWord = long32At(destIndex);
 			mergeWord = mergeFnwith(halftoneWord, destWord);
-			destWord = (destMask & mergeWord) | (destWord & (~destMask));
+			destWord = (destMask & mergeWord) | (destWord & ((unsigned int)~destMask));
 			long32Atput(destIndex, destWord);
 			destIndex += 4;
 		}
@@ -2288,7 +2288,7 @@
 	sourcePPW = 32 / sourceDepth;
 	sourcePixMask = maskTable[sourceDepth];
 	destPixMask = maskTable[destDepth];
-	mapperFlags = cmFlags & (~ColorMapNewStyle);
+	mapperFlags = cmFlags & ((unsigned int)~ColorMapNewStyle);
 	sourceIndex = (sourceBits + (sy * sourcePitch)) + ((sx / sourcePPW) * 4);
 	scrStartBits = sourcePPW - (sx & (sourcePPW - 1));
 	if (bbW < scrStartBits) {
@@ -2449,7 +2449,7 @@
 
 				destWord = long32At(destIndex);
 				mergeWord = mergeFnwith(skewWord & halftoneWord, destWord & destMask);
-				destWord = (destMask & mergeWord) | (destWord & (~destMask));
+				destWord = (destMask & mergeWord) | (destWord & ((unsigned int)~destMask));
 				long32Atput(destIndex, destWord);
 			}
 			destIndex += 4;
@@ -4965,7 +4965,7 @@
 static sqInt
 pixMaskwith(sqInt sourceWord, sqInt destinationWord)
 {
-	return partitionedANDtonBitsnPartitions(~sourceWord, destinationWord, destDepth, destPPW);
+	return partitionedANDtonBitsnPartitions((unsigned int)~sourceWord, destinationWord, destDepth, destPPW);
 }
 
 static sqInt
@@ -4974,7 +4974,7 @@
 	if (sourceWord == 0) {
 		return destinationWord;
 	}
-	return sourceWord | (partitionedANDtonBitsnPartitions(~sourceWord, destinationWord, destDepth, destPPW));
+	return sourceWord | (partitionedANDtonBitsnPartitions((unsigned int)~sourceWord, destinationWord, destDepth, destPPW));
 }
 
 
@@ -5793,7 +5793,7 @@
 				/* If we have to mix colors then just copy a single word */
 
 				destWord = long32At(dstIndex);
-				destWord = destWord & (~dstMask);
+				destWord = destWord & ((unsigned int)~dstMask);
 
 				/* Expand from 16 to 32 bit by adding zero bits */
 
@@ -5836,7 +5836,7 @@
 			/* Toggle between 0 and 16 */
 
 			srcShift = srcShift ^ 16;
-			dstMask = ~dstMask;
+			dstMask = (unsigned int)~dstMask;
 		}
 		srcY += 1;
 		dstY += 1;
@@ -6104,7 +6104,7 @@
 
 	/* begin default8To32Table */
 	mappingTable = theTable;
-	mapperFlags = cmFlags & (~ColorMapNewStyle);
+	mapperFlags = cmFlags & ((unsigned int)~ColorMapNewStyle);
 
 	/* So we can pre-decrement */
 
@@ -6139,7 +6139,7 @@
 
 		dstMask = mask2;
 		while (((deltaX -= 1)) != 0) {
-			sourceWord = ((long32At(srcIndex)) & (~adjust)) + adjust;
+			sourceWord = ((long32At(srcIndex)) & ((unsigned int)~adjust)) + adjust;
 
 			/* set srcAlpha to the average of the 3 separate aR,Ag,AB values */
 
@@ -6156,7 +6156,7 @@
 					sourceWord = 0xFFFFFFFFUL;
 				}
 				destWord = long32At(dstIndex);
-				destWord = destWord & (~dstMask);
+				destWord = destWord & ((unsigned int)~dstMask);
 				destWord = ((usqInt) destWord) >> srcShift;
 				destWord = mappingTable[destWord];
 				sourceWord = rgbComponentAlpha32with(sourceWord, destWord);
@@ -6540,7 +6540,7 @@
 {
 	sqInt sourceWord;
 
-	sourceWord = ~wordToInvert;
+	sourceWord = (unsigned int)~wordToInvert;
 	if (destDepth < 16) {
 
 		/* Min each pixel separately */
@@ -7610,7 +7610,7 @@
 			setupColorMasksFromto(8, cmBitsPerColor);
 		}
 	}
-	mapperFlags = cmFlags & (~ColorMapNewStyle);
+	mapperFlags = cmFlags & ((unsigned int)~ColorMapNewStyle);
 	if (destMSB) {
 		dstShiftInc = 0 - destDepth;
 		dstShiftLeft = 32 - destDepth;
@@ -7796,7 +7796,7 @@
 
 				destWord = long32At(destIndex);
 				mergeWord = mergeFnwith(skewWord & halftoneWord, destWord & destMask);
-				destWord = (destMask & mergeWord) | (destWord & (~destMask));
+				destWord = (destMask & mergeWord) | (destWord & ((unsigned int)~destMask));
 				long32Atput(destIndex, destWord);
 			}
 			destIndex += 4;

Modified: branches/Cog/nscogsrc/plugins/DSAPrims/DSAPrims.c
===================================================================
--- branches/Cog/nscogsrc/plugins/DSAPrims/DSAPrims.c	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/nscogsrc/plugins/DSAPrims/DSAPrims.c	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	VMPluginCodeGenerator VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
    from
-	DSAPlugin VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
+	DSAPlugin VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
  */
-static char __buildInfo[] = "DSAPlugin VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d " __DATE__ ;
+static char __buildInfo[] = "DSAPlugin VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a " __DATE__ ;
 
 
 
@@ -91,9 +91,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"DSAPrims VMMaker.oscog-eem.983 (i)"
+	"DSAPrims VMMaker.oscog-eem.990 (i)"
 #else
-	"DSAPrims VMMaker.oscog-eem.983 (e)"
+	"DSAPrims VMMaker.oscog-eem.990 (e)"
 #endif
 ;
 static sqInt remainderDigitCount;
@@ -561,7 +561,7 @@
 	d = statePtr[3];
 	e = statePtr[4];
 	for (i = 0; i <= 19; i += 1) {
-		tmp = (((1518500249 + ((b & c) | ((~b) & d))) + ((a << 5) | (((usqInt) a) >> (32 - 5)))) + e) + (bufPtr[i]);
+		tmp = (((1518500249 + ((b & c) | (((unsigned int)~b) & d))) + ((a << 5) | (((usqInt) a) >> (32 - 5)))) + e) + (bufPtr[i]);
 		e = d;
 		d = c;
 		c = (b << 30) | (((usqInt) b) >> (32 - 30));

Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/nscogsrc/vm/cogit.c	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.972 uuid: 741005af-763d-4a93-918d-014972c404ef
+	CCodeGenerator VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.972 uuid: 741005af-763d-4a93-918d-014972c404ef
+	StackToRegisterMappingCogit VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.972 uuid: 741005af-763d-4a93-918d-014972c404ef " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/nscogsrc/vm/cogit.h	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.972 uuid: 741005af-763d-4a93-918d-014972c404ef
+	CCodeGenerator VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
  */
 
 

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.980 uuid: 3d7d339f-6a22-4bd1-b959-cddf9c41cc60
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.991 uuid: 368647af-b954-4bf5-a526-3f83badb3361
    from
-	CoInterpreter VMMaker.oscog-eem.980 uuid: 3d7d339f-6a22-4bd1-b959-cddf9c41cc60
+	CoInterpreter VMMaker.oscog-eem.991 uuid: 368647af-b954-4bf5-a526-3f83badb3361
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.980 uuid: 3d7d339f-6a22-4bd1-b959-cddf9c41cc60 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.991 uuid: 368647af-b954-4bf5-a526-3f83badb3361 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -920,6 +920,7 @@
 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;
@@ -1503,7 +1504,7 @@
 jmp_buf reenterInterpreter; /* private export */;
 sqInt checkAllocFiller;
 sqInt inIOProcessEvents;
-sqInt breakSelectorLength;
+sqInt breakSelectorLength = MinSmallInteger;
 sqInt checkForLeaks;
 sqInt desiredEdenBytes;
 sqInt desiredNumStackPages;
@@ -2098,7 +2099,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.980";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.991";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -17000,7 +17001,7 @@
     sqInt maxFramesPerPage;
     sqInt maxUsedBytesPerPage;
 
-	maxUsedBytesPerPage = 512 + ((IFrameSlots + 64) * BytesPerWord);
+	maxUsedBytesPerPage = (512) + ((IFrameSlots + 64) * BytesPerWord);
 	maxFramesPerPage = (maxUsedBytesPerPage / BytesPerWord) / MFrameSlots;
 	return ((maxFramesPerPage * LargeContextSlots) * BytesPerOop) * GIV(numStackPages);
 }
@@ -19450,7 +19451,7 @@
 		}
 	}
 	GIV(method) = (GIV(newMethod) = GIV(nilObj));
-	breakSelectorLength = MinSmallInteger;
+	
 	GIV(methodDictLinearSearchLimit) = 8;
 	/* begin flushMethodCache */
 	for (i = 1; i <= MethodCacheSize; i += 1) {
@@ -19511,7 +19512,7 @@
 void
 reportMinimumUnusedHeadroom(void)
 {
-	printf("stack page bytes %ld available headroom %ld minimum unused headroom %ld\n", ((long)(stackPageByteSize())), ((long)(((stackPageByteSize()) - (((512 < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? 512 : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))))) - ((IFrameSlots + 64) * BytesPerWord))), ((long)(minimumUnusedHeadroom())));
+	printf("stack page bytes %ld available headroom %ld minimum unused headroom %ld\n", ((long)(stackPageByteSize())), ((long)(((stackPageByteSize()) - ((((512) < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? (512) : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))))) - ((IFrameSlots + 64) * BytesPerWord))), ((long)(minimumUnusedHeadroom())));
 }
 
 
@@ -22670,7 +22671,7 @@
 		page = stackPageAtpages(index, GIV(pages));
 		(page->lastAddress = theStackPages + (index * GIV(bytesPerPage)));
 		(page->baseAddress = ((page->lastAddress)) + GIV(bytesPerPage));
-		(page->stackLimit = ((page->baseAddress)) - (((512 < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? 512 : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom())))));
+		(page->stackLimit = ((page->baseAddress)) - ((((512) < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? (512) : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom())))));
 		(page->realStackLimit = (page->stackLimit));
 		(page->baseFP = 0);
 		(page->nextPage = stackPageAt((index == (numPages - 1)
@@ -26774,7 +26775,7 @@
 	rcvr = longAt(GIV(stackPointer) + (1 * BytesPerWord));
 	index = longAt(GIV(stackPointer));
 	if (index == ConstOne) {
-		result = positive32BitIntegerFor(fetchLong32ofObject((VMBIGENDIAN
+		result = positive32BitIntegerFor(fetchLong32ofFloatObject((VMBIGENDIAN
 			? 0
 			: 1), rcvr));
 		/* begin pop:thenPush: */
@@ -26783,7 +26784,7 @@
 		return;
 	}
 	if (index == ConstTwo) {
-		result = positive32BitIntegerFor(fetchLong32ofObject((VMBIGENDIAN
+		result = positive32BitIntegerFor(fetchLong32ofFloatObject((VMBIGENDIAN
 			? 1
 			: 0), rcvr));
 		/* begin pop:thenPush: */
@@ -40867,6 +40868,15 @@
 }
 
 
+/*	index by word size, and return a pointer as long as the word size */
+
+static sqInt
+fetchLong32ofFloatObject(sqInt fieldIndex, sqInt oop)
+{
+	return long32At((oop + BaseHeaderSize) + (fieldIndex << 2));
+}
+
+
 /*	index by 32-bit units, and return a 32-bit value. Intended to replace
 	fetchWord:ofObject: 
  */
@@ -50283,9 +50293,9 @@
 	if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
 		print(" is a free chunk of size ");
 		printNum((longAt(oop)) & AllButTypeMask);
+		
 		/* begin cr */
 		printf("\n");
-
 		return;
 	}
 	
@@ -51560,10 +51570,11 @@
 	/* begin printHexnp: */
 	printf("0x%x", oop);
 	if ((oop & 1)) {
-		;
 		if ((oop & 1)) {
 			printf("=%ld\n", (long)integerValueOf(oop));
 		}
+		
+		
 		return;
 	}
 	if (!(((oop & 3) == 0)
@@ -52115,7 +52126,7 @@
 static sqInt
 stackLimitBytes(void)
 {
-	return ((512 < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? 512 : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom())));
+	return (((512) < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? (512) : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom())));
 }
 
 
@@ -52151,7 +52162,7 @@
     sqInt pageBytes;
     sqInt smallSize;
 
-	pageBytes = (512 + ((IFrameSlots + 64) * BytesPerWord)) + (osCogStackPageHeadroom());
+	pageBytes = ((512) + ((IFrameSlots + 64) * BytesPerWord)) + (osCogStackPageHeadroom());
 	if ((pageBytes & (pageBytes - 1)) == 0) {
 
 		/* = 0 => a power of two */

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.980 uuid: 3d7d339f-6a22-4bd1-b959-cddf9c41cc60
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.991 uuid: 368647af-b954-4bf5-a526-3f83badb3361
  */
 
 
@@ -273,7 +273,7 @@
 
 /*** Global Variables ***/
 char * breakSelector;
-sqInt breakSelectorLength;
+sqInt breakSelectorLength ;
 sqInt checkAllocFiller;
 sqInt checkForLeaks;
 sqInt deferDisplayUpdates;

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-12-17 22:30:32 UTC (rev 3190)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.980 uuid: 3d7d339f-6a22-4bd1-b959-cddf9c41cc60
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.991 uuid: 368647af-b954-4bf5-a526-3f83badb3361
    from
-	CoInterpreter VMMaker.oscog-eem.980 uuid: 3d7d339f-6a22-4bd1-b959-cddf9c41cc60
+	CoInterpreter VMMaker.oscog-eem.991 uuid: 368647af-b954-4bf5-a526-3f83badb3361
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.980 uuid: 3d7d339f-6a22-4bd1-b959-cddf9c41cc60 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.991 uuid: 368647af-b954-4bf5-a526-3f83badb3361 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -923,6 +923,7 @@
 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;
@@ -1506,7 +1507,7 @@
 jmp_buf reenterInterpreter; /* private export */;
 sqInt checkAllocFiller;
 sqInt inIOProcessEvents;
-sqInt breakSelectorLength;
+sqInt breakSelectorLength = MinSmallInteger;
 sqInt checkForLeaks;
 sqInt desiredEdenBytes;
 sqInt desiredNumStackPages;
@@ -2101,7 +2102,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.980";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.991";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -17009,7 +17010,7 @@
     sqInt maxFramesPerPage;
     sqInt maxUsedBytesPerPage;
 
-	maxUsedBytesPerPage = 512 + ((IFrameSlots + 64) * BytesPerWord);
+	maxUsedBytesPerPage = (512) + ((IFrameSlots + 64) * BytesPerWord);
 	maxFramesPerPage = (maxUsedBytesPerPage / BytesPerWord) / MFrameSlots;
 	return ((maxFramesPerPage * LargeContextSlots) * BytesPerOop) * GIV(numStackPages);
 }
@@ -19459,7 +19460,7 @@
 		}
 	}
 	GIV(method) = (GIV(newMethod) = GIV(nilObj));
-	breakSelectorLength = MinSmallInteger;
+	
 	GIV(methodDictLinearSearchLimit) = 8;
 	/* begin flushMethodCache */
 	for (i = 1; i <= MethodCacheSize; i += 1) {
@@ -19520,7 +19521,7 @@
 void
 reportMinimumUnusedHeadroom(void)
 {
-	printf("stack page bytes %ld available headroom %ld minimum unused headroom %ld\n", ((long)(stackPageByteSize())), ((long)(((stackPageByteSize()) - (((512 < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? 512 : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))))) - ((IFrameSlots + 64) * BytesPerWord))), ((long)(minimumUnusedHeadroom())));
+	printf("stack page bytes %ld available headroom %ld minimum unused headroom %ld\n", ((long)(stackPageByteSize())), ((long)(((stackPageByteSize()) - ((((512) < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? (512) : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))))) - ((IFrameSlots + 64) * BytesPerWord))), ((long)(minimumUnusedHeadroom())));
 }
 
 
@@ -22679,7 +22680,7 @@
 		page = stackPageAtpages(index, GIV(pages));
 		(page->lastAddress = theStackPages + (index * GIV(bytesPerPage)));
 		(page->baseAddress = ((page->lastAddress)) + GIV(bytesPerPage));
-		(page->stackLimit = ((page->baseAddress)) - (((512 < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? 512 : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom())))));
+		(page->stackLimit = ((page->baseAddress)) - ((((512) < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? (512) : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom())))));
 		(page->realStackLimit = (page->stackLimit));
 		(page->baseFP = 0);
 		(page->nextPage = stackPageAt((index == (numPages - 1)
@@ -26783,7 +26784,7 @@
 	rcvr = longAt(GIV(stackPointer) + (1 * BytesPerWord));
 	index = longAt(GIV(stackPointer));
 	if (index == ConstOne) {
-		result = positive32BitIntegerFor(fetchLong32ofObject((VMBIGENDIAN
+		result = positive32BitIntegerFor(fetchLong32ofFloatObject((VMBIGENDIAN
 			? 0
 			: 1), rcvr));
 		/* begin pop:thenPush: */
@@ -26792,7 +26793,7 @@
 		return;
 	}
 	if (index == ConstTwo) {
-		result = positive32BitIntegerFor(fetchLong32ofObject((VMBIGENDIAN
+		result = positive32BitIntegerFor(fetchLong32ofFloatObject((VMBIGENDIAN
 			? 1
 			: 0), rcvr));
 		/* begin pop:thenPush: */
@@ -40876,6 +40877,15 @@
 }
 
 
+/*	index by word size, and return a pointer as long as the word size */
+
+static sqInt
+fetchLong32ofFloatObject(sqInt fieldIndex, sqInt oop)
+{
+	return long32At((oop + BaseHeaderSize) + (fieldIndex << 2));
+}
+
+
 /*	index by 32-bit units, and return a 32-bit value. Intended to replace
 	fetchWord:ofObject: 
  */
@@ -50292,9 +50302,9 @@
 	if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
 		print(" is a free chunk of size ");
 		printNum((longAt(oop)) & AllButTypeMask);
+		
 		/* begin cr */
 		printf("\n");
-
 		return;
 	}
 	
@@ -51569,10 +51579,11 @@
 	/* begin printHexnp: */
 	printf("0x%x", oop);
 	if ((oop & 1)) {
-		;
 		if ((oop & 1)) {
 			printf("=%ld\n", (long)integerValueOf(oop));
 		}
+		
+		
 		return;
 	}
 	if (!(((oop & 3) == 0)
@@ -52124,7 +52135,7 @@
 static sqInt
 stackLimitBytes(void)
 {
-	return ((512 < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? 512 : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom())));
+	return (((512) < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? (512) : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom())));
 }
 
 
@@ -52160,7 +52171,7 @@
     sqInt pageBytes;
     sqInt smallSize;
 
-	pageBytes = (512 + ((IFrameSlots + 64) * BytesPerWord)) + (osCogStackPageHeadroom());
+	pageBytes = ((512) + ((IFrameSlots + 64) * BytesPerWord)) + (osCogStackPageHeadroom());
 	if ((pageBytes & (pageBytes - 1)) == 0) {
 
 		/* = 0 => a power of two */

Modified: branches/Cog/nsspursrc/vm/cogit.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.c	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/nsspursrc/vm/cogit.c	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.972 uuid: 741005af-763d-4a93-918d-014972c404ef
+	CCodeGenerator VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.972 uuid: 741005af-763d-4a93-918d-014972c404ef
+	StackToRegisterMappingCogit VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.972 uuid: 741005af-763d-4a93-918d-014972c404ef " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 

Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/nsspursrc/vm/cogit.h	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.972 uuid: 741005af-763d-4a93-918d-014972c404ef
+	CCodeGenerator VMMaker.oscog-eem.990 uuid: f4a22308-891c-4542-b6a4-10fe174bc82a
  */
 
 

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2014-12-17 02:34:06 UTC (rev 3189)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2014-12-17 22:30:32 UTC (rev 3190)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.986 uuid: 62703abf-bfd4-4966-a13c-036fa3da9950
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.991 uuid: 368647af-b954-4bf5-a526-3f83badb3361
    from
-	CoInterpreter VMMaker.oscog-eem.986 uuid: 62703abf-bfd4-4966-a13c-036fa3da9950
+	CoInterpreter VMMaker.oscog-eem.991 uuid: 368647af-b954-4bf5-a526-3f83badb3361
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.986 uuid: 62703abf-bfd4-4966-a13c-036fa3da9950 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.991 uuid: 368647af-b954-4bf5-a526-3f83badb3361 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -820,6 +820,7 @@
 static usqInt bytesInObject(sqInt objOop) NoDbgRegParms;
 static sqInt changeClassOfto(sqInt rcvr, sqInt argClass) NoDbgRegParms;
 static double dbgFloatValueOf(sqInt oop) NoDbgRegParms;
+static sqInt fetchLong32ofFloatObject(sqInt fieldIndex, sqInt oop) NoDbgRegParms;
 sqInt floatObjectOf(double aFloat);
 double floatValueOf(sqInt oop);
 static sqInt initFreeChunkWithBytesat(usqLong numBytes, sqInt address) NoDbgRegParms;
@@ -1124,6 +1125,7 @@
 void printFreeChunks(void);
 void printFreeChunk(sqInt freeChunk);
 static void printFreeChunkisNextChunk(sqInt freeChunk, sqInt isNextChunk) NoDbgRegParms;
+void printFreeListHeads(void);
 void printFreeList(sqInt chunkOrIndex);
 void printFreeTree(void);
 static void printFreeTreeChunk(sqInt chunkOrZero) NoDbgRegParms;
@@ -1552,8 +1554,8 @@
 _iss sqInt traceLogIndex;
 _iss usqInt scavengeThreshold;
 _iss sqInt remapBufferCount;
+_iss sqInt * freeLists;
 _iss char * stackLimit;
-_iss sqInt * freeLists;
 _iss sqInt rememberedSetSize;
 _iss sqInt tempOop;
 _iss sqInt * rememberedSet;
@@ -1726,7 +1728,7 @@
 sqInt checkForLeaks;
 sqInt checkAllocFiller;
 sqInt inIOProcessEvents;
-sqInt breakSelectorLength;
+sqInt breakSelectorLength = MinSmallInteger;
 sqInt desiredEdenBytes;
 sqInt desiredNumStackPages;
 sqInt extraVMMemory;
@@ -2348,7 +2350,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.986";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.991";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -18612,7 +18614,7 @@
     sqInt maxFramesPerPage;
     sqInt maxUsedBytesPerPage;
 
-	maxUsedBytesPerPage = 512 + ((IFrameSlots + 64) * BytesPerWord);
+	maxUsedBytesPerPage = (512) + ((IFrameSlots + 64) * BytesPerWord);
 	maxFramesPerPage = (maxUsedBytesPerPage / BytesPerWord) / MFrameSlots;
 	return ((maxFramesPerPage * LargeContextSlots) * BytesPerOop) * GIV(numStackPages);
 }
@@ -23858,7 +23860,7 @@
 		}
 	}
 	GIV(method) = (GIV(newMethod) = GIV(nilObj));
-	breakSelectorLength = MinSmallInteger;
+	
 	GIV(methodDictLinearSearchLimit) = 8;
 	/* begin flushMethodCache */
 	for (i = 1; i <= MethodCacheSize; i += 1) {
@@ -23919,7 +23921,7 @@
 void
 reportMinimumUnusedHeadroom(void)
 {
-	printf("stack page bytes %ld available headroom %ld minimum unused headroom %ld\n", ((long)(stackPageByteSize())), ((long)(((stackPageByteSize()) - (((512 < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? 512 : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))))) - ((IFrameSlots + 64) * BytesPerWord))), ((long)(minimumUnusedHeadroom())));
+	printf("stack page bytes %ld available headroom %ld minimum unused headroom %ld\n", ((long)(stackPageByteSize())), ((long)(((stackPageByteSize()) - ((((512) < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? (512) : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))))) - ((IFrameSlots + 64) * BytesPerWord))), ((long)(minimumUnusedHeadroom())));
 }
 
 
@@ -27500,7 +27502,7 @@
 		page = stackPageAtpages(index, GIV(pages));
 		(page->lastAddress = theStackPages + (index * GIV(bytesPerPage)));
 		(page->baseAddress = ((page->lastAddress)) + GIV(bytesPerPage));
-		(page->stackLimit = ((page->baseAddress)) - (((512 < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? 512 : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom())))));
+		(page->stackLimit = ((page->baseAddress)) - ((((512) < (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom()))) ? (512) : (((stackPageByteSize()) - ((IFrameSlots + 64) * BytesPerWord)) - (osCogStackPageHeadroom())))));
 		(page->realStackLimit = (page->stackLimit));
 		(page->baseFP = 0);
 		(page->nextPage = stackPageAt((index == (numPages - 1)
@@ -31819,7 +31821,7 @@
 	rcvr = longAt(GIV(stackPointer) + (1 * BytesPerWord));
 	index = longAt(GIV(stackPointer));
 	if (index == ConstOne) {
-		result = positive32BitIntegerFor(fetchLong32ofObject((VMBIGENDIAN
+		result = positive32BitIntegerFor(fetchLong32ofFloatObject((VMBIGENDIAN
 			? 0
 			: 1), rcvr));
 		/* begin pop:thenPush: */
@@ -31828,7 +31830,7 @@
 		return;
 	}
 	if (index == ConstTwo) {
-		result = positive32BitIntegerFor(fetchLong32ofObject((VMBIGENDIAN
+		result = positive32BitIntegerFor(fetchLong32ofFloatObject((VMBIGENDIAN
 			? 1
 			: 0), rcvr));
 		/* begin pop:thenPush: */
@@ -31981,6 +31983,7 @@
     double arg;
     sqInt isFloat;
     sqInt isFloat1;
+    sqInt oop;
     double rcvr;
     sqInt rcvrOop;
     double result;
@@ -32016,11 +32019,12 @@
 		goto l2;
 	}
 	/* begin floatValueOf: */
-	isFloat1 = (((longAt(GIV(stackPointer))) & 3) == 0)
-	 && (((longAt(longAt(GIV(stackPointer)))) & 0x3FFFFF) == ClassFloatCompactIndex);
+	oop = longAt(GIV(stackPointer));
+	isFloat1 = ((oop & 3) == 0)
+	 && (((longAt(oop)) & 0x3FFFFF) == ClassFloatCompactIndex);
 	if (isFloat1) {
 		;
-		fetchFloatAtinto((longAt(GIV(stackPointer))) + BaseHeaderSize, result1);
+		fetchFloatAtinto(oop + BaseHeaderSize, result1);
 		arg = result1;
 		goto l4;
 	}
@@ -32048,6 +32052,7 @@
     double arg;
     sqInt isFloat;
     sqInt isFloat1;
+    sqInt oop;
     double rcvr;
     sqInt rcvrOop;
     double result;
@@ -32083,11 +32088,12 @@
 		goto l2;
 	}
 	/* begin floatValueOf: */
-	isFloat1 = (((longAt(GIV(stackPointer))) & 3) == 0)
-	 && (((longAt(longAt(GIV(stackPointer)))) & 0x3FFFFF) == ClassFloatCompactIndex);
+	oop = longAt(GIV(stackPointer));
+	isFloat1 = ((oop & 3) == 0)
+	 && (((longAt(oop)) & 0x3FFFFF) == ClassFloatCompactIndex);
 	if (isFloat1) {
 		;
-		fetchFloatAtinto((longAt(GIV(stackPointer))) + BaseHeaderSize, result1);
+		fetchFloatAtinto(oop + BaseHeaderSize, result1);
 		arg = result1;
 		goto l4;
 	}
@@ -32115,6 +32121,7 @@
     double arg;
     sqInt isFloat;
     sqInt isFloat1;
+    sqInt oop;
     double rcvr;
     sqInt rcvrOop;
     double result;
@@ -32150,11 +32157,12 @@
 		goto l2;
 	}
 	/* begin floatValueOf: */
-	isFloat1 = (((longAt(GIV(stackPointer))) & 3) == 0)
-	 && (((longAt(longAt(GIV(stackPointer)))) & 0x3FFFFF) == ClassFloatCompactIndex);
+	oop = longAt(GIV(stackPointer));
+	isFloat1 = ((oop & 3) == 0)
+	 && (((longAt(oop)) & 0x3FFFFF) == ClassFloatCompactIndex);
 	if (isFloat1) {
 		;
-		fetchFloatAtinto((longAt(GIV(stackPointer))) + BaseHeaderSize, result1);
+		fetchFloatAtinto(oop + BaseHeaderSize, result1);
 		arg = result1;
 		goto l4;
 	}
@@ -32182,6 +32190,7 @@
     double arg;
     sqInt isFloat;
     sqInt isFloat1;
+    sqInt oop;
     double rcvr;
     sqInt rcvrOop;
     double result;
@@ -32217,11 +32226,12 @@
 		goto l2;
 	}
 	/* begin floatValueOf: */
-	isFloat1 = (((longAt(GIV(stackPointer))) & 3) == 0)
-	 && (((longAt(longAt(GIV(stackPointer)))) & 0x3FFFFF) == ClassFloatCompactIndex);
+	oop = longAt(GIV(stackPointer));
+	isFloat1 = ((oop & 3) == 0)
+	 && (((longAt(oop)) & 0x3FFFFF) == ClassFloatCompactIndex);
 	if (isFloat1) {
 		;
-		fetchFloatAtinto((longAt(GIV(stackPointer))) + BaseHeaderSize, result1);
+		fetchFloatAtinto(oop + BaseHeaderSize, result1);
 		arg = result1;
 		goto l4;
 	}
@@ -32249,6 +32259,7 @@
     double arg;
     sqInt isFloat;
     sqInt isFloat1;
+    sqInt oop;
     double rcvr;
     sqInt rcvrOop;
     double result;
@@ -32284,11 +32295,12 @@
 		goto l2;
 	}
 	/* begin floatValueOf: */
-	isFloat1 = (((longAt(GIV(stackPointer))) & 3) == 0)
-	 && (((longAt(longAt(GIV(stackPointer)))) & 0x3FFFFF) == ClassFloatCompactIndex);
+	oop = longAt(GIV(stackPointer));
+	isFloat1 = ((oop & 3) == 0)
+	 && (((longAt(oop)) & 0x3FFFFF) == ClassFloatCompactIndex);
 	if (isFloat1) {
 		;
-		fetchFloatAtinto((longAt(GIV(stackPointer))) + BaseHeaderSize, result1);
+		fetchFloatAtinto(oop + BaseHeaderSize, result1);
 		arg = result1;
 		goto l4;
 	}
@@ -32381,6 +32393,7 @@
     double arg;
     sqInt isFloat;
     sqInt isFloat1;
+    sqInt oop;
     double rcvr;
     sqInt rcvrOop;
     double result;
@@ -32416,11 +32429,12 @@
 		goto l2;
 	}
 	/* begin floatValueOf: */
-	isFloat1 = (((longAt(GIV(stackPointer))) & 3) == 0)
-	 && (((longAt(longAt(GIV(stackPointer)))) & 0x3FFFFF) == ClassFloatCompactIndex);
+	oop = longAt(GIV(stackPointer));
+	isFloat1 = ((oop & 3) == 0)
+	 && (((longAt(oop)) & 0x3FFFFF) == ClassFloatCompactIndex);
 	if (isFloat1) {
 		;
-		fetchFloatAtinto((longAt(GIV(stackPointer))) + BaseHeaderSize, result1);
+		fetchFloatAtinto(oop + BaseHeaderSize, result1);
 		arg = result1;
 		goto l4;
 	}
@@ -36254,7 +36268,7 @@
 		flag("endianness");
 		longAtput(obj, (boolean == GIV(trueObj)
 			? (longAt(obj)) | (1 << 30)
-			: (longAt(obj)) & (~(1 << 30))));
+			: (longAt(obj)) & ((unsigned int)~(1 << 30))));
 	}
 	else {
 		wasPinned = GIV(falseObj);
@@ -40805,7 +40819,7 @@
 	assert(((classIndex >= 0) && (classIndex <= (classIndexMask()))));
 	assert(((newFormat >= 0) && (newFormat <= (formatMask()))));
 	flag("endianness");
-	longAtput(rcvr, ((longAt(rcvr)) & (~((0x1F << 24) + 0x3FFFFF))) + (classIndex + (newFormat << 24)));
+	longAtput(rcvr, ((longAt(rcvr)) & ((unsigned int)~((0x1F << 24) + 0x3FFFFF))) + (classIndex + (newFormat << 24)));
 	return 0;
 }
 
@@ -40829,6 +40843,15 @@
 	return 0.0;
 }
 
+
+/*	index by word size, and return a pointer as long as the word size */
+
+static sqInt
+fetchLong32ofFloatObject(sqInt fieldIndex, sqInt oop)
+{
+	return long32At((oop + BaseHeaderSize) + (fieldIndex << 2));
+}
+
 sqInt

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list