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. @@
vm-dev@lists.squeakfoundation.org