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