[Vm-dev] [commit] r2455 - CogVM source as per VMMaker.oscog-eem.98.
Functional Alien callbacks on Cog &
commits at squeakvm.org
commits at squeakvm.org
Tue Jul 12 21:07:35 UTC 2011
Author: eliot
Date: 2011-07-12 14:07:35 -0700 (Tue, 12 Jul 2011)
New Revision: 2455
Added:
branches/Cog/scripts/lsmodified
Modified:
branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c
branches/Cog/nscogsrc/vm/cointerp.c
branches/Cog/nscogsrc/vm/cointerp.h
branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
branches/Cog/nscogsrc/vm/interp.h
branches/Cog/nscogsrc/vm/vmCallback.h
branches/Cog/scripts/findUnofficialFiles
branches/Cog/src/plugins/IA32ABI/IA32ABI.c
branches/Cog/src/vm/cointerp.c
branches/Cog/src/vm/cointerp.h
branches/Cog/src/vm/gcc3x-cointerp.c
branches/Cog/src/vm/interp.h
branches/Cog/src/vm/vmCallback.h
Log:
CogVM source as per VMMaker.oscog-eem.98. Functional Alien callbacks on Cog &
Stack VMs. Functional Newspeak VM on win32 with native Hopscotch windows.
Modified: branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c
===================================================================
--- branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c 2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c 2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,9 +1,9 @@
/* Automatically generated by
- VMPluginCodeGenerator * VMMaker.oscog-eem.84 uuid: 65d3d0e0-a9bb-4d56-ad24-df44e8dc0e37
+ VMPluginCodeGenerator * VMMaker.oscog-eem.96 uuid: b9686449-0418-4b93-b40f-40049e108776
from
- NewsqueakIA32ABIPlugin * VMMaker.oscog-eem.84 uuid: 65d3d0e0-a9bb-4d56-ad24-df44e8dc0e37
+ NewsqueakIA32ABIPlugin * VMMaker.oscog-eem.96 uuid: b9686449-0418-4b93-b40f-40049e108776
*/
-static char __buildInfo[] = "NewsqueakIA32ABIPlugin * VMMaker.oscog-eem.84 uuid: 65d3d0e0-a9bb-4d56-ad24-df44e8dc0e37 " __DATE__ ;
+static char __buildInfo[] = "NewsqueakIA32ABIPlugin * VMMaker.oscog-eem.96 uuid: b9686449-0418-4b93-b40f-40049e108776 " __DATE__ ;
@@ -134,9 +134,9 @@
struct VirtualMachine* interpreterProxy;
static const char *moduleName =
#ifdef SQUEAK_BUILTIN_PLUGIN
- "IA32ABI * VMMaker.oscog-eem.84 (i)"
+ "IA32ABI * VMMaker.oscog-eem.96 (i)"
#else
- "IA32ABI * VMMaker.oscog-eem.84 (e)"
+ "IA32ABI * VMMaker.oscog-eem.96 (e)"
#endif
;
@@ -291,8 +291,8 @@
if (interpreterProxy->includesBehaviorThatOf(interpreterProxy->fetchClassOf(array), interpreterProxy->classAlien())) {
totalLength = longAt(array + BaseHeaderSize);
dest = (((totalLength > 0
- ? (array + BaseHeaderSize) + BytesPerOop
- : longAt((array + BaseHeaderSize) + BytesPerOop))) + start) - 1;
+ ? ((array + BaseHeaderSize) + BytesPerOop)
+ : (longAt((array + BaseHeaderSize) + BytesPerOop)))) + start) - 1;
if (totalLength == 0) {
/* no bounds checks for zero-sized (pointer) Aliens */
@@ -329,8 +329,8 @@
if (interpreterProxy->includesBehaviorThatOf(interpreterProxy->fetchClassOf(repl), interpreterProxy->classAlien())) {
totalLength = longAt(repl + BaseHeaderSize);
src = (((totalLength > 0
- ? (repl + BaseHeaderSize) + BytesPerOop
- : longAt((repl + BaseHeaderSize) + BytesPerOop))) + replStart) - 1;
+ ? ((repl + BaseHeaderSize) + BytesPerOop)
+ : (longAt((repl + BaseHeaderSize) + BytesPerOop)))) + replStart) - 1;
if (totalLength == 0) {
/* no bounds checks for zero-sized (pointer) Aliens */
@@ -445,19 +445,19 @@
mac = interpreterProxy->methodArgumentCount();
-# if STACKVM
+# if (STACKVM)
errCode = callIA32DoubleReturn(interpreterProxy->getStackPointer() + mac - 2, /* arg vec */
1 - mac /* nargs */,
mac /* funcOffset*/,
mac - 1 /* resultOffset */);
-# else /* STACKVM */
+# else /* (STACKVM) */
errCode = callIA32DoubleReturn(interpreterProxy->getStackPointer() - mac + 2, /* arg vec */
mac - 1 /* nargs */,
mac /* funcOffset*/,
mac - 1 /* resultOffset */);
-# endif /* STACKVM */
+# endif /* (STACKVM) */
if (errCode != 0) {
return interpreterProxy->primitiveFailFor(errCode);
@@ -487,19 +487,19 @@
mac = interpreterProxy->methodArgumentCount();
-# if STACKVM
+# if (STACKVM)
errCode = callIA32FloatReturn(interpreterProxy->getStackPointer() + mac - 2, /* arg vec */
1 - mac /* nargs */,
mac /* funcOffset*/,
mac - 1 /* resultOffset */);
-# else /* STACKVM */
+# else /* (STACKVM) */
errCode = callIA32FloatReturn(interpreterProxy->getStackPointer() - mac + 2, /* arg vec */
mac - 1 /* nargs */,
mac /* funcOffset*/,
mac - 1 /* resultOffset */);
-# endif /* STACKVM */
+# endif /* (STACKVM) */
if (errCode != 0) {
return interpreterProxy->primitiveFailFor(errCode);
@@ -529,19 +529,19 @@
mac = interpreterProxy->methodArgumentCount();
-# if STACKVM
+# if (STACKVM)
errCode = callIA32IntegralReturn(interpreterProxy->getStackPointer() + mac - 2, /* arg vec */
1 - mac /* nargs */,
mac /* funcOffset*/,
mac - 1 /* resultOffset */);
-# else /* STACKVM */
+# else /* (STACKVM) */
errCode = callIA32IntegralReturn(interpreterProxy->getStackPointer() - mac + 2, /* arg vec */
mac - 1 /* nargs */,
mac /* funcOffset*/,
mac - 1 /* resultOffset */);
-# endif /* STACKVM */
+# endif /* (STACKVM) */
if (errCode != 0) {
return interpreterProxy->primitiveFailFor(errCode);
@@ -599,8 +599,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
((long *)(&floatValue))[0] = ((long *)addr)[0]; ((long *)(&floatValue))[1] = ((long *)addr)[1];
interpreterProxy->pop(2);
return interpreterProxy->pushFloat(floatValue);
@@ -643,8 +643,8 @@
return interpreterProxy->primitiveFailFor(PrimErrNoModification);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
((int*)addr)[0] = ((int*)(&floatValue))[0];
((int*)addr)[1] = ((int*)(&floatValue))[1];
interpreterProxy->methodReturnValue(valueOop);
@@ -680,8 +680,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
((long *)(&floatValue))[0] = ((long *)addr)[0];
interpreterProxy->pop(2);
return interpreterProxy->pushFloat(floatValue);
@@ -724,8 +724,8 @@
return interpreterProxy->primitiveFailFor(PrimErrNoModification);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
((long *)addr)[0] = ((long *)(&floatValue))[0];
interpreterProxy->methodReturnValue(valueOop);
}
@@ -895,11 +895,10 @@
}
}
vmCallbackReturnValue = ((VMCallbackReturnValue *) (startOfData(interpreterProxy->stackValue(mac))));
- if (!(interpreterProxy->reestablishContextPriorToCallback(interpreterProxy->stackValue(1)))) {
+ memcpy((&((vmCallbackContext->rvs))), (&((vmCallbackReturnValue->crvrvs))), sizeof((vmCallbackContext->rvs)));
+ if (!(interpreterProxy->returnAsThroughCallbackContext((((((vmCallbackReturnValue->type)) + 1) << 1) | 1), vmCallbackContext, interpreterProxy->stackValue(1)))) {
return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
}
- memcpy((&((vmCallbackContext->rvs))), (&((vmCallbackReturnValue->crvrvs))), sizeof((vmCallbackContext->rvs)));
- longjmp((vmCallbackContext->trampoline), ((vmCallbackReturnValue->type)) + 1);
}
@@ -929,8 +928,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
value = byteAt(addr);
valueOop = interpreterProxy->signed32BitIntegerFor(value);
return interpreterProxy->methodReturnValue(valueOop);
@@ -970,8 +969,8 @@
return interpreterProxy->primitiveFailFor(PrimErrNoModification);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
byteAtput(addr, value);
return interpreterProxy->methodReturnValue(valueOop);
}
@@ -1003,8 +1002,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
value = longAt(addr);
valueOop = interpreterProxy->signed32BitIntegerFor(value);
return interpreterProxy->methodReturnValue(valueOop);
@@ -1042,8 +1041,8 @@
return interpreterProxy->primitiveFailFor(PrimErrNoModification);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
longAtput(addr, value);
return interpreterProxy->methodReturnValue(valueOop);
}
@@ -1078,8 +1077,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
signedlonglongvaluePtr = ((long long*) addr);
signedlonglongvalue = *signedlonglongvaluePtr;
valueOop = interpreterProxy->signed64BitIntegerFor(signedlonglongvalue);
@@ -1122,8 +1121,8 @@
return interpreterProxy->primitiveFailFor(PrimErrNoModification);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
signedlonglongvaluePtr = ((long long*) addr);
*signedlonglongvaluePtr = signedlonglongvalue;
return interpreterProxy->methodReturnValue(valueOop);
@@ -1156,8 +1155,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
value = shortAt(addr);
valueOop = interpreterProxy->signed32BitIntegerFor(value);
return interpreterProxy->methodReturnValue(valueOop);
@@ -1197,8 +1196,8 @@
return interpreterProxy->primitiveFailFor(PrimErrNoModification);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
shortAtput(addr, value);
return interpreterProxy->methodReturnValue(valueOop);
}
@@ -1279,8 +1278,8 @@
}
limit = longAt(rcvr + BaseHeaderSize);
ptr = ((char *) (((limit > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset));
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset));
if (limit == 0) {
index = strlen(ptr);
}
@@ -1322,8 +1321,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
ptr = ((char *) (longAt(addr)));
return interpreterProxy->methodReturnValue(interpreterProxy->positive32BitIntegerFor(strlen(ptr)));
}
@@ -1370,8 +1369,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
value = byteAt(addr);
valueOop = interpreterProxy->positive32BitIntegerFor(value);
return interpreterProxy->methodReturnValue(valueOop);
@@ -1410,8 +1409,8 @@
return interpreterProxy->primitiveFailFor(PrimErrNoModification);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
byteAtput(addr, value);
return interpreterProxy->methodReturnValue(valueOop);
}
@@ -1443,8 +1442,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
value = longAt(addr);
valueOop = interpreterProxy->positive32BitIntegerFor(value);
return interpreterProxy->methodReturnValue(valueOop);
@@ -1482,8 +1481,8 @@
return interpreterProxy->primitiveFailFor(PrimErrNoModification);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
longAtput(addr, value);
return interpreterProxy->methodReturnValue(valueOop);
}
@@ -1518,8 +1517,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
unsignedlonglongvaluePtr = ((unsigned long long*) addr);
unsignedlonglongvalue = *unsignedlonglongvaluePtr;
valueOop = interpreterProxy->positive64BitIntegerFor(unsignedlonglongvalue);
@@ -1563,8 +1562,8 @@
return interpreterProxy->primitiveFailFor(PrimErrNoModification);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
unsignedlonglongvaluePtr = ((unsigned long long*) addr);
*unsignedlonglongvaluePtr = unsignedlonglongvalue;
return interpreterProxy->methodReturnValue(valueOop);
@@ -1597,8 +1596,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
value = shortAt(addr);
valueOop = interpreterProxy->positive32BitIntegerFor(value);
return interpreterProxy->methodReturnValue(valueOop);
@@ -1637,8 +1636,8 @@
return interpreterProxy->primitiveFailFor(PrimErrNoModification);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
shortAtput(addr, value);
return interpreterProxy->methodReturnValue(valueOop);
}
@@ -1760,11 +1759,8 @@
sqInt ok;
interpreterProxy = anInterpreter;
- ok = interpreterProxy->majorVersion() == VM_PROXY_MAJOR;
- if (ok == 0) {
- return 0;
- }
- ok = interpreterProxy->minorVersion() >= VM_PROXY_MINOR;
+ ok = ((interpreterProxy->majorVersion()) == 1)
+ && ((interpreterProxy->minorVersion()) >= 12);
return ok;
}
@@ -1799,8 +1795,8 @@
startOfData(sqInt rcvr)
{
return ((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop));
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)));
}
@@ -1814,8 +1810,8 @@
startOfDatawithSize(sqInt rcvr, sqInt sizeField)
{
return (sizeField > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop));
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)));
}
Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c 2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/nscogsrc/vm/cointerp.c 2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
from
- CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -1140,8 +1140,8 @@
_iss sqInt nilObj;
_iss usqInt instructionPointer;
_iss usqInt method;
+_iss usqInt freeStart;
_iss sqInt argumentCount;
-_iss usqInt freeStart;
_iss usqInt newMethod;
_iss sqInt messageSelector;
_iss StackPage * pages;
@@ -1883,7 +1883,7 @@
/* 575 */ (void (*)(void))0,
0 };
static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.97";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.98";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
volatile int sendTrace;
@@ -38795,11 +38795,7 @@
printFloat(dbgFloatValueOf(oop));
goto l2;
}
- /* begin fetchClassOf: */
- if ((oop & 1)) {
- classOop = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassInteger << ShiftForWord));
- goto l1;
- }
+ /* begin fetchClassOfNonInt: */
if (((ccIndex = (((usqInt) (longAt(oop))) >> 12) & 31)) == 0) {
classOop = (longAt(oop - BaseHeaderSize)) & AllButTypeMask;
goto l1;
@@ -38808,7 +38804,14 @@
classOop = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
goto l1;
}
-l1: /* end fetchClassOf: */;
+l1: /* end fetchClassOfNonInt: */;
+ if (!(((classOop & 3) == 0)
+ && (((((usqInt)classOop)) >= heapBase)
+ && (((((usqInt)classOop)) < GIV(freeStart))
+ && (((longAt(classOop)) & TypeMask) != HeaderTypeGC))))) {
+ print("a ??");
+ goto l2;
+ }
if ((sizeBitsOf(classOop)) == GIV(metaclassSizeBytes)) {
printNameOfClasscount(oop, 5);
goto l2;
@@ -39900,6 +39903,7 @@
StackPage *aPage;
sqInt calloutContext;
sqInt index;
+ char *sp;
char *theFP;
char *theFP1;
StackPage *thePage;
@@ -39915,6 +39919,21 @@
if (!(isLiveContext(calloutContext))) {
return 0;
}
+ /* begin push: */
+ longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+ GIV(stackPointer) = sp;
+ /* begin externalWriteBackHeadFramePointers */
+ assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+ assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+ /* begin setHeadFP:andSP:inPage: */
+ assert(GIV(stackPointer) < GIV(framePointer));
+ assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+ assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+ (GIV(stackPage)->headFP = GIV(framePointer));
+ (GIV(stackPage)->headSP = GIV(stackPointer));
+ assert(pageListIsWellFormed());
if (((longAt((callbackContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
/* begin markContextAsDead: */
assert(isContext(callbackContext));
@@ -40174,6 +40193,7 @@
StackPage *aPage;
sqInt calloutMethodContext;
sqInt index;
+ char *sp;
char *theFP;
char *theFP1;
StackPage *thePage;
@@ -40189,6 +40209,21 @@
if (!(isLiveContext(calloutMethodContext))) {
return 0;
}
+ /* begin push: */
+ longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+ GIV(stackPointer) = sp;
+ /* begin externalWriteBackHeadFramePointers */
+ assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+ assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+ /* begin setHeadFP:andSP:inPage: */
+ assert(GIV(stackPointer) < GIV(framePointer));
+ assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+ assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+ (GIV(stackPage)->headFP = GIV(framePointer));
+ (GIV(stackPage)->headSP = GIV(stackPointer));
+ assert(pageListIsWellFormed());
if (((longAt((callbackMethodContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
/* begin markContextAsDead: */
assert(isContext(callbackMethodContext));
Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h 2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/nscogsrc/vm/cointerp.h 2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
*/
Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2011-07-12 21:07:35 UTC (rev 2455)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
from
- CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -1143,8 +1143,8 @@
_iss sqInt nilObj;
_iss usqInt instructionPointer;
_iss usqInt method;
+_iss usqInt freeStart;
_iss sqInt argumentCount;
-_iss usqInt freeStart;
_iss usqInt newMethod;
_iss sqInt messageSelector;
_iss StackPage * pages;
@@ -1886,7 +1886,7 @@
/* 575 */ (void (*)(void))0,
0 };
static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.97";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.98";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
volatile int sendTrace;
@@ -38799,11 +38799,7 @@
printFloat(dbgFloatValueOf(oop));
goto l2;
}
- /* begin fetchClassOf: */
- if ((oop & 1)) {
- classOop = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassInteger << ShiftForWord));
- goto l1;
- }
+ /* begin fetchClassOfNonInt: */
if (((ccIndex = (((usqInt) (longAt(oop))) >> 12) & 31)) == 0) {
classOop = (longAt(oop - BaseHeaderSize)) & AllButTypeMask;
goto l1;
@@ -38812,7 +38808,14 @@
classOop = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
goto l1;
}
-l1: /* end fetchClassOf: */;
+l1: /* end fetchClassOfNonInt: */;
+ if (!(((classOop & 3) == 0)
+ && (((((usqInt)classOop)) >= heapBase)
+ && (((((usqInt)classOop)) < GIV(freeStart))
+ && (((longAt(classOop)) & TypeMask) != HeaderTypeGC))))) {
+ print("a ??");
+ goto l2;
+ }
if ((sizeBitsOf(classOop)) == GIV(metaclassSizeBytes)) {
printNameOfClasscount(oop, 5);
goto l2;
@@ -39904,6 +39907,7 @@
StackPage *aPage;
sqInt calloutContext;
sqInt index;
+ char *sp;
char *theFP;
char *theFP1;
StackPage *thePage;
@@ -39919,6 +39923,21 @@
if (!(isLiveContext(calloutContext))) {
return 0;
}
+ /* begin push: */
+ longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+ GIV(stackPointer) = sp;
+ /* begin externalWriteBackHeadFramePointers */
+ assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+ assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+ /* begin setHeadFP:andSP:inPage: */
+ assert(GIV(stackPointer) < GIV(framePointer));
+ assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+ assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+ (GIV(stackPage)->headFP = GIV(framePointer));
+ (GIV(stackPage)->headSP = GIV(stackPointer));
+ assert(pageListIsWellFormed());
if (((longAt((callbackContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
/* begin markContextAsDead: */
assert(isContext(callbackContext));
@@ -40178,6 +40197,7 @@
StackPage *aPage;
sqInt calloutMethodContext;
sqInt index;
+ char *sp;
char *theFP;
char *theFP1;
StackPage *thePage;
@@ -40193,6 +40213,21 @@
if (!(isLiveContext(calloutMethodContext))) {
return 0;
}
+ /* begin push: */
+ longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+ GIV(stackPointer) = sp;
+ /* begin externalWriteBackHeadFramePointers */
+ assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+ assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+ /* begin setHeadFP:andSP:inPage: */
+ assert(GIV(stackPointer) < GIV(framePointer));
+ assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+ assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+ (GIV(stackPage)->headFP = GIV(framePointer));
+ (GIV(stackPage)->headSP = GIV(stackPointer));
+ assert(pageListIsWellFormed());
if (((longAt((callbackMethodContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
/* begin markContextAsDead: */
assert(isContext(callbackMethodContext));
Modified: branches/Cog/nscogsrc/vm/interp.h
===================================================================
--- branches/Cog/nscogsrc/vm/interp.h 2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/nscogsrc/vm/interp.h 2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
*/
#define VM_PROXY_MAJOR 1
Modified: branches/Cog/nscogsrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nscogsrc/vm/vmCallback.h 2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/nscogsrc/vm/vmCallback.h 2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
*/
#define VM_CALLBACK_INC 1
Property changes on: branches/Cog/scripts/findUnofficialFiles
___________________________________________________________________
Deleted: svn:execute
- true
Added: svn:executable
+ *
Added: branches/Cog/scripts/lsmodified
===================================================================
--- branches/Cog/scripts/lsmodified (rev 0)
+++ branches/Cog/scripts/lsmodified 2011-07-12 21:07:35 UTC (rev 2455)
@@ -0,0 +1,2 @@
+#!/bin/sh
+fgrep -l '* VMMaker' *src*/vm/*
Property changes on: branches/Cog/scripts/lsmodified
___________________________________________________________________
Added: svn:executable
+ *
Modified: branches/Cog/src/plugins/IA32ABI/IA32ABI.c
===================================================================
--- branches/Cog/src/plugins/IA32ABI/IA32ABI.c 2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/src/plugins/IA32ABI/IA32ABI.c 2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,9 +1,9 @@
/* Automatically generated by
- VMPluginCodeGenerator VMMaker.oscog-eem.79 uuid: d1cc45e3-9cc0-4399-a644-2bacab32b83b
+ VMPluginCodeGenerator VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
from
- IA32ABIPlugin VMMaker.oscog-eem.79 uuid: d1cc45e3-9cc0-4399-a644-2bacab32b83b
+ IA32ABIPlugin VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
*/
-static char __buildInfo[] = "IA32ABIPlugin VMMaker.oscog-eem.79 uuid: d1cc45e3-9cc0-4399-a644-2bacab32b83b " __DATE__ ;
+static char __buildInfo[] = "IA32ABIPlugin VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278 " __DATE__ ;
@@ -63,7 +63,7 @@
#define PrimErrNoMemory 9
#define PrimErrNotFound 11
#define PrimErrUnsupported 7
-#define STACKVM 0
+#define STACKVM 1
/*** Function Prototypes ***/
@@ -132,9 +132,9 @@
struct VirtualMachine* interpreterProxy;
static const char *moduleName =
#ifdef SQUEAK_BUILTIN_PLUGIN
- "IA32ABI VMMaker.oscog-eem.79 (i)"
+ "IA32ABI VMMaker.oscog-eem.98 (i)"
#else
- "IA32ABI VMMaker.oscog-eem.79 (e)"
+ "IA32ABI VMMaker.oscog-eem.98 (e)"
#endif
;
@@ -286,8 +286,8 @@
if (interpreterProxy->includesBehaviorThatOf(interpreterProxy->fetchClassOf(array), interpreterProxy->classAlien())) {
totalLength = longAt(array + BaseHeaderSize);
dest = (((totalLength > 0
- ? (array + BaseHeaderSize) + BytesPerOop
- : longAt((array + BaseHeaderSize) + BytesPerOop))) + start) - 1;
+ ? ((array + BaseHeaderSize) + BytesPerOop)
+ : (longAt((array + BaseHeaderSize) + BytesPerOop)))) + start) - 1;
if (totalLength == 0) {
/* no bounds checks for zero-sized (pointer) Aliens */
@@ -304,7 +304,7 @@
}
if (!((start >= 1)
&& (((start - 1) <= stop)
- && (stop <= totalLength)))) {
+ && (stop <= totalLength)))) {
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
if ((repl & 1)) {
@@ -324,8 +324,8 @@
if (interpreterProxy->includesBehaviorThatOf(interpreterProxy->fetchClassOf(repl), interpreterProxy->classAlien())) {
totalLength = longAt(repl + BaseHeaderSize);
src = (((totalLength > 0
- ? (repl + BaseHeaderSize) + BytesPerOop
- : longAt((repl + BaseHeaderSize) + BytesPerOop))) + replStart) - 1;
+ ? ((repl + BaseHeaderSize) + BytesPerOop)
+ : (longAt((repl + BaseHeaderSize) + BytesPerOop)))) + replStart) - 1;
if (totalLength == 0) {
/* no bounds checks for zero-sized (pointer) Aliens */
@@ -408,7 +408,7 @@
addr = ptr[1];
if ((sizeField >= 0)
|| ((addr == 0)
- || (interpreterProxy->isInMemory(addr)))) {
+ || (interpreterProxy->isInMemory(addr)))) {
return interpreterProxy->primitiveFailFor(PrimErrInappropriate);
}
free((void *)addr);
@@ -437,19 +437,19 @@
mac = interpreterProxy->methodArgumentCount();
-# if STACKVM
+# if (STACKVM)
errCode = callIA32DoubleReturn(interpreterProxy->getStackPointer() + mac - 2, /* arg vec */
1 - mac /* nargs */,
mac /* funcOffset*/,
mac - 1 /* resultOffset */);
-# else /* STACKVM */
+# else /* (STACKVM) */
errCode = callIA32DoubleReturn(interpreterProxy->getStackPointer() - mac + 2, /* arg vec */
mac - 1 /* nargs */,
mac /* funcOffset*/,
mac - 1 /* resultOffset */);
-# endif /* STACKVM */
+# endif /* (STACKVM) */
if (errCode != 0) {
return interpreterProxy->primitiveFailFor(errCode);
@@ -479,19 +479,19 @@
mac = interpreterProxy->methodArgumentCount();
-# if STACKVM
+# if (STACKVM)
errCode = callIA32FloatReturn(interpreterProxy->getStackPointer() + mac - 2, /* arg vec */
1 - mac /* nargs */,
mac /* funcOffset*/,
mac - 1 /* resultOffset */);
-# else /* STACKVM */
+# else /* (STACKVM) */
errCode = callIA32FloatReturn(interpreterProxy->getStackPointer() - mac + 2, /* arg vec */
mac - 1 /* nargs */,
mac /* funcOffset*/,
mac - 1 /* resultOffset */);
-# endif /* STACKVM */
+# endif /* (STACKVM) */
if (errCode != 0) {
return interpreterProxy->primitiveFailFor(errCode);
@@ -521,19 +521,19 @@
mac = interpreterProxy->methodArgumentCount();
-# if STACKVM
+# if (STACKVM)
errCode = callIA32IntegralReturn(interpreterProxy->getStackPointer() + mac - 2, /* arg vec */
1 - mac /* nargs */,
mac /* funcOffset*/,
mac - 1 /* resultOffset */);
-# else /* STACKVM */
+# else /* (STACKVM) */
errCode = callIA32IntegralReturn(interpreterProxy->getStackPointer() - mac + 2, /* arg vec */
mac - 1 /* nargs */,
mac /* funcOffset*/,
mac - 1 /* resultOffset */);
-# endif /* STACKVM */
+# endif /* (STACKVM) */
if (errCode != 0) {
return interpreterProxy->primitiveFailFor(errCode);
@@ -591,8 +591,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
((long *)(&floatValue))[0] = ((long *)addr)[0]; ((long *)(&floatValue))[1] = ((long *)addr)[1];
interpreterProxy->pop(2);
return interpreterProxy->pushFloat(floatValue);
@@ -632,8 +632,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
((int*)addr)[0] = ((int*)(&floatValue))[0];
((int*)addr)[1] = ((int*)(&floatValue))[1];
interpreterProxy->methodReturnValue(valueOop);
@@ -663,8 +663,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
((long *)(&floatValue))[0] = ((long *)addr)[0];
interpreterProxy->pop(2);
return interpreterProxy->pushFloat(floatValue);
@@ -704,8 +704,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
((long *)addr)[0] = ((long *)(&floatValue))[0];
interpreterProxy->methodReturnValue(valueOop);
}
@@ -767,7 +767,7 @@
libraryProxy = interpreterProxy->stackValue(1);
if (!((interpreterProxy->includesBehaviorThatOf(interpreterProxy->fetchClassOf(libraryProxy), interpreterProxy->classAlien()))
&& ((((interpreterProxy->byteSizeOf(libraryProxy)) >= 2) * BytesPerOop)
- && (interpreterProxy->isBytes(functionName))))) {
+ && (interpreterProxy->isBytes(functionName))))) {
return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
}
address = interpreterProxy->ioLoadSymbolOfLengthFromModule(((sqInt) (interpreterProxy->firstIndexableField(functionName))), interpreterProxy->byteSizeOf(functionName), longAt((libraryProxy + BaseHeaderSize) + BytesPerOop));
@@ -875,11 +875,10 @@
}
}
vmCallbackReturnValue = ((VMCallbackReturnValue *) (startOfData(interpreterProxy->stackValue(mac))));
- if (!(interpreterProxy->reestablishContextPriorToCallback(interpreterProxy->stackValue(1)))) {
+ memcpy((&((vmCallbackContext->rvs))), (&((vmCallbackReturnValue->crvrvs))), sizeof((vmCallbackContext->rvs)));
+ if (!(interpreterProxy->returnAsThroughCallbackContext((((((vmCallbackReturnValue->type)) + 1) << 1) | 1), vmCallbackContext, interpreterProxy->stackValue(1)))) {
return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
}
- memcpy((&((vmCallbackContext->rvs))), (&((vmCallbackReturnValue->crvrvs))), sizeof((vmCallbackContext->rvs)));
- longjmp((vmCallbackContext->trampoline), ((vmCallbackReturnValue->type)) + 1);
}
@@ -909,8 +908,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
value = byteAt(addr);
valueOop = interpreterProxy->signed32BitIntegerFor(value);
return interpreterProxy->methodReturnValue(valueOop);
@@ -939,7 +938,7 @@
value = interpreterProxy->signed32BitValueOf(valueOop);
if ((interpreterProxy->failed())
|| ((value < -128)
- || (value > 127))) {
+ || (value > 127))) {
return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
}
if (!((((dataSize = longAt(rcvr + BaseHeaderSize))) == 0)
@@ -947,8 +946,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
byteAtput(addr, value);
return interpreterProxy->methodReturnValue(valueOop);
}
@@ -980,8 +979,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
value = longAt(addr);
valueOop = interpreterProxy->signed32BitIntegerFor(value);
return interpreterProxy->methodReturnValue(valueOop);
@@ -1016,8 +1015,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
longAtput(addr, value);
return interpreterProxy->methodReturnValue(valueOop);
}
@@ -1052,8 +1051,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
signedlonglongvaluePtr = ((long long*) addr);
signedlonglongvalue = *signedlonglongvaluePtr;
valueOop = interpreterProxy->signed64BitIntegerFor(signedlonglongvalue);
@@ -1093,8 +1092,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
signedlonglongvaluePtr = ((long long*) addr);
*signedlonglongvaluePtr = signedlonglongvalue;
return interpreterProxy->methodReturnValue(valueOop);
@@ -1127,8 +1126,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
value = shortAt(addr);
valueOop = interpreterProxy->signed32BitIntegerFor(value);
return interpreterProxy->methodReturnValue(valueOop);
@@ -1157,7 +1156,7 @@
value = interpreterProxy->signed32BitValueOf(valueOop);
if ((interpreterProxy->failed())
|| ((value < -32768)
- || (value > 32767))) {
+ || (value > 32767))) {
return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
}
if (!((((dataSize = longAt(rcvr + BaseHeaderSize))) == 0)
@@ -1165,8 +1164,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
shortAtput(addr, value);
return interpreterProxy->methodReturnValue(valueOop);
}
@@ -1244,8 +1243,8 @@
}
limit = longAt(rcvr + BaseHeaderSize);
ptr = ((char *) (((limit > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset));
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset));
if (limit == 0) {
index = strlen(ptr);
}
@@ -1253,7 +1252,7 @@
limit = abs(limit);
index = 0;
while ((index < limit)
- && ((ptr[index]) != 0)) {
+ && ((ptr[index]) != 0)) {
index += 1;
}
}
@@ -1287,8 +1286,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
ptr = ((char *) (longAt(addr)));
return interpreterProxy->methodReturnValue(interpreterProxy->positive32BitIntegerFor(strlen(ptr)));
}
@@ -1335,8 +1334,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
value = byteAt(addr);
valueOop = interpreterProxy->positive32BitIntegerFor(value);
return interpreterProxy->methodReturnValue(valueOop);
@@ -1372,8 +1371,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
byteAtput(addr, value);
return interpreterProxy->methodReturnValue(valueOop);
}
@@ -1405,8 +1404,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
value = longAt(addr);
valueOop = interpreterProxy->positive32BitIntegerFor(value);
return interpreterProxy->methodReturnValue(valueOop);
@@ -1441,8 +1440,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
longAtput(addr, value);
return interpreterProxy->methodReturnValue(valueOop);
}
@@ -1477,8 +1476,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
unsignedlonglongvaluePtr = ((unsigned long long*) addr);
unsignedlonglongvalue = *unsignedlonglongvaluePtr;
valueOop = interpreterProxy->positive64BitIntegerFor(unsignedlonglongvalue);
@@ -1519,8 +1518,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
unsignedlonglongvaluePtr = ((unsigned long long*) addr);
*unsignedlonglongvaluePtr = unsignedlonglongvalue;
return interpreterProxy->methodReturnValue(valueOop);
@@ -1553,8 +1552,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
value = shortAt(addr);
valueOop = interpreterProxy->positive32BitIntegerFor(value);
return interpreterProxy->methodReturnValue(valueOop);
@@ -1590,8 +1589,8 @@
return interpreterProxy->primitiveFailFor(PrimErrBadIndex);
}
addr = (((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop))) + byteOffset;
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)))) + byteOffset;
shortAtput(addr, value);
return interpreterProxy->methodReturnValue(valueOop);
}
@@ -1713,11 +1712,8 @@
sqInt ok;
interpreterProxy = anInterpreter;
- ok = interpreterProxy->majorVersion() == VM_PROXY_MAJOR;
- if (ok == 0) {
- return 0;
- }
- ok = interpreterProxy->minorVersion() >= VM_PROXY_MINOR;
+ ok = ((interpreterProxy->majorVersion()) == 1)
+ && ((interpreterProxy->minorVersion()) >= 12);
return ok;
}
@@ -1752,8 +1748,8 @@
startOfData(sqInt rcvr)
{
return ((longAt(rcvr + BaseHeaderSize)) > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop));
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)));
}
@@ -1767,8 +1763,8 @@
startOfDatawithSize(sqInt rcvr, sqInt sizeField)
{
return (sizeField > 0
- ? (rcvr + BaseHeaderSize) + BytesPerOop
- : longAt((rcvr + BaseHeaderSize) + BytesPerOop));
+ ? ((rcvr + BaseHeaderSize) + BytesPerOop)
+ : (longAt((rcvr + BaseHeaderSize) + BytesPerOop)));
}
Modified: branches/Cog/src/vm/cointerp.c
===================================================================
--- branches/Cog/src/vm/cointerp.c 2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/src/vm/cointerp.c 2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
from
- CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -1875,7 +1875,7 @@
/* 575 */ (void (*)(void))0,
0 };
static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.97]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.98]";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
volatile int sendTrace;
@@ -38128,11 +38128,7 @@
printFloat(dbgFloatValueOf(oop));
goto l2;
}
- /* begin fetchClassOf: */
- if ((oop & 1)) {
- classOop = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassInteger << ShiftForWord));
- goto l1;
- }
+ /* begin fetchClassOfNonInt: */
if (((ccIndex = (((usqInt) (longAt(oop))) >> 12) & 31)) == 0) {
classOop = (longAt(oop - BaseHeaderSize)) & AllButTypeMask;
goto l1;
@@ -38141,7 +38137,14 @@
classOop = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
goto l1;
}
-l1: /* end fetchClassOf: */;
+l1: /* end fetchClassOfNonInt: */;
+ if (!(((classOop & 3) == 0)
+ && (((((usqInt)classOop)) >= heapBase)
+ && (((((usqInt)classOop)) < GIV(freeStart))
+ && (((longAt(classOop)) & TypeMask) != HeaderTypeGC))))) {
+ print("a ??");
+ goto l2;
+ }
if ((sizeBitsOf(classOop)) == GIV(metaclassSizeBytes)) {
printNameOfClasscount(oop, 5);
goto l2;
@@ -39233,6 +39236,7 @@
StackPage *aPage;
sqInt calloutContext;
sqInt index;
+ char *sp;
char *theFP;
char *theFP1;
StackPage *thePage;
@@ -39248,6 +39252,21 @@
if (!(isLiveContext(calloutContext))) {
return 0;
}
+ /* begin push: */
+ longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+ GIV(stackPointer) = sp;
+ /* begin externalWriteBackHeadFramePointers */
+ assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+ assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+ /* begin setHeadFP:andSP:inPage: */
+ assert(GIV(stackPointer) < GIV(framePointer));
+ assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+ assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+ (GIV(stackPage)->headFP = GIV(framePointer));
+ (GIV(stackPage)->headSP = GIV(stackPointer));
+ assert(pageListIsWellFormed());
if (((longAt((callbackContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
/* begin markContextAsDead: */
assert(isContext(callbackContext));
@@ -39507,6 +39526,7 @@
StackPage *aPage;
sqInt calloutMethodContext;
sqInt index;
+ char *sp;
char *theFP;
char *theFP1;
StackPage *thePage;
@@ -39522,6 +39542,21 @@
if (!(isLiveContext(calloutMethodContext))) {
return 0;
}
+ /* begin push: */
+ longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+ GIV(stackPointer) = sp;
+ /* begin externalWriteBackHeadFramePointers */
+ assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+ assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+ /* begin setHeadFP:andSP:inPage: */
+ assert(GIV(stackPointer) < GIV(framePointer));
+ assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+ assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+ (GIV(stackPage)->headFP = GIV(framePointer));
+ (GIV(stackPage)->headSP = GIV(stackPointer));
+ assert(pageListIsWellFormed());
if (((longAt((callbackMethodContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
/* begin markContextAsDead: */
assert(isContext(callbackMethodContext));
Modified: branches/Cog/src/vm/cointerp.h
===================================================================
--- branches/Cog/src/vm/cointerp.h 2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/src/vm/cointerp.h 2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
*/
Modified: branches/Cog/src/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/src/vm/gcc3x-cointerp.c 2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/src/vm/gcc3x-cointerp.c 2011-07-12 21:07:35 UTC (rev 2455)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
from
- CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -1878,7 +1878,7 @@
/* 575 */ (void (*)(void))0,
0 };
static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.97]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.98]";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
volatile int sendTrace;
@@ -38132,11 +38132,7 @@
printFloat(dbgFloatValueOf(oop));
goto l2;
}
- /* begin fetchClassOf: */
- if ((oop & 1)) {
- classOop = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassInteger << ShiftForWord));
- goto l1;
- }
+ /* begin fetchClassOfNonInt: */
if (((ccIndex = (((usqInt) (longAt(oop))) >> 12) & 31)) == 0) {
classOop = (longAt(oop - BaseHeaderSize)) & AllButTypeMask;
goto l1;
@@ -38145,7 +38141,14 @@
classOop = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
goto l1;
}
-l1: /* end fetchClassOf: */;
+l1: /* end fetchClassOfNonInt: */;
+ if (!(((classOop & 3) == 0)
+ && (((((usqInt)classOop)) >= heapBase)
+ && (((((usqInt)classOop)) < GIV(freeStart))
+ && (((longAt(classOop)) & TypeMask) != HeaderTypeGC))))) {
+ print("a ??");
+ goto l2;
+ }
if ((sizeBitsOf(classOop)) == GIV(metaclassSizeBytes)) {
printNameOfClasscount(oop, 5);
goto l2;
@@ -39237,6 +39240,7 @@
StackPage *aPage;
sqInt calloutContext;
sqInt index;
+ char *sp;
char *theFP;
char *theFP1;
StackPage *thePage;
@@ -39252,6 +39256,21 @@
if (!(isLiveContext(calloutContext))) {
return 0;
}
+ /* begin push: */
+ longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+ GIV(stackPointer) = sp;
+ /* begin externalWriteBackHeadFramePointers */
+ assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+ assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+ /* begin setHeadFP:andSP:inPage: */
+ assert(GIV(stackPointer) < GIV(framePointer));
+ assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+ assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+ (GIV(stackPage)->headFP = GIV(framePointer));
+ (GIV(stackPage)->headSP = GIV(stackPointer));
+ assert(pageListIsWellFormed());
if (((longAt((callbackContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
/* begin markContextAsDead: */
assert(isContext(callbackContext));
@@ -39511,6 +39530,7 @@
StackPage *aPage;
sqInt calloutMethodContext;
sqInt index;
+ char *sp;
char *theFP;
char *theFP1;
StackPage *thePage;
@@ -39526,6 +39546,21 @@
if (!(isLiveContext(calloutMethodContext))) {
return 0;
}
+ /* begin push: */
+ longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
+ GIV(stackPointer) = sp;
+ /* begin externalWriteBackHeadFramePointers */
+ assert((GIV(framePointer) - GIV(stackPointer)) < LargeContextSize);
+ assert(GIV(stackPage) == (mostRecentlyUsedPage()));
+ /* begin setHeadFP:andSP:inPage: */
+ assert(GIV(stackPointer) < GIV(framePointer));
+ assert((GIV(stackPointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(stackPointer) > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
+ assert((GIV(framePointer) < ((GIV(stackPage)->baseAddress)))
+ && (GIV(framePointer) > (((GIV(stackPage)->realStackLimit)) - (((sqInt) LargeContextSize >> 1)))));
+ (GIV(stackPage)->headFP = GIV(framePointer));
+ (GIV(stackPage)->headSP = GIV(stackPointer));
+ assert(pageListIsWellFormed());
if (((longAt((callbackMethodContext + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1) == 0) {
/* begin markContextAsDead: */
assert(isContext(callbackMethodContext));
Modified: branches/Cog/src/vm/interp.h
===================================================================
--- branches/Cog/src/vm/interp.h 2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/src/vm/interp.h 2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.97 uuid: e5a88d4c-b638-4228-8a1d-39d5af02c8d8
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
*/
#define VM_PROXY_MAJOR 1
Modified: branches/Cog/src/vm/vmCallback.h
===================================================================
--- branches/Cog/src/vm/vmCallback.h 2011-07-12 17:34:46 UTC (rev 2454)
+++ branches/Cog/src/vm/vmCallback.h 2011-07-12 21:07:35 UTC (rev 2455)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.93 uuid: a811c33a-a695-452b-9090-e0984e33c100
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.98 uuid: 120a176d-c5ad-4b31-829d-2236efbb9278
*/
#define VM_CALLBACK_INC 1
More information about the Vm-dev
mailing list