[Vm-dev] [commit][3234] CogVM source as per VMMaker.oscog-eem.1026
commits at squeakvm.org
commits at squeakvm.org
Fri Jan 23 01:06:19 UTC 2015
Revision: 3234
Author: eliot
Date: 2015-01-22 17:06:16 -0800 (Thu, 22 Jan 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1026
Fix type regression in primitiveBitShift due to 64-bits.
Reduce the max num literals in the alternate header format to 15, and steal
the bit for the Sista optimized method flag.
Spur: Optionalize some api methods the Spur Cogit doesn't use.
Modified Paths:
--------------
branches/Cog/nscogsrc/vm/cogit.c
branches/Cog/nscogsrc/vm/cogit.h
branches/Cog/nscogsrc/vm/cointerp.c
branches/Cog/nscogsrc/vm/cointerp.h
branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
branches/Cog/nsspursrc/vm/cogit.c
branches/Cog/nsspursrc/vm/cogit.h
branches/Cog/nsspursrc/vm/cointerp.c
branches/Cog/nsspursrc/vm/cointerp.h
branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
branches/Cog/nsspurstacksrc/vm/interp.c
branches/Cog/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/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/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c 2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nscogsrc/vm/cogit.c 2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ CCodeGenerator VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -9328,7 +9328,7 @@
cogMethod = ((CogMethod *) (roundUpLength((((sqInt)cogMethod)) + ((cogMethod->blockSize)))));
}
if ((((label = stringForCString("CCFree"))) == null)
- || (((value = positive32BitIntegerFor(freeStart()))) == null)) {
+ || (((value = positive32BitIntegerFor(mzFreeStart))) == null)) {
popRemappableOop();
return null;
}
Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h 2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nscogsrc/vm/cogit.h 2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ CCodeGenerator VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee
*/
Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c 2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nscogsrc/vm/cointerp.c 2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
from
- CoInterpreter VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ CoInterpreter VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -102,6 +102,7 @@
#define AllButRootBit 0xBFFFFFFFUL
#define AllButTypeMask 0xFFFFFFFCUL
#define AlternateHeaderHasPrimFlag 0x20000
+#define AlternateHeaderNumLiteralsMask 0x7FFF
#define AltLongStoreBytecode 234
#define AtCacheFixedFields 4
#define AtCacheFmt 3
@@ -1081,7 +1082,6 @@
static char * findSPOfon(char *theFP, StackPage *thePage) NoDbgRegParms;
static sqInt findUnwindThroughContext(sqInt homeContext) NoDbgRegParms;
double floatArg(sqInt index);
-sqInt followLiteralofMethod(sqInt offset, sqInt methodPointer);
sqInt forceInterruptCheck(void);
static char * frameCallerFP(char *theFP) NoDbgRegParms;
static char * frameCallerSavedIP(char *theFP) NoDbgRegParms;
@@ -2099,7 +2099,7 @@
/* 575 */ (void (*)(void))0,
0 };
char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1024";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1026";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -7963,7 +7963,7 @@
/* bytecodePrimBitShift */
{
sqInt integerArgument;
- usqInt integerReceiver;
+ sqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -10917,7 +10917,7 @@
/* bytecodePrimBitShift */
{
sqInt integerArgument;
- usqInt integerReceiver;
+ sqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -13493,7 +13493,7 @@
((((CogMethod *) header))->methodHeader)));
primitiveIndex = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -14471,7 +14471,7 @@
((((CogMethod *) header))->methodHeader)));
primitiveIndex = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -14543,7 +14543,7 @@
((((CogMethod *) header))->methodHeader)));
primitiveIndex = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -18420,7 +18420,7 @@
methodHeader = (cogMethod->methodHeader);
primitive = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -21190,7 +21190,7 @@
((((CogMethod *) header))->methodHeader)));
primIdx = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -22203,7 +22203,7 @@
((((CogMethod *) header))->methodHeader)));
primIdx = ((((sqInt) methodHeader1)) < 0
? (methodHeader1 & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader1 >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader1 >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader1 >> 1)),
@@ -24415,7 +24415,7 @@
primitiveBitShift(void)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt integerArgument;
- usqInt integerReceiver;
+ sqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -27750,7 +27750,7 @@
((((CogMethod *) header))->methodHeader)));
primIdx = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -30133,7 +30133,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
literalCount = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
size = ((literalCount + LiteralStart) * BytesPerOop) + bytecodeCount;
theMethod = instantiateClassindexableSize(class, size);
@@ -33703,7 +33703,7 @@
((((CogMethod *) header))->methodHeader)));
primIdx = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -35003,7 +35003,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l2: /* end lastPointerOf: */;
@@ -37264,7 +37264,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
return (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
}
@@ -37298,7 +37298,7 @@
{
assert((header & 1));
return ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
}
@@ -38194,7 +38194,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l4: /* end lastPointerOf: */;
@@ -39899,7 +39899,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l2: /* end lastPointerOf: */;
@@ -40550,7 +40550,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l2: /* end lastPointerOf: */;
@@ -40618,7 +40618,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l2: /* end lastPointerOf: */;
@@ -40770,7 +40770,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
lastField = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l2: /* end lastPointerOf: */;
@@ -41781,7 +41781,7 @@
((((CogMethod *) header1))->methodHeader)));
assert((header & 1));
return ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
}
@@ -42052,7 +42052,7 @@
/* begin literalCountOfMethodHeader: */
assert((header4 & 1));
numLiterals1 = ((((sqInt) header4)) < 0
- ? ((header4 >> 1)) & 0xFFFF
+ ? ((header4 >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header4) >> 10) & 0xFF);
lastFieldOffset = (((numLiterals1 + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l7: /* end lastPointerOf:recordWeakRoot: */;
@@ -42192,7 +42192,7 @@
/* begin literalCountOfMethodHeader: */
assert((header3 & 1));
numLiterals = ((((sqInt) header3)) < 0
- ? ((header3 >> 1)) & 0xFFFF
+ ? ((header3 >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header3) >> 10) & 0xFF);
lastFieldOffset1 = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l5: /* end lastPointerOf:recordWeakRoot: */;
@@ -43102,7 +43102,7 @@
/* begin literalCountOfMethodHeader: */
assert((header3 & 1));
numLiterals = ((((sqInt) header3)) < 0
- ? ((header3 >> 1)) & 0xFFFF
+ ? ((header3 >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header3) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l3: /* end lastPointerWhileForwarding: */;
@@ -43280,7 +43280,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l3: /* end lastPointerWhileForwarding: */;
@@ -43596,7 +43596,7 @@
primitiveIndex = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -46118,13 +46118,7 @@
return 0.0;
}
-sqInt
-followLiteralofMethod(sqInt offset, sqInt methodPointer)
-{
- return longAt((methodPointer + BaseHeaderSize) + ((offset + LiteralStart) << (shiftForWord())));
-}
-
/* Force an interrupt check ASAP.
Must set the stack page's limit before stackLimit to avoid
a race condition if this is called from an interrupt handler. */
@@ -48423,7 +48417,7 @@
((((CogMethod *) header))->methodHeader)));
return ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -48788,7 +48782,7 @@
return ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -48814,7 +48808,7 @@
((((CogMethod *) header))->methodHeader)));
return ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (methodPointer + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (methodPointer + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -54209,7 +54203,7 @@
&& (((lengthOf(spec)) == 4)
&& ((((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (methodArg + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (methodArg + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -54574,7 +54568,7 @@
((((CogMethod *) header))->methodHeader)));
primitiveIndex = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -54668,7 +54662,7 @@
((((CogMethod *) header2))->methodHeader)));
primitiveIndex = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h 2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nscogsrc/vm/cointerp.h 2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
*/
@@ -220,7 +220,6 @@
sqInt checkOkayInterpreterObjects(sqInt writeBack);
sqInt copiedValueCountOfClosure(sqInt closurePointer);
sqInt doSignalSemaphoreWithIndex(sqInt index);
-sqInt followLiteralofMethod(sqInt offset, sqInt methodPointer);
void (*functionPointerForinClass(sqInt primIdx,sqInt theClass))(void) ;
usqLong getNextWakeupUsecs(void);
sqInt * getStackPointer(void);
Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2015-01-23 01:06:16 UTC (rev 3234)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
from
- CoInterpreter VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ CoInterpreter VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -105,6 +105,7 @@
#define AllButRootBit 0xBFFFFFFFUL
#define AllButTypeMask 0xFFFFFFFCUL
#define AlternateHeaderHasPrimFlag 0x20000
+#define AlternateHeaderNumLiteralsMask 0x7FFF
#define AltLongStoreBytecode 234
#define AtCacheFixedFields 4
#define AtCacheFmt 3
@@ -1084,7 +1085,6 @@
static char * findSPOfon(char *theFP, StackPage *thePage) NoDbgRegParms;
static sqInt findUnwindThroughContext(sqInt homeContext) NoDbgRegParms;
double floatArg(sqInt index);
-sqInt followLiteralofMethod(sqInt offset, sqInt methodPointer);
sqInt forceInterruptCheck(void);
static char * frameCallerFP(char *theFP) NoDbgRegParms;
static char * frameCallerSavedIP(char *theFP) NoDbgRegParms;
@@ -2102,7 +2102,7 @@
/* 575 */ (void (*)(void))0,
0 };
char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1024";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1026";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -7972,7 +7972,7 @@
/* bytecodePrimBitShift */
{
sqInt integerArgument;
- usqInt integerReceiver;
+ sqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -10926,7 +10926,7 @@
/* bytecodePrimBitShift */
{
sqInt integerArgument;
- usqInt integerReceiver;
+ sqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -13502,7 +13502,7 @@
((((CogMethod *) header))->methodHeader)));
primitiveIndex = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -14480,7 +14480,7 @@
((((CogMethod *) header))->methodHeader)));
primitiveIndex = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -14552,7 +14552,7 @@
((((CogMethod *) header))->methodHeader)));
primitiveIndex = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -18429,7 +18429,7 @@
methodHeader = (cogMethod->methodHeader);
primitive = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -21199,7 +21199,7 @@
((((CogMethod *) header))->methodHeader)));
primIdx = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -22212,7 +22212,7 @@
((((CogMethod *) header))->methodHeader)));
primIdx = ((((sqInt) methodHeader1)) < 0
? (methodHeader1 & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader1 >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (oldMethod + ((LiteralStart + (((methodHeader1 >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader1 >> 1)),
@@ -24424,7 +24424,7 @@
primitiveBitShift(void)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt integerArgument;
- usqInt integerReceiver;
+ sqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -27759,7 +27759,7 @@
((((CogMethod *) header))->methodHeader)));
primIdx = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -30142,7 +30142,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
literalCount = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
size = ((literalCount + LiteralStart) * BytesPerOop) + bytecodeCount;
theMethod = instantiateClassindexableSize(class, size);
@@ -33712,7 +33712,7 @@
((((CogMethod *) header))->methodHeader)));
primIdx = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (oop1 + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -35012,7 +35012,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l2: /* end lastPointerOf: */;
@@ -37273,7 +37273,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
return (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
}
@@ -37307,7 +37307,7 @@
{
assert((header & 1));
return ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
}
@@ -38203,7 +38203,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l4: /* end lastPointerOf: */;
@@ -39908,7 +39908,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l2: /* end lastPointerOf: */;
@@ -40559,7 +40559,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l2: /* end lastPointerOf: */;
@@ -40627,7 +40627,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l2: /* end lastPointerOf: */;
@@ -40779,7 +40779,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
lastField = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l2: /* end lastPointerOf: */;
@@ -41790,7 +41790,7 @@
((((CogMethod *) header1))->methodHeader)));
assert((header & 1));
return ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
}
@@ -42061,7 +42061,7 @@
/* begin literalCountOfMethodHeader: */
assert((header4 & 1));
numLiterals1 = ((((sqInt) header4)) < 0
- ? ((header4 >> 1)) & 0xFFFF
+ ? ((header4 >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header4) >> 10) & 0xFF);
lastFieldOffset = (((numLiterals1 + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l7: /* end lastPointerOf:recordWeakRoot: */;
@@ -42201,7 +42201,7 @@
/* begin literalCountOfMethodHeader: */
assert((header3 & 1));
numLiterals = ((((sqInt) header3)) < 0
- ? ((header3 >> 1)) & 0xFFFF
+ ? ((header3 >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header3) >> 10) & 0xFF);
lastFieldOffset1 = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l5: /* end lastPointerOf:recordWeakRoot: */;
@@ -43111,7 +43111,7 @@
/* begin literalCountOfMethodHeader: */
assert((header3 & 1));
numLiterals = ((((sqInt) header3)) < 0
- ? ((header3 >> 1)) & 0xFFFF
+ ? ((header3 >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header3) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l3: /* end lastPointerWhileForwarding: */;
@@ -43289,7 +43289,7 @@
/* begin literalCountOfMethodHeader: */
assert((header & 1));
numLiterals = ((((sqInt) header)) < 0
- ? ((header >> 1)) & 0xFFFF
+ ? ((header >> 1)) & AlternateHeaderNumLiteralsMask
: (((usqInt) header) >> 10) & 0xFF);
fieldOffset = (((numLiterals + LiteralStart) - 1) * BytesPerOop) + BaseHeaderSize;
l3: /* end lastPointerWhileForwarding: */;
@@ -43605,7 +43605,7 @@
primitiveIndex = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -46127,13 +46127,7 @@
return 0.0;
}
-sqInt
-followLiteralofMethod(sqInt offset, sqInt methodPointer)
-{
- return longAt((methodPointer + BaseHeaderSize) + ((offset + LiteralStart) << (shiftForWord())));
-}
-
/* Force an interrupt check ASAP.
Must set the stack page's limit before stackLimit to avoid
a race condition if this is called from an interrupt handler. */
@@ -48432,7 +48426,7 @@
((((CogMethod *) header))->methodHeader)));
return ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -48797,7 +48791,7 @@
return ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (theMethod + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -48823,7 +48817,7 @@
((((CogMethod *) header))->methodHeader)));
return ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (methodPointer + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (methodPointer + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -54218,7 +54212,7 @@
&& (((lengthOf(spec)) == 4)
&& ((((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (methodArg + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (methodArg + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -54583,7 +54577,7 @@
((((CogMethod *) header))->methodHeader)));
primitiveIndex = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
@@ -54677,7 +54671,7 @@
((((CogMethod *) header2))->methodHeader)));
primitiveIndex = ((((sqInt) methodHeader)) < 0
? (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0)
: ((primBits = (methodHeader >> 1)),
Modified: branches/Cog/nsspursrc/vm/cogit.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.c 2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nsspursrc/vm/cogit.c 2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ CCodeGenerator VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -9286,7 +9286,7 @@
cogMethod = ((CogMethod *) (roundUpLength((((sqInt)cogMethod)) + ((cogMethod->blockSize)))));
}
if ((((label = stringForCString("CCFree"))) == null)
- || (((value = positive32BitIntegerFor(freeStart()))) == null)) {
+ || (((value = positive32BitIntegerFor(mzFreeStart))) == null)) {
popRemappableOop();
return null;
}
Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h 2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nsspursrc/vm/cogit.h 2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ CCodeGenerator VMMaker.oscog-eem.1025 uuid: 1a29f456-a8e2-4312-a391-8e2cdb0430ee
*/
Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c 2015-01-20 20:28:27 UTC (rev 3233)
+++ branches/Cog/nsspursrc/vm/cointerp.c 2015-01-23 01:06:16 UTC (rev 3234)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
from
- CoInterpreter VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e
+ CoInterpreter VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1024 uuid: f6cf904e-36ea-4109-a415-b8564601d19e " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1026 uuid: 58161d66-0b23-4356-89f1-8e951fd1a1d9 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -128,6 +128,7 @@
/*** Constants ***/
#define ActiveProcessIndex 1
#define AlternateHeaderHasPrimFlag 0x20000
+#define AlternateHeaderNumLiteralsMask 0x7FFF
#define AltLongStoreBytecode 234
#define AtCacheFixedFields 4
#define AtCacheFmt 3
@@ -406,7 +407,6 @@
void callForCogCompiledCodeCompaction(void);
static void callRegisterArgCogMethodatreceiver(CogMethod *cogMethod, sqInt entryOffset, sqInt rcvr) NoDbgRegParms;
void ceActivateFailingPrimitiveMethod(sqInt aPrimitiveMethod);
-sqInt ceActiveContext(void);
sqInt ceBaseFrameReturn(sqInt returnValue);
sqInt ceCannotResume(void);
sqInt ceCheckForAndFollowForwardedPrimitiveState(void);
@@ -418,7 +418,6 @@
sqInt ceEnclosingObjectAt(sqInt level);
sqInt ceInterpretMethodFromPICreceiver(sqInt aMethodObj, sqInt rcvr);
sqInt ceMNUFromPICMNUMethodreceiver(sqInt aMethodObj, sqInt rcvr);
-sqInt ceNewArraySlotSize(sqInt slotSize);
sqInt ceNonLocalReturn(sqInt returnValue);
sqInt ceReturnToInterpreter(sqInt anOop);
sqInt ceSendAborttonumArgs(sqInt selector, sqInt rcvr, sqInt numArgs);
@@ -439,7 +438,6 @@
static void commenceCogCompiledCodeCompaction(void);
void compilationBreakpointFor(sqInt selectorOop);
static sqInt contextInstructionPointerframe(sqInt theIP, char *theFP) NoDbgRegParms;
-sqInt createClosureNumArgsnumCopiedstartpc(sqInt numArgs, sqInt numCopied, sqInt initialIP);
static sqInt defaultCogCodeSize(void);
static sqInt deferStackLimitSmashAroundwith(void (*functionSymbol)(sqInt), sqInt arg) NoDbgRegParms;
static sqInt divorceAMachineCodeFrameWithCogMethodin(CogMethod *cogMethod, StackPage *aStackPage) NoDbgRegParms;
@@ -1272,7 +1270,6 @@
static sqInt findUnwindThroughContext(sqInt homeContext) NoDbgRegParms;
double floatArg(sqInt index);
static void followForwardedFrameContentsstackPointer(char *theFP, char *theSP) NoDbgRegParms;
-sqInt followLiteralofMethod(sqInt offset, sqInt methodPointer);
sqInt forceInterruptCheck(void);
static char * frameCallerFP(char *theFP) NoDbgRegParms;
static char * frameCallerSavedIP(char *theFP) NoDbgRegParms;
@@ -1532,8 +1529,8 @@
_iss StackPage * stackPage;
_iss sqInt specialObjectsOop;
_iss sqInt bytecodeSetSelector;
-_iss usqInt freeStart;
_iss sqInt argumentCount;
+_iss usqInt freeStart;
_iss sqInt markStack;
_iss usqInt instructionPointer;
_iss usqInt newMethod;
@@ -1546,8 +1543,8 @@
_iss sqInt weaklingStack;
_iss usqInt newSpaceStart;
_iss SpurSegmentInfo * segments;
-_iss sqInt needGCFlag;
_iss sqInt trueObj;
+_iss sqInt needGCFlag;
_iss sqInt falseObj;
_iss usqInt totalFreeOldSpace;
_iss sqInt bytesPerPage;
@@ -2353,7 +2350,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.1024";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1026";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -8900,7 +8897,7 @@
/* bytecodePrimBitShift */
{
sqInt integerArgument;
- usqInt integerReceiver;
+ sqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -11646,7 +11643,7 @@
/* bytecodePrimBitShift */
{
sqInt integerArgument;
- usqInt integerReceiver;
+ sqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -14780,7 +14777,7 @@
assert((((((CogMethod *) header))->objectHeader)) == (nullHeaderForMachineCodeMethod())),
((((CogMethod *) header))->methodHeader)));
primitiveIndex = (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (GIV(newMethod) + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0);
/* begin functionPointerFor:inClass: */
@@ -15293,19 +15290,6 @@
}
-/* Since the trampoline checks for marriage we should only be here for a
- single frame.
- */
-
-sqInt
-ceActiveContext(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- assert(isMachineCodeFrame(GIV(framePointer)));
- assert(!(frameHasContext(GIV(framePointer))));
- return marryFrameSP(GIV(framePointer), GIV(stackPointer) + BytesPerWord);
-}
-
-
/* Return across a page boundary. The context to return to (which may be
married) is stored in the first word of the stack. We get here when a
return instruction jumps
@@ -15835,7 +15819,7 @@
assert((((((CogMethod *) header))->objectHeader)) == (nullHeaderForMachineCodeMethod())),
((((CogMethod *) header))->methodHeader)));
primitiveIndex = (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0);
/* begin functionPointerFor:inClass: */
@@ -15897,7 +15881,7 @@
assert((((((CogMethod *) header))->objectHeader)) == (nullHeaderForMachineCodeMethod())),
((((CogMethod *) header))->methodHeader)));
primitiveIndex = (methodHeader & AlternateHeaderHasPrimFlag
- ? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & 0xFFFF)) * BytesPerOop)) + BaseHeaderSize),
+ ? ((firstBytecode = (aMethodObj + ((LiteralStart + (((methodHeader >> 1)) & AlternateHeaderNumLiteralsMask)) * BytesPerOop)) + BaseHeaderSize),
(byteAt(firstBytecode + 1)) + ((byteAt(firstBytecode + 2)) << 8))
: 0);
/* begin functionPointerFor:inClass: */
@@ -15911,53 +15895,6 @@
}
sqInt
-ceNewArraySlotSize(sqInt slotSize)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt newObj;
- usqInt numBytes;
- sqInt obj;
- usqInt p;
-
- /* begin eeInstantiateSmallClassIndex:format:numSlots: */
- assert((slotSize >= 0)
- && (ClassArrayCompactIndex != 0));
- assert((2) == (instSpecOfClass(knownClassAtIndex(ClassArrayCompactIndex))));
- /* begin allocateSmallNewSpaceSlots:format:classIndex: */
- assert(slotSize < (numSlotsMask()));
- newObj = GIV(freeStart);
- numBytes = BaseHeaderSize + ((slotSize <= 1
- ? 8
- : (slotSize + (slotSize & 1)) * BytesPerOop));
- assert((numBytes % (allocationUnit())) == 0);
- assert((newObj % (allocationUnit())) == 0);
- if ((GIV(freeStart) + numBytes) > GIV(scavengeThreshold)) {
- if (!GIV(needGCFlag)) {
- /* begin scheduleScavenge */
- GIV(needGCFlag) = 1;
- forceInterruptCheck();
- }
- if ((GIV(freeStart) + numBytes) > (((eden()).limit))) {
- error("no room in eden for allocateSmallNewSpaceSlots:format:classIndex:");
- obj = 0;
- goto l1;
- }
- }
- long64Atput(newObj, (((((usqLong) slotSize)) << 56) + (2 << 24)) + ClassArrayCompactIndex);
- GIV(freeStart) += numBytes;
- obj = newObj;
-l1: /* end allocateSmallNewSpaceSlots:format:classIndex: */;
- /* begin fillObj:numSlots:with: */
- assert(oopisLessThan(((obj + BaseHeaderSize) + (slotSize * BytesPerOop)) - 1, addressAfter(obj)));
- for (p = (((usqInt)(obj + BaseHeaderSize))); p <= (((usqInt)(((obj + BaseHeaderSize) + (slotSize * BytesPerOop)) - 1))); p += 8) {
- longAtput(p, GIV(nilObj));
- longAtput(p + 4, GIV(nilObj));
- }
- return obj;
-
- return eeInstantiateAndInitializeClassindexableSize(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassArray << (shiftForWord()))), slotSize);
-}
-
-sqInt
ceNonLocalReturn(sqInt returnValue)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt callerContextOrNil;
@@ -17220,98 +17157,7 @@
: theIP)) - (longAt(theFP + FoxMethod))) - BaseHeaderSize) + 2) << 1) | 1);
}
-sqInt
-createClosureNumArgsnumCopiedstartpc(sqInt numArgs, sqInt numCopied, sqInt initialIP)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt classObj;
- sqInt context;
- sqInt i;
- sqInt newClosure;
- sqInt newClosure1;
- sqInt newObj;
- sqInt newObj1;
- usqInt numBytes;
- usqInt numBytes1;
- sqInt objFormat;
- char *theSP;
- assert(isMachineCodeFrame(GIV(framePointer)));
- /* begin ensureFrameIsMarried:SP: */
- theSP = GIV(stackPointer) + ((1 + numCopied) * BytesPerWord);
- if (((((usqInt)(longAt(GIV(framePointer) + FoxMethod)))) < (startOfMemory())
- ? ((longAt(GIV(framePointer) + FoxMethod)) & MFMethodFlagHasContextFlag) != 0
- : (byteAt((GIV(framePointer) + FoxIFrameFlags) + 2)) != 0)) {
- assert(isContext(frameContext(GIV(framePointer))));
- context = longAt(GIV(framePointer) + FoxThisContext);
- goto l1;
- }
- context = marryFrameSP(GIV(framePointer), theSP);
-l1: /* end ensureFrameIsMarried:SP: */;
- /* begin closureIn:numArgs:instructionPointer:numCopiedValues: */
- /* begin eeInstantiateSmallClassIndex:format:numSlots: */
- assert(((ClosureFirstCopiedValueIndex + numCopied) >= 0)
- && (ClassBlockClosureCompactIndex != 0));
- assert((3) == (instSpecOfClass(knownClassAtIndex(ClassBlockClosureCompactIndex))));
- /* begin allocateSmallNewSpaceSlots:format:classIndex: */
- assert((ClosureFirstCopiedValueIndex + numCopied) < (numSlotsMask()));
- newObj = GIV(freeStart);
- numBytes = BaseHeaderSize + (((ClosureFirstCopiedValueIndex + numCopied) <= 1
- ? 8
- : ((ClosureFirstCopiedValueIndex + numCopied) + ((ClosureFirstCopiedValueIndex + numCopied) & 1)) * BytesPerOop));
- assert((numBytes % (allocationUnit())) == 0);
- assert((newObj % (allocationUnit())) == 0);
- if ((GIV(freeStart) + numBytes) > GIV(scavengeThreshold)) {
- if (!GIV(needGCFlag)) {
- /* begin scheduleScavenge */
- GIV(needGCFlag) = 1;
- forceInterruptCheck();
- }
- if ((GIV(freeStart) + numBytes) > (((eden()).limit))) {
- error("no room in eden for allocateSmallNewSpaceSlots:format:classIndex:");
- newClosure1 = 0;
- goto l2;
- }
- }
- long64Atput(newObj, (((((usqLong) (ClosureFirstCopiedValueIndex + numCopied))) << 56) + (3 << 24)) + ClassBlockClosureCompactIndex);
- GIV(freeStart) += numBytes;
- newClosure1 = newObj;
-l2: /* end allocateSmallNewSpaceSlots:format:classIndex: */;
-
- /* begin storePointerUnchecked:ofObject:withValue: */
- assert(!(isForwarded(newClosure1)));
- longAtput((newClosure1 + BaseHeaderSize) + (ClosureOuterContextIndex << (shiftForWord())), context);
- /* begin storePointerUnchecked:ofObject:withValue: */
- assert(!(isForwarded(newClosure1)));
- longAtput((newClosure1 + BaseHeaderSize) + (ClosureStartPCIndex << (shiftForWord())), ((initialIP << 1) | 1));
- /* begin storePointerUnchecked:ofObject:withValue: */
- assert(!(isForwarded(newClosure1)));
- longAtput((newClosure1 + BaseHeaderSize) + (ClosureNumArgsIndex << (shiftForWord())), ((numArgs << 1) | 1));
- newClosure = newClosure1;
- if (recordSendTrace()) {
- /* begin recordTrace:thing:source: */
- GIV(traceLog)[GIV(traceLogIndex)] = TraceBlockCreation;
- GIV(traceLog)[GIV(traceLogIndex) + 1] = newClosure;
- GIV(traceLog)[GIV(traceLogIndex) + 2] = TraceIsFromMachineCode;
- GIV(traceLogIndex) = (GIV(traceLogIndex) + 3) % TraceBufferSize;
- }
- if (numCopied > 0) {
-
- /* N.B. the expression ((numCopied - i) * BytesPerWord)) skips the return address */
-
- for (i = 0; i < numCopied; i += 1) {
-
- /* Assume: have just allocated a new BlockClosure; it must be young.
- Thus, can use unchecked stores. */
-
- /* begin storePointerUnchecked:ofObject:withValue: */
- assert(!(isForwarded(newClosure)));
- longAtput((newClosure + BaseHeaderSize) + ((i + ClosureFirstCopiedValueIndex) << (shiftForWord())), longAt(GIV(stackPointer) + ((numCopied - i) * BytesPerWord)));
- }
- }
- return newClosure;
-}
-
-
/* Return the default number of bytes to allocate for native code at startup.
The actual value can be set via vmParameterAt: and/or a preference in the
ini file. */
@@ -19489,7 +19335,7 @@
((((CogMethod *) header1))->methodHeader)));
/* begin literalCountOfMethodHeader: */
assert((header & 1));
- numLiterals = ((header >> 1)) & 0xFFFF;
+ numLiterals = ((header >> 1)) & AlternateHeaderNumLiteralsMask;
numStrongSlots = numLiterals + LiteralStart;
l9: /* end numStrongSlotsOfInephemeral: */;
scanLargeObject = numStrongSlots > 64;
@@ -19768,7 +19614,7 @@
((((CogMethod *) header11))->methodHeader)));
/* begin literalCountOfMethodHeader: */
assert((header2 & 1));
- numLiterals1 = ((header2 >> 1)) & 0xFFFF;
+ numLiterals1 = ((header2 >> 1)) & AlternateHeaderNumLiteralsMask;
numStrongSlots1 = numLiterals1 + LiteralStart;
l12: /* end numStrongSlotsOfInephemeral: */;
@@ Diff output truncated at 50000 characters. @@
More information about the Vm-dev
mailing list