Revision: 3617 Author: eliot Date: 2016-02-20 12:20:49 -0800 (Sat, 20 Feb 2016) Log Message: ----------- CogVM source as per VMMaker.oscog-eem.1687
Spur: Fix bug in markAndTraceWeaklingsFrom:. Fields of weaklings may be immediate so must use followOopField:ofObject: not followObjField:ofObject:.
Slang: Emit constants before types to allow constant names to be used when defining types, e.g. for array extents.
Threaded FFI plugin: Use above facility for neater declarations.
First cut (untested) of FFI support for x86-64 on System V and WIN64, as X64SysVFFIPlugin.c & X64Win64FFIPlugin.c.
Surface Plugin: Change int to long throughout parameter passing (but not the Surface struct itself) to solve issues on 64-bits.
Mac OS: remember localizable strings versions for Pharo and Newspeak. Change some (int) casts to (long) or non casts in OpenGL and event code, again to avoid issues on 64-bits.
Modified Paths: -------------- branches/Cog/build.macos64x64/pharo.cog.spur/plugins.ext branches/Cog/build.macos64x64/squeak.cog.spur/plugins.ext branches/Cog/build.macos64x64/squeak.sista.spur/plugins.ext branches/Cog/build.macos64x64/squeak.stack.spur/plugins.ext 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/platforms/iOS/vm/OSX/sqSqueakOSXApplication+events.m branches/Cog/platforms/iOS/vm/OSX/sqSqueakOSXOpenGLView.m branches/Cog/scripts/uploadvms 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/plugins/IA32ABI/IA32ABI.c branches/Cog/src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c branches/Cog/src/plugins/SqueakFFIPrims/IA32FFIPlugin.c branches/Cog/src/plugins/SqueakFFIPrims/SqueakFFIPrims.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
Added Paths: ----------- branches/Cog/platforms/iOS/vm/Common/English.lproj/Newspeak-Localizable.strings branches/Cog/platforms/iOS/vm/Common/English.lproj/Pharo-Localizable.strings branches/Cog/src/plugins/SqueakFFIPrims/X64SysVFFIPlugin.c branches/Cog/src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.c
Property Changed: ---------------- branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/build.macos64x64/pharo.cog.spur/plugins.ext =================================================================== --- branches/Cog/build.macos64x64/pharo.cog.spur/plugins.ext 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/build.macos64x64/pharo.cog.spur/plugins.ext 2016-02-20 20:20:49 UTC (rev 3617) @@ -4,6 +4,6 @@ FloatArrayPlugin \ FloatMathPlugin \ Mpeg3Plugin \ +SqueakFFIPrims \ SqueakSSL \ -UnixOSProcessPlugin \ -# SqueakFFIPrims +UnixOSProcessPlugin
Modified: branches/Cog/build.macos64x64/squeak.cog.spur/plugins.ext =================================================================== --- branches/Cog/build.macos64x64/squeak.cog.spur/plugins.ext 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/build.macos64x64/squeak.cog.spur/plugins.ext 2016-02-20 20:20:49 UTC (rev 3617) @@ -5,6 +5,6 @@ FloatArrayPlugin \ FloatMathPlugin \ Mpeg3Plugin \ +SqueakFFIPrims \ SqueakSSL \ -UnixOSProcessPlugin \ -# SqueakFFIPrims +UnixOSProcessPlugin
Modified: branches/Cog/build.macos64x64/squeak.sista.spur/plugins.ext =================================================================== --- branches/Cog/build.macos64x64/squeak.sista.spur/plugins.ext 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/build.macos64x64/squeak.sista.spur/plugins.ext 2016-02-20 20:20:49 UTC (rev 3617) @@ -5,6 +5,6 @@ FloatArrayPlugin \ FloatMathPlugin \ Mpeg3Plugin \ +SqueakFFIPrims \ SqueakSSL \ -UnixOSProcessPlugin \ -# SqueakFFIPrims +UnixOSProcessPlugin
Modified: branches/Cog/build.macos64x64/squeak.stack.spur/plugins.ext =================================================================== --- branches/Cog/build.macos64x64/squeak.stack.spur/plugins.ext 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/build.macos64x64/squeak.stack.spur/plugins.ext 2016-02-20 20:20:49 UTC (rev 3617) @@ -5,6 +5,6 @@ FloatArrayPlugin \ FloatMathPlugin \ Mpeg3Plugin \ +SqueakFFIPrims \ SqueakSSL \ -UnixOSProcessPlugin \ -# SqueakFFIPrims +UnixOSProcessPlugin
Modified: branches/Cog/nsspur64src/vm/cogit.h =================================================================== --- branches/Cog/nsspur64src/vm/cogit.h 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/nsspur64src/vm/cogit.h 2016-02-20 20:20:49 UTC (rev 3617) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 + CCodeGenerator VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 */
Modified: branches/Cog/nsspur64src/vm/cogitX64.c =================================================================== --- branches/Cog/nsspur64src/vm/cogitX64.c 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/nsspur64src/vm/cogitX64.c 2016-02-20 20:20:49 UTC (rev 3617) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1677 uuid: 7056bb77-6aa0-4cb6-aa6c-cd921c231d37 + CCodeGenerator VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 from - StackToRegisterMappingCogit VMMaker.oscog-eem.1677 uuid: 7056bb77-6aa0-4cb6-aa6c-cd921c231d37 + StackToRegisterMappingCogit VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1677 uuid: 7056bb77-6aa0-4cb6-aa6c-cd921c231d37 " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 " __DATE__ ; char *__cogitBuildInfo = __buildInfo;
@@ -21,95 +21,7 @@ #endif #include "cogit.h"
-typedef struct _AbstractInstruction { - unsigned char opcode; - unsigned char machineCodeSize; - unsigned char maxSize; - unsigned char annotation; - unsigned long operands [3]; - unsigned long address; - struct _AbstractInstruction *dependent; - unsigned char machineCode [14]; - } AbstractInstruction;
-#define CogInLineLiteralsX64Compiler AbstractInstruction -#define CogX64Compiler AbstractInstruction -#define CogAbstractInstruction AbstractInstruction - - -typedef struct { - AbstractInstruction *fakeHeader; - AbstractInstruction *fillInstruction; - sqInt numArgs; - sqInt numCopied; - sqInt numInitialNils; - sqInt startpc; - AbstractInstruction *entryLabel; - AbstractInstruction *stackCheckLabel; - sqInt span; - sqInt hasInstVarRef; - } BlockStart; - -#define CogBlockStart BlockStart - - -typedef struct _BytecodeDescriptor { - sqInt (*generator )(void); - sqInt (*spanFunction )(struct _BytecodeDescriptor *,sqInt,sqInt,sqInt); - sqInt (*needsFrameFunction )(sqInt); - signed char stackDelta; - unsigned char opcode; - unsigned char numBytes; - unsigned isBranchTrue : 1; - unsigned isBranchFalse : 1; - unsigned isReturn : 1; - unsigned isBlockCreation : 1; - unsigned isMapped : 1; - unsigned isMappedInBlock : 1; - unsigned isExtension : 1; - unsigned isInstVarRef : 1; - unsigned hasIRC : 1; - } BytecodeDescriptor; - -#define CogBytecodeDescriptor BytecodeDescriptor - - -typedef struct { - sqInt (*primitiveGenerator )(void); - sqInt primNumArgs; - } PrimitiveDescriptor; - -#define CogPrimitiveDescriptor PrimitiveDescriptor - - -typedef struct { - AbstractInstruction *targetInstruction; - sqInt instructionIndex; - sqInt simStackPtr; - } BytecodeFixup; - -#define CogSSBytecodeFixup BytecodeFixup -#define CogBytecodeFixup BytecodeFixup - - -typedef struct { - char type; - char spilled; - char annotateUse; - sqInt registerr; - sqInt offset; - sqInt constant; - sqInt bcptr; - } CogSimStackEntry; - - -typedef struct { - sqInt isReceiverResultRegLive; - CogSimStackEntry *ssEntry; - } CogSSOptStatus; - - - /*** Constants ***/ #define ABI SysV #define AddCqR 95 @@ -379,7 +291,95 @@ #define XorRR 93 #define YoungSelectorInPIC -5
+typedef struct _AbstractInstruction { + unsigned char opcode; + unsigned char machineCodeSize; + unsigned char maxSize; + unsigned char annotation; + unsigned long operands [3]; + unsigned long address; + struct _AbstractInstruction *dependent; + unsigned char machineCode [14]; + } AbstractInstruction;
+#define CogInLineLiteralsX64Compiler AbstractInstruction +#define CogX64Compiler AbstractInstruction +#define CogAbstractInstruction AbstractInstruction + + +typedef struct { + AbstractInstruction *fakeHeader; + AbstractInstruction *fillInstruction; + sqInt numArgs; + sqInt numCopied; + sqInt numInitialNils; + sqInt startpc; + AbstractInstruction *entryLabel; + AbstractInstruction *stackCheckLabel; + sqInt span; + sqInt hasInstVarRef; + } BlockStart; + +#define CogBlockStart BlockStart + + +typedef struct _BytecodeDescriptor { + sqInt (*generator )(void); + sqInt (*spanFunction )(struct _BytecodeDescriptor *,sqInt,sqInt,sqInt); + sqInt (*needsFrameFunction )(sqInt); + signed char stackDelta; + unsigned char opcode; + unsigned char numBytes; + unsigned isBranchTrue : 1; + unsigned isBranchFalse : 1; + unsigned isReturn : 1; + unsigned isBlockCreation : 1; + unsigned isMapped : 1; + unsigned isMappedInBlock : 1; + unsigned isExtension : 1; + unsigned isInstVarRef : 1; + unsigned hasIRC : 1; + } BytecodeDescriptor; + +#define CogBytecodeDescriptor BytecodeDescriptor + + +typedef struct { + sqInt (*primitiveGenerator )(void); + sqInt primNumArgs; + } PrimitiveDescriptor; + +#define CogPrimitiveDescriptor PrimitiveDescriptor + + +typedef struct { + AbstractInstruction *targetInstruction; + sqInt instructionIndex; + sqInt simStackPtr; + } BytecodeFixup; + +#define CogSSBytecodeFixup BytecodeFixup +#define CogBytecodeFixup BytecodeFixup + + +typedef struct { + char type; + char spilled; + char annotateUse; + sqInt registerr; + sqInt offset; + sqInt constant; + sqInt bcptr; + } CogSimStackEntry; + + +typedef struct { + sqInt isReceiverResultRegLive; + CogSimStackEntry *ssEntry; + } CogSSOptStatus; + + + /*** Function Prototypes ***/
Modified: branches/Cog/nsspur64src/vm/cointerp.c =================================================================== --- branches/Cog/nsspur64src/vm/cointerp.c 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/nsspur64src/vm/cointerp.c 2016-02-20 20:20:49 UTC (rev 3617) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 from - CoInterpreter VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 + CoInterpreter VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -77,55 +77,7 @@
/* end StackInterpreter class>>preambleCCode */
-typedef struct { - usqInt segStart; - usqInt segSize; - sqInt swizzle; - usqInt containsPinned; - usqInt savedSegSize; - usqInt lastFreeObject; - } SpurSegmentInfo;
- -typedef struct { - usqInt start; - usqInt limit; - } SpurNewSpaceSpace; - - -typedef struct { - usqInt start; - usqInt limit; - usqInt first; - usqInt last; - } SpurCircularBuffer; - - -typedef struct { - usqInt start; - usqInt limit; - usqInt top; - } SpurContiguousObjStack; - - -typedef struct _StackPage { - char *stackLimit; - char *headSP; - char *headFP; - char *baseFP; - char *baseAddress; - char *realStackLimit; - char *lastAddress; - int trace; - int padToWord; - struct _StackPage *nextPage; - struct _StackPage *prevPage; - } StackPage; - -#define CogStackPage StackPage - - - /*** Constants ***/ #define AccessModifierPrivate 1 #define AccessModifierProtected 2 @@ -411,7 +363,55 @@ #define XIndex 0 #define YIndex 1
+typedef struct { + usqInt segStart; + usqInt segSize; + sqInt swizzle; + usqInt containsPinned; + usqInt savedSegSize; + usqInt lastFreeObject; + } SpurSegmentInfo;
+ +typedef struct { + usqInt start; + usqInt limit; + } SpurNewSpaceSpace; + + +typedef struct { + usqInt start; + usqInt limit; + usqInt first; + usqInt last; + } SpurCircularBuffer; + + +typedef struct { + usqInt start; + usqInt limit; + usqInt top; + } SpurContiguousObjStack; + + +typedef struct _StackPage { + char *stackLimit; + char *headSP; + char *headFP; + char *baseFP; + char *baseAddress; + char *realStackLimit; + char *lastAddress; + int trace; + int padToWord; + struct _StackPage *nextPage; + struct _StackPage *prevPage; + } StackPage; + +#define CogStackPage StackPage + + + /*** Function Prototypes ***/
@@ -2442,7 +2442,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.1680"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1685"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -17850,7 +17850,7 @@ static sqInt checkForAndFollowForwardedPrimitiveState(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT - sqInt accessorDepth; + signed char accessorDepth; sqInt firstBytecode; sqInt found; sqInt found1; @@ -60616,12 +60616,12 @@ sqInt objOop1; sqInt objOop11; sqInt objOop12; - sqInt objOop13; sqInt objStackPage; sqInt objToScan; sqInt objToScan1; sqInt objToScan2; sqInt oop; + sqInt oop1; sqInt p; usqInt ptr; sqInt scanLargeObject; @@ -60664,13 +60664,13 @@ assert(!((isForwarded(weakling)))); markAndTraceClassOf(weakling); for (i = 0, iLimiT = ((numStrongSlotsOfWeakling(weakling)) - 1); i <= iLimiT; i += 1) { - /* begin followObjField:ofObject: */ - objOop = longAt((weakling + BaseHeaderSize) + (((long)i) << (shiftForWord()))); - assert(isNonImmediate(objOop)); - if (((longAt(objOop)) & ((classIndexMask()) - (isForwardedObjectClassIndexPun()))) == 0) { - objOop = fixFollowedFieldofObjectwithInitialValue(i, weakling, objOop); + /* begin followOopField:ofObject: */ + oop = longAt((weakling + BaseHeaderSize) + (((long)i) << (shiftForWord()))); + if (((oop & (tagMask())) == 0) + && (((longAt(oop)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) { + oop = fixFollowedFieldofObjectwithInitialValue(i, weakling, oop); } - field = objOop; + field = oop; if (!(((field & (tagMask())) != 0) || (((((usqInt) (longAt(field))) >> 55) & 1) != 0))) { /* begin markAndTrace: */ @@ -60755,9 +60755,9 @@ } if (fmt == (weakArrayFormat())) { /* begin fixedFieldsOfClass: */ - objOop11 = fetchClassOfNonImm(objToScan); + objOop1 = fetchClassOfNonImm(objToScan); /* begin fixedFieldsOfClassFormat: */ - numStrongSlots = (((longAt((objOop11 + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3)) & ((1LL << (fixedFieldsFieldWidth())) - 1); + numStrongSlots = (((longAt((objOop1 + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3)) & ((1LL << (fixedFieldsFieldWidth())) - 1); goto l20; } } @@ -60954,16 +60954,16 @@ ptr = ((GIV(unscannedEphemerons).top)) - BytesPerWord; while (ptr >= ((GIV(unscannedEphemerons).start))) { /* begin followedKeyOfEphemeron: */ - objOop1 = (ephemeron = longAt(ptr)); - assert((isNonImmediate(objOop1)) - && (isEphemeron(objOop1))); + objOop = (ephemeron = longAt(ptr)); + assert((isNonImmediate(objOop)) + && (isEphemeron(objOop))); /* begin followOopField:ofObject: */ - oop = longAt((objOop1 + BaseHeaderSize) + (0LL << (shiftForWord()))); - if (((oop & (tagMask())) == 0) - && (((longAt(oop)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) { - oop = fixFollowedFieldofObjectwithInitialValue(0, objOop1, oop); + oop1 = longAt((objOop + BaseHeaderSize) + (0LL << (shiftForWord()))); + if (((oop1 & (tagMask())) == 0) + && (((longAt(oop1)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) { + oop1 = fixFollowedFieldofObjectwithInitialValue(0, objOop, oop1); } - key = oop; + key = oop1; /* begin markAndTrace: */
/* inline markAndShouldScan: */ @@ -61046,9 +61046,9 @@ } if (fmt1 == (weakArrayFormat())) { /* begin fixedFieldsOfClass: */ - objOop12 = fetchClassOfNonImm(objToScan1); + objOop11 = fetchClassOfNonImm(objToScan1); /* begin fixedFieldsOfClassFormat: */ - numStrongSlots1 = (((longAt((objOop12 + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3)) & ((1LL << (fixedFieldsFieldWidth())) - 1); + numStrongSlots1 = (((longAt((objOop11 + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3)) & ((1LL << (fixedFieldsFieldWidth())) - 1); goto l13; } } @@ -61292,9 +61292,9 @@ } if (fmt2 == (weakArrayFormat())) { /* begin fixedFieldsOfClass: */ - objOop13 = fetchClassOfNonImm(objToScan2); + objOop12 = fetchClassOfNonImm(objToScan2); /* begin fixedFieldsOfClassFormat: */ - numStrongSlots2 = (((longAt((objOop13 + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3)) & ((1LL << (fixedFieldsFieldWidth())) - 1); + numStrongSlots2 = (((longAt((objOop12 + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3)) & ((1LL << (fixedFieldsFieldWidth())) - 1); goto l15; } } @@ -61536,7 +61536,7 @@ usqInt prevFree; usqInt prevFreeChunk; usqInt prevPrevFree; - sqInt prevPrevFreeChunk; + usqInt prevPrevFreeChunk; sqInt slotBytes; sqInt slotBytes1; usqInt there; @@ -66901,7 +66901,7 @@ bridgeFromto(SpurSegmentInfo *aSegment, SpurSegmentInfo *nextSegmentOrNil) { usqInt bridgeSpan; - sqInt clifton; + usqInt clifton; usqInt segEnd;
segEnd = ((aSegment->segSize)) + ((aSegment->segStart)); @@ -67144,7 +67144,7 @@ sqInt limit; sqInt newEndOfMemory; sqInt next; - sqInt node; + usqInt node; usqInt numSlots; usqInt numSlots1; SpurSegmentInfo *seg; @@ -67273,7 +67273,7 @@ static sqInt NoDbgRegParms readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes) { DECL_MAYBE_SQ_GLOBAL_STRUCT - usqInt bridge; + sqInt bridge; usqInt bridgehead; usqLong bridgeSpan; sqInt bytesRead;
Modified: branches/Cog/nsspur64src/vm/cointerp.h =================================================================== --- branches/Cog/nsspur64src/vm/cointerp.h 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/nsspur64src/vm/cointerp.h 2016-02-20 20:20:49 UTC (rev 3617) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 */
Modified: branches/Cog/nsspur64src/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nsspur64src/vm/gcc3x-cointerp.c 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/nsspur64src/vm/gcc3x-cointerp.c 2016-02-20 20:20:49 UTC (rev 3617) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 from - CoInterpreter VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 + CoInterpreter VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -80,55 +80,7 @@
/* end StackInterpreter class>>preambleCCode */
-typedef struct { - usqInt segStart; - usqInt segSize; - sqInt swizzle; - usqInt containsPinned; - usqInt savedSegSize; - usqInt lastFreeObject; - } SpurSegmentInfo;
- -typedef struct { - usqInt start; - usqInt limit; - } SpurNewSpaceSpace; - - -typedef struct { - usqInt start; - usqInt limit; - usqInt first; - usqInt last; - } SpurCircularBuffer; - - -typedef struct { - usqInt start; - usqInt limit; - usqInt top; - } SpurContiguousObjStack; - - -typedef struct _StackPage { - char *stackLimit; - char *headSP; - char *headFP; - char *baseFP; - char *baseAddress; - char *realStackLimit; - char *lastAddress; - int trace; - int padToWord; - struct _StackPage *nextPage; - struct _StackPage *prevPage; - } StackPage; - -#define CogStackPage StackPage - - - /*** Constants ***/ #define AccessModifierPrivate 1 #define AccessModifierProtected 2 @@ -414,7 +366,55 @@ #define XIndex 0 #define YIndex 1
+typedef struct { + usqInt segStart; + usqInt segSize; + sqInt swizzle; + usqInt containsPinned; + usqInt savedSegSize; + usqInt lastFreeObject; + } SpurSegmentInfo;
+ +typedef struct { + usqInt start; + usqInt limit; + } SpurNewSpaceSpace; + + +typedef struct { + usqInt start; + usqInt limit; + usqInt first; + usqInt last; + } SpurCircularBuffer; + + +typedef struct { + usqInt start; + usqInt limit; + usqInt top; + } SpurContiguousObjStack; + + +typedef struct _StackPage { + char *stackLimit; + char *headSP; + char *headFP; + char *baseFP; + char *baseAddress; + char *realStackLimit; + char *lastAddress; + int trace; + int padToWord; + struct _StackPage *nextPage; + struct _StackPage *prevPage; + } StackPage; + +#define CogStackPage StackPage + + + /*** Function Prototypes ***/
@@ -2445,7 +2445,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.1680"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1685"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -17859,7 +17859,7 @@ static sqInt checkForAndFollowForwardedPrimitiveState(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT - sqInt accessorDepth; + signed char accessorDepth; sqInt firstBytecode; sqInt found; sqInt found1; @@ -60625,12 +60625,12 @@ sqInt objOop1; sqInt objOop11; sqInt objOop12; - sqInt objOop13; sqInt objStackPage; sqInt objToScan; sqInt objToScan1; sqInt objToScan2; sqInt oop; + sqInt oop1; sqInt p; usqInt ptr; sqInt scanLargeObject; @@ -60673,13 +60673,13 @@ assert(!((isForwarded(weakling)))); markAndTraceClassOf(weakling); for (i = 0, iLimiT = ((numStrongSlotsOfWeakling(weakling)) - 1); i <= iLimiT; i += 1) { - /* begin followObjField:ofObject: */ - objOop = longAt((weakling + BaseHeaderSize) + (((long)i) << (shiftForWord()))); - assert(isNonImmediate(objOop)); - if (((longAt(objOop)) & ((classIndexMask()) - (isForwardedObjectClassIndexPun()))) == 0) { - objOop = fixFollowedFieldofObjectwithInitialValue(i, weakling, objOop); + /* begin followOopField:ofObject: */ + oop = longAt((weakling + BaseHeaderSize) + (((long)i) << (shiftForWord()))); + if (((oop & (tagMask())) == 0) + && (((longAt(oop)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) { + oop = fixFollowedFieldofObjectwithInitialValue(i, weakling, oop); } - field = objOop; + field = oop; if (!(((field & (tagMask())) != 0) || (((((usqInt) (longAt(field))) >> 55) & 1) != 0))) { /* begin markAndTrace: */ @@ -60764,9 +60764,9 @@ } if (fmt == (weakArrayFormat())) { /* begin fixedFieldsOfClass: */ - objOop11 = fetchClassOfNonImm(objToScan); + objOop1 = fetchClassOfNonImm(objToScan); /* begin fixedFieldsOfClassFormat: */ - numStrongSlots = (((longAt((objOop11 + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3)) & ((1LL << (fixedFieldsFieldWidth())) - 1); + numStrongSlots = (((longAt((objOop1 + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3)) & ((1LL << (fixedFieldsFieldWidth())) - 1); goto l20; } } @@ -60963,16 +60963,16 @@ ptr = ((GIV(unscannedEphemerons).top)) - BytesPerWord; while (ptr >= ((GIV(unscannedEphemerons).start))) { /* begin followedKeyOfEphemeron: */ - objOop1 = (ephemeron = longAt(ptr)); - assert((isNonImmediate(objOop1)) - && (isEphemeron(objOop1))); + objOop = (ephemeron = longAt(ptr)); + assert((isNonImmediate(objOop)) + && (isEphemeron(objOop))); /* begin followOopField:ofObject: */ - oop = longAt((objOop1 + BaseHeaderSize) + (0LL << (shiftForWord()))); - if (((oop & (tagMask())) == 0) - && (((longAt(oop)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) { - oop = fixFollowedFieldofObjectwithInitialValue(0, objOop1, oop); + oop1 = longAt((objOop + BaseHeaderSize) + (0LL << (shiftForWord()))); + if (((oop1 & (tagMask())) == 0) + && (((longAt(oop1)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) { + oop1 = fixFollowedFieldofObjectwithInitialValue(0, objOop, oop1); } - key = oop; + key = oop1; /* begin markAndTrace: */
/* inline markAndShouldScan: */ @@ -61055,9 +61055,9 @@ } if (fmt1 == (weakArrayFormat())) { /* begin fixedFieldsOfClass: */ - objOop12 = fetchClassOfNonImm(objToScan1); + objOop11 = fetchClassOfNonImm(objToScan1); /* begin fixedFieldsOfClassFormat: */ - numStrongSlots1 = (((longAt((objOop12 + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3)) & ((1LL << (fixedFieldsFieldWidth())) - 1); + numStrongSlots1 = (((longAt((objOop11 + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3)) & ((1LL << (fixedFieldsFieldWidth())) - 1); goto l13; } } @@ -61301,9 +61301,9 @@ } if (fmt2 == (weakArrayFormat())) { /* begin fixedFieldsOfClass: */ - objOop13 = fetchClassOfNonImm(objToScan2); + objOop12 = fetchClassOfNonImm(objToScan2); /* begin fixedFieldsOfClassFormat: */ - numStrongSlots2 = (((longAt((objOop13 + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3)) & ((1LL << (fixedFieldsFieldWidth())) - 1); + numStrongSlots2 = (((longAt((objOop12 + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3)) & ((1LL << (fixedFieldsFieldWidth())) - 1); goto l15; } } @@ -61545,7 +61545,7 @@ usqInt prevFree; usqInt prevFreeChunk; usqInt prevPrevFree; - sqInt prevPrevFreeChunk; + usqInt prevPrevFreeChunk; sqInt slotBytes; sqInt slotBytes1; usqInt there; @@ -66910,7 +66910,7 @@ bridgeFromto(SpurSegmentInfo *aSegment, SpurSegmentInfo *nextSegmentOrNil) { usqInt bridgeSpan; - sqInt clifton; + usqInt clifton; usqInt segEnd;
segEnd = ((aSegment->segSize)) + ((aSegment->segStart)); @@ -67153,7 +67153,7 @@ sqInt limit; sqInt newEndOfMemory; sqInt next; - sqInt node; + usqInt node; usqInt numSlots; usqInt numSlots1; SpurSegmentInfo *seg; @@ -67282,7 +67282,7 @@ static sqInt NoDbgRegParms readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes) { DECL_MAYBE_SQ_GLOBAL_STRUCT - usqInt bridge; + sqInt bridge; usqInt bridgehead; usqLong bridgeSpan; sqInt bytesRead;
Modified: branches/Cog/nsspursrc/vm/cogit.h =================================================================== --- branches/Cog/nsspursrc/vm/cogit.h 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/nsspursrc/vm/cogit.h 2016-02-20 20:20:49 UTC (rev 3617) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 + CCodeGenerator VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 */
Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c =================================================================== --- branches/Cog/nsspursrc/vm/cogitARMv5.c 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/nsspursrc/vm/cogitARMv5.c 2016-02-20 20:20:49 UTC (rev 3617) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1677 uuid: 7056bb77-6aa0-4cb6-aa6c-cd921c231d37 + CCodeGenerator VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 from - StackToRegisterMappingCogit VMMaker.oscog-eem.1677 uuid: 7056bb77-6aa0-4cb6-aa6c-cd921c231d37 + StackToRegisterMappingCogit VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1677 uuid: 7056bb77-6aa0-4cb6-aa6c-cd921c231d37 " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 " __DATE__ ; char *__cogitBuildInfo = __buildInfo;
@@ -21,96 +21,7 @@ #endif #include "cogit.h"
-typedef struct _AbstractInstruction { - unsigned char opcode; - unsigned char machineCodeSize; - unsigned char maxSize; - unsigned char annotation; - unsigned char conditionOrNil; - unsigned long operands [3]; - unsigned long address; - struct _AbstractInstruction *dependent; - unsigned long machineCode [5]; - } AbstractInstruction;
-#define CogOutOfLineLiteralsARMCompiler AbstractInstruction -#define CogARMCompiler AbstractInstruction -#define CogAbstractInstruction AbstractInstruction - - -typedef struct { - AbstractInstruction *fakeHeader; - AbstractInstruction *fillInstruction; - sqInt numArgs; - sqInt numCopied; - sqInt numInitialNils; - sqInt startpc; - AbstractInstruction *entryLabel; - AbstractInstruction *stackCheckLabel; - sqInt span; - sqInt hasInstVarRef; - } BlockStart; - -#define CogBlockStart BlockStart - - -typedef struct _BytecodeDescriptor { - sqInt (*generator )(void); - sqInt (*spanFunction )(struct _BytecodeDescriptor *,sqInt,sqInt,sqInt); - sqInt (*needsFrameFunction )(sqInt); - signed char stackDelta; - unsigned char opcode; - unsigned char numBytes; - unsigned isBranchTrue : 1; - unsigned isBranchFalse : 1; - unsigned isReturn : 1; - unsigned isBlockCreation : 1; - unsigned isMapped : 1; - unsigned isMappedInBlock : 1; - unsigned isExtension : 1; - unsigned isInstVarRef : 1; - unsigned hasIRC : 1; - } BytecodeDescriptor; - -#define CogBytecodeDescriptor BytecodeDescriptor - - -typedef struct { - sqInt (*primitiveGenerator )(void); - sqInt primNumArgs; - } PrimitiveDescriptor; - -#define CogPrimitiveDescriptor PrimitiveDescriptor - - -typedef struct { - AbstractInstruction *targetInstruction; - sqInt instructionIndex; - sqInt simStackPtr; - } BytecodeFixup; - -#define CogSSBytecodeFixup BytecodeFixup -#define CogBytecodeFixup BytecodeFixup - - -typedef struct { - char type; - char spilled; - char annotateUse; - sqInt registerr; - sqInt offset; - sqInt constant; - sqInt bcptr; - } CogSimStackEntry; - - -typedef struct { - sqInt isReceiverResultRegLive; - CogSimStackEntry *ssEntry; - } CogSSOptStatus; - - - /*** Constants ***/ #define AddCqR 95 #define AddCwR 103 @@ -385,7 +296,96 @@ #define XorRR 93 #define YoungSelectorInPIC -5
+typedef struct _AbstractInstruction { + unsigned char opcode; + unsigned char machineCodeSize; + unsigned char maxSize; + unsigned char annotation; + unsigned char conditionOrNil; + unsigned long operands [3]; + unsigned long address; + struct _AbstractInstruction *dependent; + unsigned long machineCode [5]; + } AbstractInstruction;
+#define CogOutOfLineLiteralsARMCompiler AbstractInstruction +#define CogARMCompiler AbstractInstruction +#define CogAbstractInstruction AbstractInstruction + + +typedef struct { + AbstractInstruction *fakeHeader; + AbstractInstruction *fillInstruction; + sqInt numArgs; + sqInt numCopied; + sqInt numInitialNils; + sqInt startpc; + AbstractInstruction *entryLabel; + AbstractInstruction *stackCheckLabel; + sqInt span; + sqInt hasInstVarRef; + } BlockStart; + +#define CogBlockStart BlockStart + + +typedef struct _BytecodeDescriptor { + sqInt (*generator )(void); + sqInt (*spanFunction )(struct _BytecodeDescriptor *,sqInt,sqInt,sqInt); + sqInt (*needsFrameFunction )(sqInt); + signed char stackDelta; + unsigned char opcode; + unsigned char numBytes; + unsigned isBranchTrue : 1; + unsigned isBranchFalse : 1; + unsigned isReturn : 1; + unsigned isBlockCreation : 1; + unsigned isMapped : 1; + unsigned isMappedInBlock : 1; + unsigned isExtension : 1; + unsigned isInstVarRef : 1; + unsigned hasIRC : 1; + } BytecodeDescriptor; + +#define CogBytecodeDescriptor BytecodeDescriptor + + +typedef struct { + sqInt (*primitiveGenerator )(void); + sqInt primNumArgs; + } PrimitiveDescriptor; + +#define CogPrimitiveDescriptor PrimitiveDescriptor + + +typedef struct { + AbstractInstruction *targetInstruction; + sqInt instructionIndex; + sqInt simStackPtr; + } BytecodeFixup; + +#define CogSSBytecodeFixup BytecodeFixup +#define CogBytecodeFixup BytecodeFixup + + +typedef struct { + char type; + char spilled; + char annotateUse; + sqInt registerr; + sqInt offset; + sqInt constant; + sqInt bcptr; + } CogSimStackEntry; + + +typedef struct { + sqInt isReceiverResultRegLive; + CogSimStackEntry *ssEntry; + } CogSSOptStatus; + + + /*** Function Prototypes ***/
@@ -10558,12 +10558,12 @@ generateMapAtstart(sqInt addressOrNull, sqInt startAddress) { unsigned char annotation; - usqInt delta; + sqInt delta; sqInt i; AbstractInstruction *instruction; sqInt length; - usqInt location; - usqInt mapEntry; + sqInt location; + sqInt mapEntry; sqInt maxDelta; usqInt mcpc;
Modified: branches/Cog/nsspursrc/vm/cogitIA32.c =================================================================== --- branches/Cog/nsspursrc/vm/cogitIA32.c 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/nsspursrc/vm/cogitIA32.c 2016-02-20 20:20:49 UTC (rev 3617) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1677 uuid: 7056bb77-6aa0-4cb6-aa6c-cd921c231d37 + CCodeGenerator VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 from - StackToRegisterMappingCogit VMMaker.oscog-eem.1677 uuid: 7056bb77-6aa0-4cb6-aa6c-cd921c231d37 + StackToRegisterMappingCogit VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1677 uuid: 7056bb77-6aa0-4cb6-aa6c-cd921c231d37 " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 " __DATE__ ; char *__cogitBuildInfo = __buildInfo;
@@ -21,94 +21,7 @@ #endif #include "cogit.h"
-typedef struct _AbstractInstruction { - unsigned char opcode; - unsigned char machineCodeSize; - unsigned char maxSize; - unsigned char annotation; - unsigned long operands [3]; - unsigned long address; - struct _AbstractInstruction *dependent; - unsigned char machineCode [10]; - } AbstractInstruction;
-#define CogIA32Compiler AbstractInstruction -#define CogAbstractInstruction AbstractInstruction - - -typedef struct { - AbstractInstruction *fakeHeader; - AbstractInstruction *fillInstruction; - sqInt numArgs; - sqInt numCopied; - sqInt numInitialNils; - sqInt startpc; - AbstractInstruction *entryLabel; - AbstractInstruction *stackCheckLabel; - sqInt span; - sqInt hasInstVarRef; - } BlockStart; - -#define CogBlockStart BlockStart - - -typedef struct _BytecodeDescriptor { - sqInt (*generator )(void); - sqInt (*spanFunction )(struct _BytecodeDescriptor *,sqInt,sqInt,sqInt); - sqInt (*needsFrameFunction )(sqInt); - signed char stackDelta; - unsigned char opcode; - unsigned char numBytes; - unsigned isBranchTrue : 1; - unsigned isBranchFalse : 1; - unsigned isReturn : 1; - unsigned isBlockCreation : 1; - unsigned isMapped : 1; - unsigned isMappedInBlock : 1; - unsigned isExtension : 1; - unsigned isInstVarRef : 1; - unsigned hasIRC : 1; - } BytecodeDescriptor; - -#define CogBytecodeDescriptor BytecodeDescriptor - - -typedef struct { - sqInt (*primitiveGenerator )(void); - sqInt primNumArgs; - } PrimitiveDescriptor; - -#define CogPrimitiveDescriptor PrimitiveDescriptor - - -typedef struct { - AbstractInstruction *targetInstruction; - sqInt instructionIndex; - sqInt simStackPtr; - } BytecodeFixup; - -#define CogSSBytecodeFixup BytecodeFixup -#define CogBytecodeFixup BytecodeFixup - - -typedef struct { - char type; - char spilled; - char annotateUse; - sqInt registerr; - sqInt offset; - sqInt constant; - sqInt bcptr; - } CogSimStackEntry; - - -typedef struct { - sqInt isReceiverResultRegLive; - CogSimStackEntry *ssEntry; - } CogSSOptStatus; - - - /*** Constants ***/ #define AddCqR 95 #define AddCwR 103 @@ -369,7 +282,94 @@ #define XorRR 93 #define YoungSelectorInPIC -5
+typedef struct _AbstractInstruction { + unsigned char opcode; + unsigned char machineCodeSize; + unsigned char maxSize; + unsigned char annotation; + unsigned long operands [3]; + unsigned long address; + struct _AbstractInstruction *dependent; + unsigned char machineCode [10]; + } AbstractInstruction;
+#define CogIA32Compiler AbstractInstruction +#define CogAbstractInstruction AbstractInstruction + + +typedef struct { + AbstractInstruction *fakeHeader; + AbstractInstruction *fillInstruction; + sqInt numArgs; + sqInt numCopied; + sqInt numInitialNils; + sqInt startpc; + AbstractInstruction *entryLabel; + AbstractInstruction *stackCheckLabel; + sqInt span; + sqInt hasInstVarRef; + } BlockStart; + +#define CogBlockStart BlockStart + + +typedef struct _BytecodeDescriptor { + sqInt (*generator )(void); + sqInt (*spanFunction )(struct _BytecodeDescriptor *,sqInt,sqInt,sqInt); + sqInt (*needsFrameFunction )(sqInt); + signed char stackDelta; + unsigned char opcode; + unsigned char numBytes; + unsigned isBranchTrue : 1; + unsigned isBranchFalse : 1; + unsigned isReturn : 1; + unsigned isBlockCreation : 1; + unsigned isMapped : 1; + unsigned isMappedInBlock : 1; + unsigned isExtension : 1; + unsigned isInstVarRef : 1; + unsigned hasIRC : 1; + } BytecodeDescriptor; + +#define CogBytecodeDescriptor BytecodeDescriptor + + +typedef struct { + sqInt (*primitiveGenerator )(void); + sqInt primNumArgs; + } PrimitiveDescriptor; + +#define CogPrimitiveDescriptor PrimitiveDescriptor + + +typedef struct { + AbstractInstruction *targetInstruction; + sqInt instructionIndex; + sqInt simStackPtr; + } BytecodeFixup; + +#define CogSSBytecodeFixup BytecodeFixup +#define CogBytecodeFixup BytecodeFixup + + +typedef struct { + char type; + char spilled; + char annotateUse; + sqInt registerr; + sqInt offset; + sqInt constant; + sqInt bcptr; + } CogSimStackEntry; + + +typedef struct { + sqInt isReceiverResultRegLive; + CogSimStackEntry *ssEntry; + } CogSSOptStatus; + + + /*** Function Prototypes ***/
@@ -9626,12 +9626,12 @@ generateMapAtstart(sqInt addressOrNull, sqInt startAddress) { unsigned char annotation; - usqInt delta; + sqInt delta; sqInt i; AbstractInstruction *instruction; sqInt length; - usqInt location; - usqInt mapEntry; + sqInt location; + sqInt mapEntry; sqInt maxDelta; usqInt mcpc;
Modified: branches/Cog/nsspursrc/vm/cogitMIPSEL.c =================================================================== --- branches/Cog/nsspursrc/vm/cogitMIPSEL.c 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/nsspursrc/vm/cogitMIPSEL.c 2016-02-20 20:20:49 UTC (rev 3617) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1677 uuid: 7056bb77-6aa0-4cb6-aa6c-cd921c231d37 + CCodeGenerator VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 from - StackToRegisterMappingCogit VMMaker.oscog-eem.1677 uuid: 7056bb77-6aa0-4cb6-aa6c-cd921c231d37 + StackToRegisterMappingCogit VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1677 uuid: 7056bb77-6aa0-4cb6-aa6c-cd921c231d37 " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 " __DATE__ ; char *__cogitBuildInfo = __buildInfo;
@@ -22,94 +22,7 @@ #endif #include "cogit.h"
-typedef struct _AbstractInstruction { - unsigned char opcode; - unsigned char machineCodeSize; - unsigned char maxSize; - unsigned char annotation; - unsigned long operands [3]; - unsigned long address; - struct _AbstractInstruction *dependent; - unsigned long machineCode [7]; - } AbstractInstruction;
-#define CogMIPSELCompiler AbstractInstruction -#define CogAbstractInstruction AbstractInstruction - - -typedef struct { - AbstractInstruction *fakeHeader; - AbstractInstruction *fillInstruction; - sqInt numArgs; - sqInt numCopied; - sqInt numInitialNils; - sqInt startpc; - AbstractInstruction *entryLabel; - AbstractInstruction *stackCheckLabel; - sqInt span; - sqInt hasInstVarRef; - } BlockStart; - -#define CogBlockStart BlockStart - - -typedef struct _BytecodeDescriptor { - sqInt (*generator )(void); - sqInt (*spanFunction )(struct _BytecodeDescriptor *,sqInt,sqInt,sqInt); - sqInt (*needsFrameFunction )(sqInt); - signed char stackDelta; - unsigned char opcode; - unsigned char numBytes; - unsigned isBranchTrue : 1; - unsigned isBranchFalse : 1; - unsigned isReturn : 1; - unsigned isBlockCreation : 1; - unsigned isMapped : 1; - unsigned isMappedInBlock : 1; - unsigned isExtension : 1; - unsigned isInstVarRef : 1; - unsigned hasIRC : 1; - } BytecodeDescriptor; - -#define CogBytecodeDescriptor BytecodeDescriptor - - -typedef struct { - sqInt (*primitiveGenerator )(void); - sqInt primNumArgs; - } PrimitiveDescriptor; - -#define CogPrimitiveDescriptor PrimitiveDescriptor - - -typedef struct { - AbstractInstruction *targetInstruction; - sqInt instructionIndex; - sqInt simStackPtr; - } BytecodeFixup; - -#define CogSSBytecodeFixup BytecodeFixup -#define CogBytecodeFixup BytecodeFixup - - -typedef struct { - char type; - char spilled; - char annotateUse; - sqInt registerr; - sqInt offset; - sqInt constant; - sqInt bcptr; - } CogSimStackEntry; - - -typedef struct { - sqInt isReceiverResultRegLive; - CogSimStackEntry *ssEntry; - } CogSSOptStatus; - - - /*** Constants ***/ #define A0 4 #define A1 5 @@ -440,7 +353,94 @@ #define YoungSelectorInPIC -5 #define ZR 0
+typedef struct _AbstractInstruction { + unsigned char opcode; + unsigned char machineCodeSize; + unsigned char maxSize; + unsigned char annotation; + unsigned long operands [3]; + unsigned long address; + struct _AbstractInstruction *dependent; + unsigned long machineCode [7]; + } AbstractInstruction;
+#define CogMIPSELCompiler AbstractInstruction +#define CogAbstractInstruction AbstractInstruction + + +typedef struct { + AbstractInstruction *fakeHeader; + AbstractInstruction *fillInstruction; + sqInt numArgs; + sqInt numCopied; + sqInt numInitialNils; + sqInt startpc; + AbstractInstruction *entryLabel; + AbstractInstruction *stackCheckLabel; + sqInt span; + sqInt hasInstVarRef; + } BlockStart; + +#define CogBlockStart BlockStart + + +typedef struct _BytecodeDescriptor { + sqInt (*generator )(void); + sqInt (*spanFunction )(struct _BytecodeDescriptor *,sqInt,sqInt,sqInt); + sqInt (*needsFrameFunction )(sqInt); + signed char stackDelta; + unsigned char opcode; + unsigned char numBytes; + unsigned isBranchTrue : 1; + unsigned isBranchFalse : 1; + unsigned isReturn : 1; + unsigned isBlockCreation : 1; + unsigned isMapped : 1; + unsigned isMappedInBlock : 1; + unsigned isExtension : 1; + unsigned isInstVarRef : 1; + unsigned hasIRC : 1; + } BytecodeDescriptor; + +#define CogBytecodeDescriptor BytecodeDescriptor + + +typedef struct { + sqInt (*primitiveGenerator )(void); + sqInt primNumArgs; + } PrimitiveDescriptor; + +#define CogPrimitiveDescriptor PrimitiveDescriptor + + +typedef struct { + AbstractInstruction *targetInstruction; + sqInt instructionIndex; + sqInt simStackPtr; + } BytecodeFixup; + +#define CogSSBytecodeFixup BytecodeFixup +#define CogBytecodeFixup BytecodeFixup + + +typedef struct { + char type; + char spilled; + char annotateUse; + sqInt registerr; + sqInt offset; + sqInt constant; + sqInt bcptr; + } CogSimStackEntry; + + +typedef struct { + sqInt isReceiverResultRegLive; + CogSimStackEntry *ssEntry; + } CogSSOptStatus; + + + /*** Function Prototypes ***/
@@ -5738,12 +5738,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;
Modified: branches/Cog/nsspursrc/vm/cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.c 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/nsspursrc/vm/cointerp.c 2016-02-20 20:20:49 UTC (rev 3617) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 from - CoInterpreter VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 + CoInterpreter VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -77,54 +77,7 @@
/* end StackInterpreter class>>preambleCCode */
-typedef struct { - usqInt segStart; - usqInt segSize; - sqInt swizzle; - usqInt containsPinned; - usqInt savedSegSize; - usqInt lastFreeObject; - } SpurSegmentInfo;
- -typedef struct { - usqInt start; - usqInt limit; - } SpurNewSpaceSpace; - - -typedef struct { - usqInt start; - usqInt limit; - usqInt first; - usqInt last; - } SpurCircularBuffer; - - -typedef struct { - usqInt start; - usqInt limit; - usqInt top; - } SpurContiguousObjStack; - - -typedef struct _StackPage { - char *stackLimit; - char *headSP; - char *headFP; - char *baseFP; - char *baseAddress; - char *realStackLimit; - char *lastAddress; - int trace; - struct _StackPage *nextPage; - struct _StackPage *prevPage; - } StackPage; - -#define CogStackPage StackPage - - - /*** Constants ***/ #define AccessModifierPrivate 1 #define AccessModifierProtected 2 @@ -402,7 +355,54 @@ #define XIndex 0 #define YIndex 1
+typedef struct { + usqInt segStart; + usqInt segSize; + sqInt swizzle; + usqInt containsPinned; + usqInt savedSegSize; + usqInt lastFreeObject; + } SpurSegmentInfo;
+ +typedef struct { + usqInt start; + usqInt limit; + } SpurNewSpaceSpace; + + +typedef struct { + usqInt start; + usqInt limit; + usqInt first; + usqInt last; + } SpurCircularBuffer; + + +typedef struct { + usqInt start; + usqInt limit; + usqInt top; + } SpurContiguousObjStack; + + +typedef struct _StackPage { + char *stackLimit; + char *headSP; + char *headFP; + char *baseFP; + char *baseAddress; + char *realStackLimit; + char *lastAddress; + int trace; + struct _StackPage *nextPage; + struct _StackPage *prevPage; + } StackPage; + +#define CogStackPage StackPage + + + /*** Function Prototypes ***/
@@ -2411,7 +2411,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.1680"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1685"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace;
@@ -59727,12 +59727,12 @@ sqInt objOop1; sqInt objOop11; sqInt objOop12; - sqInt objOop13; sqInt objStackPage; sqInt objToScan; sqInt objToScan1; sqInt objToScan2; sqInt oop; + sqInt oop1; sqInt p; usqInt ptr; sqInt scanLargeObject; @@ -59775,13 +59775,13 @@ assert(!((isForwarded(weakling)))); markAndTraceClassOf(weakling); for (i = 0, iLimiT = ((numStrongSlotsOfWeakling(weakling)) - 1); i <= iLimiT; i += 1) { - /* begin followObjField:ofObject: */ - objOop = longAt((weakling + BaseHeaderSize) + (i << (shiftForWord()))); - assert(isNonImmediate(objOop)); - if (((longAt(objOop)) & ((classIndexMask()) - (isForwardedObjectClassIndexPun()))) == 0) { - objOop = fixFollowedFieldofObjectwithInitialValue(i, weakling, objOop); + /* begin followOopField:ofObject: */ + oop = longAt((weakling + BaseHeaderSize) + (i << (shiftForWord()))); + if (((oop & (tagMask())) == 0) + && (((longAt(oop)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) { + oop = fixFollowedFieldofObjectwithInitialValue(i, weakling, oop); } - field = objOop; + field = oop; if (!(((field & (tagMask())) != 0) || (((((usqInt) (longAt(field + 4))) >> 23) & 1) != 0))) { /* begin markAndTrace: */ @@ -59864,9 +59864,9 @@ } if (fmt == (weakArrayFormat())) { /* begin fixedFieldsOfClass: */ - objOop11 = fetchClassOfNonImm(objToScan); + objOop1 = fetchClassOfNonImm(objToScan); /* begin fixedFieldsOfClassFormat: */ - numStrongSlots = (((longAt((objOop11 + BaseHeaderSize) + (InstanceSpecificationIndex << (shiftForWord())))) >> 1)) & ((1 << (fixedFieldsFieldWidth())) - 1); + numStrongSlots = (((longAt((objOop1 + BaseHeaderSize) + (InstanceSpecificationIndex << (shiftForWord())))) >> 1)) & ((1 << (fixedFieldsFieldWidth())) - 1); goto l20; } } @@ -60059,16 +60059,16 @@ ptr = ((GIV(unscannedEphemerons).top)) - BytesPerWord; while (ptr >= ((GIV(unscannedEphemerons).start))) { /* begin followedKeyOfEphemeron: */ - objOop1 = (ephemeron = longAt(ptr)); - assert((isNonImmediate(objOop1)) - && (isEphemeron(objOop1))); + objOop = (ephemeron = longAt(ptr)); + assert((isNonImmediate(objOop)) + && (isEphemeron(objOop))); /* begin followOopField:ofObject: */ - oop = longAt((objOop1 + BaseHeaderSize) + (0 << (shiftForWord()))); - if (((oop & (tagMask())) == 0) - && (((longAt(oop)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) { - oop = fixFollowedFieldofObjectwithInitialValue(0, objOop1, oop); + oop1 = longAt((objOop + BaseHeaderSize) + (0 << (shiftForWord()))); + if (((oop1 & (tagMask())) == 0) + && (((longAt(oop1)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) { + oop1 = fixFollowedFieldofObjectwithInitialValue(0, objOop, oop1); } - key = oop; + key = oop1; /* begin markAndTrace: */
/* inline markAndShouldScan: */ @@ -60149,9 +60149,9 @@ } if (fmt1 == (weakArrayFormat())) { /* begin fixedFieldsOfClass: */ - objOop12 = fetchClassOfNonImm(objToScan1); + objOop11 = fetchClassOfNonImm(objToScan1); /* begin fixedFieldsOfClassFormat: */ - numStrongSlots1 = (((longAt((objOop12 + BaseHeaderSize) + (InstanceSpecificationIndex << (shiftForWord())))) >> 1)) & ((1 << (fixedFieldsFieldWidth())) - 1); + numStrongSlots1 = (((longAt((objOop11 + BaseHeaderSize) + (InstanceSpecificationIndex << (shiftForWord())))) >> 1)) & ((1 << (fixedFieldsFieldWidth())) - 1); goto l13; } } @@ -60389,9 +60389,9 @@ } if (fmt2 == (weakArrayFormat())) { /* begin fixedFieldsOfClass: */ - objOop13 = fetchClassOfNonImm(objToScan2); + objOop12 = fetchClassOfNonImm(objToScan2); /* begin fixedFieldsOfClassFormat: */ - numStrongSlots2 = (((longAt((objOop13 + BaseHeaderSize) + (InstanceSpecificationIndex << (shiftForWord())))) >> 1)) & ((1 << (fixedFieldsFieldWidth())) - 1); + numStrongSlots2 = (((longAt((objOop12 + BaseHeaderSize) + (InstanceSpecificationIndex << (shiftForWord())))) >> 1)) & ((1 << (fixedFieldsFieldWidth())) - 1); goto l15; } } @@ -66350,7 +66350,7 @@ static sqInt NoDbgRegParms readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes) { DECL_MAYBE_SQ_GLOBAL_STRUCT - usqInt bridge; + sqInt bridge; usqInt bridgehead; usqInt bridgeSpan; sqInt bytesRead; @@ -66565,7 +66565,7 @@ usqLong firstSavedBridgeWord; sqInt nWritten; usqInt pier1; - usqInt pier2; + sqInt pier2; usqLong secondSavedBridgeWord;
pier1 = (((segment->segSize)) + ((segment->segStart))) - (2 * BaseHeaderSize);
Modified: branches/Cog/nsspursrc/vm/cointerp.h =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.h 2016-02-20 00:19:08 UTC (rev 3616) +++ branches/Cog/nsspursrc/vm/cointerp.h 2016-02-20 20:20:49 UTC (rev 3617) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1680 uuid: 6fe34e1e-a5e0-4966-a2cd-3f21ccb0bde9 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1685 uuid: 59633283-8843-4826-a68a-b23ea22d1fa8 */
@@ Diff output truncated at 50000 characters. @@
vm-dev@lists.squeakfoundation.org