[Vm-dev] [commit][3268] CogVM source as per VMMaker.oscog-eem.1088
commits at squeakvm.org
commits at squeakvm.org
Thu Mar 12 03:53:46 UTC 2015
Revision: 3268
Author: eliot
Date: 2015-03-11 20:53:41 -0700 (Wed, 11 Mar 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1088
Squeak 5.0 release candidate.
Speed up normalize methods in LargeIntegersPlugin
by cacheing result of firstIndexableField.
Simplify integer conversion routines by adding byteSizeOfBytes: which assumes
argument is byte indexable (as LargeIntegers are). Make sure integer conversion
routines consistently answer 0 on failure. Use 4-byte access where possible.
Remove use of popInteger in AsFloat and integer comparison primitives (popStack
idiom is inefficient since multiplke writes as opposed to the single write in
the pop:thenPush: idiom).
Revise SpurMemoryManager>>isClassOfNonImm:equalTo:compactClassIndex: for
better dead code elimination.
Modified Paths:
--------------
branches/Cog/nsspursrc/plugins/LargeIntegers/LargeIntegers.c
branches/Cog/nsspursrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c
branches/Cog/nsspursrc/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c
branches/Cog/nsspursrc/vm/cogit.c
branches/Cog/nsspursrc/vm/cogit.h
branches/Cog/nsspursrc/vm/cointerp.c
branches/Cog/nsspursrc/vm/cointerp.h
branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
branches/Cog/nsspurstacksrc/vm/interp.c
branches/Cog/platforms/Mac OS/vm/sqMacMain.c
branches/Cog/platforms/unix/vm/sqUnixMain.c
branches/Cog/platforms/win32/vm/sqWin32Main.c
branches/Cog/scripts/uploadvms
branches/Cog/sistasrc/vm/cogit.c
branches/Cog/sistasrc/vm/cogit.h
branches/Cog/sistasrc/vm/cointerp.c
branches/Cog/sistasrc/vm/cointerp.h
branches/Cog/sistasrc/vm/gcc3x-cointerp.c
branches/Cog/spursistasrc/vm/cogit.c
branches/Cog/spursistasrc/vm/cogit.h
branches/Cog/spursistasrc/vm/cointerp.c
branches/Cog/spursistasrc/vm/cointerp.h
branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
branches/Cog/spursrc/vm/cogit.c
branches/Cog/spursrc/vm/cogit.h
branches/Cog/spursrc/vm/cointerp.c
branches/Cog/spursrc/vm/cointerp.h
branches/Cog/spursrc/vm/gcc3x-cointerp.c
branches/Cog/spurstack64src/vm/gcc3x-interp.c
branches/Cog/spurstack64src/vm/interp.c
branches/Cog/spurstacksrc/vm/gcc3x-interp.c
branches/Cog/spurstacksrc/vm/interp.c
branches/Cog/src/plugins/LargeIntegers/LargeIntegers.c
branches/Cog/src/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c
branches/Cog/src/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c
branches/Cog/src/vm/cogit.c
branches/Cog/src/vm/cogit.h
branches/Cog/src/vm/cointerp.c
branches/Cog/src/vm/cointerp.h
branches/Cog/src/vm/cointerpmt.c
branches/Cog/src/vm/cointerpmt.h
branches/Cog/src/vm/gcc3x-cointerp.c
branches/Cog/src/vm/gcc3x-cointerpmt.c
branches/Cog/stacksrc/vm/gcc3x-interp.c
branches/Cog/stacksrc/vm/interp.c
Property Changed:
----------------
branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/nsspursrc/plugins/LargeIntegers/LargeIntegers.c
===================================================================
--- branches/Cog/nsspursrc/plugins/LargeIntegers/LargeIntegers.c 2015-03-05 19:52:12 UTC (rev 3267)
+++ branches/Cog/nsspursrc/plugins/LargeIntegers/LargeIntegers.c 2015-03-12 03:53:41 UTC (rev 3268)
@@ -1,9 +1,9 @@
/* Automatically generated by
- SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1080 uuid: 8b1a09b7-4f58-4375-b16a-e42e63ffd542
+ SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.1088 uuid: 8298a649-68d4-4bac-ace3-46649a076245
from
- LargeIntegersPlugin VMMaker.oscog-eem.1080 uuid: 8b1a09b7-4f58-4375-b16a-e42e63ffd542
+ LargeIntegersPlugin VMMaker.oscog-eem.1088 uuid: 8298a649-68d4-4bac-ace3-46649a076245
*/
-static char __buildInfo[] = "LargeIntegersPlugin VMMaker.oscog-eem.1080 uuid: 8b1a09b7-4f58-4375-b16a-e42e63ffd542 " __DATE__ ;
+static char __buildInfo[] = "LargeIntegersPlugin VMMaker.oscog-eem.1088 uuid: 8298a649-68d4-4bac-ace3-46649a076245 " __DATE__ ;
@@ -68,6 +68,7 @@
static sqInt digitBitLogicwithopIndex(sqInt firstInteger, sqInt secondInteger, sqInt opIx);
static sqInt digitCompareLargewith(sqInt firstInteger, sqInt secondInteger);
static sqInt digitDivLargewithnegative(sqInt firstInteger, sqInt secondInteger, sqInt neg);
+static sqInt digitLengthOfNonImmediate(sqInt oop);
static sqInt digitLength(sqInt oop);
static sqInt digitMontgomerytimesmodulomInvModB(sqInt firstLarge, sqInt secondLarge, sqInt thirdLarge, sqInt mInv);
static sqInt digitMultiplyLargewithnegative(sqInt firstInteger, sqInt secondInteger, sqInt neg);
@@ -109,7 +110,7 @@
EXPORT(sqInt) setInterpreter(struct VirtualMachine*anInterpreter);
static sqInt sqAssert(sqInt aBool);
static sqInt think(void);
-static sqInt unsafeByteOfat(sqInt bytesOop, sqInt ix);
+static sqInt unsafeByteOfat(sqInt bytesObj, sqInt ix);
EXPORT(sqInt) _primDigitBitShift(void);
@@ -173,9 +174,9 @@
struct VirtualMachine* interpreterProxy;
static const char *moduleName =
#ifdef SQUEAK_BUILTIN_PLUGIN
- "LargeIntegers v1.5 VMMaker.oscog-eem.1080 (i)"
+ "LargeIntegers v1.5 VMMaker.oscog-eem.1088 (i)"
#else
- "LargeIntegers v1.5 VMMaker.oscog-eem.1080 (e)"
+ "LargeIntegers v1.5 VMMaker.oscog-eem.1088 (e)"
#endif
;
static const int orOpIndex = 1;
@@ -196,7 +197,6 @@
sqInt leftShift;
sqInt magnitude;
usqInt mask;
- unsigned char *pointer;
sqInt rightShift;
sqInt stop;
@@ -221,7 +221,7 @@
goto l1;
}
else {
- digit = ((pointer = firstIndexableField(magnitude)))[firstByteIx - 1];
+ digit = (((unsigned char *) (firstIndexableField(magnitude))))[firstByteIx - 1];
goto l1;
}
l1: /* end digitOfBytes:at: */;
@@ -279,7 +279,9 @@
/* begin cCopyIntVal:toBytes: */
pByte = firstIndexableField(newBytes);
for (ix = 1, ixLimiT = (cDigitLengthOfCSI(val)); ix <= ixLimiT; ix += 1) {
- pByte[ix - 1] = (cDigitOfCSIat(val, ix));
+ pByte[ix - 1] = ((((usqInt) ((val < 0
+ ? 0 - val
+ : val))) >> ((ix - 1) * 8)) & 0xFF);
}
}
else {
@@ -425,8 +427,6 @@
sqInt newLen;
sqInt oldLen;
unsigned char * pFrom;
- unsigned char *pointer;
- unsigned char *pointer1;
unsigned char * pTo;
sqInt x;
sqInt x1;
@@ -440,7 +440,7 @@
goto l2;
}
else {
- digit = ((pointer1 = firstIndexableField(aBytesOop)))[i - 1];
+ digit = (((unsigned char *) (firstIndexableField(aBytesOop))))[i - 1];
goto l2;
}
l2: /* end digitOfBytes:at: */;
@@ -457,7 +457,7 @@
goto l1;
}
else {
- digit = ((pointer = firstIndexableField(aBytesOop)))[i - 1];
+ digit = (((unsigned char *) (firstIndexableField(aBytesOop))))[i - 1];
goto l1;
}
l1: /* end digitOfBytes:at: */;
@@ -663,7 +663,9 @@
pByte = firstIndexableField(bytes);
for (ix = 1, ixLimiT = (cDigitLengthOfCSI(val)); ix <= ixLimiT; ix += 1) {
- pByte[ix - 1] = (cDigitOfCSIat(val, ix));
+ pByte[ix - 1] = ((((usqInt) ((val < 0
+ ? 0 - val
+ : val))) >> ((ix - 1) * 8)) & 0xFF);
}
}
@@ -891,24 +893,27 @@
if (csi < 0x1000000) {
return 3;
}
- if (BytesPerOop == 4) {
+
+# if BytesPerOop == 4
+ return 4;
+
+# else /* BytesPerOop == 4 */
+ if (csi < 0x100000000ULL) {
return 4;
}
- else {
- if (csi < 0x100000000ULL) {
- return 4;
- }
- if (csi < 0x10000000000ULL) {
- return 5;
- }
- if (csi < 0x1000000000000ULL) {
- return 6;
- }
- if (csi < 0x100000000000000ULL) {
- return 7;
- }
- return 8;
+ if (csi < 0x10000000000ULL) {
+ return 5;
}
+ if (csi < 0x1000000000000ULL) {
+ return 6;
+ }
+ if (csi < 0x100000000000000ULL) {
+ return 7;
+ }
+ return 8;
+
+# endif /* BytesPerOop == 4 */
+
}
if (csi > -256) {
return 1;
@@ -919,24 +924,27 @@
if (csi > -16777216) {
return 3;
}
- if (BytesPerOop == 4) {
+
+# if BytesPerOop == 4
+ return 4;
+
+# else /* BytesPerOop == 4 */
+ if (csi > -4294967296) {
return 4;
}
- else {
- if (csi > -4294967296) {
- return 4;
- }
- if (csi > -1099511627776) {
- return 5;
- }
- if (csi > -281474976710656) {
- return 6;
- }
- if (csi > -72057594037927936) {
- return 7;
- }
- return 8;
+ if (csi > -1099511627776) {
+ return 5;
}
+ if (csi > -281474976710656) {
+ return 6;
+ }
+ if (csi > -72057594037927936) {
+ return 7;
+ }
+ return 8;
+
+# endif /* BytesPerOop == 4 */
+
}
static unsigned char
@@ -990,13 +998,6 @@
static sqInt
cDigitOfCSIat(sqInt csi, sqInt ix)
{
- if (ix < 1) {
- primitiveFail();
- return 0;
- }
- if (ix > BytesPerOop) {
- return 0;
- }
return (((usqInt) ((csi < 0
? 0 - csi
: csi))) >> ((ix - 1) * 8)) & 0xFF;
@@ -1143,20 +1144,9 @@
res = instantiateClassindexableSize(class, size);
pByte = firstIndexableField(res);
for (ix = 1; ix <= size; ix += 1) {
- /* begin cDigitOfCSI:at: */
- if (ix < 1) {
- primitiveFail();
- byte = 0;
- goto l1;
- }
- if (ix > BytesPerOop) {
- byte = 0;
- goto l1;
- }
byte = (((usqInt) ((val < 0
? 0 - val
: val))) >> ((ix - 1) * 8)) & 0xFF;
- l1: /* end cDigitOfCSI:at: */;
pByte[ix - 1] = byte;
}
return res;
@@ -1436,7 +1426,6 @@
sqInt lo;
sqInt mul;
unsigned char *pDiv;
- unsigned char *pointer;
unsigned char *pQuo;
unsigned char *pRem;
sqInt q;
@@ -1476,7 +1465,7 @@
stObjectatput(result,2,firstInteger);
return result;
}
- d = 8 - (cHighBit(((pointer = firstIndexableField(secondInteger)))[secondLen - 1]));
+ d = 8 - (cHighBit((((unsigned char *) (firstIndexableField(secondInteger))))[secondLen - 1]));
#if SPURVM
div = bytesLshift(secondInteger, d);
@@ -1676,6 +1665,12 @@
}
static sqInt
+digitLengthOfNonImmediate(sqInt oop)
+{
+ return slotSizeOf(oop);
+}
+
+static sqInt
digitLength(sqInt oop)
{
if (isIntegerObject(oop)) {
@@ -1894,23 +1889,18 @@
static sqInt
digitOfBytesat(sqInt aBytesOop, sqInt ix)
{
- unsigned char *pointer;
-
if (ix > (slotSizeOf(aBytesOop))) {
return 0;
}
else {
- return ((pointer = firstIndexableField(aBytesOop)))[ix - 1];
+ return (((unsigned char *) (firstIndexableField(aBytesOop))))[ix - 1];
}
}
static sqInt
digitOfat(sqInt oop, sqInt ix)
{
- unsigned char *pointer;
-
if (isIntegerObject(oop)) {
- /* begin cDigitOfCSI:at: */
if (ix < 1) {
primitiveFail();
return 0;
@@ -1922,14 +1912,12 @@
? 0 - (integerValueOf(oop))
: integerValueOf(oop)))) >> ((ix - 1) * 8)) & 0xFF;
}
+ /* begin digitOfBytes:at: */
+ if (ix > (slotSizeOf(oop))) {
+ return 0;
+ }
else {
- /* begin digitOfBytes:at: */
- if (ix > (slotSizeOf(oop))) {
- return 0;
- }
- else {
- return ((pointer = firstIndexableField(oop)))[ix - 1];
- }
+ return (((unsigned char *) (firstIndexableField(oop))))[ix - 1];
}
}
@@ -2059,14 +2047,8 @@
sqInt class;
sqInt ix;
sqInt len;
- sqInt maxVal;
- sqInt minVal;
unsigned char *pointer;
- unsigned char *pointer1;
- unsigned char *pointer2;
- unsigned char *pointer3;
sqInt positive;
- sqInt sLen;
if (isIntegerObject(anInteger)) {
return 1;
@@ -2078,54 +2060,37 @@
return 0;
}
}
- /* begin digitLength: */
- if (isIntegerObject(anInteger)) {
- len = cDigitLengthOfCSI(integerValueOf(anInteger));
- goto l1;
- }
- else {
- len = slotSizeOf(anInteger);
- goto l1;
- }
-l1: /* end digitLength: */;
- if (len == 0) {
- return 0;
- }
- if ((((pointer = firstIndexableField(anInteger)))[len - 1]) == 0) {
- return 0;
- }
- /* maximal digitLength of aSmallInteger */
+ /* Check for leading zero of LargeInteger */
- sLen = BytesPerOop;
- if (len > sLen) {
- return 1;
- }
- if (len < sLen) {
+ pointer = ((unsigned char *) (firstIndexableField(anInteger)));
+ len = slotSizeOf(anInteger);
+ if ((len == 0)
+ || ((pointer[len - 1]) == 0)) {
return 0;
}
+ if (len != BytesPerOop) {
+ return len > BytesPerOop;
+ }
if (positive) {
- /* SmallInteger maxVal */
- /* all bytes of maxVal but the highest one are just FF's */
+ /* all bytes of but the highest one are just FF's */
- maxVal = MaxSmallInteger;
- return (((pointer1 = firstIndexableField(anInteger)))[sLen - 1]) > (cDigitOfCSIat(maxVal, sLen));
+ return (pointer[BytesPerOop - 1]) > ((((usqInt) (((MaxSmallInteger) < 0
+ ? 0 - (MaxSmallInteger)
+ : MaxSmallInteger))) >> ((BytesPerOop - 1) * 8)) & 0xFF);
}
- else {
-
- /* SmallInteger minVal */
- /* all bytes of minVal but the highest one are just 00's */
-
- minVal = MinSmallInteger;
- if ((((pointer2 = firstIndexableField(anInteger)))[sLen - 1]) < (cDigitOfCSIat(minVal, sLen))) {
- return 0;
+ if ((pointer[BytesPerOop - 1]) < ((((usqInt) (((MinSmallInteger) < 0
+ ? 0 - (MinSmallInteger)
+ : MinSmallInteger))) >> ((BytesPerOop - 1) * 8)) & 0xFF)) {
+ return 0;
+ }
+ for (ix = 0; ix < BytesPerOop; ix += 1) {
+ if (!((pointer[ix]) == ((((usqInt) (((MinSmallInteger) < 0
+ ? 0 - (MinSmallInteger)
+ : MinSmallInteger))) >> (((ix + 1) - 1) * 8)) & 0xFF))) {
+ return 1;
}
- for (ix = 1; ix <= sLen; ix += 1) {
- if (!((((pointer3 = firstIndexableField(anInteger)))[ix - 1]) == (cDigitOfCSIat(minVal, ix)))) {
- return 1;
- }
- }
}
return 0;
}
@@ -2150,50 +2115,54 @@
static sqInt
normalizeNegative(sqInt aLargeNegativeInteger)
{
+ sqInt byte;
sqInt i;
sqInt len;
- sqInt minVal;
sqInt oldLen;
- unsigned char *pointer;
- unsigned char *pointer1;
+ unsigned char * pointer;
sqInt sLen;
sqInt val;
- len = (oldLen = digitLength(aLargeNegativeInteger));
- while ((len != 0)
- && ((((pointer = firstIndexableField(aLargeNegativeInteger)))[len - 1]) == 0)) {
+ len = (oldLen = slotSizeOf(aLargeNegativeInteger));
+ pointer = ((unsigned char *) (firstIndexableField(aLargeNegativeInteger)));
+ while ((len > 0)
+ && ((pointer[len - 1]) == 0)) {
len -= 1;
}
if (len == 0) {
return integerObjectOf(0);
}
- /* SmallInteger minVal digitLength */
+ /* SmallInteger digitLength */
sLen = ((MinSmallInteger) < -1073741824
? 8
: 4);
if (len <= sLen) {
-
- /* SmallInteger minVal */
-
- minVal = MinSmallInteger;
if ((len < sLen)
- || ((digitOfBytesat(aLargeNegativeInteger, sLen)) < (cDigitOfCSIat(minVal, sLen)))) {
+ || ((pointer[sLen - 1]) < ((((usqInt) (((MinSmallInteger) < 0
+ ? 0 - (MinSmallInteger)
+ : MinSmallInteger))) >> ((sLen - 1) * 8)) & 0xFF))) {
+ /* interpreterProxy minSmallInteger lastDigit */
/* If high digit less, then can be small */
- val = 0;
- for (i = len; i >= 1; i += -1) {
- val = (val * 256) - (((pointer1 = firstIndexableField(aLargeNegativeInteger)))[i - 1]);
+ val = 0 - (pointer[(len -= 1)]);
+ for (i = (len - 1); i >= 0; i += -1) {
+ val = (val * 256) - (pointer[i]);
}
return integerObjectOf(val);
}
for (i = 1; i <= sLen; i += 1) {
- /* If all digits same, then = minVal (sr: minVal digits 1 to 3 are 0) */
+ /* If all digits same, then = minSmallInteger (sr: minSmallInteger digits 1 to sLen - 1 are 0) */
- if (!((digitOfBytesat(aLargeNegativeInteger, i)) == (cDigitOfCSIat(minVal, i)))) {
+ byte = (i > len
+ ? 0
+ : pointer[i - 1]);
+ if (byte != ((((usqInt) (((MinSmallInteger) < 0
+ ? 0 - (MinSmallInteger)
+ : MinSmallInteger))) >> ((i - 1) * 8)) & 0xFF)) {
/* Not so; return self shortened */
@@ -2203,12 +2172,10 @@
return bytesgrowTo(aLargeNegativeInteger, len);
}
- else {
- return aLargeNegativeInteger;
- }
+ return aLargeNegativeInteger;
}
}
- return integerObjectOf(minVal);
+ return integerObjectOf((MinSmallInteger));
}
if (len < oldLen) {
@@ -2216,9 +2183,7 @@
return bytesgrowTo(aLargeNegativeInteger, len);
}
- else {
- return aLargeNegativeInteger;
- }
+ return aLargeNegativeInteger;
}
@@ -2232,29 +2197,31 @@
sqInt len;
sqInt oldLen;
unsigned char *pointer;
- unsigned char *pointer1;
sqInt sLen;
sqInt val;
- len = (oldLen = digitLength(aLargePositiveInteger));
- while ((len != 0)
- && ((((pointer = firstIndexableField(aLargePositiveInteger)))[len - 1]) == 0)) {
+ len = (oldLen = slotSizeOf(aLargePositiveInteger));
+ pointer = ((unsigned char *) (firstIndexableField(aLargePositiveInteger)));
+ while ((len > 0)
+ && ((pointer[len - 1]) == 0)) {
len -= 1;
}
if (len == 0) {
return integerObjectOf(0);
}
- sLen = ((MinSmallInteger) > 0x3FFFFFFF
+ sLen = ((MaxSmallInteger) > 0x3FFFFFFF
? 8
: 4);
if ((len <= sLen)
- && ((digitOfBytesat(aLargePositiveInteger, sLen)) <= (cDigitOfCSIat(MaxSmallInteger, sLen)))) {
+ && ((pointer[sLen - 1]) <= ((((usqInt) (((MaxSmallInteger) < 0
+ ? 0 - (MaxSmallInteger)
+ : MaxSmallInteger))) >> ((sLen - 1) * 8)) & 0xFF))) {
/* If so, return its SmallInt value */
- val = 0;
- for (i = len; i >= 1; i += -1) {
- val = (val * 256) + (((pointer1 = firstIndexableField(aLargePositiveInteger)))[i - 1]);
+ val = pointer[(len -= 1)];
+ for (i = (len - 1); i >= 0; i += -1) {
+ val = (val * 256) + (pointer[i]);
}
return integerObjectOf(val);
}
@@ -2264,9 +2231,7 @@
return bytesgrowTo(aLargePositiveInteger, len);
}
- else {
- return aLargePositiveInteger;
- }
+ return aLargePositiveInteger;
}
@@ -3653,14 +3618,12 @@
}
-/* Argument bytesOop must not be aSmallInteger! */
+/* Argument bytesObj must not be aSmallInteger! */
static sqInt
-unsafeByteOfat(sqInt bytesOop, sqInt ix)
+unsafeByteOfat(sqInt bytesObj, sqInt ix)
{
- unsigned char *pointer;
-
- return ((pointer = firstIndexableField(bytesOop)))[ix - 1];
+ return (((unsigned char *) (firstIndexableField(bytesObj))))[ix - 1];
}
EXPORT(sqInt)
Modified: branches/Cog/nsspursrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c 2015-03-05 19:52:12 UTC (rev 3267)
+++ branches/Cog/nsspursrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c 2015-03-12 03:53:41 UTC (rev 3268)
@@ -1,9 +1,9 @@
/* Automatically generated by
- VMPluginCodeGenerator VMMaker.oscog-eem.1080 uuid: 8b1a09b7-4f58-4375-b16a-e42e63ffd542
+ VMPluginCodeGenerator VMMaker.oscog-eem.1088 uuid: 8298a649-68d4-4bac-ace3-46649a076245
from
- UnixOSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 uuid: dbbde2e2-9103-4ba8-96a9-33c29e7ee7e4
+ UnixOSProcessPlugin * VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 uuid: dbbde2e2-9103-4ba8-96a9-33c29e7ee7e4
*/
-static char __buildInfo[] = "UnixOSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 uuid: dbbde2e2-9103-4ba8-96a9-33c29e7ee7e4 " __DATE__ ;
+static char __buildInfo[] = "UnixOSProcessPlugin * VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 uuid: dbbde2e2-9103-4ba8-96a9-33c29e7ee7e4 " __DATE__ ;
/* D T Lewis - UnixOSProcessPlugin.c translated from class
UnixOSProcessPlugin of OSProcessPlugin version 4.3.3 Cog */
@@ -316,9 +316,9 @@
struct VirtualMachine* interpreterProxy;
static const char *moduleName =
#ifdef SQUEAK_BUILTIN_PLUGIN
- "UnixOSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 (i)"
+ "UnixOSProcessPlugin * VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 (i)"
#else
- "UnixOSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 (e)"
+ "UnixOSProcessPlugin * VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 (e)"
#endif
;
static void *originalSigHandlers[NSIG];
@@ -1329,12 +1329,12 @@
unsigned char *ptr;
if (!((isBytes(aByteArray))
- && ((stSizeOf(aByteArray)) == (sizeOfPointer())))) {
+ && ((stSizeOf(aByteArray)) == (sizeof(void *))))) {
return null;
}
ptr = arrayValueOf(aByteArray);
idx = 0;
- while (idx < (sizeOfPointer())) {
+ while (idx < (sizeof(void *))) {
pointerUnion.bytes[idx] = ptr[idx];
idx += 1;
}
@@ -1962,11 +1962,11 @@
if (handler == (sigErrorNumber())) {
return primitiveFail();
}
- priorHandlerObject = instantiateClassindexableSize(classByteArray(), sizeOfPointer());
+ priorHandlerObject = instantiateClassindexableSize(classByteArray(), sizeof(void *));
hPtr = arrayValueOf(priorHandlerObject);
priorHandler.handler = handler;
idx = 0;
- while (idx < (sizeOfPointer())) {
+ while (idx < (sizeof(void *))) {
hPtr[idx] = priorHandler.bytes[idx];
idx += 1;
}
@@ -3346,7 +3346,7 @@
primitiveSizeOfPointer(void)
{
pop(1);
- pushInteger(sizeOfPointer());
+ pushInteger(sizeof(void *));
}
Modified: branches/Cog/nsspursrc/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c
===================================================================
--- branches/Cog/nsspursrc/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c 2015-03-05 19:52:12 UTC (rev 3267)
+++ branches/Cog/nsspursrc/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c 2015-03-12 03:53:41 UTC (rev 3268)
@@ -1,9 +1,9 @@
/* Automatically generated by
- VMPluginCodeGenerator VMMaker.oscog-eem.1080 uuid: 8b1a09b7-4f58-4375-b16a-e42e63ffd542
+ VMPluginCodeGenerator VMMaker.oscog-eem.1088 uuid: 8298a649-68d4-4bac-ace3-46649a076245
from
- Win32OSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 uuid: dbbde2e2-9103-4ba8-96a9-33c29e7ee7e4
+ Win32OSProcessPlugin * VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 uuid: dbbde2e2-9103-4ba8-96a9-33c29e7ee7e4
*/
-static char __buildInfo[] = "Win32OSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 uuid: dbbde2e2-9103-4ba8-96a9-33c29e7ee7e4 " __DATE__ ;
+static char __buildInfo[] = "Win32OSProcessPlugin * VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 uuid: dbbde2e2-9103-4ba8-96a9-33c29e7ee7e4 " __DATE__ ;
/* D T Lewis - Win32OSProcessPlugin.c translated from class
Win32OSProcessPlugin of OSProcessPlugin version 4.3.3 Cog */
@@ -222,9 +222,9 @@
struct VirtualMachine* interpreterProxy;
static const char *moduleName =
#ifdef SQUEAK_BUILTIN_PLUGIN
- "Win32OSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 (i)"
+ "Win32OSProcessPlugin * VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 (i)"
#else
- "Win32OSProcessPlugin VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 (e)"
+ "Win32OSProcessPlugin * VMConstruction-Plugins-OSProcessPlugin.oscog-eem.49 (e)"
#endif
;
static int osprocessSandboxSecurity;
@@ -658,12 +658,12 @@
unsigned char *ptr;
if (!((isBytes(aByteArray))
- && ((stSizeOf(aByteArray)) == (sizeOfPointer())))) {
+ && ((stSizeOf(aByteArray)) == (sizeof(void *))))) {
return null;
}
ptr = arrayValueOf(aByteArray);
idx = 0;
- while (idx < (sizeOfPointer())) {
+ while (idx < (sizeof(void *))) {
pointerUnion.bytes[idx] = ptr[idx];
idx += 1;
}
@@ -1760,7 +1760,7 @@
primitiveSizeOfPointer(void)
{
pop(1);
- pushInteger(sizeOfPointer());
+ pushInteger(sizeof(void *));
}
Modified: branches/Cog/nsspursrc/vm/cogit.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.c 2015-03-05 19:52:12 UTC (rev 3267)
+++ branches/Cog/nsspursrc/vm/cogit.c 2015-03-12 03:53:41 UTC (rev 3268)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1083 uuid: 4d0a08c2-6218-4726-816c-1d6e3ae601d8
+ CCodeGenerator VMMaker.oscog-eem.1088 uuid: 8298a649-68d4-4bac-ace3-46649a076245
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1083 uuid: 4d0a08c2-6218-4726-816c-1d6e3ae601d8
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1088 uuid: 8298a649-68d4-4bac-ace3-46649a076245
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1083 uuid: 4d0a08c2-6218-4726-816c-1d6e3ae601d8 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1088 uuid: 8298a649-68d4-4bac-ace3-46649a076245 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -1128,7 +1128,7 @@
static void initSimStackForFramefulMethod(sqInt startpc) NoDbgRegParms;
static void initSimStackForFramelessBlock(sqInt startpc) NoDbgRegParms;
static void initSimStackForFramelessMethod(sqInt startpc) NoDbgRegParms;
-static sqInt liveRegisters(void);
+static usqInt liveRegisters(void);
static void marshallAbsentReceiverSendArguments(sqInt numArgs) NoDbgRegParms;
static void marshallSendArguments(sqInt numArgs) NoDbgRegParms;
static void mergeafterContinuation(BytecodeFixup *fixup, sqInt mergeWithContinuation) NoDbgRegParms;
@@ -9471,10 +9471,10 @@
headerSize = sizeof(CogMethod);
size = generateInstructionsAt(startAddress + headerSize);
- /* The missOffset is the same as the interpretOffset. */
+ /* The missOffset is the same as the interpretOffset. On RISCs it includes an additional instruction. */
end = outputInstructionsAt(startAddress + headerSize);
- assert(missOffset == ((((picInterpretAbort->address)) + ((picInterpretAbort->machineCodeSize))) - startAddress));
+ assert(missOffset == ((((0) + ((picInterpretAbort->address))) + ((picInterpretAbort->machineCodeSize))) - startAddress));
assert((startAddress + cmEntryOffset) == ((entry->address)));
return fillInCPICHeadersizenumArgsnumCaseshasMNUCaseselector(((CogMethod *) startAddress), closedPICSize, numArgs, 1, 1, selector);
}
@@ -9547,10 +9547,10 @@
headerSize = sizeof(CogMethod);
size = generateInstructionsAt(startAddress + headerSize);
- /* The missOffset is th same as the interpretOffset. */
+ /* The missOffset is the same as the interpretOffset. On RISCs it includes an additional instruction. */
end = outputInstructionsAt(startAddress + headerSize);
- assert(missOffset == ((((picInterpretAbort->address)) + ((picInterpretAbort->machineCodeSize))) - startAddress));
+ assert(missOffset == ((((0) + ((picInterpretAbort->address))) + ((picInterpretAbort->machineCodeSize))) - startAddress));
assert((startAddress + cmEntryOffset) == ((entry->address)));
assert(((endCPICCase0->address)) == (startAddress + firstCPICCaseOffset));
assert(((endCPICCase1->address)) == ((startAddress + firstCPICCaseOffset) + cPICCaseSize));
@@ -21755,12 +21755,12 @@
genoperandoperand(CmpCqR, 0, ReceiverResultReg);
/* begin JumpNonZero: */
jumpSICMiss = genoperand(JumpNonZero, ((sqInt)0));
- compileTrampolineFornumArgsargargargargsaveRegspushLinkRegresultReg(ceStackOverflow, 1, SendNumArgsReg, null, null, null, 0, 1, null);
+ compileTrampolineFornumArgsargargargargsaveRegspushLinkRegresultReg(ceStackOverflow, 1, SendNumArgsReg, null, null, null, 0, 0, null);
jmpTarget(jumpSICMiss, gLabel());
genPushRegisterArgsForAbortMissNumArgs(backEnd, numArgs);
return genTrampolineForcallednumArgsargargargargsaveRegspushLinkRegresultRegappendOpcodes(ceSICMiss, trampolineNamenumArgs("ceMethodAbort", (numArgs <= 2
? numArgs
- : -1)), 1, ReceiverResultReg, null, null, null, 0, 1, null, 1);
+ : -1)), 1, ReceiverResultReg, null, null, null, 0, 0, null, 1);
}
@@ -23647,7 +23647,6 @@
genoperand(RetN, (methodOrBlockNumArgs + 1) * BytesPerWord);
}
else {
- ;
/* begin RetN: */
offset = ((methodOrBlockNumArgs > 2)
|| (regArgsHaveBeenPushed)
@@ -23795,11 +23794,11 @@
simSpillBase = (simStackPtr = methodOrBlockNumArgs - 1);
}
-static sqInt
+static usqInt
liveRegisters(void)
{
sqInt i;
- sqInt regsSet;
+ usqInt regsSet;
if (needsFrame) {
regsSet = 0;
@@ -24381,7 +24380,7 @@
{
sqInt i;
sqInt lastRequired;
- sqInt liveRegs;
+ usqInt liveRegs;
/* compute live regs while noting the last occurrence of required regs.
Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h 2015-03-05 19:52:12 UTC (rev 3267)
+++ branches/Cog/nsspursrc/vm/cogit.h 2015-03-12 03:53:41 UTC (rev 3268)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1083 uuid: 4d0a08c2-6218-4726-816c-1d6e3ae601d8
+ CCodeGenerator VMMaker.oscog-eem.1088 uuid: 8298a649-68d4-4bac-ace3-46649a076245
*/
Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c 2015-03-05 19:52:12 UTC (rev 3267)
+++ branches/Cog/nsspursrc/vm/cointerp.c 2015-03-12 03:53:41 UTC (rev 3268)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1083 uuid: 4d0a08c2-6218-4726-816c-1d6e3ae601d8
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1088 uuid: 8298a649-68d4-4bac-ace3-46649a076245
from
- CoInterpreter VMMaker.oscog-eem.1083 uuid: 4d0a08c2-6218-4726-816c-1d6e3ae601d8
+ CoInterpreter VMMaker.oscog-eem.1088 uuid: 8298a649-68d4-4bac-ace3-46649a076245
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1083 uuid: 4d0a08c2-6218-4726-816c-1d6e3ae601d8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1088 uuid: 8298a649-68d4-4bac-ace3-46649a076245 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -1107,6 +1107,7 @@
static sqInt noInlineFollowForwarded(sqInt objOop) NoDbgRegParms;
sqInt nonIndexablePointerFormat(void);
static sqInt noUnscannedEphemerons(void);
+static sqInt numBytesOfBytes(sqInt objOop) NoDbgRegParms;
sqInt numBytesOf(sqInt objOop);
static sqInt numberOfForwarders(void);
sqInt numPointerSlotsOf(sqInt objOop);
@@ -1170,7 +1171,7 @@
static sqInt storeImageSegmentIntooutPointersroots(sqInt segmentWordArray, sqInt outPointerArray, sqInt arrayOfRoots) NoDbgRegParms;
sqInt storePointerUncheckedofObjectwithValue(sqInt fieldIndex, sqInt objOop, sqInt valuePointer);
sqInt storePointerofObjectwithValue(sqInt fieldIndex, sqInt objOop, sqInt valuePointer);
-sqInt stringForCString(const char *aCString);
+usqInt stringForCString(const char *aCString);
static sqInt sufficientSpaceAfterGC(sqInt numBytes) NoDbgRegParms;
static sqInt swizzleObjStackAt(sqInt objStackRootIndex) NoDbgRegParms;
void tenuringIncrementalGC(void);
@@ -1242,7 +1243,6 @@
static sqInt checkOkayStackZone(sqInt writeBack) NoDbgRegParms;
static void checkProfileTick(sqInt aPrimitiveMethod) NoDbgRegParms;
static sqInt classNameOfIs(sqInt aClass, char *className) NoDbgRegParms;
-static sqInt compare31or32Bitsequal(sqInt obj1, sqInt obj2) NoDbgRegParms;
static sqInt contexthasSender(sqInt thisCntx, sqInt aContext) NoDbgRegParms;
static sqInt contexthasValidInversePCMappingOfin(sqInt aContext, sqInt theIP, char *theFP) NoDbgRegParms;
sqInt copiedValueCountOfClosure(sqInt closurePointer);
@@ -1562,8 +1562,8 @@
_iss sqInt trueObj;
_iss sqInt hiddenRootsObj;
_iss sqInt falseObj;
-_iss usqInt totalFreeOldSpace;
_iss usqInt scavengeThreshold;
+_iss usqInt totalFreeOldSpace;
_iss sqInt bytesPerPage;
_iss usqInt pastSpaceStart;
_iss sqInt numSegments;
@@ -1622,7 +1622,6 @@
_iss sqInt lastUncoggableInterpretedBlockMethod;
_iss usqLong longRunningPrimitiveStartUsecs;
_iss usqLong longRunningPrimitiveStopUsecs;
-_iss usqInt lowSpaceThreshold;
_iss usqLong statCheckForEvents;
_iss usqLong statGCEndUsecs;
_iss sqInt weakList;
@@ -1632,6 +1631,7 @@
_iss sqInt thisClassIndex;
_iss sqInt firstSegmentSize;
_iss usqLong gcStartUsecs;
+_iss usqInt lowSpaceThreshold;
_iss sqInt noThreadingOfGUIThread;
_iss sqInt pendingFinalizationSignals;
_iss sqInt processHasThreadId;
@@ -2335,13 +2335,13 @@
/* 575 */ (void (*)(void))0,
0 };
static signed char primitiveAccessorDepthTable[MaxPrimitiveIndex + 2 /* 577 */] = {
-/*0*/ -1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0,-1,-1, 0, 0, 0, 0, 0, 0,-1,
+/*0*/ -1,-1,-1, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1, 0, 0, 0, 0, 0, 0,-1,
/*20*/ 0, 0, 0,-1,-1,-1,-1,-1,-1, 0, 0, 0, 0, 0,-1,-1,-1, 0, 0, 0,
-/*40*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1,-1,-1,
+/*40*/ 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1,-1,-1,
/*60*/ 0, 0, 1,-1,-1,-1,-1,-1, 0, 0,-1,-1, 0, 1, 1, 0, 0, 0, 0, 0,
/*80*/ -1,-1,-1, 0,-1,-1, 1, 0, 1,-1,-1, 0, 0, 0, 0,-1,-1,-1, 0, 0,
/*100*/ 1, 2, 0, 3,-1, 1,-1,-1,-1,-1, 0, 0,-1,-1,-1, 1, 1,-1, 1, 0,
-/*120*/ -1, 1,-1,-1, 0,-1, 0, 0, 0,-1,-1,-1, 1, 0, 0,-1, 0,-1,-1,-1,
+/*120*/ -1, 1,-1,-1, 0, 0, 0, 0, 0,-1,-1,-1, 1, 0, 0,-1, 0,-1,-1,-1,
/*140*/ -1, 1,-1, 1, 0, 0,-1,-1, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
/*160*/ 0, 0,-1,-1,-1, 1, 1,-1, 1, 0, 0, 1,-1, 1, 1,-1,-1,-1,-1,-1,
/*180*/ 0,-1,-1, 0, 0, 0, 1, 1, 1, 0,-1,-1,-1,-1,-1, 1, 2,-1,-1,-1,
@@ -2366,7 +2366,7 @@
/*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
};
char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1083";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1088";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -9516,7 +9516,6 @@
isString = ClassByteStringCompactIndex == ccIndex;
goto l100;
- isString = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassByteString << (shiftForWord())))) == (classAtIndex(ccIndex));
l100: /* end is:instanceOf:compactClassIndex: */;
if (isString) {
/* begin lengthOf:format: */
@@ -9568,7 +9567,6 @@
isArray = ClassArrayCompactIndex == ccIndex1;
goto l102;
- isArray = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassArray << (shiftForWord())))) == (classAtIndex(ccIndex1));
l102: /* end is:instanceOf:compactClassIndex: */;
if (isArray) {
/* begin lengthOf:format: */
@@ -9731,7 +9729,6 @@
isBlock = ClassBlockClosureCompactIndex == ccIndex;
goto l105;
- isBlock = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassBlockClosure << (shiftForWord())))) == (classAtIndex(ccIndex));
l105: /* end is:instanceOf:compactClassIndex: */;
if (isBlock) {
/* begin externalizeIPandSP */
@@ -9782,7 +9779,6 @@
isBlock = ClassBlockClosureCompactIndex == ccIndex;
goto l107;
- isBlock = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassBlockClosure << (shiftForWord())))) == (classAtIndex(ccIndex));
l107: /* end is:instanceOf:compactClassIndex: */;
if (isBlock) {
/* begin externalizeIPandSP */
@@ -12130,7 +12126,6 @@
isString = ClassByteStringCompactIndex == ccIndex;
goto l194;
- isString = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassByteString << (shiftForWord())))) == (classAtIndex(ccIndex));
l194: /* end is:instanceOf:compactClassIndex: */;
if (isString) {
/* begin lengthOf:format: */
@@ -12182,7 +12177,6 @@
isArray = ClassArrayCompactIndex == ccIndex1;
goto l196;
- isArray = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassArray << (shiftForWord())))) == (classAtIndex(ccIndex1));
l196: /* end is:instanceOf:compactClassIndex: */;
if (isArray) {
/* begin lengthOf:format: */
@@ -12277,7 +12271,6 @@
isBlock = ClassBlockClosureCompactIndex == ccIndex;
goto l199;
- isBlock = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassBlockClosure << (shiftForWord())))) == (classAtIndex(ccIndex));
l199: /* end is:instanceOf:compactClassIndex: */;
if (isBlock) {
/* begin externalizeIPandSP */
@@ -12328,7 +12321,6 @@
isBlock = ClassBlockClosureCompactIndex == ccIndex;
goto l201;
- isBlock = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassBlockClosure << (shiftForWord())))) == (classAtIndex(ccIndex));
l201: /* end is:instanceOf:compactClassIndex: */;
if (isBlock) {
/* begin externalizeIPandSP */
@@ -14189,7 +14181,7 @@
CogMethod *cogMethod;
sqInt methodField;
sqInt methodField1;
- sqInt theIP;
+ usqInt theIP;
assertl(GIV(stackPage) == (mostRecentlyUsedPage()), ln);
assertl(addressIsInPage(GIV(stackPage), lifp), ln);
@@ -14212,7 +14204,7 @@
theIP = lip;
}
assertl((theIP >= (methodField + (lastPointerOf(methodField))))
- && (theIP < (((methodField + (numBytesOf(methodField))) + BaseHeaderSize) - 1)), ln);
+ && (theIP < (((methodField + (numBytesOfBytes(methodField))) + BaseHeaderSize) - 1)), ln);
}
assertl((iframeIsBlockActivation(lifp))
|| ((pushedReceiverOrClosureOfFrame(lifp)) == (iframeReceiver(lifp))), ln);
@@ -14323,7 +14315,7 @@
theIP = longAt(theFP + FoxIFSavedIP);
}
assertl((theIP >= (methodObj + (lastPointerOf(methodObj))))
- && (theIP < (((methodObj + (numBytesOf(methodObj))) + BaseHeaderSize) - 1)), ln);
+ && (theIP < (((methodObj + (numBytesOfBytes(methodObj))) + BaseHeaderSize) - 1)), ln);
prevFrameWasCogged = 0;
}
theIP = ((usqInt)(longAt(theFP + FoxCallerSavedIP)));
@@ -22075,7 +22067,7 @@
int index;
sqInt methodField;
usqInt numArgs;
- sqInt numTemps;
+ usqInt numTemps;
char *rcvrAddress;
sqInt rcvrOrClosure;
sqInt theMethod;
@@ -22108,7 +22100,7 @@
numArgs = (cogMethod->cmNumArgs);
/* begin temporaryCountOfMethodHeader: */
header = (homeMethod->methodHeader);
- numTemps = (((usqInt) header) >> MethodHeaderTempCountShift) & 0x3F;
+ numTemps = ((sqInt) ((((usqInt) header) >> MethodHeaderTempCountShift) & 0x3F));
}
else {
theMethod = ((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
@@ -22128,7 +22120,7 @@
assert((((((CogMethod *) header2))->objectHeader)) == (nullHeaderForMachineCodeMethod()));
header1 = ((((CogMethod *) header2))->methodHeader);
}
- numTemps = (((usqInt) header1) >> MethodHeaderTempCountShift) & 0x3F;
+ numTemps = ((sqInt) ((((usqInt) header1) >> MethodHeaderTempCountShift) & 0x3F));
}
if (((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
? ((longAt(theFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0
@@ -24759,7 +24751,7 @@
}
return (theInstrPointer >= (((aMethod + (lastPointerOf(aMethod))) + BytesPerOop) - 1))
- && (theInstrPointer < (((aMethod + (numBytesOf(aMethod))) + BaseHeaderSize) - 1));
+ && (theInstrPointer < (((aMethod + (numBytesOfBytes(aMethod))) + BaseHeaderSize) - 1));
}
@@ -27222,7 +27214,6 @@
isString = ClassByteStringCompactIndex == ccIndex;
goto l2;
- isString = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassByteString << (shiftForWord())))) == (classAtIndex(ccIndex));
l2: /* end is:instanceOf:compactClassIndex: */;
if (!isString) {
if (oop != GIV(nilObj)) {
@@ -27309,7 +27300,6 @@
ok = ClassLargePositiveIntegerCompactIndex == ccIndex;
goto l1;
- ok = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassLargePositiveInteger << (shiftForWord())))) == (classAtIndex(ccIndex));
l1: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
if (ok) {
return 0;
@@ -27320,7 +27310,6 @@
ok = ClassLargeNegativeIntegerCompactIndex == ccIndex1;
goto l2;
- ok = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassLargeNegativeInteger << (shiftForWord())))) == (classAtIndex(ccIndex1));
l2: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
if (ok) {
return 1;
@@ -27409,7 +27398,7 @@
/* Convert the given object into an integer value.
- The object may be either a positive SmallInteger or a eight-byte
+ The object may be either a positive SmallInteger or an eight-byte
LargeInteger.
*/
@@ -27420,8 +27409,6 @@
sqInt ccIndex1;
sqInt fmt;
sqInt i;
- usqInt numBytes;
- usqInt numSlots;
sqInt ok;
sqInt smallIntValue;
sqInt sz;
@@ -27439,7 +27426,7 @@
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
- return null;
+ return 0;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!(isImmediate(oop)));
@@ -27447,7 +27434,6 @@
ok = ClassLargePositiveIntegerCompactIndex == ccIndex1;
goto l2;
- ok = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassLargePositiveInteger << (shiftForWord())))) == (classAtIndex(ccIndex1));
l2: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
if (!ok) {
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
@@ -27456,53 +27442,29 @@
ok = ClassLargeNegativeIntegerCompactIndex == ccIndex;
goto l1;
- ok = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassLargeNegativeInteger << (shiftForWord())))) == (classAtIndex(ccIndex));
l1: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
if (!ok) {
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
- return null;
+ return 0;
}
}
- /* begin numBytesOf: */
+ /* begin numBytesOfBytes: */
fmt = (((usqInt) (longAt(oop))) >> 24) & 0x1F;
- /* begin numSlotsOf: */
- flag("endianness");
- assert((classIndexOf(oop)) > (isForwardedObjectClassIndexPun()));
- numSlots = byteAt(oop + 7);
- numBytes = (numSlots == 0xFF
- ? longAt(oop - BaseHeaderSize)
- : numSlots);
- numBytes = numBytes << (shiftForWord());
- if (fmt >= 16) {
-
- /* bytes (the common case), including CompiledMethod */
-
- sz = numBytes - (fmt & 7);
- goto l3;
- }
- if (fmt <= 9) {
- sz = numBytes;
- goto l3;
- }
- if (fmt >= 12) {
- sz = numBytes - ((fmt & 3) << 1);
- goto l3;
- }
- sz = numBytes - ((fmt & 1) << 2);
-l3: /* end numBytesOf: */;
+ assert(fmt >= (firstByteFormat()));
+ sz = ((numSlotsOf(oop)) << (shiftForWord())) - (fmt & 7);
if (sz > (sizeof(sqLong))) {
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
- return null;
+ return 0;
}
- value = 0;
- for (i = 0; i < sz; i += 1) {
- value += (((sqLong) (byteAt((oop + BaseHeaderSize) + i)))) << (i * 8);
+ value = byteAt((oop + BaseHeaderSize) + (sz - 1));
+ for (i = (sz - 2); i >= 0; i += -1) {
+ value = (value << 8) + (byteAt((oop + BaseHeaderSize) + i));
}
return value;
}
@@ -27517,7 +27479,9 @@
positive32BitValueOf(sqInt oop)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt ccIndex;
+ sqInt fmt;
sqInt ok;
+ sqInt sz;
sqInt value;
if ((oop & 1)) {
@@ -27544,17 +27508,32 @@
ok = ClassLargePositiveIntegerCompactIndex == ccIndex;
goto l1;
- ok = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassLargePositiveInteger << (shiftForWord())))) == (classAtIndex(ccIndex));
l1: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- if (!(ok
- && ((lengthOfformat(oop, (((usqInt) (longAt(oop))) >> 24) & 0x1F)) == 4))) {
+ if (!ok) {
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
return 0;
}
- return (((byteAt((oop + BaseHeaderSize) + 0)) + ((byteAt((oop + BaseHeaderSize) + 1)) << 8)) + ((byteAt((oop + BaseHeaderSize) + 2)) << 16)) + ((byteAt((oop + BaseHeaderSize) + 3)) << 24);
+ /* begin numBytesOfBytes: */
+ fmt = (((usqInt) (longAt(oop))) >> 24) & 0x1F;
+ assert(fmt >= (firstByteFormat()));
+ sz = ((numSlotsOf(oop)) << (shiftForWord())) - (fmt & 7);
+ if (sz > 4) {
+ /* begin primitiveFail */
+ if (!GIV(primFailCode)) {
+ GIV(primFailCode) = 1;
+ }
+ return 0;
+ }
+ return
+# if VMBIGENDIAN
+ (((byteAt((oop + BaseHeaderSize) + 0)) + ((byteAt((oop + BaseHeaderSize) + 1)) << 8)) + ((byteAt((oop + BaseHeaderSize) + 2)) << 16)) + ((byteAt((oop + BaseHeaderSize) + 3)) << 24)
+# else /* VMBIGENDIAN */
+ long32At((oop + BaseHeaderSize) + (0 << 2))
+# endif /* VMBIGENDIAN */
+ ;
}
@@ -27567,6 +27546,7 @@
positive64BitValueOf(sqInt oop)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt ccIndex;
+ sqInt fmt;
sqInt i;
sqInt ok;
sqInt sz;
@@ -27595,16 +27575,25 @@
ok = ClassLargePositiveIntegerCompactIndex == ccIndex;
goto l1;
- ok = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassLargePositiveInteger << (shiftForWord())))) == (classAtIndex(ccIndex));
l1: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- if (!(ok
- && (((sz = numBytesOf(oop))) <= (sizeof(sqLong))))) {
+ if (!ok) {
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
return 0;
}
+ /* begin numBytesOfBytes: */
+ fmt = (((usqInt) (longAt(oop))) >> 24) & 0x1F;
+ assert(fmt >= (firstByteFormat()));
+ sz = ((numSlotsOf(oop)) << (shiftForWord())) - (fmt & 7);
+ if (sz > (sizeof(sqLong))) {
+ /* begin primitiveFail */
+ if (!GIV(primFailCode)) {
+ GIV(primFailCode) = 1;
+ }
+ return 0;
+ }
value = 0;
for (i = 0; i < sz; i += 1) {
value += (((usqLong) (byteAt((oop + BaseHeaderSize) + i)))) << (i * 8);
@@ -27625,6 +27614,7 @@
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt bs;
sqInt ccIndex;
+ sqInt fmt;
sqInt ok;
sqInt value;
@@ -27644,7 +27634,7 @@
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
- return null;
+ return 0;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!(isImmediate(oop)));
@@ -27652,21 +27642,44 @@
ok = ClassLargePositiveIntegerCompactIndex == ccIndex;
goto l1;
- ok = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassLargePositiveInteger << (shiftForWord())))) == (classAtIndex(ccIndex));
l1: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- if (!(ok
- && (((bs = numBytesOf(oop))) <= (sizeof(unsigned long))))) {
+ if (!ok) {
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
- return null;
+ return 0;
}
+ /* begin numBytesOfBytes: */
+ fmt = (((usqInt) (longAt(oop))) >> 24) & 0x1F;
+ assert(fmt >= (firstByteFormat()));
+ bs = ((numSlotsOf(oop)) << (shiftForWord())) - (fmt & 7);
+ if (bs > (sizeof(unsigned long))) {
+ /* begin primitiveFail */
+ if (!GIV(primFailCode)) {
+ GIV(primFailCode) = 1;
+ }
+ return 0;
+ }
if (((sizeof(unsigned long)) == 8)
&& (bs > 4)) {
- return (((((((byteAt((oop + BaseHeaderSize) + 0)) + ((byteAt((oop + BaseHeaderSize) + 1)) << 8)) + ((byteAt((oop + BaseHeaderSize) + 2)) << 16)) + ((byteAt((oop + BaseHeaderSize) + 3)) << 24)) + ((byteAt((oop + BaseHeaderSize) + 4)) << 32)) + ((byteAt((oop + BaseHeaderSize) + 5)) << 40)) + ((byteAt((oop + BaseHeaderSize) + 6)) << 48)) + ((byteAt((oop + BaseHeaderSize) + 7)) << 56);
+ return
+# if VMBIGENDIAN
+ (((((((byteAt((oop + BaseHeaderSize) + 0)) + ((byteAt((oop + BaseHeaderSize) + 1)) << 8)) + ((byteAt((oop + BaseHeaderSize) + 2)) << 16)) + ((byteAt((oop + BaseHeaderSize) + 3)) << 24)) + ((byteAt((oop + BaseHeaderSize) + 4)) << 32)) + ((byteAt((oop + BaseHeaderSize) + 5)) << 40)) + ((byteAt((oop + BaseHeaderSize) + 6)) << 48)) + ((byteAt((oop + BaseHeaderSize) + 7)) << 56)
+# else /* VMBIGENDIAN */
+ long64At((oop + BaseHeaderSize) + (0 << 3))
+# endif /* VMBIGENDIAN */
+ ;
}
- return (((byteAt((oop + BaseHeaderSize) + 0)) + ((byteAt((oop + BaseHeaderSize) + 1)) << 8)) + ((byteAt((oop + BaseHeaderSize) + 2)) << 16)) + ((byteAt((oop + BaseHeaderSize) + 3)) << 24);
+ else {
+ return
+# if VMBIGENDIAN
+ (((byteAt((oop + BaseHeaderSize) + 0)) + ((byteAt((oop + BaseHeaderSize) + 1)) << 8)) + ((byteAt((oop + BaseHeaderSize) + 2)) << 16)) + ((byteAt((oop + BaseHeaderSize) + 3)) << 24)
+# else /* VMBIGENDIAN */
+ long32At((oop + BaseHeaderSize) + (0 << 2))
+# endif /* VMBIGENDIAN */
+ ;
+ }
}
static void
@@ -28043,45 +28056,22 @@
GIV(stackPointer) = sp;
}
+
+/* N.B. This will answer inexact results for integers with > 53 bits of
+ magnitude.
+ */
+
static void
primitiveAsFloat(void)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt arg;
- sqInt integerPointer;
- sqInt object;
+ sqInt rcvr;
char *sp;
- sqInt top;
- /* begin popInteger */
- /* begin popStack */
- top = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- integerPointer = top;
- /* begin checkedIntegerValueOf: */
- if ((integerPointer & 1)) {
- arg = (integerPointer >> 1);
- goto l1;
- }
- else {
- /* begin primitiveFail */
- if (!GIV(primFailCode)) {
- GIV(primFailCode) = 1;
- }
- arg = 0;
- goto l1;
- }
-l1: /* end popInteger */;
- if (!GIV(primFailCode)) {
- /* begin pushFloat: */
- /* begin push: */
- object = floatObjectOf(((double) arg ));
- longAtput((sp = GIV(stackPointer) - BytesPerWord), object);
- GIV(stackPointer) = sp;
- }
- else {
- /* begin unPop: */
- GIV(stackPointer) -= 1 * BytesPerWord;
- }
+ rcvr = longAt(GIV(stackPointer));
+ assert((rcvr & 1));
+ /* begin pop:thenPushFloat: */
+ longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), floatObjectOf(((double) ((rcvr >> 1)) )));
+ GIV(stackPointer) = sp;
}
static void
@@ -29566,8 +29556,6 @@
primitiveClipboardText(void)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt fmt;
- usqInt numBytes;
- usqInt numSlots;
sqInt s;
char *sp;
sqInt sz;
@@ -29583,33 +29571,10 @@
return;
}
if (!GIV(primFailCode)) {
- /* begin numBytesOf: */
+ /* begin numBytesOfBytes: */
fmt = (((usqInt) (longAt(s))) >> 24) & 0x1F;
- /* begin numSlotsOf: */
- flag("endianness");
- assert((classIndexOf(s)) > (isForwardedObjectClassIndexPun()));
- numSlots = byteAt(s + 7);
- numBytes = (numSlots == 0xFF
- ? longAt(s - BaseHeaderSize)
- : numSlots);
- numBytes = numBytes << (shiftForWord());
- if (fmt >= 16) {
-
- /* bytes (the common case), including CompiledMethod */
-
- sz = numBytes - (fmt & 7);
- goto l1;
- }
- if (fmt <= 9) {
- sz = numBytes;
- goto l1;
- }
- if (fmt >= 12) {
- sz = numBytes - ((fmt & 3) << 1);
- goto l1;
- }
- sz = numBytes - ((fmt & 1) << 2);
- l1: /* end numBytesOf: */;
+ assert(fmt >= (firstByteFormat()));
+ sz = ((numSlotsOf(s)) << (shiftForWord())) - (fmt & 7);
clipboardWriteFromAt(sz, s + BaseHeaderSize, 0);
/* begin pop: */
GIV(stackPointer) += 1 * BytesPerWord;
@@ -30918,7 +30883,7 @@
sqInt arg;
sqInt fmt;
sqInt i;
- sqInt length;
+ usqInt length;
usqInt numBytes;
usqInt numSlots;
usqInt numSlots1;
@@ -30959,18 +30924,18 @@
/* bytes (the common case), including CompiledMethod */
- length = numBytes - (fmt & 7);
+ length = ((sqInt) (numBytes - (fmt & 7)));
goto l1;
}
if (fmt <= 9) {
- length = numBytes;
+ length = ((sqInt) numBytes);
goto l1;
}
if (fmt >= 12) {
- length = numBytes - ((fmt & 3) << 1);
+ length = ((sqInt) (numBytes - ((fmt & 3) << 1)));
goto l1;
}
- length = numBytes - ((fmt & 1) << 2);
+ length = ((sqInt) (numBytes - ((fmt & 1) << 2)));
l1: /* end numBytesOf: */;
if (!((((((usqInt) (longAt(rcvr))) >> 24) & 0x1F) == ((((usqInt) (longAt(arg))) >> 24) & 0x1F))
&& (length == (numBytesOf(arg))))) {
@@ -30988,9 +30953,9 @@
flag("endianness");
assert((classIndexOf(rcvr)) > (isForwardedObjectClassIndexPun()));
numSlots1 = byteAt(rcvr + 7);
- length = ((usqInt) ((numSlots1 == 0xFF
- ? longAt(rcvr - BaseHeaderSize)
- : numSlots1)));
+ length = (numSlots1 == 0xFF
+ ? longAt(rcvr - BaseHeaderSize)
+ : numSlots1);
if (!((isAppropriateForCopyObject(arg))
&& (length == (lengthOfformat(arg, (((usqInt) (longAt(arg))) >> 24) & 0x1F))))) {
(GIV(primFailCode) = PrimErrBadArgument);
@@ -31301,41 +31266,28 @@
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt integerArgument;
sqInt integerReceiver;
- sqInt object;
sqInt result;
char *sp;
- sqInt top;
- sqInt top1;
+ char *sp1;
- /* begin popStack */
- top = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- integerArgument = top;
- /* begin popStack */
- top1 = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- integerReceiver = top1;
- /* begin compare31or32Bits:equal: */
- if (((integerReceiver & 1))
- && ((integerArgument & 1))) {
- result = integerReceiver == integerArgument;
- goto l1;
- }
- result = (positive32BitValueOf(integerReceiver)) == (positive32BitValueOf(integerArgument));
-l1: /* end compare31or32Bits:equal: */;
- /* begin checkBooleanResult: */
- if (!GIV(primFailCode)) {
- /* begin pushBool: */
- /* begin push: */
- object = (result
+ integerArgument = longAt(GIV(stackPointer));
+ integerReceiver = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+ if (((integerReceiver & integerArgument) & 1) != 0) {
+ /* begin pop:thenPushBool: */
+ longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), (integerReceiver == integerArgument
? GIV(trueObj)
- : GIV(falseObj));
- longAtput((sp = GIV(stackPointer) - BytesPerWord), object);
+ : GIV(falseObj)));
GIV(stackPointer) = sp;
}
else {
- /* begin unPop: */
- GIV(stackPointer) -= 2 * BytesPerWord;
+ result = (positiveMachineIntegerValueOf(integerReceiver)) == (positiveMachineIntegerValueOf(integerArgument));
+ if (!GIV(primFailCode)) {
+ /* begin pop:thenPushBool: */
+ longAtput((sp1 = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), (result
+ ? GIV(trueObj)
+ : GIV(falseObj)));
+ GIV(stackPointer) = sp1;
+ }
}
}
@@ -33077,66 +33029,25 @@
primitiveGreaterOrEqual(void)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt integerArgument;
- sqInt integerPointer;
- sqInt integerPointer1;
sqInt integerReceiver;
- sqInt object;
char *sp;
- sqInt top;
- sqInt top1;
- /* begin popInteger */
- /* begin popStack */
- top = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- integerPointer = top;
- /* begin checkedIntegerValueOf: */
- if ((integerPointer & 1)) {
- integerArgument = (integerPointer >> 1);
- goto l1;
+ integerArgument = longAt(GIV(stackPointer));
+ integerReceiver = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+ if (((integerReceiver & integerArgument) & 1) != 0) {
+ ;
+ /* begin pop:thenPushBool: */
+ longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), (integerReceiver >= integerArgument
+ ? GIV(trueObj)
+ : GIV(falseObj)));
+ GIV(stackPointer) = sp;
}
else {
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
- integerArgument = 0;
- goto l1;
}
-l1: /* end popInteger */;
- /* begin popInteger */
- /* begin popStack */
- top1 = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- integerPointer1 = top1;
- /* begin checkedIntegerValueOf: */
- if ((integerPointer1 & 1)) {
- integerReceiver = (integerPointer1 >> 1);
- goto l2;
- }
- else {
- /* begin primitiveFail */
- if (!GIV(primFailCode)) {
- GIV(primFailCode) = 1;
- }
- integerReceiver = 0;
- goto l2;
- }
-l2: /* end popInteger */;
- /* begin checkBooleanResult: */
- if (!GIV(primFailCode)) {
- /* begin pushBool: */
- /* begin push: */
- object = (integerReceiver >= integerArgument
- ? GIV(trueObj)
- : GIV(falseObj));
- longAtput((sp = GIV(stackPointer) - BytesPerWord), object);
- GIV(stackPointer) = sp;
- }
- else {
- /* begin unPop: */
- GIV(stackPointer) -= 2 * BytesPerWord;
- }
}
@@ -33164,66 +33075,25 @@
primitiveGreaterThan(void)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt integerArgument;
- sqInt integerPointer;
- sqInt integerPointer1;
sqInt integerReceiver;
- sqInt object;
char *sp;
- sqInt top;
- sqInt top1;
- /* begin popInteger */
- /* begin popStack */
- top = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- integerPointer = top;
- /* begin checkedIntegerValueOf: */
- if ((integerPointer & 1)) {
@@ Diff output truncated at 50000 characters. @@
More information about the Vm-dev
mailing list