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. @@ |
Free forum by Nabble | Edit this page |