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

Eliot Miranda eliot.miranda at gmail.com
Sat Feb 14 04:03:43 UTC 2015


Just so you know this has introduced a major regression since while

    sqInt val = integerArgument | integerReceiver;
    val >= 0

may be true, integerArgument | integerReceiver is never true, and so now
when integerArgument | integerReceiver is inlined
into maybeInlinePositive32BitIntegerFor: we get

        if (((integerArgument | integerReceiver) >= 0)
         && (((integerArgument | integerReceiver) ^ ((integerArgument |
integerReceiver) << 1)) >= 0)) {

which is sometimes true when (sqInt)(integerArgument | integerReceiver) >=
0 is false.  So I will have broken the Cadence builds.  Normal service may
resume if I can figure this out.  Looks like I need to propagate the type
of the argument somehow to generate


        if (((sqInt)(integerArgument | integerReceiver) >= 0)
         && (((sqInt)(integerArgument | integerReceiver) ^
((sqInt)(integerArgument | integerReceiver) << 1)) >= 0)) {

or better still to introduce a temporary

On Fri, Feb 13, 2015 at 6:19 PM, <commits at squeakvm.org> wrote:

>
> Revision: 3256
> Author:   eliot
> Date:     2015-02-13 18:19:04 -0800 (Fri, 13 Feb 2015)
> Log Message:
> -----------
> CogVM source as per VMMaker.oscog-eem.1064
>
> Slang:
> Rescue translation of the non-64-bit Spur VMs by
> a) doing a better job of suoper expansions, handling expansions
>         that are returning ifs as well as just returns correctly.
> b) transforming variable := expr ifTrue: [s1] ifFalse: [s2] into
>     expr ifTrue: [variable := s1] ifFalse: [variable := s2]
> to allow inlining of s1 & s2.
>
> And take advantage of the better inlining in copyAndForward:
>
> General:
> Simplify primitiveDisplayString given isArray:.
>
> Refactor positive32BitIntegerFor: and signed32BitIntegerFor: in the
> realization
> that these reduce to essentially integerObjectOf: in 64-bit Spur.  The
> idea is
> to inline if in 64-bit Spur but not if in the 32-bit VMs.  Add notOption:
> processing to allow excluding noInlineSigned32BitIntegerFor: et al.  Add
> hasSixtyFourBitImmediates to no longer assume that wordSize = 8 implies
> 64-bit
> immediates.
>
> Use positiveMachineIntegerFor: in place of
> positive32BitIntegerFor: in some plugins.
>
> Simplify two B3DAcceleratorPlugin prims given topRemappableOop and isArray:
>
> With these changes 64-bit Spur Stack Linux manages
> 3548 run, 3495 passes, 0 expected failures, 47 failures, 6 errors, 0
> unexpected passes
>
> Builds:
> Nuke the newspeak.stack.v3 builds
>
> Modified Paths:
> --------------
>     branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c
>     branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c
>     branches/Cog/nscogsrc/plugins/FilePlugin/FilePlugin.c
>     branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c
>     branches/Cog/nscogsrc/plugins/LargeIntegers/LargeIntegers.c
>     branches/Cog/nscogsrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
>
> branches/Cog/nscogsrc/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c
>
> branches/Cog/nscogsrc/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
>     branches/Cog/nscogsrc/vm/cointerp.c
>     branches/Cog/nscogsrc/vm/cointerp.h
>     branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
>     branches/Cog/nsspursrc/vm/cointerp.c
>     branches/Cog/nsspursrc/vm/cointerp.h
>     branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
>     branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
>     branches/Cog/nsspurstacksrc/vm/interp.c
>     branches/Cog/scripts/findUnofficialFiles
>     branches/Cog/sistasrc/vm/cointerp.c
>     branches/Cog/sistasrc/vm/cointerp.h
>     branches/Cog/sistasrc/vm/gcc3x-cointerp.c
>     branches/Cog/spursistasrc/vm/cointerp.c
>     branches/Cog/spursistasrc/vm/cointerp.h
>     branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
>     branches/Cog/spursrc/vm/cointerp.c
>     branches/Cog/spursrc/vm/cointerp.h
>     branches/Cog/spursrc/vm/gcc3x-cointerp.c
>     branches/Cog/spurstack64src/vm/gcc3x-interp.c
>     branches/Cog/spurstack64src/vm/interp.c
>     branches/Cog/spurstacksrc/vm/gcc3x-interp.c
>     branches/Cog/spurstacksrc/vm/interp.c
>     branches/Cog/src/plugins/B2DPlugin/B2DPlugin.c
>     branches/Cog/src/plugins/B3DAcceleratorPlugin/B3DAcceleratorPlugin.c
>     branches/Cog/src/plugins/BitBltPlugin/BitBltPlugin.c
>     branches/Cog/src/plugins/BochsIA32Plugin/BochsIA32Plugin.c
>     branches/Cog/src/plugins/FilePlugin/FilePlugin.c
>     branches/Cog/src/plugins/GdbARMPlugin/GdbARMPlugin.c
>     branches/Cog/src/plugins/IA32ABI/IA32ABI.c
>     branches/Cog/src/plugins/LargeIntegers/LargeIntegers.c
>     branches/Cog/src/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
>     branches/Cog/src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c
>     branches/Cog/src/plugins/SqueakFFIPrims/IA32FFIPlugin.c
>     branches/Cog/src/plugins/UnicodePlugin/UnicodePlugin.c
>
> branches/Cog/src/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c
>
> branches/Cog/src/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
>     branches/Cog/src/vm/cointerp.c
>     branches/Cog/src/vm/cointerp.h
>     branches/Cog/src/vm/cointerpmt.c
>     branches/Cog/src/vm/cointerpmt.h
>     branches/Cog/src/vm/gcc3x-cointerp.c
>     branches/Cog/src/vm/gcc3x-cointerpmt.c
>     branches/Cog/stacksrc/vm/gcc3x-interp.c
>     branches/Cog/stacksrc/vm/interp.c
>
> Added Paths:
> -----------
>     branches/Cog/scripts/mkvmarchives
>
> Removed Paths:
> -------------
>     branches/Cog/build.linux32x86/newspeak.stack.v3/
>     branches/Cog/build.macos32x86/newspeak.stack.v3/
>     branches/Cog/build.win32x86/newspeak.stack.v3/
>
> Property Changed:
> ----------------
>     branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
>
> Modified: branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c
> ===================================================================
> --- branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c 2015-02-13
> 03:00:34 UTC (rev 3255)
> +++ branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c 2015-02-14
> 02:19:04 UTC (rev 3256)
> @@ -1,9 +1,9 @@
>  /* Automatically generated by
> -       VMPluginCodeGenerator VMMaker.oscog-eem.990 uuid:
> f4a22308-891c-4542-b6a4-10fe174bc82a
> +       VMPluginCodeGenerator VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>     from
> -       BalloonEnginePlugin VMMaker.oscog-eem.990 uuid:
> f4a22308-891c-4542-b6a4-10fe174bc82a
> +       BalloonEnginePlugin VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>   */
> -static char __buildInfo[] = "BalloonEnginePlugin VMMaker.oscog-eem.990
> uuid: f4a22308-891c-4542-b6a4-10fe174bc82a " __DATE__ ;
> +static char __buildInfo[] = "BalloonEnginePlugin VMMaker.oscog-eem.1064
> uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
>
>
>
> @@ -836,9 +836,9 @@
>  static void * loadBBFn;
>  static const char *moduleName =
>  #ifdef SQUEAK_BUILTIN_PLUGIN
> -       "B2DPlugin VMMaker.oscog-eem.990 (i)"
> +       "B2DPlugin VMMaker.oscog-eem.1064 (i)"
>  #else
> -       "B2DPlugin VMMaker.oscog-eem.990 (e)"
> +       "B2DPlugin VMMaker.oscog-eem.1064 (e)"
>  #endif
>  ;
>  static int* objBuffer;
> @@ -9155,9 +9155,12 @@
>                 return primitiveFailFor(GEFBadPoint);
>         }
>         /* begin loadBitmapFill:colormap:tile:from:along:normal:xIndex: */
> -       tileFlag1 = (tileFlag
> -               ? 1
> -               : 0);
> +       if (tileFlag) {
> +               tileFlag1 = 1;
> +       }
> +       else {
> +               tileFlag1 = 0;
> +       }
>         /* begin point1Get */
>         point1 = ((int *) (workBuffer + GWPoint1));
>         /* begin point2Get */
>
> Modified: branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c
> ===================================================================
> --- branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c   2015-02-13
> 03:00:34 UTC (rev 3255)
> +++ branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c   2015-02-14
> 02:19:04 UTC (rev 3256)
> @@ -1,9 +1,9 @@
>  /* Automatically generated by
> -       SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.998 uuid:
> 20a6acb3-9a01-4219-b650-8966301ffe11
> +       SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>     from
> -       BitBltSimulation VMMaker.oscog-eem.998 uuid:
> 20a6acb3-9a01-4219-b650-8966301ffe11
> +       BitBltSimulation VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>   */
> -static char __buildInfo[] = "BitBltSimulation VMMaker.oscog-eem.998 uuid:
> 20a6acb3-9a01-4219-b650-8966301ffe11 " __DATE__ ;
> +static char __buildInfo[] = "BitBltSimulation VMMaker.oscog-eem.1064
> uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
>
>
>
> @@ -269,9 +269,7 @@
>
>  #if !defined(SQUEAK_BUILTIN_PLUGIN)
>  static sqInt (*byteSizeOf)(sqInt oop);
> -static sqInt (*classArray)(void);
>  static sqInt (*failed)(void);
> -static sqInt (*fetchClassOf)(sqInt oop);
>  static sqInt (*fetchIntegerofObject)(sqInt fieldIndex, sqInt
> objectPointer);
>  static sqInt (*fetchLong32ofObject)(sqInt fieldIndex, sqInt oop);
>  static sqInt (*fetchPointerofObject)(sqInt index, sqInt oop);
> @@ -280,6 +278,7 @@
>  static sqInt (*integerObjectOf)(sqInt value);
>  static sqInt (*integerValueOf)(sqInt oop);
>  static void * (*ioLoadFunctionFrom)(char *functionName, char *moduleName);
> +static sqInt (*isArray)(sqInt oop);
>  static sqInt (*isBytes)(sqInt oop);
>  static sqInt (*isIntegerObject)(sqInt objectPointer);
>  static sqInt (*isPointers)(sqInt oop);
> @@ -302,9 +301,7 @@
>  static sqInt (*storeIntegerofObjectwithValue)(sqInt index, sqInt oop,
> sqInt integer);
>  #else /* !defined(SQUEAK_BUILTIN_PLUGIN) */
>  extern sqInt byteSizeOf(sqInt oop);
> -extern sqInt classArray(void);
>  extern sqInt failed(void);
> -extern sqInt fetchClassOf(sqInt oop);
>  extern sqInt fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
>  extern sqInt fetchLong32ofObject(sqInt fieldIndex, sqInt oop);
>  extern sqInt fetchPointerofObject(sqInt index, sqInt oop);
> @@ -313,6 +310,7 @@
>  extern sqInt integerObjectOf(sqInt value);
>  extern sqInt integerValueOf(sqInt oop);
>  extern void * ioLoadFunctionFrom(char *functionName, char *moduleName);
> +extern sqInt isArray(sqInt oop);
>  extern sqInt isBytes(sqInt oop);
>  extern sqInt isIntegerObject(sqInt objectPointer);
>  extern sqInt isPointers(sqInt oop);
> @@ -346,9 +344,9 @@
>  };
>  static const char *moduleName =
>  #ifdef SQUEAK_BUILTIN_PLUGIN
> -       "BitBltPlugin VMMaker.oscog-eem.998 (i)"
> +       "BitBltPlugin VMMaker.oscog-eem.1064 (i)"
>  #else
> -       "BitBltPlugin VMMaker.oscog-eem.998 (e)"
> +       "BitBltPlugin VMMaker.oscog-eem.1064 (e)"
>  #endif
>  ;
>  static sqInt noHalftone;
> @@ -5033,12 +5031,18 @@
>         sqInt val;
>         sqInt _return_value;
>
> -       colorA = (BytesPerOop == 4
> -               ? positive32BitValueOf(stackValue(2))
> -               : positive64BitValueOf(stackValue(2)));
> -       colorB = (BytesPerOop == 4
> -               ? positive32BitValueOf(stackValue(1))
> -               : positive64BitValueOf(stackValue(1)));
> +       if (BytesPerOop == 4) {
> +               colorA = positive32BitValueOf(stackValue(2));
> +       }
> +       else {
> +               colorA = positive64BitValueOf(stackValue(2));
> +       }
> +       if (BytesPerOop == 4) {
> +               colorB = positive32BitValueOf(stackValue(1));
> +       }
> +       else {
> +               colorB = positive64BitValueOf(stackValue(1));
> +       }
>         testID = stackIntegerValue(0);
>         rcvr = stackValue(3);
>         if (failed()) {
> @@ -5157,39 +5161,32 @@
>         kernDelta = stackIntegerValue(0);
>         xTable = stackObjectValue(1);
>         glyphMap = stackObjectValue(2);
> -       if (!(((fetchClassOf(xTable)) == (classArray()))
> -                && ((fetchClassOf(glyphMap)) == (classArray())))) {
> -               return primitiveFail();
> -       }
> -       if (!((slotSizeOf(glyphMap)) == 256)) {
> -               return primitiveFail();
> -       }
> -       if (failed()) {
> -               return null;
> -       }
> -       maxGlyph = (slotSizeOf(xTable)) - 2;
>         stopIndex = stackIntegerValue(3);
>         startIndex = stackIntegerValue(4);
>         sourceString = stackObjectValue(5);
> -       if (!(isBytes(sourceString))) {
> -               return primitiveFail();
> +       bbObj = stackObjectValue(6);
> +       if (failed()) {
> +               return null;
>         }
> -       if (!((startIndex > 0)
> +       if (!((isArray(xTable))
> +                && ((isArray(glyphMap))
> +                && (((slotSizeOf(glyphMap)) == 256)
> +                && ((isBytes(sourceString))
> +                && ((startIndex > 0)
>                  && ((stopIndex > 0)
> -                && (stopIndex <= (byteSizeOf(sourceString)))))) {
> +                && ((stopIndex <= (byteSizeOf(sourceString)))
> +                && ((loadBitBltFromwarping(bbObj, 0))
> +                && ((combinationRule != 30)
> +                && (combinationRule != 0x1F))))))))))) {
>                 return primitiveFail();
>         }
> -       bbObj = stackObjectValue(6);
> -       if (!(loadBitBltFromwarping(bbObj, 0))) {
> -               return primitiveFail();
> -       }
> -       if ((combinationRule == 30)
> -        || (combinationRule == 0x1F)) {
>
> -               /* needs extra source alpha */
> +       /* See if we can go directly into copyLoopPixMap (usually we can)
> */
>
> -               return primitiveFail();
> -       }
> +       maxGlyph = (slotSizeOf(xTable)) - 2;
> +
> +       /* no point using slower version */
> +
>         quickBlt = (destBits != 0)
>          && ((sourceBits != 0)
>          && ((noSource == 0)
> @@ -6653,9 +6650,7 @@
>
>  #if !defined(SQUEAK_BUILTIN_PLUGIN)
>                 byteSizeOf = interpreterProxy->byteSizeOf;
> -               classArray = interpreterProxy->classArray;
>                 failed = interpreterProxy->failed;
> -               fetchClassOf = interpreterProxy->fetchClassOf;
>                 fetchIntegerofObject =
> interpreterProxy->fetchIntegerofObject;
>                 fetchLong32ofObject =
> interpreterProxy->fetchLong32ofObject;
>                 fetchPointerofObject =
> interpreterProxy->fetchPointerofObject;
> @@ -6664,6 +6659,7 @@
>                 integerObjectOf = interpreterProxy->integerObjectOf;
>                 integerValueOf = interpreterProxy->integerValueOf;
>                 ioLoadFunctionFrom = interpreterProxy->ioLoadFunctionFrom;
> +               isArray = interpreterProxy->isArray;
>                 isBytes = interpreterProxy->isBytes;
>                 isIntegerObject = interpreterProxy->isIntegerObject;
>                 isPointers = interpreterProxy->isPointers;
>
> Modified: branches/Cog/nscogsrc/plugins/FilePlugin/FilePlugin.c
> ===================================================================
> --- branches/Cog/nscogsrc/plugins/FilePlugin/FilePlugin.c       2015-02-13
> 03:00:34 UTC (rev 3255)
> +++ branches/Cog/nscogsrc/plugins/FilePlugin/FilePlugin.c       2015-02-14
> 02:19:04 UTC (rev 3256)
> @@ -1,9 +1,9 @@
>  /* Automatically generated by
> -       VMPluginCodeGenerator VMMaker.oscog-eem.983 uuid:
> 4cdca841-6318-4c49-95de-8c47d0d7e91d
> +       VMPluginCodeGenerator VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>     from
> -       FilePlugin VMMaker.oscog-eem.983 uuid:
> 4cdca841-6318-4c49-95de-8c47d0d7e91d
> +       FilePlugin VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>   */
> -static char __buildInfo[] = "FilePlugin VMMaker.oscog-eem.983 uuid:
> 4cdca841-6318-4c49-95de-8c47d0d7e91d " __DATE__ ;
> +static char __buildInfo[] = "FilePlugin VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
>
>
>
> @@ -177,9 +177,9 @@
>  struct VirtualMachine* interpreterProxy;
>  static const char *moduleName =
>  #ifdef SQUEAK_BUILTIN_PLUGIN
> -       "FilePlugin VMMaker.oscog-eem.983 (i)"
> +       "FilePlugin VMMaker.oscog-eem.1064 (i)"
>  #else
> -       "FilePlugin VMMaker.oscog-eem.983 (e)"
> +       "FilePlugin VMMaker.oscog-eem.1064 (e)"
>  #endif
>  ;
>  static void * sCCPfn;
> @@ -853,9 +853,12 @@
>                  || (!(isWordsOrBytes(array)))) {
>                         return primitiveFailFor(PrimErrBadArgument);
>                 }
> -               elementSize = (isWords(array)
> -                       ? 4
> -                       : 1);
> +               if (isWords(array)) {
> +                       elementSize = 4;
> +               }
> +               else {
> +                       elementSize = 1;
> +               }
>                 if (!((startIndex >= 1)
>                          && (((startIndex + count) - 1) <=
> (slotSizeOf(array))))) {
>                         return primitiveFailFor(PrimErrBadIndex);
> @@ -1080,9 +1083,12 @@
>          || (!(isWordsOrBytes(array)))) {
>                 return primitiveFailFor(PrimErrBadArgument);
>         }
> -       elementSize = (isWords(array)
> -               ? 4
> -               : 1);
> +       if (isWords(array)) {
> +               elementSize = 4;
> +       }
> +       else {
> +               elementSize = 1;
> +       }
>         if (!((startIndex >= 1)
>                  && (((startIndex + count) - 1) <= (slotSizeOf(array))))) {
>                 return primitiveFailFor(PrimErrBadIndex);
>
> Modified: branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c
> ===================================================================
> --- branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c     2015-02-13
> 03:00:34 UTC (rev 3255)
> +++ branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c     2015-02-14
> 02:19:04 UTC (rev 3256)
> @@ -1,9 +1,9 @@
>  /* Automatically generated by
> -       VMPluginCodeGenerator VMMaker.oscog-eem.1032 uuid:
> a3c915e6-d663-4d65-ab41-493c71498549
> +       VMPluginCodeGenerator VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>     from
> -       NewsqueakIA32ABIPlugin VMMaker.oscog-eem.1032 uuid:
> a3c915e6-d663-4d65-ab41-493c71498549
> +       NewsqueakIA32ABIPlugin VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>   */
> -static char __buildInfo[] = "NewsqueakIA32ABIPlugin
> VMMaker.oscog-eem.1032 uuid: a3c915e6-d663-4d65-ab41-493c71498549 "
> __DATE__ ;
> +static char __buildInfo[] = "NewsqueakIA32ABIPlugin
> VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 "
> __DATE__ ;
>
>
>
> @@ -223,9 +223,9 @@
>  struct VirtualMachine* interpreterProxy;
>  static const char *moduleName =
>  #ifdef SQUEAK_BUILTIN_PLUGIN
> -       "IA32ABI VMMaker.oscog-eem.1032 (i)"
> +       "IA32ABI VMMaker.oscog-eem.1064 (i)"
>  #else
> -       "IA32ABI VMMaker.oscog-eem.1032 (e)"
> +       "IA32ABI VMMaker.oscog-eem.1064 (e)"
>  #endif
>  ;
>
> @@ -288,9 +288,12 @@
>
>         rcvr = stackValue(0);
>         value = longAt((rcvr + BaseHeaderSize) + BytesPerOop);
> -       valueOop = (BytesPerWord == 8
> -               ? positive64BitIntegerFor(value)
> -               : positive32BitIntegerFor(value));
> +       if (BytesPerWord == 8) {
> +               valueOop = positive64BitIntegerFor(value);
> +       }
> +       else {
> +               valueOop = positive32BitIntegerFor(value);
> +       }
>         return methodReturnValue(valueOop);
>  }
>
> @@ -704,9 +707,9 @@
>                  || (((((usqInt)byteOffset)) + 8) <= (abs(dataSize))))) {
>                 return primitiveFailFor(PrimErrBadIndex);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -752,9 +755,9 @@
>         if (isOopImmutable(rcvr)) {
>                 return primitiveFailFor(PrimErrNoModification);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -793,9 +796,9 @@
>                  || (((((usqInt)byteOffset)) + 4) <= (abs(dataSize))))) {
>                 return primitiveFailFor(PrimErrBadIndex);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -841,9 +844,9 @@
>         if (isOopImmutable(rcvr)) {
>                 return primitiveFailFor(PrimErrNoModification);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1086,9 +1089,9 @@
>                  || (((((usqInt)byteOffset)) + 1) <= (abs(dataSize))))) {
>                 return primitiveFailFor(PrimErrBadIndex);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1131,9 +1134,9 @@
>         if (isOopImmutable(rcvr)) {
>                 return primitiveFailFor(PrimErrNoModification);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1168,9 +1171,9 @@
>                  || (((((usqInt)byteOffset)) + 4) <= (abs(dataSize))))) {
>                 return primitiveFailFor(PrimErrBadIndex);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1211,9 +1214,9 @@
>         if (isOopImmutable(rcvr)) {
>                 return primitiveFailFor(PrimErrNoModification);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1251,9 +1254,9 @@
>                  || (((((usqInt)byteOffset)) + 8) <= (abs(dataSize))))) {
>                 return primitiveFailFor(PrimErrBadIndex);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1299,9 +1302,9 @@
>         if (isOopImmutable(rcvr)) {
>                 return primitiveFailFor(PrimErrNoModification);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1337,9 +1340,9 @@
>                  || (((((usqInt)byteOffset)) + 2) <= (abs(dataSize))))) {
>                 return primitiveFailFor(PrimErrBadIndex);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1382,9 +1385,9 @@
>         if (isOopImmutable(rcvr)) {
>                 return primitiveFailFor(PrimErrNoModification);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1408,9 +1411,12 @@
>
>         rcvr = stackValue(0);
>         value = ((sqInt) (longAt(rcvr + BaseHeaderSize)));
> -       valueOop = (BytesPerWord == 8
> -               ? signed64BitIntegerFor(value)
> -               : signed32BitIntegerFor(value));
> +       if (BytesPerWord == 8) {
> +               valueOop = signed64BitIntegerFor(value);
> +       }
> +       else {
> +               valueOop = signed32BitIntegerFor(value);
> +       }
>         return methodReturnValue(valueOop);
>  }
>
> @@ -1563,9 +1569,9 @@
>                  || (((((usqInt)byteOffset)) + 1) <= (abs(dataSize))))) {
>                 return primitiveFailFor(PrimErrBadIndex);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1607,9 +1613,9 @@
>         if (isOopImmutable(rcvr)) {
>                 return primitiveFailFor(PrimErrNoModification);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1644,9 +1650,9 @@
>                  || (((((usqInt)byteOffset)) + 4) <= (abs(dataSize))))) {
>                 return primitiveFailFor(PrimErrBadIndex);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1687,9 +1693,9 @@
>         if (isOopImmutable(rcvr)) {
>                 return primitiveFailFor(PrimErrNoModification);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1727,9 +1733,9 @@
>                  || (((((usqInt)byteOffset)) + 8) <= (abs(dataSize))))) {
>                 return primitiveFailFor(PrimErrBadIndex);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1776,9 +1782,9 @@
>         if (isOopImmutable(rcvr)) {
>                 return primitiveFailFor(PrimErrNoModification);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1814,9 +1820,9 @@
>                  || (((((usqInt)byteOffset)) + 2) <= (abs(dataSize))))) {
>                 return primitiveFailFor(PrimErrBadIndex);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
> @@ -1858,9 +1864,9 @@
>         if (isOopImmutable(rcvr)) {
>                 return primitiveFailFor(PrimErrNoModification);
>         }
> -       if (((startAddr = ((longAt(rcvr + BaseHeaderSize)) > 0
> -       ? (rcvr + BaseHeaderSize) + BytesPerOop
> -       : longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) == 0) {
> +       if ((((longAt(rcvr + BaseHeaderSize)) > 0
> +       ? (startAddr = (rcvr + BaseHeaderSize) + BytesPerOop)
> +       : (startAddr = longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) ==
> 0) {
>                 return primitiveFailFor(PrimErrBadReceiver);
>         }
>         addr = startAddr + byteOffset;
>
> Modified: branches/Cog/nscogsrc/plugins/LargeIntegers/LargeIntegers.c
> ===================================================================
> --- branches/Cog/nscogsrc/plugins/LargeIntegers/LargeIntegers.c 2015-02-13
> 03:00:34 UTC (rev 3255)
> +++ branches/Cog/nscogsrc/plugins/LargeIntegers/LargeIntegers.c 2015-02-14
> 02:19:04 UTC (rev 3256)
> @@ -1,9 +1,9 @@
>  /* Automatically generated by
> -       SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1048 uuid:
> 8c759c0d-f612-4018-8a05-45ec7f6af78f
> +       SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>     from
> -       LargeIntegersPlugin VMMaker.oscog-eem.1048 uuid:
> 8c759c0d-f612-4018-8a05-45ec7f6af78f
> +       LargeIntegersPlugin VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>   */
> -static char __buildInfo[] = "LargeIntegersPlugin VMMaker.oscog-eem.1048
> uuid: 8c759c0d-f612-4018-8a05-45ec7f6af78f " __DATE__ ;
> +static char __buildInfo[] = "LargeIntegersPlugin VMMaker.oscog-eem.1064
> uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
>
>
>
> @@ -173,9 +173,9 @@
>  struct VirtualMachine* interpreterProxy;
>  static const char *moduleName =
>  #ifdef SQUEAK_BUILTIN_PLUGIN
> -       "LargeIntegers v1.5 VMMaker.oscog-eem.1048 (i)"
> +       "LargeIntegers v1.5 VMMaker.oscog-eem.1064 (i)"
>  #else
> -       "LargeIntegers v1.5 VMMaker.oscog-eem.1048 (e)"
> +       "LargeIntegers v1.5 VMMaker.oscog-eem.1064 (e)"
>  #endif
>  ;
>  static const int  orOpIndex = 1;
> @@ -731,9 +731,12 @@
>         dl = divLen - 1;
>         ql = quoLen;
>         dh = pDiv[dl - 1];
> -       dnh = (dl == 1
> -               ? 0
> -               : pDiv[dl - 2]);
> +       if (dl == 1) {
> +               dnh = 0;
> +       }
> +       else {
> +               dnh = pDiv[dl - 2];
> +       }
>         for (k = 1; k <= ql; k += 1) {
>
>                 /* maintain quo*arg+rem=self */
> @@ -1557,9 +1560,12 @@
>         dl = divLen - 1;
>         ql = quoLen;
>         dh = pDiv[dl - 1];
> -       dnh = (dl == 1
> -               ? 0
> -               : pDiv[dl - 2]);
> +       if (dl == 1) {
> +               dnh = 0;
> +       }
> +       else {
> +               dnh = pDiv[dl - 2];
> +       }
>         for (k = 1; k <= ql; k += 1) {
>
>                 /* maintain quo*arg+rem=self */
> @@ -2167,12 +2173,12 @@
>         if (len == 0) {
>                 return integerObjectOf(0);
>         }
> -
> -       /* SmallInteger minVal digitLength */
> -
> -       sLen = ((MinSmallInteger) < -1073741824
> -               ? 8
> -               : 4);
> +       if ((MinSmallInteger) < -1073741824) {
> +               sLen = 8;
> +       }
> +       else {
> +               sLen = 4;
> +       }
>         if (len <= sLen) {
>
>                 /* SmallInteger minVal */
> @@ -2244,9 +2250,15 @@
>         if (len == 0) {
>                 return integerObjectOf(0);
>         }
> -       sLen = ((MinSmallInteger) > 0x3FFFFFFF
> -               ? 8
> -               : 4);
> +       if ((MinSmallInteger) > 0x3FFFFFFF) {
> +
> +               /* SmallInteger maxVal digitLength. */
> +
> +               sLen = 8;
> +       }
> +       else {
> +               sLen = 4;
> +       }
>         if ((len <= sLen)
>          && ((digitOfBytesat(aLargePositiveInteger, sLen)) <=
> (cDigitOfCSIat(MaxSmallInteger, sLen)))) {
>
>
> Modified:
> branches/Cog/nscogsrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
> ===================================================================
> ---
> branches/Cog/nscogsrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
>  2015-02-13 03:00:34 UTC (rev 3255)
> +++
> branches/Cog/nscogsrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
>  2015-02-14 02:19:04 UTC (rev 3256)
> @@ -1,16 +1,16 @@
>  /* Automatically generated by
> -       VMPluginCodeGenerator VMMaker.oscog-eem.983 uuid:
> 4cdca841-6318-4c49-95de-8c47d0d7e91d
> +       VMPluginCodeGenerator VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>     from
> -       MiscPrimitivePlugin VMMaker.oscog-eem.983 uuid:
> 4cdca841-6318-4c49-95de-8c47d0d7e91d
> -       Bitmap * Graphics-bf.303 uuid: 59c75040-7563-4061-8425-81f4467d3eb8
> -       ByteArray * Collections.spur-bf.588 uuid:
> 80ef5d3c-140e-4225-98f4-354435f1372e
> -       ByteString * Collections.spur-bf.588 uuid:
> 80ef5d3c-140e-4225-98f4-354435f1372e
> +       MiscPrimitivePlugin VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
> +       Bitmap * Graphics-kfr.305 uuid:
> ad7be66f-dd0c-8443-b773-b96836359b05
> +       ByteArray * Collections.spur-mt.591, Collections.spur-eem.603
> uuid: dd41c76b-9063-421b-87bc-4229ac3f5243
> +       ByteString * Collections.spur-mt.591, Collections.spur-eem.603
> uuid: dd41c76b-9063-421b-87bc-4229ac3f5243
>         SampledSound Sound-bf.42 uuid: 01b2784a-0ad7-4a6b-a996-3388ab820acd
>   */
> -static char __buildInfo[] = "MiscPrimitivePlugin VMMaker.oscog-eem.983
> uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d\n\
> -Bitmap * Graphics-bf.303 uuid: 59c75040-7563-4061-8425-81f4467d3eb8\n\
> -ByteArray * Collections.spur-bf.588 uuid:
> 80ef5d3c-140e-4225-98f4-354435f1372e\n\
> -ByteString * Collections.spur-bf.588 uuid:
> 80ef5d3c-140e-4225-98f4-354435f1372e\n\
> +static char __buildInfo[] = "MiscPrimitivePlugin VMMaker.oscog-eem.1064
> uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3\n\
> +Bitmap * Graphics-kfr.305 uuid: ad7be66f-dd0c-8443-b773-b96836359b05\n\
> +ByteArray * Collections.spur-mt.591, Collections.spur-eem.603 uuid:
> dd41c76b-9063-421b-87bc-4229ac3f5243\n\
> +ByteString * Collections.spur-mt.591, Collections.spur-eem.603 uuid:
> dd41c76b-9063-421b-87bc-4229ac3f5243\n\
>  SampledSound Sound-bf.42 uuid: 01b2784a-0ad7-4a6b-a996-3388ab820acd "
> __DATE__ ;
>
>
> @@ -94,9 +94,9 @@
>  struct VirtualMachine* interpreterProxy;
>  static const char *moduleName =
>  #ifdef SQUEAK_BUILTIN_PLUGIN
> -       "MiscPrimitivePlugin VMMaker.oscog-eem.983 (i)"
> +       "MiscPrimitivePlugin VMMaker.oscog-eem.1064 (i)"
>  #else
> -       "MiscPrimitivePlugin VMMaker.oscog-eem.983 (e)"
> +       "MiscPrimitivePlugin VMMaker.oscog-eem.1064 (e)"
>  #endif
>  ;
>
>
> Modified:
> branches/Cog/nscogsrc/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c
> ===================================================================
> ---
> branches/Cog/nscogsrc/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c
>    2015-02-13 03:00:34 UTC (rev 3255)
> +++
> branches/Cog/nscogsrc/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c
>    2015-02-14 02:19:04 UTC (rev 3256)
> @@ -1,9 +1,9 @@
>  /* Automatically generated by
> -       VMPluginCodeGenerator VMMaker.oscog-eem.983 uuid:
> 4cdca841-6318-4c49-95de-8c47d0d7e91d
> +       VMPluginCodeGenerator VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>     from
> -       VMProfileLinuxSupportPlugin VMMaker.oscog-eem.983 uuid:
> 4cdca841-6318-4c49-95de-8c47d0d7e91d
> +       VMProfileLinuxSupportPlugin VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>   */
> -static char __buildInfo[] = "VMProfileLinuxSupportPlugin
> VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d " __DATE__
> ;
> +static char __buildInfo[] = "VMProfileLinuxSupportPlugin
> VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 "
> __DATE__ ;
>
>
>
> @@ -51,6 +51,7 @@
>  /*** Function Prototypes ***/
>  static int countnummodules(struct dl_phdr_info *info, size_t size, void
> *ignored);
>  EXPORT(const char*) getModuleName(void);
> +static sqInt positiveMachineIntegerFor(unsigned long value);
>  EXPORT(sqInt) primitiveDLSymInLibrary(void);
>  EXPORT(sqInt) primitiveExecutableModules(void);
>  EXPORT(sqInt) primitiveInterpretAddress(void);
> @@ -73,6 +74,7 @@
>  static sqInt (*nilObject)(void);
>  static sqInt (*popRemappableOop)(void);
>  static sqInt (*positive32BitIntegerFor)(sqInt integerValue);
> +static sqInt (*positive64BitIntegerFor)(sqLong integerValue);
>  static sqInt (*primitiveFailFor)(sqInt reasonCode);
>  static sqInt (*pushRemappableOop)(sqInt oop);
>  static sqInt (*stackValue)(sqInt offset);
> @@ -90,6 +92,7 @@
>  extern sqInt nilObject(void);
>  extern sqInt popRemappableOop(void);
>  extern sqInt positive32BitIntegerFor(sqInt integerValue);
> +extern sqInt positive64BitIntegerFor(sqLong integerValue);
>  extern sqInt primitiveFailFor(sqInt reasonCode);
>  extern sqInt pushRemappableOop(sqInt oop);
>  extern sqInt stackValue(sqInt offset);
> @@ -100,9 +103,9 @@
>  struct VirtualMachine* interpreterProxy;
>  static const char *moduleName =
>  #ifdef SQUEAK_BUILTIN_PLUGIN
> -       "VMProfileLinuxSupportPlugin VMMaker.oscog-eem.983 (i)"
> +       "VMProfileLinuxSupportPlugin VMMaker.oscog-eem.1064 (i)"
>  #else
> -       "VMProfileLinuxSupportPlugin VMMaker.oscog-eem.983 (e)"
> +       "VMProfileLinuxSupportPlugin VMMaker.oscog-eem.1064 (e)"
>  #endif
>  ;
>  static sqInt numModules;
> @@ -128,7 +131,15 @@
>         return moduleName;
>  }
>
> +static sqInt
> +positiveMachineIntegerFor(unsigned long value)
> +{
> +       return (BytesPerWord == 8
> +               ? positive64BitIntegerFor(value)
> +               : positive32BitIntegerFor(value));
> +}
>
> +
>  /*     Answer the address of the symbol whose name is the first argument
>         in the library whose name is the second argument, or nil if none.
> */
>
> @@ -175,7 +186,9 @@
>         if (!ok) {
>                 return primitiveFailFor(PrimErrNotFound);
>         }
> -       return methodReturnValue(positive32BitIntegerFor(((unsigned
> long)addr)));
> +       return methodReturnValue((BytesPerWord == 8
> +               ? positive64BitIntegerFor(((unsigned long)addr))
> +               : positive32BitIntegerFor(((unsigned long)addr))));
>  }
>
>
> @@ -217,8 +230,9 @@
>  {
>      extern void interpret();
>
> -
> -       return methodReturnValue(positive32BitIntegerFor(((unsigned
> long)interpret)));
> +       return methodReturnValue((BytesPerWord == 8
> +               ? positive64BitIntegerFor(((unsigned long)interpret))
> +               : positive32BitIntegerFor(((unsigned long)interpret))));
>  }
>
>  static int
> @@ -313,6 +327,7 @@
>                 nilObject = interpreterProxy->nilObject;
>                 popRemappableOop = interpreterProxy->popRemappableOop;
>                 positive32BitIntegerFor =
> interpreterProxy->positive32BitIntegerFor;
> +               positive64BitIntegerFor =
> interpreterProxy->positive64BitIntegerFor;
>                 primitiveFailFor = interpreterProxy->primitiveFailFor;
>                 pushRemappableOop = interpreterProxy->pushRemappableOop;
>                 stackValue = interpreterProxy->stackValue;
>
> Modified:
> branches/Cog/nscogsrc/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
> ===================================================================
> ---
> branches/Cog/nscogsrc/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
> 2015-02-13 03:00:34 UTC (rev 3255)
> +++
> branches/Cog/nscogsrc/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
> 2015-02-14 02:19:04 UTC (rev 3256)
> @@ -1,9 +1,9 @@
>  /* Automatically generated by
> -       VMPluginCodeGenerator VMMaker.oscog-eem.983 uuid:
> 4cdca841-6318-4c49-95de-8c47d0d7e91d
> +       VMPluginCodeGenerator VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>     from
> -       VMProfileMacSupportPlugin VMMaker.oscog-eem.983 uuid:
> 4cdca841-6318-4c49-95de-8c47d0d7e91d
> +       VMProfileMacSupportPlugin VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>   */
> -static char __buildInfo[] = "VMProfileMacSupportPlugin
> VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d " __DATE__
> ;
> +static char __buildInfo[] = "VMProfileMacSupportPlugin
> VMMaker.oscog-eem.1064 uuid: 9d9d2583-03e6-4b6b-9b24-51587933f8f3 "
> __DATE__ ;
>
>
>
> @@ -45,6 +45,7 @@
>
>  /*** Function Prototypes ***/
>  EXPORT(const char*) getModuleName(void);
> +static sqInt positiveMachineIntegerFor(unsigned long value);
>  EXPORT(sqInt) primitiveDLSym(void);
>  EXPORT(sqInt) primitiveExecutableModulesAndOffsets(void);
>  EXPORT(sqInt) setInterpreter(struct VirtualMachine*anInterpreter);
> @@ -66,6 +67,7 @@
>  static sqInt (*popthenPush)(sqInt nItems, sqInt oop);
>  static sqInt (*popRemappableOop)(void);
>  static sqInt (*positive32BitIntegerFor)(sqInt integerValue);
> +static sqInt (*positive64BitIntegerFor)(sqLong integerValue);
>  static sqInt (*primitiveFail)(void);
>  static sqInt (*primitiveFailFor)(sqInt reasonCode);
>  static sqInt (*pushRemappableOop)(sqInt oop);
> @@ -87,6 +89,7 @@
>  extern sqInt popthenPush(sqInt nItems, sqInt oop);
>  extern sqInt popRemappableOop(void);
>  extern sqInt positive32BitIntegerFor(sqInt integerValue);
> +extern sqInt positive64BitIntegerFor(sqLong integerValue);
>  extern sqInt primitiveFail(void);
>  extern sqInt primitiveFailFor(sqInt reasonCode);
>  extern sqInt pushRemappableOop(sqInt oop);
> @@ -99,9 +102,9 @@
>  struct VirtualMachine* interpreterProxy;
>  static const char *moduleName =
>  #ifdef SQUEAK_BUILTIN_PLUGIN
> -       "VMProfileMacSupportPlugin VMMaker.oscog-eem.983 (i)"
> +       "VMProfileMacSupportPlugin VMMaker.oscog-eem.1064 (i)"
>  #else
> -       "VMProfileMacSupportPlugin VMMaker.oscog-eem.983 (e)"
> +       "VMProfileMacSupportPlugin VMMaker.oscog-eem.1064 (e)"
>  #endif
>  ;
>
> @@ -118,7 +121,15 @@
>         return moduleName;
>  }
>
> +static sqInt
> +positiveMachineIntegerFor(unsigned long value)
> +{
> +       return (BytesPerWord == 8
> +               ? positive64BitIntegerFor(value)
> +               : positive32BitIntegerFor(value));
> +}
>
> +
>  /*     Answer the address of the argument in the current process or nil
> if none. */
>
>  EXPORT(sqInt)
> @@ -146,7 +157,9 @@
>         free(name);
>         return methodReturnValue((addr == 0
>                 ? nilObject()
> -               : positive32BitIntegerFor(((unsigned long)addr))));
> +               : (BytesPerWord == 8
> +                               ? positive64BitIntegerFor(((unsigned
> long)addr))
> +                               : positive32BitIntegerFor(((unsigned
> long)addr)))));
>  }
>
>
> @@ -209,13 +222,23 @@
>                         return primitiveFail();
>                 }
>                 storePointerofObjectwithValue((i * 4) + 1,
> topRemappableOop(), valueObj);
> -               valueObj = positive32BitIntegerFor(start);
> +               if (BytesPerWord == 8) {
> +                       valueObj = positive64BitIntegerFor(start);
> +               }
> +               else {
> +                       valueObj = positive32BitIntegerFor(start);
> +               }
>                 if (failed()) {
>                         popRemappableOop();
>                         return primitiveFail();
>                 }
>                 storePointerofObjectwithValue((i * 4) + 2,
> topRemappableOop(), valueObj);
> -               valueObj = positive32BitIntegerFor(size);
> +               if (BytesPerWord == 8) {
> +                       valueObj = positive64BitIntegerFor(size);
> +               }
> +               else {
> +                       valueObj = positive32BitIntegerFor(size);
> +               }
>                 if (failed()) {
>                         popRemappableOop();
>                         return primitiveFail();
> @@ -253,6 +276,7 @@
>                 popthenPush = interpreterProxy->popthenPush;
>                 popRemappableOop = interpreterProxy->popRemappableOop;
>                 positive32BitIntegerFor =
> interpreterProxy->positive32BitIntegerFor;
> +               positive64BitIntegerFor =
> interpreterProxy->positive64BitIntegerFor;
>                 primitiveFail = interpreterProxy->primitiveFail;
>                 primitiveFailFor = interpreterProxy->primitiveFailFor;
>                 pushRemappableOop = interpreterProxy->pushRemappableOop;
>
> Modified: branches/Cog/nscogsrc/vm/cointerp.c
> ===================================================================
> --- branches/Cog/nscogsrc/vm/cointerp.c 2015-02-13 03:00:34 UTC (rev 3255)
> +++ branches/Cog/nscogsrc/vm/cointerp.c 2015-02-14 02:19:04 UTC (rev 3256)
> @@ -1,9 +1,9 @@
>  /* Automatically generated by
> -       CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1060 uuid:
> c43c476e-10ff-420e-a2eb-c17d4624e338
> +       CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>     from
> -       CoInterpreter VMMaker.oscog-eem.1060 uuid:
> c43c476e-10ff-420e-a2eb-c17d4624e338
> +       CoInterpreter VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3
>   */
> -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1060 uuid:
> c43c476e-10ff-420e-a2eb-c17d4624e338 " __DATE__ ;
> +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1064 uuid:
> 9d9d2583-03e6-4b6b-9b24-51587933f8f3 " __DATE__ ;
>  char *__interpBuildInfo = __buildInfo;
>
>
> @@ -766,6 +766,7 @@
>  EXPORT(void) primitiveSubtractLargeIntegers(void);
>  static void primitiveTestAndSetOwnershipOfCriticalSection(void);
>  static void primitiveTestDisplayDepth(void);
> +static void primitiveTimesTwoPower(void);
>  static void primitiveTruncated(void);
>  static void primitiveUnloadModule(void);
>  static void primitiveUpdateTimezone(void);
> @@ -914,7 +915,6 @@
>  sqInt falseObject(void);
>  sqInt fetchByteofObject(sqInt byteIndex, sqInt oop);
>  sqInt fetchClassOf(sqInt oop);
> -static sqInt fetchLong32ofFloatObject(sqInt fieldIndex, sqInt oop)
> NoDbgRegParms;
>  sqInt fetchLong32ofObject(sqInt fieldIndex, sqInt oop);
>  sqInt fetchPointerofObject(sqInt fieldIndex, sqInt oop);
>  static void finalizeReference(usqInt oop) NoDbgRegParms;
> @@ -931,6 +931,7 @@
>  static sqInt fwdBlockValid(sqInt addr) NoDbgRegParms;
>  static sqInt goodContextSize(sqInt oop) NoDbgRegParms;
>  static sqInt hasForwardingBlock(sqInt objOop) NoDbgRegParms;
> +static sqInt hasSixtyFourBitImmediates(void);
>  static sqInt headerWhileForwardingOf(sqInt oop) NoDbgRegParms;
>  sqInt indexablePointersFormat(void);
>  sqInt instanceSizeOf(sqInt classObj);
> @@ -1146,6 +1147,7 @@
>  static sqInt marriedContextpointsTostackDeltaForCurrentFrame(sqInt
> spouseContext, sqInt anOop, sqInt stackDeltaForCurrentFrame) NoDbgRegParms;
>  static void
> marryContextInNewStackPageAndInitializeInterpreterRegisters(sqInt aContext)
> NoDbgRegParms;
>  static sqInt marryFrameSP(char *theFP, char *theSP) NoDbgRegParms;
> +static sqInt maybeInlinePositive32BitIntegerFor(sqInt integerValue)
> NoDbgRegParms;
>  static sqInt maybeSelectorOfMethod(sqInt methodObj) NoDbgRegParms;
>  sqInt methodArgumentCount(void);
>  sqInt methodArg(sqInt index);
> @@ -1159,6 +1161,7 @@
>  EXPORT(void) moduleUnloaded(char *aModuleName);
>  static char * nameOfClass(sqInt classOop) NoDbgRegParms;
>  static StackPage * newStackPage(void);
> +static sqInt noInlineSigned32BitIntegerFor(sqInt integerValue)
> NoDbgRegParms;
>  static sqInt noInlineTemporaryin(sqInt offset, char *theFP) NoDbgRegParms;
>  static sqInt noInlineTemporaryinput(sqInt offset, char *theFP, sqInt
> valueOop) NoDbgRegParms;
>  static sqInt noMarkedContextsOnPage(StackPage *thePage) NoDbgRegParms;
> @@ -1365,17 +1368,18 @@
>  _iss sqInt profileProcess;
>  _iss sqInt profileSemaphore;
>  _iss usqInt fwdTableNext;
> -_iss sqInt longRunningPrimitiveCheckMethod;
>  _iss sqInt profileMethod;
>  _iss usqInt compStart;
> +_iss sqInt longRunningPrimitiveCheckMethod;
> +_iss sqInt weakRootCount;
>  _iss sqInt extraRootCount;
>  _iss sqInt growHeadroom;
>  _iss sqInt statGrowMemory;
>  _iss sqInt tempOop2;
> -_iss sqInt weakRootCount;
>  _iss sqInt classNameIndex;
>  _iss sqInt lastMethodCacheProbeWrite;
>  _iss sqInt preemptionYields;
> +_iss sqInt cogCodeSize;
>  _iss usqLong nextWakeupUsecs;
>  _iss sqInt statMarkCount;
>  _iss sqInt cogCompiledCodeCompactionCalledFor;
> @@ -1393,7 +1397,6 @@
>  _iss usqLong statCheckForEvents;
>  _iss usqLong statGCEndUsecs;
>  _iss sqInt statSweepCount;
> -_iss sqInt cogCodeSize;
>  _iss usqInt compEnd;
>  _iss sqInt externalPrimitiveTableFirstFreeIndex;
>  _iss sqInt shrinkThreshold;
> @@ -1422,11 +1425,13 @@
>  _iss sqInt totalObjectCount;
>  _iss sqInt fullScreenFlag;
>  _iss usqInt gcBiasToGrowThreshold;
> +_iss sqInt imageFloatsBigEndian;
>  _iss sqInt interruptKeycode;
>  _iss sqInt interruptPending;
>  _iss usqInt memory;
>  _iss sqInt methodDictLinearSearchLimit;
>  _iss usqLong nextPollUsecs;
> +_iss sqInt savedWindowSize;
>  _iss usqLong statForceInterruptCheck;
>  _iss usqLong statIGCDeltaUsecs;
>  _iss sqInt statPendingFinalizationSignals;
> @@ -1439,22 +1444,20 @@
>  _iss sqInt gcBiasToGrow;
>  _iss sqInt gcBiasToGrowGCLimit;
>  _iss sqInt globalSessionID;
> -_iss sqInt imageFloatsBigEndian;
> +_iss usqLong longRunningPrimitiveGCUsecs;
>  _iss sqInt longRunningPrimitiveSignalUndelivered;
>  _iss sqInt maxExtSemTabSizeSet;
> -_iss sqInt savedWindowSize;
>  _iss sqInt statCodeCompactionCount;
>  _iss usqLong statCodeCompactionUsecs;
>  _iss sqInt statRootTableCount;
>  _iss sqInt statSurvivorCount;
> +_iss sqInt the2ndUnknownShort;
>  _iss sqInt classByteArrayCompactIndex;
>  _iss sqInt fullGCLock;
>  _iss sqInt gcSemaphoreIndex;
>  _iss sqInt imageHeaderFlags;
> -_iss usqLong longRunningPrimitiveGCUsecs;
>  _iss sqInt overflowLimit;
>  _iss StackPage * overflowedPage;
> -_iss sqInt the2ndUnknownShort;
>  _iss long methodCache[MethodCacheSize + 1 /* 4097 */];
>  _iss sqInt atCache[AtCacheTotalSize + 1 /* 65 */];
>  _iss sqInt traceLog[TraceBufferSize /* 768 */];
> @@ -1572,7 +1575,7 @@
>         /* 51 */ primitiveTruncated,
>         /* 52 */ primitiveFractionalPart,
>         /* 53 */ primitiveExponent,
> -       /* 54 */ (void (*)(void))0,
> +       /* 54 */ primitiveTimesTwoPower,
>         /* 55 */ primitiveSquareRoot,
>         /* 56 */ primitiveSine,
>         /* 57 */ primitiveArctan,
> @@ -2096,7 +2099,7 @@
>         /* 575 */ (void (*)(void))0,
>   0 };
>  char expensiveAsserts = 0;
> -const char *interpreterVersion = "Newspeak Virtual Machine
> CoInterpreterPrimitives_VMMaker.oscog-eem.1060";
> +const char *interpreterVersion = "Newspeak Virtual Machine
> CoInterpreterPrimitives_VMMaker.oscog-eem.1064";
>  sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /*
> 40 */;
>  volatile int sendTrace;
>
> @@ -2434,9 +2437,12 @@
>
>                                 /* begin pushTemporaryVariable: */
>                                 /* begin internalPush: */
> -                               object = (0 /* currentBytecode bitAnd: 15
> */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
> -                                       ? longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 0 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord))
> -                                       : longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 0 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord)));
> +                               if (0 /* currentBytecode bitAnd: 15 */ <
> ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
> +                                       object = longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 0 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord));
> +                               }
> +                               else {
> +                                       object = longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 0 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord));
> +                               }
>                                 longAtPointerput((localSP -= BytesPerOop),
> object);
>                         }
>                         break;
> @@ -2453,9 +2459,12 @@
>
>                                 /* begin pushTemporaryVariable: */
>                                 /* begin internalPush: */
> -                               object = (1 /* currentBytecode bitAnd: 15
> */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
> -                                       ? longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 1 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord))
> -                                       : longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 1 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord)));
> +                               if (1 /* currentBytecode bitAnd: 15 */ <
> ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
> +                                       object = longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 1 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord));
> +                               }
> +                               else {
> +                                       object = longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 1 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord));
> +                               }
>                                 longAtPointerput((localSP -= BytesPerOop),
> object);
>                         }
>                         break;
> @@ -2472,9 +2481,12 @@
>
>                                 /* begin pushTemporaryVariable: */
>                                 /* begin internalPush: */
> -                               object = (2 /* currentBytecode bitAnd: 15
> */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
> -                                       ? longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 2 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord))
> -                                       : longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 2 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord)));
> +                               if (2 /* currentBytecode bitAnd: 15 */ <
> ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
> +                                       object = longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 2 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord));
> +                               }
> +                               else {
> +                                       object = longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 2 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord));
> +                               }
>                                 longAtPointerput((localSP -= BytesPerOop),
> object);
>                         }
>                         break;
> @@ -2491,9 +2503,12 @@
>
>                                 /* begin pushTemporaryVariable: */
>                                 /* begin internalPush: */
> -                               object = (3 /* currentBytecode bitAnd: 15
> */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
> -                                       ? longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 3 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord))
> -                                       : longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 3 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord)));
> +                               if (3 /* currentBytecode bitAnd: 15 */ <
> ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
> +                                       object = longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 3 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord));
> +                               }
> +                               else {
> +                                       object = longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 3 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord));
> +                               }
>                                 longAtPointerput((localSP -= BytesPerOop),
> object);
>                         }
>                         break;
> @@ -2510,9 +2525,12 @@
>
>                                 /* begin pushTemporaryVariable: */
>                                 /* begin internalPush: */
> -                               object = (4 /* currentBytecode bitAnd: 15
> */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
> -                                       ? longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 4 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord))
> -                                       : longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 4 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord)));
> +                               if (4 /* currentBytecode bitAnd: 15 */ <
> ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
> +                                       object = longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 4 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord));
> +                               }
> +                               else {
> +                                       object = longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 4 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord));
> +                               }
>                                 longAtPointerput((localSP -= BytesPerOop),
> object);
>                         }
>                         break;
> @@ -2529,9 +2547,12 @@
>
>                                 /* begin pushTemporaryVariable: */
>                                 /* begin internalPush: */
> -                               object = (5 /* currentBytecode bitAnd: 15
> */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
> -                                       ? longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 5 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord))
> -                                       : longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 5 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord)));
> +                               if (5 /* currentBytecode bitAnd: 15 */ <
> ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
> +                                       object = longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 5 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord));
> +                               }
> +                               else {
> +                                       object = longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 5 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord));
> +                               }
>                                 longAtPointerput((localSP -= BytesPerOop),
> object);
>                         }
>                         break;
> @@ -2548,9 +2569,12 @@
>
>                                 /* begin pushTemporaryVariable: */
>                                 /* begin internalPush: */
> -                               object = (6 /* currentBytecode bitAnd: 15
> */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
> -                                       ? longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 6 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord))
> -                                       : longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 6 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord)));
> +                               if (6 /* currentBytecode bitAnd: 15 */ <
> ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
> +                                       object = longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 6 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord));
> +                               }
> +                               else {
> +                                       object = longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 6 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord));
> +                               }
>                                 longAtPointerput((localSP -= BytesPerOop),
> object);
>                         }
>                         break;
> @@ -2567,9 +2591,12 @@
>
>                                 /* begin pushTemporaryVariable: */
>                                 /* begin internalPush: */
> -                               object = (7 /* currentBytecode bitAnd: 15
> */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
> -                                       ? longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 7 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord))
> -                                       : longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 7 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord)));
> +                               if (7 /* currentBytecode bitAnd: 15 */ <
> ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
> +                                       object = longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 7 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord));
> +                               }
> +                               else {
> +                                       object = longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 7 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord));
> +                               }
>                                 longAtPointerput((localSP -= BytesPerOop),
> object);
>                         }
>                         break;
> @@ -2586,9 +2613,12 @@
>
>                                 /* begin pushTemporaryVariable: */
>                                 /* begin internalPush: */
> -                               object = (8 /* currentBytecode bitAnd: 15
> */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
> -                                       ? longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 8 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord))
> -                                       : longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 8 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord)));
> +                               if (8 /* currentBytecode bitAnd: 15 */ <
> ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
> +                                       object = longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 8 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord));
> +                               }
> +                               else {
> +                                       object = longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 8 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord));
> +                               }
>                                 longAtPointerput((localSP -= BytesPerOop),
> object);
>                         }
>                         break;
> @@ -2605,9 +2635,12 @@
>
>                                 /* begin pushTemporaryVariable: */
>                                 /* begin internalPush: */
> -                               object = (9 /* currentBytecode bitAnd: 15
> */ < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))
> -                                       ? longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 9 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord))
> -                                       : longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 9 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord)));
> +                               if (9 /* currentBytecode bitAnd: 15 */ <
> ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
> +                                       object = longAt((localFP +
> FoxCallerSavedIP) + ((frameNumArgs - 9 /* currentBytecode bitAnd: 15 */) *
> BytesPerWord));
> +                               }
> +                               else {
> +                                       object = longAt(((localFP +
> FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - 9 /* currentBytecode
> bitAnd: 15 */) * BytesPerWord));
> +                               }
>
> @@ Diff output truncated at 50000 characters. @@
>



-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20150213/7eed860e/attachment-0001.htm


More information about the Vm-dev mailing list