Revision: 3739 Author: eliot Date: 2016-06-07 15:35:56 -0700 (Tue, 07 Jun 2016) Log Message: ----------- CogVM source as per VMMaker.oscog-eem.1885 Fix multiple bytecode set selection in the Spur 64-bit VM, which must use signedIntFromLong64 to test for a negative header. Modified Paths: -------------- branches/Cog/nsspur64src/vm/cogit.h branches/Cog/nsspur64src/vm/cogitX64.c branches/Cog/nsspur64src/vm/cointerp.c branches/Cog/nsspur64src/vm/cointerp.h branches/Cog/nsspur64src/vm/gcc3x-cointerp.c branches/Cog/nsspursrc/vm/cogit.h branches/Cog/nsspursrc/vm/cogitARMv5.c branches/Cog/nsspursrc/vm/cogitIA32.c branches/Cog/nsspursrc/vm/cogitMIPSEL.c branches/Cog/nsspursrc/vm/cointerp.c branches/Cog/nsspursrc/vm/cointerp.h branches/Cog/nsspursrc/vm/gcc3x-cointerp.c branches/Cog/nsspurstack64src/vm/gcc3x-interp.c branches/Cog/nsspurstack64src/vm/interp.c branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c branches/Cog/nsspurstacksrc/vm/interp.c branches/Cog/spur64src/vm/cogit.h branches/Cog/spur64src/vm/cogitX64.c branches/Cog/spur64src/vm/cointerp.c branches/Cog/spur64src/vm/cointerp.h branches/Cog/spur64src/vm/gcc3x-cointerp.c branches/Cog/spursistasrc/vm/cogit.h branches/Cog/spursistasrc/vm/cogitARMv5.c branches/Cog/spursistasrc/vm/cogitIA32.c branches/Cog/spursistasrc/vm/cogitMIPSEL.c branches/Cog/spursistasrc/vm/cointerp.c branches/Cog/spursistasrc/vm/cointerp.h branches/Cog/spursistasrc/vm/gcc3x-cointerp.c branches/Cog/spursrc/vm/cogit.h branches/Cog/spursrc/vm/cogitARMv5.c branches/Cog/spursrc/vm/cogitIA32.c branches/Cog/spursrc/vm/cogitMIPSEL.c branches/Cog/spursrc/vm/cointerp.c branches/Cog/spursrc/vm/cointerp.h branches/Cog/spursrc/vm/gcc3x-cointerp.c branches/Cog/spurstack64src/vm/gcc3x-interp.c branches/Cog/spurstack64src/vm/interp.c branches/Cog/spurstacksrc/vm/gcc3x-interp.c branches/Cog/spurstacksrc/vm/interp.c branches/Cog/src/vm/cogit.h branches/Cog/src/vm/cogitARMv5.c branches/Cog/src/vm/cogitIA32.c branches/Cog/src/vm/cogitMIPSEL.c branches/Cog/src/vm/cointerp.c branches/Cog/src/vm/cointerp.h branches/Cog/src/vm/cointerpmt.c branches/Cog/src/vm/cointerpmt.h branches/Cog/src/vm/gcc3x-cointerp.c branches/Cog/src/vm/gcc3x-cointerpmt.c branches/Cog/stacksrc/vm/gcc3x-interp.c branches/Cog/stacksrc/vm/interp.c Property Changed: ---------------- branches/Cog/platforms/Cross/vm/sqSCCSVersion.h Modified: branches/Cog/nsspur64src/vm/cogit.h =================================================================== --- branches/Cog/nsspur64src/vm/cogit.h 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspur64src/vm/cogit.h 2016-06-07 22:35:56 UTC (rev 3739) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGenerator VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ Modified: branches/Cog/nsspur64src/vm/cogitX64.c =================================================================== --- branches/Cog/nsspur64src/vm/cogitX64.c 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspur64src/vm/cogitX64.c 2016-06-07 22:35:56 UTC (rev 3739) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGenerator VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 from - StackToRegisterMappingCogit VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + StackToRegisterMappingCogit VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 " __DATE__ ; char *__cogitBuildInfo = __buildInfo; @@ -602,7 +602,7 @@ static AbstractInstruction * NoDbgRegParms gMoveCwR(sqInt wordConstant, sqInt reg); static AbstractInstruction * NoDbgRegParms gMoveRMwr(sqInt sourceReg, sqInt offset, sqInt baseReg); static AbstractInstruction * NoDbgRegParms gMoveRR(sqInt reg1, sqInt reg2); -static usqInt NoDbgRegParms mapEndFor(CogMethod *cogMethod); +static sqInt NoDbgRegParms mapEndFor(CogMethod *cogMethod); static sqInt NoDbgRegParms mapForperformUntilarg(CogMethod *cogMethod, sqInt (*functionSymbol)(sqInt annotation, char *mcpc, sqInt arg), sqInt arg); static sqInt NoDbgRegParms mapObjectReferencesInClosedPIC(CogMethod *cPIC); static void mapObjectReferencesInGeneratedRuntime(void); @@ -2799,7 +2799,7 @@ sqInt byte; BytecodeDescriptor *descriptor; sqInt distance; - sqInt endbcpc; + usqInt endbcpc; CogMethod *homeMethod; sqInt isBackwardBranch; sqInt isInBlock; @@ -5954,12 +5954,12 @@ generateMapAtstart(sqInt addressOrNull, sqInt startAddress) { unsigned char annotation; - sqInt delta; + usqInt delta; sqInt i; AbstractInstruction *instruction; sqInt length; - sqInt location; - sqInt mapEntry; + usqInt location; + usqInt mapEntry; sqInt maxDelta; usqInt mcpc; @@ -7175,7 +7175,7 @@ /* Answer the address of the null byte at the end of the method map. */ /* Cogit>>#mapEndFor: */ -static usqInt NoDbgRegParms +static sqInt NoDbgRegParms mapEndFor(CogMethod *cogMethod) { usqInt end; @@ -8237,7 +8237,7 @@ sqInt byte; BytecodeDescriptor *descriptor; sqInt distance; - sqInt endbcpc; + usqInt endbcpc; CogMethod *homeMethod; sqInt isBackwardBranch; sqInt isInBlock; @@ -23169,7 +23169,7 @@ CogBlockMethod *cogMethod1; BytecodeDescriptor *descriptor; sqInt distance; - sqInt endbcpc; + usqInt endbcpc; sqInt errCode; CogMethod *homeMethod; sqInt isBackwardBranch; Modified: branches/Cog/nsspur64src/vm/cointerp.c =================================================================== --- branches/Cog/nsspur64src/vm/cointerp.c 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspur64src/vm/cointerp.c 2016-06-07 22:35:56 UTC (rev 3739) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 from - CoInterpreter VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CoInterpreter VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -892,6 +892,7 @@ static sqInt NoDbgRegParms fetchLong32ofFloatObject(sqInt fieldIndex, sqInt oop); extern sqInt floatObjectOf(double aFloat); extern double floatValueOf(sqInt oop); +extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); static sqInt NoDbgRegParms initFreeChunkWithBytesat(usqLong numBytes, sqInt address); static void NoDbgRegParms initSegmentBridgeWithBytesat(usqLong numBytes, sqInt address); extern sqInt instantiateClassindexableSize(sqInt classObj, usqInt nElements); @@ -1383,7 +1384,6 @@ static sqInt NoDbgRegParms handleSpecialSelectorSendFaultForfpsp(sqInt obj, char *theFP, char *theSP); static void handleStackOverflow(void); static sqInt NoDbgRegParms handleStackOverflowOrEventAllowContextSwitch(sqInt mayContextSwitch); -extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); extern usqInt highBit(usqInt anUnsignedValue); static sqInt NoDbgRegParms ifCurrentStackPageHasValidHeadPointers(StackPage *thePage); static usqInt NoDbgRegParms iframeMethod(char *theFP); @@ -2452,7 +2452,7 @@ }; sqInt checkedPluginName; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1883"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1885"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -6038,7 +6038,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -6064,7 +6064,7 @@ with a long store temp. Strictly no need to skip the store because it's effectively a noop. */ localIP += 3; if (GIV(primFailCode) != 0) { - if ((byteAt(localIP + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(localIP + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -13047,7 +13047,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -13073,7 +13073,7 @@ with a long store temp. Strictly no need to skip the store because it's effectively a noop. */ localIP += 3; if (GIV(primFailCode) != 0) { - if ((byteAt(localIP + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(localIP + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -13407,7 +13407,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -13433,7 +13433,7 @@ with a long store temp. Strictly no need to skip the store because it's effectively a noop. */ localIP += 3; if (GIV(primFailCode) != 0) { - if ((byteAt(localIP + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(localIP + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -13873,7 +13873,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -13899,7 +13899,7 @@ with a long store temp. Strictly no need to skip the store because it's effectively a noop. */ localIP += 3; if (GIV(primFailCode) != 0) { - if ((byteAt(localIP + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(localIP + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -14341,7 +14341,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -14367,7 +14367,7 @@ with a long store temp. Strictly no need to skip the store because it's effectively a noop. */ localIP += 3; if (GIV(primFailCode) != 0) { - if ((byteAt(localIP + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(localIP + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -14753,7 +14753,7 @@ /* Store the error code if the method starts with a long store temp. No instructionPointer skip because we're heading for machine code. */ initialPC = ((GIV(newMethod) + ((LiteralStart + (literalCountOfMethodHeader(methodHeader))) * BytesPerOop)) + BaseHeaderSize) + (3); if (GIV(primFailCode) != 0) { - if ((byteAt(initialPC)) == (((((int) methodHeader)) < 0 + if ((byteAt(initialPC)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -14848,7 +14848,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -14879,7 +14879,7 @@ with a long store temp. Strictly no need to skip the store because it's effectively a noop. */ GIV(instructionPointer) += 3; if (GIV(primFailCode) != 0) { - if ((byteAt(GIV(instructionPointer) + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(GIV(instructionPointer) + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -17629,7 +17629,7 @@ sqInt i; sqInt methodField; sqInt ok; - usqInt oop; + sqInt oop; char *theFP; StackPage *thePage; char *theSP; @@ -23700,7 +23700,7 @@ usqInt index; sqInt methodField; usqInt numArgs; - usqInt numTemps; + sqInt numTemps; char *rcvrAddress; sqInt rcvrOrClosure; sqInt theMethod; @@ -24951,7 +24951,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader1); - GIV(bytecodeSetSelector) = ((((int) methodHeader1)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader1)) < 0 ? 256 : 0); @@ -24986,7 +24986,7 @@ GIV(instructionPointer) = initialIP; } if (GIV(primFailCode) != 0) { - if ((byteAt(initialIP + 1)) == (((((int) methodHeader1)) < 0 + if ((byteAt(initialIP + 1)) == (((((sqLong) methodHeader1)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -25179,7 +25179,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader1); - GIV(bytecodeSetSelector) = ((((int) methodHeader1)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader1)) < 0 ? 256 : 0); @@ -25214,7 +25214,7 @@ GIV(instructionPointer) = initialIP; } if (GIV(primFailCode) != 0) { - if ((byteAt(initialIP + 1)) == (((((int) methodHeader1)) < 0 + if ((byteAt(initialIP + 1)) == (((((sqLong) methodHeader1)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -31031,7 +31031,7 @@ GIV(method) = theMethod; assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -31288,7 +31288,7 @@ GIV(method) = theMethod; assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -31578,7 +31578,7 @@ GIV(method) = theMethod; assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -42965,6 +42965,16 @@ } +/* A negative header selects the alternate bytecode set. */ + + /* Spur64BitMemoryManager>>#headerIndicatesAlternateBytecodeSet: */ +sqInt +headerIndicatesAlternateBytecodeSet(sqInt methodHeader) +{ + return (((sqLong) methodHeader)) < 0; +} + + /* must have room for a header (single or double) plus the next free pointer */ /* Spur64BitMemoryManager>>#initFreeChunkWithBytes:at: */ @@ -67496,7 +67506,7 @@ static void postSnapshot(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT - usqInt address; + sqInt address; sqInt bytes; usqInt freeChunk; sqInt i; @@ -71885,16 +71895,6 @@ } -/* A negative header selects the alternate bytecode set. */ - - /* StackInterpreter>>#headerIndicatesAlternateBytecodeSet: */ -sqInt -headerIndicatesAlternateBytecodeSet(sqInt methodHeader) -{ - return (((int) methodHeader)) < 0; -} - - /* This is a C implementation needed by ioSetMaxExtSemTableSize and e.g. stackPageByteSize. */ @@ -72872,7 +72872,7 @@ sqInt longStoreBytecodeForHeader(sqInt methodHeader) { - return ((((int) methodHeader)) < 0 + return ((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode); } @@ -74967,7 +74967,7 @@ assert((((((CogMethod *) header))->objectHeader)) == (nullHeaderForMachineCodeMethod())); methodHeader = ((((CogMethod *) header))->methodHeader); } - return (((int) methodHeader)) < 0; + return (((sqLong) methodHeader)) < 0; } @@ -75304,12 +75304,12 @@ } -/* Note: With the Squeak V0 format we now have 10 bits of primitive index, - but they are in - two places for temporary backward compatibility. The time to unpack is +/* Note: With the Squeak V3 format we now have 10 bits of primitive index, + but they are + in two places for temporary backward compatibility. The time to unpack is negligible, since the derived primitive function pointer is stored in the - method cache. With the new - format we assume a 3-byte CallPrimitive with a little-endian 16-bit + method cache. With the + Spur format we assume a 3-byte CallPrimitive with a little-endian 16-bit primitive index. */ /* StackInterpreter>>#primitiveIndexOfMethod:header: */ @@ -78490,7 +78490,7 @@ static sqInt retryPrimitiveOnFailure(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT - signed char accessorDepth; + sqInt accessorDepth; sqInt canRetry; sqInt firstBytecode; sqInt followDone; @@ -79581,7 +79581,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -79616,7 +79616,7 @@ GIV(instructionPointer) = initialIP; } if (GIV(primFailCode) != 0) { - if ((byteAt(initialIP + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(initialIP + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ Modified: branches/Cog/nsspur64src/vm/cointerp.h =================================================================== --- branches/Cog/nsspur64src/vm/cointerp.h 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspur64src/vm/cointerp.h 2016-06-07 22:35:56 UTC (rev 3739) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ @@ -132,6 +132,7 @@ extern usqInt specialObjectsArrayAddress(void); extern sqInt withoutForwardingOnandwithsendToCogit(sqInt obj1, sqInt obj2, sqInt aBool, sqInt (*selector)(sqInt,sqInt,sqInt)); extern sqInt byteSwapped(sqInt w); +extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); extern sqInt instantiateClassindexableSize(sqInt classObj, usqInt nElements); extern sqInt isIntegerValue(sqInt intValue); extern sqInt isMarked(sqInt objOop); @@ -272,7 +273,6 @@ extern void (*functionPointerForinClass(sqInt primIdx,sqInt theClass))(void) ; extern usqLong getNextWakeupUsecs(void); extern sqInt * getStackPointer(void); -extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); extern usqInt highBit(usqInt anUnsignedValue); extern sqInt isFloatObject(sqInt oop); extern sqInt isKindOfInteger(sqInt oop); Modified: branches/Cog/nsspur64src/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nsspur64src/vm/gcc3x-cointerp.c 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspur64src/vm/gcc3x-cointerp.c 2016-06-07 22:35:56 UTC (rev 3739) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 from - CoInterpreter VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CoInterpreter VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -895,6 +895,7 @@ static sqInt NoDbgRegParms fetchLong32ofFloatObject(sqInt fieldIndex, sqInt oop); extern sqInt floatObjectOf(double aFloat); extern double floatValueOf(sqInt oop); +extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); static sqInt NoDbgRegParms initFreeChunkWithBytesat(usqLong numBytes, sqInt address); static void NoDbgRegParms initSegmentBridgeWithBytesat(usqLong numBytes, sqInt address); extern sqInt instantiateClassindexableSize(sqInt classObj, usqInt nElements); @@ -1386,7 +1387,6 @@ static sqInt NoDbgRegParms handleSpecialSelectorSendFaultForfpsp(sqInt obj, char *theFP, char *theSP); static void handleStackOverflow(void); static sqInt NoDbgRegParms handleStackOverflowOrEventAllowContextSwitch(sqInt mayContextSwitch); -extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); extern usqInt highBit(usqInt anUnsignedValue); static sqInt NoDbgRegParms ifCurrentStackPageHasValidHeadPointers(StackPage *thePage); static usqInt NoDbgRegParms iframeMethod(char *theFP); @@ -2455,7 +2455,7 @@ }; sqInt checkedPluginName; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1883"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1885"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -6047,7 +6047,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -6073,7 +6073,7 @@ with a long store temp. Strictly no need to skip the store because it's effectively a noop. */ localIP += 3; if (GIV(primFailCode) != 0) { - if ((byteAt(localIP + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(localIP + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -13056,7 +13056,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -13082,7 +13082,7 @@ with a long store temp. Strictly no need to skip the store because it's effectively a noop. */ localIP += 3; if (GIV(primFailCode) != 0) { - if ((byteAt(localIP + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(localIP + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -13416,7 +13416,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -13442,7 +13442,7 @@ with a long store temp. Strictly no need to skip the store because it's effectively a noop. */ localIP += 3; if (GIV(primFailCode) != 0) { - if ((byteAt(localIP + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(localIP + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -13882,7 +13882,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -13908,7 +13908,7 @@ with a long store temp. Strictly no need to skip the store because it's effectively a noop. */ localIP += 3; if (GIV(primFailCode) != 0) { - if ((byteAt(localIP + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(localIP + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -14350,7 +14350,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -14376,7 +14376,7 @@ with a long store temp. Strictly no need to skip the store because it's effectively a noop. */ localIP += 3; if (GIV(primFailCode) != 0) { - if ((byteAt(localIP + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(localIP + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -14762,7 +14762,7 @@ /* Store the error code if the method starts with a long store temp. No instructionPointer skip because we're heading for machine code. */ initialPC = ((GIV(newMethod) + ((LiteralStart + (literalCountOfMethodHeader(methodHeader))) * BytesPerOop)) + BaseHeaderSize) + (3); if (GIV(primFailCode) != 0) { - if ((byteAt(initialPC)) == (((((int) methodHeader)) < 0 + if ((byteAt(initialPC)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -14857,7 +14857,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -14888,7 +14888,7 @@ with a long store temp. Strictly no need to skip the store because it's effectively a noop. */ GIV(instructionPointer) += 3; if (GIV(primFailCode) != 0) { - if ((byteAt(GIV(instructionPointer) + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(GIV(instructionPointer) + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -17638,7 +17638,7 @@ sqInt i; sqInt methodField; sqInt ok; - usqInt oop; + sqInt oop; char *theFP; StackPage *thePage; char *theSP; @@ -23709,7 +23709,7 @@ usqInt index; sqInt methodField; usqInt numArgs; - usqInt numTemps; + sqInt numTemps; char *rcvrAddress; sqInt rcvrOrClosure; sqInt theMethod; @@ -24960,7 +24960,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader1); - GIV(bytecodeSetSelector) = ((((int) methodHeader1)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader1)) < 0 ? 256 : 0); @@ -24995,7 +24995,7 @@ GIV(instructionPointer) = initialIP; } if (GIV(primFailCode) != 0) { - if ((byteAt(initialIP + 1)) == (((((int) methodHeader1)) < 0 + if ((byteAt(initialIP + 1)) == (((((sqLong) methodHeader1)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -25188,7 +25188,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader1); - GIV(bytecodeSetSelector) = ((((int) methodHeader1)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader1)) < 0 ? 256 : 0); @@ -25223,7 +25223,7 @@ GIV(instructionPointer) = initialIP; } if (GIV(primFailCode) != 0) { - if ((byteAt(initialIP + 1)) == (((((int) methodHeader1)) < 0 + if ((byteAt(initialIP + 1)) == (((((sqLong) methodHeader1)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ @@ -31040,7 +31040,7 @@ GIV(method) = theMethod; assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -31297,7 +31297,7 @@ GIV(method) = theMethod; assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -31587,7 +31587,7 @@ GIV(method) = theMethod; assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -42974,6 +42974,16 @@ } +/* A negative header selects the alternate bytecode set. */ + + /* Spur64BitMemoryManager>>#headerIndicatesAlternateBytecodeSet: */ +sqInt +headerIndicatesAlternateBytecodeSet(sqInt methodHeader) +{ + return (((sqLong) methodHeader)) < 0; +} + + /* must have room for a header (single or double) plus the next free pointer */ /* Spur64BitMemoryManager>>#initFreeChunkWithBytes:at: */ @@ -67505,7 +67515,7 @@ static void postSnapshot(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT - usqInt address; + sqInt address; sqInt bytes; usqInt freeChunk; sqInt i; @@ -71894,16 +71904,6 @@ } -/* A negative header selects the alternate bytecode set. */ - - /* StackInterpreter>>#headerIndicatesAlternateBytecodeSet: */ -sqInt -headerIndicatesAlternateBytecodeSet(sqInt methodHeader) -{ - return (((int) methodHeader)) < 0; -} - - /* This is a C implementation needed by ioSetMaxExtSemTableSize and e.g. stackPageByteSize. */ @@ -72881,7 +72881,7 @@ sqInt longStoreBytecodeForHeader(sqInt methodHeader) { - return ((((int) methodHeader)) < 0 + return ((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode); } @@ -74976,7 +74976,7 @@ assert((((((CogMethod *) header))->objectHeader)) == (nullHeaderForMachineCodeMethod())); methodHeader = ((((CogMethod *) header))->methodHeader); } - return (((int) methodHeader)) < 0; + return (((sqLong) methodHeader)) < 0; } @@ -75313,12 +75313,12 @@ } -/* Note: With the Squeak V0 format we now have 10 bits of primitive index, - but they are in - two places for temporary backward compatibility. The time to unpack is +/* Note: With the Squeak V3 format we now have 10 bits of primitive index, + but they are + in two places for temporary backward compatibility. The time to unpack is negligible, since the derived primitive function pointer is stored in the - method cache. With the new - format we assume a 3-byte CallPrimitive with a little-endian 16-bit + method cache. With the + Spur format we assume a 3-byte CallPrimitive with a little-endian 16-bit primitive index. */ /* StackInterpreter>>#primitiveIndexOfMethod:header: */ @@ -78499,7 +78499,7 @@ static sqInt retryPrimitiveOnFailure(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT - signed char accessorDepth; + sqInt accessorDepth; sqInt canRetry; sqInt firstBytecode; sqInt followDone; @@ -79590,7 +79590,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -79625,7 +79625,7 @@ GIV(instructionPointer) = initialIP; } if (GIV(primFailCode) != 0) { - if ((byteAt(initialIP + 1)) == (((((int) methodHeader)) < 0 + if ((byteAt(initialIP + 1)) == (((((sqLong) methodHeader)) < 0 ? AltLongStoreBytecode : LongStoreBytecode))) { /* begin getErrorObjectFromPrimFailCode */ Modified: branches/Cog/nsspursrc/vm/cogit.h =================================================================== --- branches/Cog/nsspursrc/vm/cogit.h 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspursrc/vm/cogit.h 2016-06-07 22:35:56 UTC (rev 3739) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGenerator VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c =================================================================== --- branches/Cog/nsspursrc/vm/cogitARMv5.c 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspursrc/vm/cogitARMv5.c 2016-06-07 22:35:56 UTC (rev 3739) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGenerator VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 from - StackToRegisterMappingCogit VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + StackToRegisterMappingCogit VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 " __DATE__ ; char *__cogitBuildInfo = __buildInfo; Modified: branches/Cog/nsspursrc/vm/cogitIA32.c =================================================================== --- branches/Cog/nsspursrc/vm/cogitIA32.c 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspursrc/vm/cogitIA32.c 2016-06-07 22:35:56 UTC (rev 3739) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGenerator VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 from - StackToRegisterMappingCogit VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + StackToRegisterMappingCogit VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 " __DATE__ ; char *__cogitBuildInfo = __buildInfo; Modified: branches/Cog/nsspursrc/vm/cogitMIPSEL.c =================================================================== --- branches/Cog/nsspursrc/vm/cogitMIPSEL.c 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspursrc/vm/cogitMIPSEL.c 2016-06-07 22:35:56 UTC (rev 3739) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGenerator VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 from - StackToRegisterMappingCogit VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + StackToRegisterMappingCogit VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 " __DATE__ ; char *__cogitBuildInfo = __buildInfo; @@ -2682,7 +2682,7 @@ sqInt byte; BytecodeDescriptor *descriptor; sqInt distance; - sqInt endbcpc; + usqInt endbcpc; CogMethod *homeMethod; sqInt isBackwardBranch; sqInt isInBlock; @@ -3188,7 +3188,7 @@ usqInt cacheTag1; sqInt classTag; sqInt enclosingObject; - usqInt entryPoint; + sqInt entryPoint; usqInt entryPoint1; usqInt entryPoint2; sqInt literal; @@ -4741,7 +4741,7 @@ static sqInt NoDbgRegParms cPICHasFreedTargets(CogMethod *cPIC) { - sqInt entryPoint; + usqInt entryPoint; sqInt i; sqInt pc; CogMethod *targetMethod; @@ -5808,12 +5808,12 @@ generateMapAtstart(sqInt addressOrNull, sqInt startAddress) { unsigned char annotation; - sqInt delta; + usqInt delta; sqInt i; AbstractInstruction *instruction; sqInt length; - sqInt location; - sqInt mapEntry; + usqInt location; + usqInt mapEntry; sqInt maxDelta; usqInt mcpc; @@ -8078,7 +8078,7 @@ sqInt byte; BytecodeDescriptor *descriptor; sqInt distance; - sqInt endbcpc; + usqInt endbcpc; CogMethod *homeMethod; sqInt isBackwardBranch; sqInt isInBlock; @@ -8754,7 +8754,7 @@ relocateCallsInClosedPIC(CogMethod *cPIC) { sqLong callDelta; - sqInt entryPoint; + usqInt entryPoint; sqInt i; sqInt pc; sqLong refDelta; @@ -9624,7 +9624,7 @@ unlinkIfLinkedSendpcto(sqInt annotation, char *mcpc, sqInt theCogMethod) { usqInt cacheAddress; - usqInt entryPoint; + sqInt entryPoint; usqInt entryPoint1; char *mcpc1; NSSendCache *nsSendCache; @@ -14780,7 +14780,7 @@ static AbstractInstruction * NoDbgRegParms relocateMethodReferenceBeforeAddressby(AbstractInstruction * self_in_relocateMethodReferenceBeforeAddressby, sqInt pc, sqInt delta) { - usqInt newValue; + sqInt newValue; usqInt oldValue; if (((opcodeAtAddress(self_in_relocateMethodReferenceBeforeAddressby, pc - 8)) == ADDIU) @@ -22263,7 +22263,7 @@ CogBlockMethod *cogMethod1; BytecodeDescriptor *descriptor; sqInt distance; - sqInt endbcpc; + usqInt endbcpc; sqInt errCode; CogMethod *homeMethod; sqInt isBackwardBranch; Modified: branches/Cog/nsspursrc/vm/cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.c 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspursrc/vm/cointerp.c 2016-06-07 22:35:56 UTC (rev 3739) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 from - CoInterpreter VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CoInterpreter VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -870,6 +870,7 @@ extern sqInt floatObjectOf(double aFloat); extern double floatValueOf(sqInt oop); static sqInt hasSixtyFourBitImmediates(void); +extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); static sqInt NoDbgRegParms initFreeChunkWithBytesat(usqLong numBytes, sqInt address); static void NoDbgRegParms initSegmentBridgeWithBytesat(usqLong numBytes, sqInt address); extern sqInt instantiateClassindexableSize(sqInt classObj, usqInt nElements); @@ -1358,7 +1359,6 @@ static sqInt NoDbgRegParms handleSpecialSelectorSendFaultForfpsp(sqInt obj, char *theFP, char *theSP); static void handleStackOverflow(void); static sqInt NoDbgRegParms handleStackOverflowOrEventAllowContextSwitch(sqInt mayContextSwitch); -extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); extern usqInt highBit(usqInt anUnsignedValue); static sqInt NoDbgRegParms ifCurrentStackPageHasValidHeadPointers(StackPage *thePage); static usqInt NoDbgRegParms iframeMethod(char *theFP); @@ -2428,7 +2428,7 @@ }; sqInt checkedPluginName; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1883"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1885"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -23022,7 +23022,7 @@ usqInt index; sqInt methodField; usqInt numArgs; - sqInt numTemps; + usqInt numTemps; char *rcvrAddress; sqInt rcvrOrClosure; sqInt theMethod; @@ -41803,7 +41803,7 @@ sqInt fmt; usqInt instBytes; sqInt instFormat; - sqInt newFormat; + usqInt newFormat; sqInt normalizedInstFormat; usqInt numBytes; usqInt numSlots; @@ -42074,6 +42074,16 @@ } +/* A negative header selects the alternate bytecode set. */ + + /* Spur32BitMemoryManager>>#headerIndicatesAlternateBytecodeSet: */ +sqInt +headerIndicatesAlternateBytecodeSet(sqInt methodHeader) +{ + return (((int) methodHeader)) < 0; +} + + /* must have room for a header (single or double) plus the next free pointer */ /* Spur32BitMemoryManager>>#initFreeChunkWithBytes:at: */ @@ -66226,7 +66236,7 @@ bridgeFromto(SpurSegmentInfo *aSegment, SpurSegmentInfo *nextSegmentOrNil) { usqInt bridgeSpan; - usqInt clifton; + sqInt clifton; usqInt segEnd; segEnd = ((aSegment->segSize)) + ((aSegment->segStart)); @@ -66407,7 +66417,7 @@ static void postSnapshot(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT - sqInt address; + usqInt address; sqInt bytes; usqInt freeChunk; sqInt i; @@ -70822,16 +70832,6 @@ } -/* A negative header selects the alternate bytecode set. */ - - /* StackInterpreter>>#headerIndicatesAlternateBytecodeSet: */ -sqInt -headerIndicatesAlternateBytecodeSet(sqInt methodHeader) -{ - return (((int) methodHeader)) < 0; -} - - /* This is a C implementation needed by ioSetMaxExtSemTableSize and e.g. stackPageByteSize. */ @@ -74372,12 +74372,12 @@ } -/* Note: With the Squeak V0 format we now have 10 bits of primitive index, - but they are in - two places for temporary backward compatibility. The time to unpack is +/* Note: With the Squeak V3 format we now have 10 bits of primitive index, + but they are + in two places for temporary backward compatibility. The time to unpack is negligible, since the derived primitive function pointer is stored in the - method cache. With the new - format we assume a 3-byte CallPrimitive with a little-endian 16-bit + method cache. With the + Spur format we assume a 3-byte CallPrimitive with a little-endian 16-bit primitive index. */ /* StackInterpreter>>#primitiveIndexOfMethod:header: */ @@ -77506,7 +77506,7 @@ static sqInt retryPrimitiveOnFailure(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT - signed char accessorDepth; + sqInt accessorDepth; sqInt canRetry; sqInt firstBytecode; sqInt followDone; Modified: branches/Cog/nsspursrc/vm/cointerp.h =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.h 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspursrc/vm/cointerp.h 2016-06-07 22:35:56 UTC (rev 3739) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ @@ -131,6 +131,7 @@ extern usqInt scavengeThresholdAddress(void); extern sqInt withoutForwardingOnandwithsendToCogit(sqInt obj1, sqInt obj2, sqInt aBool, sqInt (*selector)(sqInt,sqInt,sqInt)); extern sqInt byteSwapped(sqInt w); +extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); extern sqInt instantiateClassindexableSize(sqInt classObj, usqInt nElements); extern sqInt isIntegerValue(sqInt intValue); extern sqInt isMarked(sqInt objOop); @@ -271,7 +272,6 @@ extern void (*functionPointerForinClass(sqInt primIdx,sqInt theClass))(void) ; extern usqLong getNextWakeupUsecs(void); extern sqInt * getStackPointer(void); -extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); extern usqInt highBit(usqInt anUnsignedValue); extern sqInt isFloatObject(sqInt oop); extern sqInt isKindOfInteger(sqInt oop); Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2016-06-07 22:35:56 UTC (rev 3739) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 from - CoInterpreter VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CoInterpreter VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -873,6 +873,7 @@ extern sqInt floatObjectOf(double aFloat); extern double floatValueOf(sqInt oop); static sqInt hasSixtyFourBitImmediates(void); +extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); static sqInt NoDbgRegParms initFreeChunkWithBytesat(usqLong numBytes, sqInt address); static void NoDbgRegParms initSegmentBridgeWithBytesat(usqLong numBytes, sqInt address); extern sqInt instantiateClassindexableSize(sqInt classObj, usqInt nElements); @@ -1361,7 +1362,6 @@ static sqInt NoDbgRegParms handleSpecialSelectorSendFaultForfpsp(sqInt obj, char *theFP, char *theSP); static void handleStackOverflow(void); static sqInt NoDbgRegParms handleStackOverflowOrEventAllowContextSwitch(sqInt mayContextSwitch); -extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); extern usqInt highBit(usqInt anUnsignedValue); static sqInt NoDbgRegParms ifCurrentStackPageHasValidHeadPointers(StackPage *thePage); static usqInt NoDbgRegParms iframeMethod(char *theFP); @@ -2431,7 +2431,7 @@ }; sqInt checkedPluginName; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1883"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1885"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -23031,7 +23031,7 @@ usqInt index; sqInt methodField; usqInt numArgs; - sqInt numTemps; + usqInt numTemps; char *rcvrAddress; sqInt rcvrOrClosure; sqInt theMethod; @@ -41812,7 +41812,7 @@ sqInt fmt; usqInt instBytes; sqInt instFormat; - sqInt newFormat; + usqInt newFormat; sqInt normalizedInstFormat; usqInt numBytes; usqInt numSlots; @@ -42083,6 +42083,16 @@ } +/* A negative header selects the alternate bytecode set. */ + + /* Spur32BitMemoryManager>>#headerIndicatesAlternateBytecodeSet: */ +sqInt +headerIndicatesAlternateBytecodeSet(sqInt methodHeader) +{ + return (((int) methodHeader)) < 0; +} + + /* must have room for a header (single or double) plus the next free pointer */ /* Spur32BitMemoryManager>>#initFreeChunkWithBytes:at: */ @@ -66235,7 +66245,7 @@ bridgeFromto(SpurSegmentInfo *aSegment, SpurSegmentInfo *nextSegmentOrNil) { usqInt bridgeSpan; - usqInt clifton; + sqInt clifton; usqInt segEnd; segEnd = ((aSegment->segSize)) + ((aSegment->segStart)); @@ -66416,7 +66426,7 @@ static void postSnapshot(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT - sqInt address; + usqInt address; sqInt bytes; usqInt freeChunk; sqInt i; @@ -70831,16 +70841,6 @@ } -/* A negative header selects the alternate bytecode set. */ - - /* StackInterpreter>>#headerIndicatesAlternateBytecodeSet: */ -sqInt -headerIndicatesAlternateBytecodeSet(sqInt methodHeader) -{ - return (((int) methodHeader)) < 0; -} - - /* This is a C implementation needed by ioSetMaxExtSemTableSize and e.g. stackPageByteSize. */ @@ -74381,12 +74381,12 @@ } -/* Note: With the Squeak V0 format we now have 10 bits of primitive index, - but they are in - two places for temporary backward compatibility. The time to unpack is +/* Note: With the Squeak V3 format we now have 10 bits of primitive index, + but they are + in two places for temporary backward compatibility. The time to unpack is negligible, since the derived primitive function pointer is stored in the - method cache. With the new - format we assume a 3-byte CallPrimitive with a little-endian 16-bit + method cache. With the + Spur format we assume a 3-byte CallPrimitive with a little-endian 16-bit primitive index. */ /* StackInterpreter>>#primitiveIndexOfMethod:header: */ @@ -77515,7 +77515,7 @@ static sqInt retryPrimitiveOnFailure(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT - signed char accessorDepth; + sqInt accessorDepth; sqInt canRetry; sqInt firstBytecode; sqInt followDone; Modified: branches/Cog/nsspurstack64src/vm/gcc3x-interp.c =================================================================== --- branches/Cog/nsspurstack64src/vm/gcc3x-interp.c 2016-06-07 03:03:08 UTC (rev 3738) +++ branches/Cog/nsspurstack64src/vm/gcc3x-interp.c 2016-06-07 22:35:56 UTC (rev 3739) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 from - StackInterpreter VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d + StackInterpreter VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1883 uuid: a87f979f-7e5b-44d1-804d-fc8403bde06d " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1885 uuid: 3c9ce24b-d7c4-4160-ac59-56aed18461a1 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -632,6 +632,7 @@ static sqInt NoDbgRegParms fetchLong32ofFloatObject(sqInt fieldIndex, sqInt oop); extern sqInt floatObjectOf(double aFloat); extern double floatValueOf(sqInt oop); +extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); static sqInt NoDbgRegParms initFreeChunkWithBytesat(usqLong numBytes, sqInt address); static void NoDbgRegParms initSegmentBridgeWithBytesat(usqLong numBytes, sqInt address); extern sqInt instantiateClassindexableSize(sqInt classObj, usqInt nElements); @@ -1140,7 +1141,6 @@ static sqInt NoDbgRegParms handleSpecialSelectorSendFaultForfpsp(sqInt obj, char *theFP, char *theSP); static void handleStackOverflow(void); static sqInt NoDbgRegParms handleStackOverflowOrEventAllowContextSwitch(sqInt mayContextSwitch); -extern sqInt headerIndicatesAlternateBytecodeSet(sqInt methodHeader); extern usqInt highBit(usqInt anUnsignedValue); static sqInt NoDbgRegParms ifCurrentStackPageHasValidHeadPointers(StackPage *thePage); static usqInt NoDbgRegParms iframeMethod(char *theFP); @@ -2193,7 +2193,7 @@ 0 }; sqInt checkedPluginName; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1883"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1885"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -5623,7 +5623,7 @@ GIV(method) = GIV(newMethod); assert(isOopCompiledMethod(GIV(method))); assert((methodHeaderOf(GIV(method))) == methodHeader); - GIV(bytecodeSetSelector) = ((((int) methodHeader)) < 0 + GIV(bytecodeSetSelector) = ((((sqLong) methodHeader)) < 0 ? 256 : 0); @@ -5647,7 +5647,7 @@ @@ Diff output truncated at 50000 characters. @@ |
Free forum by Nabble | Edit this page |