[Vm-dev] [commit][3408] CogVM source as per VMMaker.oscog-eem.1427
commits at squeakvm.org
commits at squeakvm.org
Sat Jul 18 21:59:58 UTC 2015
Revision: 3408
Author: eliot
Date: 2015-07-18 14:59:56 -0700 (Sat, 18 Jul 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1427
Fix at least one set of 64-bit issues caused by Slang. In particular the
integerObjectOf: code resulted in
(objectMemory integerObjectOf: MillisecondClockMask)
evaluating to the -1 object, instead of the 16r1FFFFFFF object, which was the
cause of the initially nresponsive 64-bit image on the real VM.
Don't use cppIf: NewspeakVM(et al) where possible, to avoid leaving
#if NewspeakVM everywhere. Instead rely on generation-time dead code removal.
Both Newspeak and Squeak VMs benefit from improved readability.
Fix some primitiveFail[For:] calls in potential mirror primitives that did not
return after falure, and could hence continue to do damage after detecting a
failure condition.
Modified Paths:
--------------
branches/Cog/nsspursrc/vm/cogit.h
branches/Cog/nsspursrc/vm/cogitARMv5.c
branches/Cog/nsspursrc/vm/cogitIA32.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/spursistasrc/vm/cogit.h
branches/Cog/spursistasrc/vm/cogitARMv5.c
branches/Cog/spursistasrc/vm/cogitIA32.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/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/MiscPrimitivePlugin/MiscPrimitivePlugin.c
branches/Cog/src/vm/cogit.h
branches/Cog/src/vm/cogitARMv5.c
branches/Cog/src/vm/cogitIA32.c
branches/Cog/src/vm/cointerp.c
branches/Cog/src/vm/cointerp.h
branches/Cog/src/vm/cointerpmt.c
branches/Cog/src/vm/cointerpmt.h
branches/Cog/src/vm/gcc3x-cointerp.c
branches/Cog/src/vm/gcc3x-cointerpmt.c
branches/Cog/stacksrc/vm/gcc3x-interp.c
branches/Cog/stacksrc/vm/interp.c
Property Changed:
----------------
branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h 2015-07-16 23:33:11 UTC (rev 3407)
+++ branches/Cog/nsspursrc/vm/cogit.h 2015-07-18 21:59:56 UTC (rev 3408)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1423 uuid: cf39cfd3-52f5-4f6b-bba6-892ee83000fe
+ CCodeGenerator VMMaker.oscog-eem.1427 uuid: c5cb18c5-f69e-4e41-8f87-943a495659b4
*/
Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitARMv5.c 2015-07-16 23:33:11 UTC (rev 3407)
+++ branches/Cog/nsspursrc/vm/cogitARMv5.c 2015-07-18 21:59:56 UTC (rev 3408)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1423 uuid: cf39cfd3-52f5-4f6b-bba6-892ee83000fe
+ CCodeGenerator VMMaker.oscog-eem.1427 uuid: c5cb18c5-f69e-4e41-8f87-943a495659b4
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1423 uuid: cf39cfd3-52f5-4f6b-bba6-892ee83000fe
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1427 uuid: c5cb18c5-f69e-4e41-8f87-943a495659b4
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1423 uuid: cf39cfd3-52f5-4f6b-bba6-892ee83000fe " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1427 uuid: c5cb18c5-f69e-4e41-8f87-943a495659b4 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -9895,7 +9895,7 @@
{
sqInt classIndex;
sqInt i;
- sqInt pc;
+ usqInt pc;
pc = (((((usqInt)cPIC)) + firstCPICCaseOffset) + cPICCaseSize) - (jumpLongConditionalByteSize(backEnd));
for (i = 2; i <= ((cPIC->cPICNumCases)); i += 1) {
@@ -10871,12 +10871,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;
@@ -24829,16 +24829,7 @@
generateNewspeakSendTrampolines();
-# if BytecodeSetHasDirectedSuperSend
for (numArgs = 0; numArgs < NumSendTrampolines; numArgs += 1) {
- directedSuperSendTrampolines[numArgs] = (genSendTrampolineFornumArgscalledargargargarg(ceSendabovetonumArgs, numArgs, trampolineNamenumArgs("ceDirectedSuperSend", numArgs), ClassReg, TempReg, ReceiverResultReg, (numArgs <= (NumSendTrampolines - 2)
- ? numArgs
- : SendNumArgsReg)));
- }
-
-# endif /* BytecodeSetHasDirectedSuperSend */
-
- for (numArgs = 0; numArgs < NumSendTrampolines; numArgs += 1) {
superSendTrampolines[numArgs] = (genSendTrampolineFornumArgscalledargargargarg(ceSendsupertonumArgs, numArgs, trampolineNamenumArgs("ceSuperSend", numArgs), ClassReg, 1, ReceiverResultReg, (numArgs <= (NumSendTrampolines - 2)
? numArgs
: SendNumArgsReg)));
Modified: branches/Cog/nsspursrc/vm/cogitIA32.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitIA32.c 2015-07-16 23:33:11 UTC (rev 3407)
+++ branches/Cog/nsspursrc/vm/cogitIA32.c 2015-07-18 21:59:56 UTC (rev 3408)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1423 uuid: cf39cfd3-52f5-4f6b-bba6-892ee83000fe
+ CCodeGenerator VMMaker.oscog-eem.1427 uuid: c5cb18c5-f69e-4e41-8f87-943a495659b4
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1423 uuid: cf39cfd3-52f5-4f6b-bba6-892ee83000fe
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1427 uuid: c5cb18c5-f69e-4e41-8f87-943a495659b4
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1423 uuid: cf39cfd3-52f5-4f6b-bba6-892ee83000fe " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1427 uuid: c5cb18c5-f69e-4e41-8f87-943a495659b4 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -9993,12 +9993,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;
@@ -24464,16 +24464,7 @@
generateNewspeakSendTrampolines();
-# if BytecodeSetHasDirectedSuperSend
for (numArgs = 0; numArgs < NumSendTrampolines; numArgs += 1) {
- directedSuperSendTrampolines[numArgs] = (genSendTrampolineFornumArgscalledargargargarg(ceSendabovetonumArgs, numArgs, trampolineNamenumArgs("ceDirectedSuperSend", numArgs), ClassReg, TempReg, ReceiverResultReg, (numArgs <= (NumSendTrampolines - 2)
- ? numArgs
- : SendNumArgsReg)));
- }
-
-# endif /* BytecodeSetHasDirectedSuperSend */
-
- for (numArgs = 0; numArgs < NumSendTrampolines; numArgs += 1) {
superSendTrampolines[numArgs] = (genSendTrampolineFornumArgscalledargargargarg(ceSendsupertonumArgs, numArgs, trampolineNamenumArgs("ceSuperSend", numArgs), ClassReg, 1, ReceiverResultReg, (numArgs <= (NumSendTrampolines - 2)
? numArgs
: SendNumArgsReg)));
Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c 2015-07-16 23:33:11 UTC (rev 3407)
+++ branches/Cog/nsspursrc/vm/cointerp.c 2015-07-18 21:59:56 UTC (rev 3408)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f
from
- CoInterpreter VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6
+ CoInterpreter VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -1207,7 +1207,7 @@
static sqInt storeImageSegmentIntooutPointersroots(sqInt segmentWordArray, sqInt outPointerArray, sqInt arrayOfRoots) NoDbgRegParms;
extern sqInt storePointerUncheckedofObjectwithValue(sqInt fieldIndex, sqInt objOop, sqInt valuePointer);
extern sqInt storePointerofObjectwithValue(sqInt fieldIndex, sqInt objOop, sqInt valuePointer);
-extern sqInt stringForCString(const char *aCString);
+extern usqInt stringForCString(const char *aCString);
static sqInt sufficientSpaceAfterGC(sqInt numBytes) NoDbgRegParms;
static sqInt swizzleObjStackAt(sqInt objStackRootIndex) NoDbgRegParms;
extern void tenuringIncrementalGC(void);
@@ -2410,7 +2410,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.1422";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1426";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -6211,15 +6211,8 @@
}
GIV(lkupClass) = longAt((classTablePage1 + BaseHeaderSize) + ((GIV(lkupClassTag) & ((1 << 10) - 1)) << (shiftForWord())));
l238: /* end classAtIndex: */;
-
-# if NewspeakVM
lookupOrdinarySend();
-# else /* NewspeakVM */
- lookupMethodInClass(GIV(lkupClass));
-
-# endif /* NewspeakVM */
-
/* begin internalizeIPandSP */
assert(GIV(instructionPointer) != (ceReturnToInterpreterPC()));
localIP = pointerForOop(GIV(instructionPointer));
@@ -27463,6 +27456,7 @@
validInstructionPointerinMethodframePointer(usqInt instrPointer, usqInt aMethod, char *fp)
{
CogMethod *cogMethod;
+ sqInt header;
sqInt methodField;
usqInt theInstrPointer;
@@ -27485,7 +27479,7 @@
goto l1;
}
cogMethod = ((CogMethod *) (methodField & MFMethodMask));
- l1: /* end mframeHomeMethod: */;
+ l1: /* end mframeHomeMethod: */;
return (theInstrPointer >= ((((usqInt)cogMethod)) + (sizeof(CogMethod))))
&& (theInstrPointer < ((((usqInt)cogMethod)) + ((cogMethod->blockSize))));
}
@@ -30616,7 +30610,8 @@
if (!((GIV(argumentCount) < 1)
|| ((((longAt(GIV(stackPointer))) & 3) == 0)
&& (objCouldBeClassObj(longAt(GIV(stackPointer))))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
result = allInstancesOf(longAt(GIV(stackPointer)));
@@ -31591,6 +31586,9 @@
sqInt hashOrError;
char *sp;
+
+ /* For the mirror prims check that the class obj is actually a valid class. */
+
if (GIV(argumentCount) > 0) {
if (!((((longAt(GIV(stackPointer))) & 3) == 0)
&& (objCouldBeClassObj(longAt(GIV(stackPointer)))))) {
@@ -32437,7 +32435,7 @@
GIV(needGCFlag) = 1;
forceInterruptCheck();
}
- s = allocateSlotsInOldSpacebytesformatclassIndex(numSlots, numBytes, formatField, ClassByteStringCompactIndex);
+ s = ((usqInt) (allocateSlotsInOldSpacebytesformatclassIndex(numSlots, numBytes, formatField, ClassByteStringCompactIndex)));
goto l1;
}
if (numSlots >= 0xFF) {
@@ -38065,7 +38063,7 @@
sqInt err;
sqInt hash;
sqInt instSpec;
- sqInt newObj;
+ usqInt newObj;
usqInt newObj1;
usqInt numBytes;
sqInt numSlots;
@@ -38083,7 +38081,8 @@
if (!((GIV(argumentCount) < 1)
|| (objCouldBeClassObj(longAt(GIV(stackPointer)))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
@@ -38190,7 +38189,7 @@
sqInt i;
usqInt instSpec;
sqInt literalCount;
- sqInt newObj;
+ usqInt newObj;
usqInt newObj1;
usqInt numBytes;
sqInt numSlots;
@@ -38356,6 +38355,15 @@
sqInt value;
spaceOkay = 0;
+
+ /* For the mirror prims check that the class obj is actually a valid class. */
+
+ if (!((GIV(argumentCount) < 2)
+ || (addressCouldBeClassObj(longAt(GIV(stackPointer) + (1 * BytesPerWord)))))) {
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
+ }
+
/* begin positiveMachineIntegerValueOf: */
oop1 = longAt(GIV(stackPointer));
if ((oop1 & 1)) {
@@ -38428,41 +38436,32 @@
goto l2;
}
l2: /* end positiveMachineIntegerValueOf: */;
-
- /* For the mirror prims check that the class obj is actually a valid class. */
+ if (GIV(primFailCode)) {
- if (!((GIV(argumentCount) < 2)
- || (addressCouldBeClassObj(longAt(GIV(stackPointer) + (1 * BytesPerWord)))))) {
- GIV(primFailCode) = PrimErrBadArgument;
- }
-
- if (!GIV(primFailCode)) {
-
/* positiveMachineIntegerValueOf: succeeds only for non-negative integers. */
- obj = instantiateClassindexableSize(longAt(GIV(stackPointer) + (1 * BytesPerWord)), size);
- if (obj == null) {
- /* begin instSpecOfClassFormat: */
- instSpec = (((usqInt) (((longAt(((longAt(GIV(stackPointer) + (1 * BytesPerWord))) + BaseHeaderSize) + (InstanceSpecificationIndex << (shiftForWord())))) >> 1))) >> 16) & 0x1F;
- /* begin primitiveFailFor: */
- reasonCode = (((instSpec >= 2)
- && ((instSpec <= 4)
- || (instSpec >= 9)))
- && (!(instSpec >= 24))
- ? PrimErrNoMemory
- : PrimErrBadReceiver);
- GIV(primFailCode) = reasonCode;
- }
- else {
- /* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), obj);
- GIV(stackPointer) = sp;
- }
-
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
+ obj = instantiateClassindexableSize(longAt(GIV(stackPointer) + (1 * BytesPerWord)), size);
+ if (obj == null) {
+ /* begin instSpecOfClassFormat: */
+ instSpec = (((usqInt) (((longAt(((longAt(GIV(stackPointer) + (1 * BytesPerWord))) + BaseHeaderSize) + (InstanceSpecificationIndex << (shiftForWord())))) >> 1))) >> 16) & 0x1F;
+ /* begin primitiveFailFor: */
+ reasonCode = (((instSpec >= 2)
+ && ((instSpec <= 4)
+ || (instSpec >= 9)))
+ && (!(instSpec >= 24))
+ ? PrimErrNoMemory
+ : PrimErrBadReceiver);
+ GIV(primFailCode) = reasonCode;
+ }
else {
- GIV(primFailCode) = PrimErrBadArgument;
+ /* begin pop:thenPush: */
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), obj);
+ GIV(stackPointer) = sp;
}
+
}
/* InterpreterPrimitives>>#primitiveNextInstance */
@@ -41062,7 +41061,8 @@
if (!((GIV(argumentCount) < 1)
|| (((class & 3) == 0)
&& (objCouldBeClassObj(class))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
instance = initialInstanceOf(class);
@@ -44106,7 +44106,7 @@
sqInt fillValue;
sqInt hash;
usqInt instSpec;
- sqInt newObj;
+ usqInt newObj;
usqInt newObj1;
usqInt numBytes;
usqInt numSlots;
@@ -46238,7 +46238,7 @@
sqInt entry;
sqInt expectedIndex;
sqInt expectedIndex1;
- sqInt freeChunk;
+ usqInt freeChunk;
sqInt i;
sqInt i1;
sqInt index;
@@ -46277,8 +46277,8 @@
sqInt ptr1;
sqInt ptr2;
sqInt slotBytes;
- sqInt smallObj;
- sqInt start;
+ usqInt smallObj;
+ usqInt start;
classIndex = (long32At(aClass + 4)) & 0x3FFFFF;
if (classIndex == 0) {
@@ -49219,7 +49219,7 @@
sqInt fmt;
sqInt hasYoung;
sqInt i;
- sqInt newObj;
+ usqInt newObj;
usqInt newObj1;
usqInt numBytes;
usqInt numSlots;
@@ -63906,8 +63906,8 @@
sqInt prevPrevObj;
sqInt prevPrevObj1;
sqInt ptr;
- sqInt savedInHashes;
- sqInt savedOutHashes;
+ usqInt savedInHashes;
+ usqInt savedOutHashes;
sqInt segAddr;
sqInt segStart;
sqInt slotBytes;
@@ -64377,13 +64377,13 @@
or nil if out of memory. */
/* SpurMemoryManager>>#stringForCString: */
-sqInt
+usqInt
stringForCString(const char *aCString)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt formatField;
sqInt len;
usqInt newObj;
- sqInt newString;
+ usqInt newString;
usqInt numBytes;
sqInt numSlots;
@@ -65438,7 +65438,7 @@
static sqInt
readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt bridge;
+ usqInt bridge;
usqInt bridgehead;
usqInt bridgeSpan;
sqInt bytesRead;
@@ -65654,7 +65654,7 @@
usqLong firstSavedBridgeWord;
sqInt nWritten;
usqInt pier1;
- sqInt pier2;
+ usqInt pier2;
usqLong secondSavedBridgeWord;
pier1 = (((segment->segSize)) + ((segment->segStart))) - (2 * BaseHeaderSize);
@@ -72744,26 +72744,27 @@
sqInt literal;
sqInt objOop;
sqInt objOop1;
+ sqInt objOop2;
sqInt offset;
- return (/* begin followLiteral:ofMethod: */
- (offset = (literalCountOfMethodHeader(methodHeaderOf(methodPointer))) - 1),
- /* begin followField:ofObject: */
- (objOop1 = longAt((methodPointer + BaseHeaderSize) + ((offset + LiteralStart) << (shiftForWord())))),
- (((objOop1 & 3) == 0)
- && (((longAt(objOop1)) & 0x3FFFFF) == 8)
- ? (objOop1 = fixFollowedFieldofObjectwithInitialValue(offset + LiteralStart, methodPointer, objOop1))
+ /* begin followLiteral:ofMethod: */
+ offset = (literalCountOfMethodHeader(methodHeaderOf(methodPointer))) - 1;
+ /* begin followField:ofObject: */
+ objOop2 = longAt((methodPointer + BaseHeaderSize) + ((offset + LiteralStart) << (shiftForWord())));
+ if (((objOop2 & 3) == 0)
+ && (((longAt(objOop2)) & 0x3FFFFF) == 8)) {
+ objOop2 = fixFollowedFieldofObjectwithInitialValue(offset + LiteralStart, methodPointer, objOop2);
+ }
+ literal = objOop2;
+ return (literal == GIV(nilObj)
+ ? literal
+ : (/* begin followField:ofObject: */
+ (objOop = longAt((literal + BaseHeaderSize) + (ValueIndex << (shiftForWord())))),
+ (((objOop & 3) == 0)
+ && (((longAt(objOop)) & 0x3FFFFF) == 8)
+ ? (objOop = fixFollowedFieldofObjectwithInitialValue(ValueIndex, literal, objOop))
: 0),
- (literal = objOop1),
- (literal == GIV(nilObj)
- ? literal
- : (/* begin followField:ofObject: */
- (objOop = longAt((literal + BaseHeaderSize) + (ValueIndex << (shiftForWord())))),
- (((objOop & 3) == 0)
- && (((longAt(objOop)) & 0x3FFFFF) == 8)
- ? (objOop = fixFollowedFieldofObjectwithInitialValue(ValueIndex, literal, objOop))
- : 0),
- objOop)));
+ objOop));
}
Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h 2015-07-16 23:33:11 UTC (rev 3407)
+++ branches/Cog/nsspursrc/vm/cointerp.h 2015-07-18 21:59:56 UTC (rev 3408)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f
*/
@@ -258,7 +258,7 @@
extern sqInt splObj(sqInt index);
extern usqInt storeCheckBoundary(void);
extern sqInt storePointerUncheckedofObjectwithValue(sqInt fieldIndex, sqInt objOop, sqInt valuePointer);
-extern sqInt stringForCString(const char *aCString);
+extern usqInt stringForCString(const char *aCString);
extern void tenuringIncrementalGC(void);
extern sqInt topRemappableOop(void);
extern sqInt validFreeTree(void);
Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2015-07-16 23:33:11 UTC (rev 3407)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2015-07-18 21:59:56 UTC (rev 3408)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f
from
- CoInterpreter VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6
+ CoInterpreter VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -1210,7 +1210,7 @@
static sqInt storeImageSegmentIntooutPointersroots(sqInt segmentWordArray, sqInt outPointerArray, sqInt arrayOfRoots) NoDbgRegParms;
extern sqInt storePointerUncheckedofObjectwithValue(sqInt fieldIndex, sqInt objOop, sqInt valuePointer);
extern sqInt storePointerofObjectwithValue(sqInt fieldIndex, sqInt objOop, sqInt valuePointer);
-extern sqInt stringForCString(const char *aCString);
+extern usqInt stringForCString(const char *aCString);
static sqInt sufficientSpaceAfterGC(sqInt numBytes) NoDbgRegParms;
static sqInt swizzleObjStackAt(sqInt objStackRootIndex) NoDbgRegParms;
extern void tenuringIncrementalGC(void);
@@ -2413,7 +2413,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.1422";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1426";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -6220,15 +6220,8 @@
}
GIV(lkupClass) = longAt((classTablePage1 + BaseHeaderSize) + ((GIV(lkupClassTag) & ((1 << 10) - 1)) << (shiftForWord())));
l238: /* end classAtIndex: */;
-
-# if NewspeakVM
lookupOrdinarySend();
-# else /* NewspeakVM */
- lookupMethodInClass(GIV(lkupClass));
-
-# endif /* NewspeakVM */
-
/* begin internalizeIPandSP */
assert(GIV(instructionPointer) != (ceReturnToInterpreterPC()));
localIP = pointerForOop(GIV(instructionPointer));
@@ -27472,6 +27465,7 @@
validInstructionPointerinMethodframePointer(usqInt instrPointer, usqInt aMethod, char *fp)
{
CogMethod *cogMethod;
+ sqInt header;
sqInt methodField;
usqInt theInstrPointer;
@@ -27494,7 +27488,7 @@
goto l1;
}
cogMethod = ((CogMethod *) (methodField & MFMethodMask));
- l1: /* end mframeHomeMethod: */;
+ l1: /* end mframeHomeMethod: */;
return (theInstrPointer >= ((((usqInt)cogMethod)) + (sizeof(CogMethod))))
&& (theInstrPointer < ((((usqInt)cogMethod)) + ((cogMethod->blockSize))));
}
@@ -30625,7 +30619,8 @@
if (!((GIV(argumentCount) < 1)
|| ((((longAt(GIV(stackPointer))) & 3) == 0)
&& (objCouldBeClassObj(longAt(GIV(stackPointer))))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
result = allInstancesOf(longAt(GIV(stackPointer)));
@@ -31600,6 +31595,9 @@
sqInt hashOrError;
char *sp;
+
+ /* For the mirror prims check that the class obj is actually a valid class. */
+
if (GIV(argumentCount) > 0) {
if (!((((longAt(GIV(stackPointer))) & 3) == 0)
&& (objCouldBeClassObj(longAt(GIV(stackPointer)))))) {
@@ -32446,7 +32444,7 @@
GIV(needGCFlag) = 1;
forceInterruptCheck();
}
- s = allocateSlotsInOldSpacebytesformatclassIndex(numSlots, numBytes, formatField, ClassByteStringCompactIndex);
+ s = ((usqInt) (allocateSlotsInOldSpacebytesformatclassIndex(numSlots, numBytes, formatField, ClassByteStringCompactIndex)));
goto l1;
}
if (numSlots >= 0xFF) {
@@ -38074,7 +38072,7 @@
sqInt err;
sqInt hash;
sqInt instSpec;
- sqInt newObj;
+ usqInt newObj;
usqInt newObj1;
usqInt numBytes;
sqInt numSlots;
@@ -38092,7 +38090,8 @@
if (!((GIV(argumentCount) < 1)
|| (objCouldBeClassObj(longAt(GIV(stackPointer)))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
@@ -38199,7 +38198,7 @@
sqInt i;
usqInt instSpec;
sqInt literalCount;
- sqInt newObj;
+ usqInt newObj;
usqInt newObj1;
usqInt numBytes;
sqInt numSlots;
@@ -38365,6 +38364,15 @@
sqInt value;
spaceOkay = 0;
+
+ /* For the mirror prims check that the class obj is actually a valid class. */
+
+ if (!((GIV(argumentCount) < 2)
+ || (addressCouldBeClassObj(longAt(GIV(stackPointer) + (1 * BytesPerWord)))))) {
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
+ }
+
/* begin positiveMachineIntegerValueOf: */
oop1 = longAt(GIV(stackPointer));
if ((oop1 & 1)) {
@@ -38437,41 +38445,32 @@
goto l2;
}
l2: /* end positiveMachineIntegerValueOf: */;
-
- /* For the mirror prims check that the class obj is actually a valid class. */
+ if (GIV(primFailCode)) {
- if (!((GIV(argumentCount) < 2)
- || (addressCouldBeClassObj(longAt(GIV(stackPointer) + (1 * BytesPerWord)))))) {
- GIV(primFailCode) = PrimErrBadArgument;
- }
-
- if (!GIV(primFailCode)) {
-
/* positiveMachineIntegerValueOf: succeeds only for non-negative integers. */
- obj = instantiateClassindexableSize(longAt(GIV(stackPointer) + (1 * BytesPerWord)), size);
- if (obj == null) {
- /* begin instSpecOfClassFormat: */
- instSpec = (((usqInt) (((longAt(((longAt(GIV(stackPointer) + (1 * BytesPerWord))) + BaseHeaderSize) + (InstanceSpecificationIndex << (shiftForWord())))) >> 1))) >> 16) & 0x1F;
- /* begin primitiveFailFor: */
- reasonCode = (((instSpec >= 2)
- && ((instSpec <= 4)
- || (instSpec >= 9)))
- && (!(instSpec >= 24))
- ? PrimErrNoMemory
- : PrimErrBadReceiver);
- GIV(primFailCode) = reasonCode;
- }
- else {
- /* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), obj);
- GIV(stackPointer) = sp;
- }
-
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
+ obj = instantiateClassindexableSize(longAt(GIV(stackPointer) + (1 * BytesPerWord)), size);
+ if (obj == null) {
+ /* begin instSpecOfClassFormat: */
+ instSpec = (((usqInt) (((longAt(((longAt(GIV(stackPointer) + (1 * BytesPerWord))) + BaseHeaderSize) + (InstanceSpecificationIndex << (shiftForWord())))) >> 1))) >> 16) & 0x1F;
+ /* begin primitiveFailFor: */
+ reasonCode = (((instSpec >= 2)
+ && ((instSpec <= 4)
+ || (instSpec >= 9)))
+ && (!(instSpec >= 24))
+ ? PrimErrNoMemory
+ : PrimErrBadReceiver);
+ GIV(primFailCode) = reasonCode;
+ }
else {
- GIV(primFailCode) = PrimErrBadArgument;
+ /* begin pop:thenPush: */
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), obj);
+ GIV(stackPointer) = sp;
}
+
}
/* InterpreterPrimitives>>#primitiveNextInstance */
@@ -41071,7 +41070,8 @@
if (!((GIV(argumentCount) < 1)
|| (((class & 3) == 0)
&& (objCouldBeClassObj(class))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
instance = initialInstanceOf(class);
@@ -44115,7 +44115,7 @@
sqInt fillValue;
sqInt hash;
usqInt instSpec;
- sqInt newObj;
+ usqInt newObj;
usqInt newObj1;
usqInt numBytes;
usqInt numSlots;
@@ -46247,7 +46247,7 @@
sqInt entry;
sqInt expectedIndex;
sqInt expectedIndex1;
- sqInt freeChunk;
+ usqInt freeChunk;
sqInt i;
sqInt i1;
sqInt index;
@@ -46286,8 +46286,8 @@
sqInt ptr1;
sqInt ptr2;
sqInt slotBytes;
- sqInt smallObj;
- sqInt start;
+ usqInt smallObj;
+ usqInt start;
classIndex = (long32At(aClass + 4)) & 0x3FFFFF;
if (classIndex == 0) {
@@ -49228,7 +49228,7 @@
sqInt fmt;
sqInt hasYoung;
sqInt i;
- sqInt newObj;
+ usqInt newObj;
usqInt newObj1;
usqInt numBytes;
usqInt numSlots;
@@ -63915,8 +63915,8 @@
sqInt prevPrevObj;
sqInt prevPrevObj1;
sqInt ptr;
- sqInt savedInHashes;
- sqInt savedOutHashes;
+ usqInt savedInHashes;
+ usqInt savedOutHashes;
sqInt segAddr;
sqInt segStart;
sqInt slotBytes;
@@ -64386,13 +64386,13 @@
or nil if out of memory. */
/* SpurMemoryManager>>#stringForCString: */
-sqInt
+usqInt
stringForCString(const char *aCString)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt formatField;
sqInt len;
usqInt newObj;
- sqInt newString;
+ usqInt newString;
usqInt numBytes;
sqInt numSlots;
@@ -65447,7 +65447,7 @@
static sqInt
readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt bridge;
+ usqInt bridge;
usqInt bridgehead;
usqInt bridgeSpan;
sqInt bytesRead;
@@ -65663,7 +65663,7 @@
usqLong firstSavedBridgeWord;
sqInt nWritten;
usqInt pier1;
- sqInt pier2;
+ usqInt pier2;
usqLong secondSavedBridgeWord;
pier1 = (((segment->segSize)) + ((segment->segStart))) - (2 * BaseHeaderSize);
@@ -72753,26 +72753,27 @@
sqInt literal;
sqInt objOop;
sqInt objOop1;
+ sqInt objOop2;
sqInt offset;
- return (/* begin followLiteral:ofMethod: */
- (offset = (literalCountOfMethodHeader(methodHeaderOf(methodPointer))) - 1),
- /* begin followField:ofObject: */
- (objOop1 = longAt((methodPointer + BaseHeaderSize) + ((offset + LiteralStart) << (shiftForWord())))),
- (((objOop1 & 3) == 0)
- && (((longAt(objOop1)) & 0x3FFFFF) == 8)
- ? (objOop1 = fixFollowedFieldofObjectwithInitialValue(offset + LiteralStart, methodPointer, objOop1))
+ /* begin followLiteral:ofMethod: */
+ offset = (literalCountOfMethodHeader(methodHeaderOf(methodPointer))) - 1;
+ /* begin followField:ofObject: */
+ objOop2 = longAt((methodPointer + BaseHeaderSize) + ((offset + LiteralStart) << (shiftForWord())));
+ if (((objOop2 & 3) == 0)
+ && (((longAt(objOop2)) & 0x3FFFFF) == 8)) {
+ objOop2 = fixFollowedFieldofObjectwithInitialValue(offset + LiteralStart, methodPointer, objOop2);
+ }
+ literal = objOop2;
+ return (literal == GIV(nilObj)
+ ? literal
+ : (/* begin followField:ofObject: */
+ (objOop = longAt((literal + BaseHeaderSize) + (ValueIndex << (shiftForWord())))),
+ (((objOop & 3) == 0)
+ && (((longAt(objOop)) & 0x3FFFFF) == 8)
+ ? (objOop = fixFollowedFieldofObjectwithInitialValue(ValueIndex, literal, objOop))
: 0),
- (literal = objOop1),
- (literal == GIV(nilObj)
- ? literal
- : (/* begin followField:ofObject: */
- (objOop = longAt((literal + BaseHeaderSize) + (ValueIndex << (shiftForWord())))),
- (((objOop & 3) == 0)
- && (((longAt(objOop)) & 0x3FFFFF) == 8)
- ? (objOop = fixFollowedFieldofObjectwithInitialValue(ValueIndex, literal, objOop))
- : 0),
- objOop)));
+ objOop));
}
Modified: branches/Cog/nsspurstack64src/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstack64src/vm/gcc3x-interp.c 2015-07-16 23:33:11 UTC (rev 3407)
+++ branches/Cog/nsspurstack64src/vm/gcc3x-interp.c 2015-07-18 21:59:56 UTC (rev 3408)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f
from
- StackInterpreter VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6
+ StackInterpreter VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f
*/
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -2173,7 +2173,7 @@
/* 575 */ (void (*)(void))0,
0 };
char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1422";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1426";
volatile int sendTrace;
sqInt suppressHeartbeatFlag;
@@ -5808,15 +5808,8 @@
}
GIV(lkupClass) = longAt((classTablePage + BaseHeaderSize) + (((long)(GIV(lkupClassTag) & ((1LL << 10) - 1))) << (shiftForWord())));
l190: /* end classAtIndex: */;
-
-# if NewspeakVM
lookupOrdinarySend();
-# else /* NewspeakVM */
- lookupMethodInClass(GIV(lkupClass));
-
-# endif /* NewspeakVM */
-
/* begin internalizeIPandSP */
localIP = pointerForOop(GIV(instructionPointer));
localSP = pointerForOop(GIV(stackPointer));
@@ -15631,7 +15624,8 @@
if (!((GIV(argumentCount) < 1)
|| ((((longAt(GIV(stackPointer))) & 7) == 0)
&& (objCouldBeClassObj(longAt(GIV(stackPointer))))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
result = allInstancesOf(longAt(GIV(stackPointer)));
@@ -16533,6 +16527,9 @@
sqInt hashOrError;
char *sp;
+
+ /* For the mirror prims check that the class obj is actually a valid class. */
+
if (GIV(argumentCount) > 0) {
if (!((((longAt(GIV(stackPointer))) & 7) == 0)
&& (objCouldBeClassObj(longAt(GIV(stackPointer)))))) {
@@ -21196,7 +21193,7 @@
char *sp;
/* begin pop:thenPushInteger: */
- longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), ((0 << 3) | 1));
+ longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), (((sqInt)0 << 3) | 1));
GIV(stackPointer) = sp;
}
@@ -22270,7 +22267,7 @@
char *sp;
/* begin pop:thenPushInteger: */
- longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), ((0x3FFFFF << 3) | 1));
+ longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), (((sqInt)0x3FFFFF << 3) | 1));
GIV(stackPointer) = sp;
}
@@ -22315,7 +22312,7 @@
char *sp;
/* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), ((MillisecondClockMask << 3) | 1));
+ longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), (((sqInt)MillisecondClockMask << 3) | 1));
GIV(stackPointer) = sp;
}
@@ -22667,7 +22664,8 @@
if (!((GIV(argumentCount) < 1)
|| (objCouldBeClassObj(longAt(GIV(stackPointer)))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
@@ -22942,6 +22940,15 @@
sqInt value;
spaceOkay = 0;
+
+ /* For the mirror prims check that the class obj is actually a valid class. */
+
+ if (!((GIV(argumentCount) < 2)
+ || (addressCouldBeClassObj(longAt(GIV(stackPointer) + (1 * BytesPerWord)))))) {
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
+ }
+
/* begin positiveMachineIntegerValueOf: */
oop1 = longAt(GIV(stackPointer));
if ((((oop1) & 7) == 1)) {
@@ -23014,41 +23021,32 @@
goto l2;
}
l2: /* end positiveMachineIntegerValueOf: */;
-
- /* For the mirror prims check that the class obj is actually a valid class. */
+ if (GIV(primFailCode)) {
- if (!((GIV(argumentCount) < 2)
- || (addressCouldBeClassObj(longAt(GIV(stackPointer) + (1 * BytesPerWord)))))) {
- GIV(primFailCode) = PrimErrBadArgument;
- }
-
- if (!GIV(primFailCode)) {
-
/* positiveMachineIntegerValueOf: succeeds only for non-negative integers. */
- obj = instantiateClassindexableSize(longAt(GIV(stackPointer) + (1 * BytesPerWord)), size);
- if (obj == null) {
- /* begin instSpecOfClassFormat: */
- instSpec = (((usqInt) (((longAt(((longAt(GIV(stackPointer) + (1 * BytesPerWord))) + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3))) >> 16) & 0x1F;
- /* begin primitiveFailFor: */
- reasonCode = (((instSpec >= 2)
- && ((instSpec <= 4)
- || (instSpec >= 9)))
- && (!(instSpec >= 24))
- ? PrimErrNoMemory
- : PrimErrBadReceiver);
- GIV(primFailCode) = reasonCode;
- }
- else {
- /* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), obj);
- GIV(stackPointer) = sp;
- }
-
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
+ obj = instantiateClassindexableSize(longAt(GIV(stackPointer) + (1 * BytesPerWord)), size);
+ if (obj == null) {
+ /* begin instSpecOfClassFormat: */
+ instSpec = (((usqInt) (((longAt(((longAt(GIV(stackPointer) + (1 * BytesPerWord))) + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3))) >> 16) & 0x1F;
+ /* begin primitiveFailFor: */
+ reasonCode = (((instSpec >= 2)
+ && ((instSpec <= 4)
+ || (instSpec >= 9)))
+ && (!(instSpec >= 24))
+ ? PrimErrNoMemory
+ : PrimErrBadReceiver);
+ GIV(primFailCode) = reasonCode;
+ }
else {
- GIV(primFailCode) = PrimErrBadArgument;
+ /* begin pop:thenPush: */
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), obj);
+ GIV(stackPointer) = sp;
}
+
}
/* InterpreterPrimitives>>#primitiveNextInstance */
@@ -23223,7 +23221,7 @@
instance = accessibleObjectAfter(longAt(GIV(stackPointer)));
if (instance == null) {
/* begin pop:thenPushInteger: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), ((0 << 3) | 1));
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), (((sqInt)0 << 3) | 1));
GIV(stackPointer) = sp;
}
else {
@@ -27148,7 +27146,8 @@
if (!((GIV(argumentCount) < 1)
|| (((class & 7) == 0)
&& (objCouldBeClassObj(class))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
instance = initialInstanceOf(class);
@@ -63584,26 +63583,27 @@
sqInt literal;
sqInt objOop;
sqInt objOop1;
+ sqInt objOop2;
sqInt offset;
- return (/* begin followLiteral:ofMethod: */
- (offset = (literalCountOfMethodHeader(methodHeaderOf(methodPointer))) - 1),
- /* begin followField:ofObject: */
- (objOop1 = longAt((methodPointer + BaseHeaderSize) + (((long)(offset + LiteralStart)) << (shiftForWord())))),
- (((objOop1 & 7) == 0)
- && (((longAt(objOop1)) & 0x3FFFFF) == 8)
- ? (objOop1 = fixFollowedFieldofObjectwithInitialValue(offset + LiteralStart, methodPointer, objOop1))
+ /* begin followLiteral:ofMethod: */
+ offset = (literalCountOfMethodHeader(methodHeaderOf(methodPointer))) - 1;
+ /* begin followField:ofObject: */
+ objOop2 = longAt((methodPointer + BaseHeaderSize) + (((long)(offset + LiteralStart)) << (shiftForWord())));
+ if (((objOop2 & 7) == 0)
+ && (((longAt(objOop2)) & 0x3FFFFF) == 8)) {
+ objOop2 = fixFollowedFieldofObjectwithInitialValue(offset + LiteralStart, methodPointer, objOop2);
+ }
+ literal = objOop2;
+ return (literal == GIV(nilObj)
+ ? literal
+ : (/* begin followField:ofObject: */
+ (objOop = longAt((literal + BaseHeaderSize) + (((long)ValueIndex) << (shiftForWord())))),
+ (((objOop & 7) == 0)
+ && (((longAt(objOop)) & 0x3FFFFF) == 8)
+ ? (objOop = fixFollowedFieldofObjectwithInitialValue(ValueIndex, literal, objOop))
: 0),
- (literal = objOop1),
- (literal == GIV(nilObj)
- ? literal
- : (/* begin followField:ofObject: */
- (objOop = longAt((literal + BaseHeaderSize) + (((long)ValueIndex) << (shiftForWord())))),
- (((objOop & 7) == 0)
- && (((longAt(objOop)) & 0x3FFFFF) == 8)
- ? (objOop = fixFollowedFieldofObjectwithInitialValue(ValueIndex, literal, objOop))
- : 0),
- objOop)));
+ objOop));
}
/* StackInterpreter>>#methodHeaderIndicatesLargeFrame: */
@@ -75910,10 +75910,10 @@
longAtput((result + BaseHeaderSize) + (26LL << (shiftForWord())), ((GIV(statMarkCount) << 3) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
- longAtput((result + BaseHeaderSize) + (27LL << (shiftForWord())), ((0 << 3) | 1));
+ longAtput((result + BaseHeaderSize) + (27LL << (shiftForWord())), (((sqInt)0 << 3) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
- longAtput((result + BaseHeaderSize) + (28LL << (shiftForWord())), ((0 << 3) | 1));
+ longAtput((result + BaseHeaderSize) + (28LL << (shiftForWord())), (((sqInt)0 << 3) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + BaseHeaderSize) + (29LL << (shiftForWord())), ((GIV(statCompactPassCount) << 3) | 1));
@@ -76218,10 +76218,10 @@
result = ((GIV(statMarkCount) << 3) | 1);
}
if (arg == 28) {
- result = ((0 << 3) | 1);
+ result = (((sqInt)0 << 3) | 1);
}
if (arg == 29) {
- result = ((0 << 3) | 1);
+ result = (((sqInt)0 << 3) | 1);
}
if (arg == 30) {
result = ((GIV(statCompactPassCount) << 3) | 1);
Modified: branches/Cog/nsspurstack64src/vm/interp.c
===================================================================
--- branches/Cog/nsspurstack64src/vm/interp.c 2015-07-16 23:33:11 UTC (rev 3407)
+++ branches/Cog/nsspurstack64src/vm/interp.c 2015-07-18 21:59:56 UTC (rev 3408)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f
from
- StackInterpreter VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6
+ StackInterpreter VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f
*/
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -2170,7 +2170,7 @@
/* 575 */ (void (*)(void))0,
0 };
char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1422";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1426";
volatile int sendTrace;
sqInt suppressHeartbeatFlag;
@@ -5799,15 +5799,8 @@
}
GIV(lkupClass) = longAt((classTablePage + BaseHeaderSize) + (((long)(GIV(lkupClassTag) & ((1LL << 10) - 1))) << (shiftForWord())));
l190: /* end classAtIndex: */;
-
-# if NewspeakVM
lookupOrdinarySend();
-# else /* NewspeakVM */
- lookupMethodInClass(GIV(lkupClass));
-
-# endif /* NewspeakVM */
-
/* begin internalizeIPandSP */
localIP = pointerForOop(GIV(instructionPointer));
localSP = pointerForOop(GIV(stackPointer));
@@ -15622,7 +15615,8 @@
if (!((GIV(argumentCount) < 1)
|| ((((longAt(GIV(stackPointer))) & 7) == 0)
&& (objCouldBeClassObj(longAt(GIV(stackPointer))))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
result = allInstancesOf(longAt(GIV(stackPointer)));
@@ -16524,6 +16518,9 @@
sqInt hashOrError;
char *sp;
+
+ /* For the mirror prims check that the class obj is actually a valid class. */
+
if (GIV(argumentCount) > 0) {
if (!((((longAt(GIV(stackPointer))) & 7) == 0)
&& (objCouldBeClassObj(longAt(GIV(stackPointer)))))) {
@@ -21187,7 +21184,7 @@
char *sp;
/* begin pop:thenPushInteger: */
- longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), ((0 << 3) | 1));
+ longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), (((sqInt)0 << 3) | 1));
GIV(stackPointer) = sp;
}
@@ -22261,7 +22258,7 @@
char *sp;
/* begin pop:thenPushInteger: */
- longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), ((0x3FFFFF << 3) | 1));
+ longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), (((sqInt)0x3FFFFF << 3) | 1));
GIV(stackPointer) = sp;
}
@@ -22306,7 +22303,7 @@
char *sp;
/* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), ((MillisecondClockMask << 3) | 1));
+ longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), (((sqInt)MillisecondClockMask << 3) | 1));
GIV(stackPointer) = sp;
}
@@ -22658,7 +22655,8 @@
if (!((GIV(argumentCount) < 1)
|| (objCouldBeClassObj(longAt(GIV(stackPointer)))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
@@ -22933,6 +22931,15 @@
sqInt value;
spaceOkay = 0;
+
+ /* For the mirror prims check that the class obj is actually a valid class. */
+
+ if (!((GIV(argumentCount) < 2)
+ || (addressCouldBeClassObj(longAt(GIV(stackPointer) + (1 * BytesPerWord)))))) {
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
+ }
+
/* begin positiveMachineIntegerValueOf: */
oop1 = longAt(GIV(stackPointer));
if ((((oop1) & 7) == 1)) {
@@ -23005,41 +23012,32 @@
goto l2;
}
l2: /* end positiveMachineIntegerValueOf: */;
-
- /* For the mirror prims check that the class obj is actually a valid class. */
+ if (GIV(primFailCode)) {
- if (!((GIV(argumentCount) < 2)
- || (addressCouldBeClassObj(longAt(GIV(stackPointer) + (1 * BytesPerWord)))))) {
- GIV(primFailCode) = PrimErrBadArgument;
- }
-
- if (!GIV(primFailCode)) {
-
/* positiveMachineIntegerValueOf: succeeds only for non-negative integers. */
- obj = instantiateClassindexableSize(longAt(GIV(stackPointer) + (1 * BytesPerWord)), size);
- if (obj == null) {
- /* begin instSpecOfClassFormat: */
- instSpec = (((usqInt) (((longAt(((longAt(GIV(stackPointer) + (1 * BytesPerWord))) + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3))) >> 16) & 0x1F;
- /* begin primitiveFailFor: */
- reasonCode = (((instSpec >= 2)
- && ((instSpec <= 4)
- || (instSpec >= 9)))
- && (!(instSpec >= 24))
- ? PrimErrNoMemory
- : PrimErrBadReceiver);
- GIV(primFailCode) = reasonCode;
- }
- else {
- /* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), obj);
- GIV(stackPointer) = sp;
- }
-
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
+ obj = instantiateClassindexableSize(longAt(GIV(stackPointer) + (1 * BytesPerWord)), size);
+ if (obj == null) {
+ /* begin instSpecOfClassFormat: */
+ instSpec = (((usqInt) (((longAt(((longAt(GIV(stackPointer) + (1 * BytesPerWord))) + BaseHeaderSize) + (((long)InstanceSpecificationIndex) << (shiftForWord())))) >> 3))) >> 16) & 0x1F;
+ /* begin primitiveFailFor: */
+ reasonCode = (((instSpec >= 2)
+ && ((instSpec <= 4)
+ || (instSpec >= 9)))
+ && (!(instSpec >= 24))
+ ? PrimErrNoMemory
+ : PrimErrBadReceiver);
+ GIV(primFailCode) = reasonCode;
+ }
else {
- GIV(primFailCode) = PrimErrBadArgument;
+ /* begin pop:thenPush: */
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), obj);
+ GIV(stackPointer) = sp;
}
+
}
/* InterpreterPrimitives>>#primitiveNextInstance */
@@ -23214,7 +23212,7 @@
instance = accessibleObjectAfter(longAt(GIV(stackPointer)));
if (instance == null) {
/* begin pop:thenPushInteger: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), ((0 << 3) | 1));
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), (((sqInt)0 << 3) | 1));
GIV(stackPointer) = sp;
}
else {
@@ -27139,7 +27137,8 @@
if (!((GIV(argumentCount) < 1)
|| (((class & 7) == 0)
&& (objCouldBeClassObj(class))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
instance = initialInstanceOf(class);
@@ -63575,26 +63574,27 @@
sqInt literal;
sqInt objOop;
sqInt objOop1;
+ sqInt objOop2;
sqInt offset;
- return (/* begin followLiteral:ofMethod: */
- (offset = (literalCountOfMethodHeader(methodHeaderOf(methodPointer))) - 1),
- /* begin followField:ofObject: */
- (objOop1 = longAt((methodPointer + BaseHeaderSize) + (((long)(offset + LiteralStart)) << (shiftForWord())))),
- (((objOop1 & 7) == 0)
- && (((longAt(objOop1)) & 0x3FFFFF) == 8)
- ? (objOop1 = fixFollowedFieldofObjectwithInitialValue(offset + LiteralStart, methodPointer, objOop1))
+ /* begin followLiteral:ofMethod: */
+ offset = (literalCountOfMethodHeader(methodHeaderOf(methodPointer))) - 1;
+ /* begin followField:ofObject: */
+ objOop2 = longAt((methodPointer + BaseHeaderSize) + (((long)(offset + LiteralStart)) << (shiftForWord())));
+ if (((objOop2 & 7) == 0)
+ && (((longAt(objOop2)) & 0x3FFFFF) == 8)) {
+ objOop2 = fixFollowedFieldofObjectwithInitialValue(offset + LiteralStart, methodPointer, objOop2);
+ }
+ literal = objOop2;
+ return (literal == GIV(nilObj)
+ ? literal
+ : (/* begin followField:ofObject: */
+ (objOop = longAt((literal + BaseHeaderSize) + (((long)ValueIndex) << (shiftForWord())))),
+ (((objOop & 7) == 0)
+ && (((longAt(objOop)) & 0x3FFFFF) == 8)
+ ? (objOop = fixFollowedFieldofObjectwithInitialValue(ValueIndex, literal, objOop))
: 0),
- (literal = objOop1),
- (literal == GIV(nilObj)
- ? literal
- : (/* begin followField:ofObject: */
- (objOop = longAt((literal + BaseHeaderSize) + (((long)ValueIndex) << (shiftForWord())))),
- (((objOop & 7) == 0)
- && (((longAt(objOop)) & 0x3FFFFF) == 8)
- ? (objOop = fixFollowedFieldofObjectwithInitialValue(ValueIndex, literal, objOop))
- : 0),
- objOop)));
+ objOop));
}
/* StackInterpreter>>#methodHeaderIndicatesLargeFrame: */
@@ -75901,10 +75901,10 @@
longAtput((result + BaseHeaderSize) + (26LL << (shiftForWord())), ((GIV(statMarkCount) << 3) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
- longAtput((result + BaseHeaderSize) + (27LL << (shiftForWord())), ((0 << 3) | 1));
+ longAtput((result + BaseHeaderSize) + (27LL << (shiftForWord())), (((sqInt)0 << 3) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
- longAtput((result + BaseHeaderSize) + (28LL << (shiftForWord())), ((0 << 3) | 1));
+ longAtput((result + BaseHeaderSize) + (28LL << (shiftForWord())), (((sqInt)0 << 3) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + BaseHeaderSize) + (29LL << (shiftForWord())), ((GIV(statCompactPassCount) << 3) | 1));
@@ -76209,10 +76209,10 @@
result = ((GIV(statMarkCount) << 3) | 1);
}
if (arg == 28) {
- result = ((0 << 3) | 1);
+ result = (((sqInt)0 << 3) | 1);
}
if (arg == 29) {
- result = ((0 << 3) | 1);
+ result = (((sqInt)0 << 3) | 1);
}
if (arg == 30) {
result = ((GIV(statCompactPassCount) << 3) | 1);
Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2015-07-16 23:33:11 UTC (rev 3407)
+++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2015-07-18 21:59:56 UTC (rev 3408)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f
from
- StackInterpreter VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6
+ StackInterpreter VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f
*/
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1422 uuid: 72d0eb67-7dbb-463f-8481-c6677291e4f6 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1426 uuid: 94ab92ba-c5c4-4953-8566-a4cd9c38df1f " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -2144,7 +2144,7 @@
/* 575 */ (void (*)(void))0,
0 };
char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1422";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1426";
volatile int sendTrace;
sqInt suppressHeartbeatFlag;
@@ -5781,15 +5781,8 @@
}
GIV(lkupClass) = longAt((classTablePage + BaseHeaderSize) + ((GIV(lkupClassTag) & ((1 << 10) - 1)) << (shiftForWord())));
l236: /* end classAtIndex: */;
-
-# if NewspeakVM
lookupOrdinarySend();
-# else /* NewspeakVM */
- lookupMethodInClass(GIV(lkupClass));
-
-# endif /* NewspeakVM */
-
/* begin internalizeIPandSP */
localIP = pointerForOop(GIV(instructionPointer));
localSP = pointerForOop(GIV(stackPointer));
@@ -14986,7 +14979,8 @@
if (!((GIV(argumentCount) < 1)
|| ((((longAt(GIV(stackPointer))) & 3) == 0)
&& (objCouldBeClassObj(longAt(GIV(stackPointer))))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
result = allInstancesOf(longAt(GIV(stackPointer)));
@@ -15961,6 +15955,9 @@
sqInt hashOrError;
char *sp;
+
+ /* For the mirror prims check that the class obj is actually a valid class. */
+
if (GIV(argumentCount) > 0) {
if (!((((longAt(GIV(stackPointer))) & 3) == 0)
&& (objCouldBeClassObj(longAt(GIV(stackPointer)))))) {
@@ -22256,7 +22253,8 @@
if (!((GIV(argumentCount) < 1)
|| (objCouldBeClassObj(longAt(GIV(stackPointer)))))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
}
@@ -22529,6 +22527,15 @@
sqInt value;
spaceOkay = 0;
+
@@ Diff output truncated at 50000 characters. @@
More information about the Vm-dev
mailing list