[Vm-dev] [commit][3617] CogVM source as per VMMaker.oscog-eem.1687
commits at squeakvm.org
commits at squeakvm.org
Sat Feb 20 20:20:51 UTC 2016
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. @@
More information about the Vm-dev
mailing list