[Vm-dev] [commit][3085] CogVM source as per VMMaker.oscog-eem.887
commits at squeakvm.org
commits at squeakvm.org
Tue Sep 30 01:16:36 UTC 2014
Revision: 3085
Author: eliot
Date: 2014-09-29 18:16:34 -0700 (Mon, 29 Sep 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.887
Install the callPrimitiveBytecode in the Interpreter's
bytecodeDispatchTable on Spur.
Modify callPrimitiveBytecode to not invoke unknownBytecode processing if at the
first bytecode of a primitive method.
Correct sign comparison of instructionPointer in justActivateNewMethod.
Relax the validInstructionPointer:inMethod:framePointer:
assert to accept any pc in initialPC to self size range
now that callPrimitiveBytecode is more forgiving.
Speed up primitiveMarkUnwindMethod & primitiveMarkHandlerMethod in the
StackInterpreter by setting them to 0 in the primitive table.
Modified Paths:
--------------
branches/Cog/nscogsrc/vm/cointerp.c
branches/Cog/nscogsrc/vm/cointerp.h
branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
branches/Cog/nsspursrc/vm/cointerp.c
branches/Cog/nsspursrc/vm/cointerp.h
branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
branches/Cog/nsspurstacksrc/vm/interp.c
branches/Cog/scripts/uploadvms
branches/Cog/sistasrc/vm/cointerp.c
branches/Cog/sistasrc/vm/cointerp.h
branches/Cog/sistasrc/vm/gcc3x-cointerp.c
branches/Cog/spursistasrc/vm/cointerp.c
branches/Cog/spursistasrc/vm/cointerp.h
branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
branches/Cog/spursrc/vm/cointerp.c
branches/Cog/spursrc/vm/cointerp.h
branches/Cog/spursrc/vm/gcc3x-cointerp.c
branches/Cog/spurstacksrc/vm/gcc3x-interp.c
branches/Cog/spurstacksrc/vm/interp.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/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c 2014-09-25 23:12:18 UTC (rev 3084)
+++ branches/Cog/nscogsrc/vm/cointerp.c 2014-09-30 01:16:34 UTC (rev 3085)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.885 uuid: 292f0a8d-0afa-4943-90fd-be53fb40772a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
from
- CoInterpreter VMMaker.oscog-eem.885 uuid: 292f0a8d-0afa-4943-90fd-be53fb40772a
+ CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.885 uuid: 292f0a8d-0afa-4943-90fd-be53fb40772a " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -703,8 +703,6 @@
static void primitiveLogN(void);
static void primitiveLowSpaceSemaphore(void);
static void primitiveMakePoint(void);
-static void primitiveMarkHandlerMethod(void);
-static void primitiveMarkUnwindMethod(void);
static void primitiveMaxIdentityHash(void);
usqInt primitiveMethod(void);
static void primitiveMillisecondClock(void);
@@ -1707,8 +1705,8 @@
/* 195 */ primitiveFindNextUnwindContext,
/* 196 */ primitiveTerminateTo,
/* 197 */ primitiveFindHandlerContext,
- /* 198 */ primitiveMarkUnwindMethod,
- /* 199 */ primitiveMarkHandlerMethod,
+ /* 198 */ (void (*)(void))0,
+ /* 199 */ (void (*)(void))0,
/* 200 */ primitiveClosureCopyWithCopiedValues,
/* 201 */ primitiveClosureValue,
/* 202 */ primitiveClosureValue,
@@ -2086,7 +2084,7 @@
/* 574 */ (void (*)(void))0,
/* 575 */ (void (*)(void))0,
0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.885";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.887";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -13043,11 +13041,38 @@
{
sqInt byte1;
sqInt byte2;
+ sqInt header;
+ sqInt header1;
+ sqInt header2;
sqInt prim;
VM_LABEL(0callPrimitiveBytecode);
- error("callPrimitiveBytecode should not be evaluated. method activation should step beyond this bytecode.");
+ /* begin methodHeaderOf: */
+ assert(isCompiledMethod(GIV(method)));
+ header2 = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ header = ((header2 & 1)
+ ? header2
+ : (assert((((usqInt)header2)) < (heapBase())),
+ assert((((((CogMethod *) header2))->objectHeader)) == (nullHeaderForMachineCodeMethod())),
+ ((((CogMethod *) header2))->methodHeader)));
+ if ((((((sqInt) header)) < 0
+ ? header & (65536 << SmallIntegerShift)
+ : (header & 536871934) != 0))
+ && (localIP == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + (BaseHeaderSize)))) {
+ localIP += ((((sqInt) header)) < 0
+ ? 3
+ : 0);
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+ null;
+ goto l296;
+ }
+ else {
+ goto respondToUnknownBytecode;
+ goto l296;
+ }
+
}
l296: /* end case */;
break;
@@ -13837,7 +13862,7 @@
GIV(argumentCount) = (((usqInt) header) >> 25) & 15;
assert(wasInMachineCode == (isMachineCodeFrame(GIV(framePointer))));
if (calledFromMachineCode) {
- if (GIV(instructionPointer) >= (startOfMemory())) {
+ if ((((usqInt)GIV(instructionPointer))) >= (startOfMemory())) {
/* begin iframeSavedIP:put: */
assert(!(isMachineCodeFrame(GIV(framePointer))));
longAtput(GIV(framePointer) + FoxIFSavedIP, GIV(instructionPointer));
@@ -19868,7 +19893,7 @@
rcvr = longAt(GIV(stackPointer) + (numArgs * BytesPerWord));
assert(!(isOopForwarded(rcvr)));
if (activateCogMethod
- && (GIV(instructionPointer) >= (startOfMemory()))) {
+ && ((((usqInt)GIV(instructionPointer))) >= (startOfMemory()))) {
/* begin iframeSavedIP:put: */
assert(!(isMachineCodeFrame(GIV(framePointer))));
longAtput(GIV(framePointer) + FoxIFSavedIP, GIV(instructionPointer));
@@ -20101,7 +20126,7 @@
rcvr = longAt(GIV(stackPointer) + (numArgs * BytesPerWord));
assert(!(isOopForwarded(rcvr)));
if (activateCogMethod
- && (GIV(instructionPointer) >= (startOfMemory()))) {
+ && ((((usqInt)GIV(instructionPointer))) >= (startOfMemory()))) {
/* begin iframeSavedIP:put: */
assert(!(isMachineCodeFrame(GIV(framePointer))));
longAtput(GIV(framePointer) + FoxIFSavedIP, GIV(instructionPointer));
@@ -20762,15 +20787,19 @@
longAtput((theContext + BaseHeaderSize) + (StackPointerIndex << ShiftForWord), ((tempIndex << 1) | 1));
}
+
+/* Note that we accept anInstrPointer pointing to a callPrimitiveBytecode
+ at the start of a method that contains a primitive. This because methods
+ like Context(Part)>>reset have to be updated to skip the callPrimtiive
+ bytecode otherwise. */
+/* -1 for pre-increment in fetchNextBytecode */
+
sqInt
validInstructionPointerinMethodframePointer(usqInt instrPointer, usqInt aMethod, char *fp)
{
CogMethod *cogMethod;
sqInt header;
sqInt methodField;
- sqInt methodHeader;
- sqInt methodHeader1;
- sqInt methodHeader2;
usqInt theInstrPointer;
if (instrPointer == (ceCannotResumePC())) {
@@ -20798,21 +20827,7 @@
}
}
-
- /* begin noAssertHeaderOf: */
- methodHeader2 = longAt((aMethod + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
- methodHeader = (isCogMethodReference(methodHeader2)
- ? ((((CogMethod *) methodHeader2))->methodHeader)
- : methodHeader2);
return (theInstrPointer >= (((aMethod + (lastPointerOf(aMethod))) + BytesPerOop) - 1))
- && ((theInstrPointer < (((aMethod + (numBytesOf(aMethod))) + BaseHeaderSize) - 1))
- && (!(((((sqInt) methodHeader)) < 0)
- && ((methodHeader & (65536 << SmallIntegerShift))
- && (theInstrPointer < ((((aMethod + BytesPerOop) - 1) + (lastPointerOf(aMethod))) + (((((sqInt) methodHeader)) < 0
- ? 3
- : 0))))))));
-
- return (theInstrPointer >= (((aMethod + (lastPointerOf(aMethod))) + BytesPerOop) - 1))
&& (theInstrPointer < (((aMethod + (numBytesOf(aMethod))) + (BaseHeaderSize)) - 1));
}
@@ -29701,37 +29716,7 @@
GIV(stackPointer) = sp;
}
-
-/* Primitive. Mark the method for exception handling. The primitive must fail
- after marking the context so that the regular code is run.
- */
-
static void
-primitiveMarkHandlerMethod(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- /* begin primitiveFail */
- if (!GIV(primFailCode)) {
- GIV(primFailCode) = 1;
- }
-}
-
-
-/* Primitive. Mark the method for exception unwinding. The primitive must
- fail after marking the context so that the regular code is run. It must
- also *not* allow a context switch.
- */
-
-static void
-primitiveMarkUnwindMethod(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- /* begin primitiveFail */
- if (!GIV(primFailCode)) {
- GIV(primFailCode) = 1;
- }
- return;
-}
-
-static void
primitiveMaxIdentityHash(void)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
char *sp;
@@ -51304,7 +51289,7 @@
rcvr1 = longAt(GIV(stackPointer) + (numArgs * BytesPerWord));
assert(!(isOopForwarded(rcvr1)));
if (activateCogMethod
- && (GIV(instructionPointer) >= (startOfMemory()))) {
+ && ((((usqInt)GIV(instructionPointer))) >= (startOfMemory()))) {
/* begin iframeSavedIP:put: */
assert(!(isMachineCodeFrame(GIV(framePointer))));
longAtput(GIV(framePointer) + FoxIFSavedIP, GIV(instructionPointer));
@@ -52176,6 +52161,12 @@
return (((usqInt) header) >> 19) & 0x3F;
}
+
+/* Note that we accept anInstrPointer pointing to a callPrimitiveBytecode
+ at the start of a method that contains a primitive. This because methods
+ like Context(Part)>>reset have to be updated to skip the callPrimtiive
+ bytecode otherwise. */
+
static sqInt
validInstructionPointerinFrame(usqInt anInstrPointer, char *fp)
{
Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h 2014-09-25 23:12:18 UTC (rev 3084)
+++ branches/Cog/nscogsrc/vm/cointerp.h 2014-09-30 01:16:34 UTC (rev 3085)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.885 uuid: 292f0a8d-0afa-4943-90fd-be53fb40772a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
*/
Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2014-09-25 23:12:18 UTC (rev 3084)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2014-09-30 01:16:34 UTC (rev 3085)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.885 uuid: 292f0a8d-0afa-4943-90fd-be53fb40772a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
from
- CoInterpreter VMMaker.oscog-eem.885 uuid: 292f0a8d-0afa-4943-90fd-be53fb40772a
+ CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.885 uuid: 292f0a8d-0afa-4943-90fd-be53fb40772a " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -706,8 +706,6 @@
static void primitiveLogN(void);
static void primitiveLowSpaceSemaphore(void);
static void primitiveMakePoint(void);
-static void primitiveMarkHandlerMethod(void);
-static void primitiveMarkUnwindMethod(void);
static void primitiveMaxIdentityHash(void);
usqInt primitiveMethod(void);
static void primitiveMillisecondClock(void);
@@ -1710,8 +1708,8 @@
/* 195 */ primitiveFindNextUnwindContext,
/* 196 */ primitiveTerminateTo,
/* 197 */ primitiveFindHandlerContext,
- /* 198 */ primitiveMarkUnwindMethod,
- /* 199 */ primitiveMarkHandlerMethod,
+ /* 198 */ (void (*)(void))0,
+ /* 199 */ (void (*)(void))0,
/* 200 */ primitiveClosureCopyWithCopiedValues,
/* 201 */ primitiveClosureValue,
/* 202 */ primitiveClosureValue,
@@ -2089,7 +2087,7 @@
/* 574 */ (void (*)(void))0,
/* 575 */ (void (*)(void))0,
0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.885";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.887";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -13052,11 +13050,38 @@
{
sqInt byte1;
sqInt byte2;
+ sqInt header;
+ sqInt header1;
+ sqInt header2;
sqInt prim;
VM_LABEL(0callPrimitiveBytecode);
- error("callPrimitiveBytecode should not be evaluated. method activation should step beyond this bytecode.");
+ /* begin methodHeaderOf: */
+ assert(isCompiledMethod(GIV(method)));
+ header2 = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ header = ((header2 & 1)
+ ? header2
+ : (assert((((usqInt)header2)) < (heapBase())),
+ assert((((((CogMethod *) header2))->objectHeader)) == (nullHeaderForMachineCodeMethod())),
+ ((((CogMethod *) header2))->methodHeader)));
+ if ((((((sqInt) header)) < 0
+ ? header & (65536 << SmallIntegerShift)
+ : (header & 536871934) != 0))
+ && (localIP == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * BytesPerOop)) + (BaseHeaderSize)))) {
+ localIP += ((((sqInt) header)) < 0
+ ? 3
+ : 0);
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+ null;
+ goto l296;
+ }
+ else {
+ goto respondToUnknownBytecode;
+ goto l296;
+ }
+
}
l296: /* end case */;
BREAK;
@@ -13846,7 +13871,7 @@
GIV(argumentCount) = (((usqInt) header) >> 25) & 15;
assert(wasInMachineCode == (isMachineCodeFrame(GIV(framePointer))));
if (calledFromMachineCode) {
- if (GIV(instructionPointer) >= (startOfMemory())) {
+ if ((((usqInt)GIV(instructionPointer))) >= (startOfMemory())) {
/* begin iframeSavedIP:put: */
assert(!(isMachineCodeFrame(GIV(framePointer))));
longAtput(GIV(framePointer) + FoxIFSavedIP, GIV(instructionPointer));
@@ -19877,7 +19902,7 @@
rcvr = longAt(GIV(stackPointer) + (numArgs * BytesPerWord));
assert(!(isOopForwarded(rcvr)));
if (activateCogMethod
- && (GIV(instructionPointer) >= (startOfMemory()))) {
+ && ((((usqInt)GIV(instructionPointer))) >= (startOfMemory()))) {
/* begin iframeSavedIP:put: */
assert(!(isMachineCodeFrame(GIV(framePointer))));
longAtput(GIV(framePointer) + FoxIFSavedIP, GIV(instructionPointer));
@@ -20110,7 +20135,7 @@
rcvr = longAt(GIV(stackPointer) + (numArgs * BytesPerWord));
assert(!(isOopForwarded(rcvr)));
if (activateCogMethod
- && (GIV(instructionPointer) >= (startOfMemory()))) {
+ && ((((usqInt)GIV(instructionPointer))) >= (startOfMemory()))) {
/* begin iframeSavedIP:put: */
assert(!(isMachineCodeFrame(GIV(framePointer))));
longAtput(GIV(framePointer) + FoxIFSavedIP, GIV(instructionPointer));
@@ -20771,15 +20796,19 @@
longAtput((theContext + BaseHeaderSize) + (StackPointerIndex << ShiftForWord), ((tempIndex << 1) | 1));
}
+
+/* Note that we accept anInstrPointer pointing to a callPrimitiveBytecode
+ at the start of a method that contains a primitive. This because methods
+ like Context(Part)>>reset have to be updated to skip the callPrimtiive
+ bytecode otherwise. */
+/* -1 for pre-increment in fetchNextBytecode */
+
sqInt
validInstructionPointerinMethodframePointer(usqInt instrPointer, usqInt aMethod, char *fp)
{
CogMethod *cogMethod;
sqInt header;
sqInt methodField;
- sqInt methodHeader;
- sqInt methodHeader1;
- sqInt methodHeader2;
usqInt theInstrPointer;
if (instrPointer == (ceCannotResumePC())) {
@@ -20807,21 +20836,7 @@
}
}
-
- /* begin noAssertHeaderOf: */
- methodHeader2 = longAt((aMethod + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
- methodHeader = (isCogMethodReference(methodHeader2)
- ? ((((CogMethod *) methodHeader2))->methodHeader)
- : methodHeader2);
return (theInstrPointer >= (((aMethod + (lastPointerOf(aMethod))) + BytesPerOop) - 1))
- && ((theInstrPointer < (((aMethod + (numBytesOf(aMethod))) + BaseHeaderSize) - 1))
- && (!(((((sqInt) methodHeader)) < 0)
- && ((methodHeader & (65536 << SmallIntegerShift))
- && (theInstrPointer < ((((aMethod + BytesPerOop) - 1) + (lastPointerOf(aMethod))) + (((((sqInt) methodHeader)) < 0
- ? 3
- : 0))))))));
-
- return (theInstrPointer >= (((aMethod + (lastPointerOf(aMethod))) + BytesPerOop) - 1))
&& (theInstrPointer < (((aMethod + (numBytesOf(aMethod))) + (BaseHeaderSize)) - 1));
}
@@ -29710,37 +29725,7 @@
GIV(stackPointer) = sp;
}
-
-/* Primitive. Mark the method for exception handling. The primitive must fail
- after marking the context so that the regular code is run.
- */
-
static void
-primitiveMarkHandlerMethod(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- /* begin primitiveFail */
- if (!GIV(primFailCode)) {
- GIV(primFailCode) = 1;
- }
-}
-
-
-/* Primitive. Mark the method for exception unwinding. The primitive must
- fail after marking the context so that the regular code is run. It must
- also *not* allow a context switch.
- */
-
-static void
-primitiveMarkUnwindMethod(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- /* begin primitiveFail */
- if (!GIV(primFailCode)) {
- GIV(primFailCode) = 1;
- }
- return;
-}
-
-static void
primitiveMaxIdentityHash(void)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
char *sp;
@@ -51313,7 +51298,7 @@
rcvr1 = longAt(GIV(stackPointer) + (numArgs * BytesPerWord));
assert(!(isOopForwarded(rcvr1)));
if (activateCogMethod
- && (GIV(instructionPointer) >= (startOfMemory()))) {
+ && ((((usqInt)GIV(instructionPointer))) >= (startOfMemory()))) {
/* begin iframeSavedIP:put: */
assert(!(isMachineCodeFrame(GIV(framePointer))));
longAtput(GIV(framePointer) + FoxIFSavedIP, GIV(instructionPointer));
@@ -52185,6 +52170,12 @@
return (((usqInt) header) >> 19) & 0x3F;
}
+
+/* Note that we accept anInstrPointer pointing to a callPrimitiveBytecode
+ at the start of a method that contains a primitive. This because methods
+ like Context(Part)>>reset have to be updated to skip the callPrimtiive
+ bytecode otherwise. */
+
static sqInt
validInstructionPointerinFrame(usqInt anInstrPointer, char *fp)
{
Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c 2014-09-25 23:12:18 UTC (rev 3084)
+++ branches/Cog/nsspursrc/vm/cointerp.c 2014-09-30 01:16:34 UTC (rev 3085)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.885 uuid: 292f0a8d-0afa-4943-90fd-be53fb40772a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
from
- CoInterpreter VMMaker.oscog-eem.885 uuid: 292f0a8d-0afa-4943-90fd-be53fb40772a
+ CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.885 uuid: 292f0a8d-0afa-4943-90fd-be53fb40772a " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.887 uuid: f980d45a-5622-46f6-95d9-ac8d00a34e81 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -713,8 +713,6 @@
static void primitiveLogN(void);
static void primitiveLowSpaceSemaphore(void);
static void primitiveMakePoint(void);
-static void primitiveMarkHandlerMethod(void);
-static void primitiveMarkUnwindMethod(void);
static void primitiveMaxIdentityHash(void);
usqInt primitiveMethod(void);
static void primitiveMillisecondClock(void);
@@ -1523,8 +1521,8 @@
_iss sqInt trueObj;
_iss sqInt falseObj;
_iss sqInt remapBufferCount;
-_iss usqInt totalFreeOldSpace;
_iss usqInt newSpaceStart;
+_iss usqInt totalFreeOldSpace;
_iss sqInt bytesPerPage;
_iss sqInt numSegments;
_iss sqInt traceLogIndex;
@@ -1918,8 +1916,8 @@
/* 195 */ primitiveFindNextUnwindContext,
/* 196 */ primitiveTerminateTo,
/* 197 */ primitiveFindHandlerContext,
- /* 198 */ primitiveMarkUnwindMethod,
- /* 199 */ primitiveMarkHandlerMethod,
+ /* 198 */ (void (*)(void))0,
+ /* 199 */ (void (*)(void))0,
/* 200 */ primitiveClosureCopyWithCopiedValues,
/* 201 */ primitiveClosureValue,
/* 202 */ primitiveClosureValue,
@@ -2328,7 +2326,7 @@
/*540*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
/*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
};
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.885";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.887";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -5120,7 +5118,7 @@
? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0
: (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) {
goto commonCallerReturn;
- goto l287;
+ goto l288;
}
closure = longAt(localFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory())
? ((mframeCogMethod(localFP))->cmNumArgs)
@@ -5157,11 +5155,11 @@
theMethod = longAt((home + (BaseHeaderSize)) + (MethodIndex << 2));
if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) {
unwindContextOrNilOrZero = home;
- goto l289;
+ goto l290;
}
}
unwindContextOrNilOrZero = ctxtOrNilOrZero;
- l289: /* end internalFindUnwindThroughContext: */;
+ l290: /* end internalFindUnwindThroughContext: */;
if (unwindContextOrNilOrZero == GIV(nilObj)) {
/* error: can't find home on chain; cannot return */
@@ -5175,10 +5173,10 @@
: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(localFP)));
ourContext = longAt(localFP + FoxThisContext);
- goto l291;
+ goto l292;
}
ourContext = marryFrameSP(localFP, localSP);
- l291: /* end ensureFrameIsMarried:SP: */;
+ l292: /* end ensureFrameIsMarried:SP: */;
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), ourContext);
/* begin internalPush: */
@@ -5187,7 +5185,7 @@
GIV(argumentCount) = 1;
goto normalSend;
/* return self */
- goto l287;
+ goto l288;
}
if (unwindContextOrNilOrZero != 0) {
/* begin internalAboutToReturn:through: */
@@ -5199,10 +5197,10 @@
: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(localFP)));
ourContext1 = longAt(localFP + FoxThisContext);
- goto l288;
+ goto l289;
}
ourContext1 = marryFrameSP(localFP, localSP);
- l288: /* end ensureFrameIsMarried:SP: */;
+ l289: /* end ensureFrameIsMarried:SP: */;
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), ourContext1);
/* begin internalPush: */
@@ -5213,7 +5211,7 @@
GIV(argumentCount) = 2;
goto normalSend;
/* return self */
- goto l287;
+ goto l288;
}
contextToReturnTo = null;
if (((longAt((home + (BaseHeaderSize)) + (SenderIndex << 2))) & 1)) {
@@ -5272,10 +5270,10 @@
: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(localFP)));
ourContext2 = longAt(localFP + FoxThisContext);
- goto l290;
+ goto l291;
}
ourContext2 = marryFrameSP(localFP, localSP);
- l290: /* end ensureFrameIsMarried:SP: */;
+ l291: /* end ensureFrameIsMarried:SP: */;
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), ourContext2);
/* begin internalPush: */
@@ -5284,7 +5282,7 @@
GIV(argumentCount) = 1;
goto normalSend;
/* return self */
- goto l287;
+ goto l288;
}
}
assert(pageListIsWellFormed());
@@ -5399,7 +5397,7 @@
GIV(framePointer) = localFP;
ceEnterCogCodePopReceiverReg();
- goto l287;
+ goto l288;
}
localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
}
@@ -5417,7 +5415,7 @@
/* return self */
}
- l287: /* end case */;
+ l288: /* end case */;
break;
case 121:
/* returnTrue */
@@ -5537,27 +5535,27 @@
fp = (thePage->headFP);
if (fp == theFP) {
frameAbove = 0;
- goto l294;
+ goto l295;
}
while (((callerFP = frameCallerFP(fp))) != 0) {
if (callerFP == theFP) {
frameAbove = fp;
- goto l294;
+ goto l295;
}
fp = callerFP;
}
error("did not find theFP in stack page");
frameAbove = 0;
- l294: /* end findFrameAbove:inPage: */;
+ l295: /* end findFrameAbove:inPage: */;
/* begin newStackPage */
lruOrFree = ((mostRecentlyUsedPage())->nextPage);
if (isFree(lruOrFree)) {
newPage = lruOrFree;
- goto l295;
+ goto l296;
}
divorceFramesIn(lruOrFree);
newPage = lruOrFree;
- l295: /* end newStackPage */;
+ l296: /* end newStackPage */;
assert(newPage == GIV(stackPage));
moveFramesInthroughtoPage(thePage, frameAbove, newPage);
markStackPageMostRecentlyUsed(newPage);
@@ -5581,7 +5579,7 @@
longAtput((sp2 = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
GIV(stackPointer) = sp2;
ceSendAborttonumArgs(longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (SelectorCannotReturn << 2)), contextToReturnFrom, 1);
- goto l293;
+ goto l294;
}
GIV(instructionPointer) = 0;
thePage = makeBaseFrameFor(contextToReturnTo);
@@ -5620,8 +5618,7 @@
GIV(framePointer) = localFP;
ceEnterCogCodePopReceiverReg();
- null;
- goto l293;
+ goto l294;
}
localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
}
@@ -5638,9 +5635,9 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- null;
- l293: /* end baseFrameReturn */;
- goto l292;
+ /* return self */
+ l294: /* end baseFrameReturn */;
+ goto l293;
}
/* begin frameCallerSavedIP: */
localIP = pointerForOop(longAt(localFP + FoxCallerSavedIP));
@@ -5669,7 +5666,7 @@
GIV(framePointer) = localFP;
ceEnterCogCodePopReceiverReg();
- goto l292;
+ goto l293;
}
localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
}
@@ -5686,7 +5683,7 @@
longAtPointerput(localSP, localReturnValue);
}
- l292: /* end case */;
+ l293: /* end case */;
break;
case 126:
/* dynamicSuperSendBytecode */
@@ -6019,10 +6016,10 @@
lkupClassTag = ((tagBits & 1) != 0
? 1
: tagBits);
- goto l296;
+ goto l297;
}
lkupClassTag = (longAt(rcvr)) & 0x3FFFFF;
- l296: /* end fetchClassTagOf: */;
+ l297: /* end fetchClassTagOf: */;
assert(lkupClassTag != (nilObject()));
commonSend:
@@ -6066,10 +6063,10 @@
classTablePage = longAt((GIV(hiddenRootsObj) + (BaseHeaderSize)) + ((((usqInt) lkupClassTag) >> 10) << 2));
if (classTablePage == GIV(nilObj)) {
classOrInteger = null;
- goto l303;
+ goto l304;
}
classOrInteger = longAt((classTablePage + (BaseHeaderSize)) + ((lkupClassTag & ((1 << 10) - 1)) << 2));
- l303: /* end classAtIndex: */;
+ l304: /* end classAtIndex: */;
GIV(traceLog)[GIV(traceLogIndex)] = classOrInteger;
GIV(traceLog)[GIV(traceLogIndex) + 1] = GIV(messageSelector);
GIV(traceLog)[GIV(traceLogIndex) + 2] = TraceIsFromInterpreter;
@@ -6096,7 +6093,7 @@
GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
ok = 1;
- goto l298;
+ goto l299;
}
/* second probe */
@@ -6107,7 +6104,7 @@
GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
ok = 1;
- goto l298;
+ goto l299;
}
probe = (((usqInt) hash) >> 2) & MethodCacheMask;
if (((GIV(methodCache)[probe + MethodCacheSelector]) == GIV(messageSelector))
@@ -6115,10 +6112,10 @@
GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
ok = 1;
- goto l298;
+ goto l299;
}
ok = 0;
- l298: /* end inlineLookupInMethodCacheSel:classTag: */;
+ l299: /* end inlineLookupInMethodCacheSel:classTag: */;
if (ok) {
/* begin ifAppropriateCompileToNativeCode:selector: */
methodHeader2 = longAt((GIV(newMethod) + (BaseHeaderSize)) + (HeaderIndex << 2));
@@ -6176,7 +6173,7 @@
maybeFlagMethodAsInterpreted(GIV(newMethod));
}
}
- goto l301;
+ goto l302;
}
}
/* begin classForClassTag: */
@@ -6188,10 +6185,10 @@
classTablePage1 = longAt((GIV(hiddenRootsObj) + (BaseHeaderSize)) + ((((usqInt) lkupClassTag) >> 10) << 2));
if (classTablePage1 == GIV(nilObj)) {
GIV(lkupClass) = null;
- goto l297;
+ goto l298;
}
GIV(lkupClass) = longAt((classTablePage1 + (BaseHeaderSize)) + ((lkupClassTag & ((1 << 10) - 1)) << 2));
- l297: /* end classAtIndex: */;
+ l298: /* end classAtIndex: */;
lookupMethodInClass(GIV(lkupClass));
/* begin internalizeIPandSP */
assert(GIV(instructionPointer) != (ceReturnToInterpreterPC()));
@@ -6200,7 +6197,7 @@
localFP = pointerForOop(GIV(framePointer));
addNewMethodToCache(GIV(lkupClass));
}
- l301: /* end internalFindNewMethod */;
+ l302: /* end internalFindNewMethod */;
/* begin internalExecuteNewMethod */
VM_LABEL(0internalExecuteNewMethod);
if (primitiveFunctionPointer != 0) {
@@ -6214,31 +6211,31 @@
if (localPrimIndex >= 264) {
longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + (BaseHeaderSize)) + ((localPrimIndex - 264) << 2)));
1;
- goto l299;
+ goto l300;
}
if (localPrimIndex == 256) {
1;
- goto l299;
+ goto l300;
}
if (localPrimIndex == 257) {
longAtPointerput(localSP, GIV(trueObj));
1;
- goto l299;
+ goto l300;
}
if (localPrimIndex == 258) {
longAtPointerput(localSP, GIV(falseObj));
1;
- goto l299;
+ goto l300;
}
if (localPrimIndex == 259) {
longAtPointerput(localSP, GIV(nilObj));
1;
- goto l299;
+ goto l300;
}
longAtPointerput(localSP, (((localPrimIndex - 261) << 1) | 1));
1;
- l299: /* end internalQuickPrimitiveResponse */;
- goto l300;
+ l300: /* end internalQuickPrimitiveResponse */;
+ goto l301;
}
/* begin externalizeIPandSP */
assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -6304,7 +6301,7 @@
returntoExecutive(popStack(), 1);
browserPluginReturnIfNeeded();
null;
- goto l300;
+ goto l301;
}
}
if (methodHasCogMethod(GIV(newMethod))) {
@@ -6381,11 +6378,11 @@
table = longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (PrimErrTableIndex << 2));
if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
errorCode = longAt((table + (BaseHeaderSize)) + ((GIV(primFailCode) - 1) << 2));
- goto l302;
+ goto l303;
}
}
errorCode = ((GIV(primFailCode) << 1) | 1);
- l302: /* end getErrorObjectFromPrimFailCode */;
+ l303: /* end getErrorObjectFromPrimFailCode */;
longAtPointerput(localSP, errorCode);
}
GIV(primFailCode) = 0;
@@ -6409,7 +6406,7 @@
localFP = pointerForOop(GIV(framePointer));
}
}
- l300: /* end internalExecuteNewMethod */;
+ l301: /* end internalExecuteNewMethod */;
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -6876,13 +6873,13 @@
if (((newHash = (longAt(superclass + 4)) & 0x3FFFFF)) == 0) {
if (((err = enterIntoClassTable(superclass))) != 0) {
-err;
- goto l304;
+ goto l305;
}
newHash = (longAt(superclass + 4)) & 0x3FFFFF;
assert((classAtIndex(newHash)) == superclass);
}
newHash;
- l304: /* end ensureBehaviorHash: */;
+ l305: /* end ensureBehaviorHash: */;
/* begin classTagForClass: */
assert(addressCouldBeClassObj(superclass));
/* begin ensureBehaviorHash: */
@@ -6890,13 +6887,13 @@
if (((newHash1 = (longAt(superclass + 4)) & 0x3FFFFF)) == 0) {
if (((err1 = enterIntoClassTable(superclass))) != 0) {
lkupClassTag = -err1;
- goto l305;
+ goto l306;
}
newHash1 = (longAt(superclass + 4)) & 0x3FFFFF;
assert((classAtIndex(newHash1)) == superclass);
}
lkupClassTag = newHash1;
- l305: /* end ensureBehaviorHash: */;
+ l306: /* end ensureBehaviorHash: */;
assert(lkupClassTag != (nilObject()));
goto commonSend;
}
@@ -7042,28 +7039,40 @@
}
break;
case 139:
- /* pushExplicitOuterReceiverBytecode */
+ /* callPrimitiveBytecode */
{
- sqInt anIntOop;
- sqInt litIndex;
- sqInt n;
- sqInt object;
+ sqInt byte1;
+ sqInt byte2;
+ sqInt header;
+ sqInt header1;
+ sqInt header2;
+ sqInt prim;
- VM_LABEL(0pushExplicitOuterReceiverBytecode);
- litIndex = byteAtPointer(++localIP);
- /* begin literal: */
- assert(GIV(method) == (iframeMethod(localFP)));
- anIntOop = longAt((GIV(method) + (BaseHeaderSize)) + ((litIndex + LiteralStart) << 2));
- n = ((anIntOop & 1)
- ? (anIntOop >> 1)
- : 0);
- /* begin fetchNextBytecode */
- currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+ VM_LABEL(0callPrimitiveBytecode);
+ /* begin methodHeaderOf: */
+ assert(isCompiledMethod(GIV(method)));
+ header2 = longAt((GIV(method) + (BaseHeaderSize)) + (HeaderIndex << 2));
+ header = ((header2 & 1)
+ ? header2
+ : (assert((((usqInt)header2)) < GIV(newSpaceStart)),
+ assert((((((CogMethod *) header2))->objectHeader)) == (nullHeaderForMachineCodeMethod())),
+ ((((CogMethod *) header2))->methodHeader)));
+ if ((header & (65536 << SmallIntegerShift))
+ && (localIP == ((GIV(method) + ((LiteralStart + (literalCountOfMethodHeader(header))) * 4)) + (BaseHeaderSize)))) {
+ localIP += 3;
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- /* begin internalPush: */
- object = explicitOuterReceiverwithObjectwithMixin(n, longAt(localFP + FoxIFReceiver), methodClassOf(GIV(method)));
- longAtPointerput((localSP -= BytesPerOop), object);
+ null;
+ goto l12;
+ }
+ else {
+ goto respondToUnknownBytecode;
+ goto l12;
+ }
+
}
+ l12: /* end case */;
break;
case 140:
case 506: /*250*/
@@ -7206,10 +7215,10 @@
: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(localFP)));
context = longAt(localFP + FoxThisContext);
- goto l13;
+ goto l14;
}
context = marryFrameSP(localFP, localSP + (numCopied * BytesPerOop));
- l13: /* end ensureFrameIsMarried:SP: */;
+ l14: /* end ensureFrameIsMarried:SP: */;
/* begin closureIn:numArgs:instructionPointer:numCopiedValues: */
VM_LABEL(0closureInnumArgsinstructionPointernumCopiedValues);
initialIP = ((oopForPointer(localIP)) + 2) - (GIV(method) + BaseHeaderSize);
@@ -7235,13 +7244,13 @@
if ((GIV(freeStart) + numBytes) > (((eden()).limit))) {
error("no room in eden for allocateSmallNewSpaceSlots:format:classIndex:");
newClosure1 = 0;
- goto l15;
+ goto l16;
}
}
long64Atput(newObj, (((((usqLong) (ClosureFirstCopiedValueIndex + numCopied))) << 56) + (3 << 24)) + ClassBlockClosureCompactIndex);
GIV(freeStart) += numBytes;
newClosure1 = newObj;
- l15: /* end allocateSmallNewSpaceSlots:format:classIndex: */;
+ l16: /* end allocateSmallNewSpaceSlots:format:classIndex: */;
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(newClosure1)));
@@ -7423,7 +7432,7 @@
GIV(messageSelector) = longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (SelectorMustBeBoolean << 2));
GIV(argumentCount) = 0;
goto normalSend;
- goto l16;
+ goto l17;
}
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -7431,7 +7440,7 @@
}
/* begin internalPop: */
localSP += 1 * BytesPerOop;
- l16: /* end jumplfFalseBy: */;
+ l17: /* end jumplfFalseBy: */;
}
break;
case 160:
@@ -7454,7 +7463,7 @@
/* begin ifBackwardsCheckForEvents: */
VM_LABEL(0ifBackwardsCheckForEvents);
if (offset >= 0) {
- goto l17;
+ goto l18;
}
if (localSP < GIV(stackLimit)) {
/* begin externalizeIPandSP */
@@ -7471,7 +7480,7 @@
localSP = pointerForOop(GIV(stackPointer));
localFP = pointerForOop(GIV(framePointer));
if (switched) {
- goto l17;
+ goto l18;
}
}
backwardJumpCountByte = byteAt(localFP + ((VMBIGENDIAN
@@ -7501,7 +7510,7 @@
byteAtput(localFP + ((VMBIGENDIAN
? (FoxIFrameFlags + BytesPerWord) - 1
: FoxIFrameFlags)), backwardJumpCountByte);
- l17: /* end ifBackwardsCheckForEvents: */;
+ l18: /* end ifBackwardsCheckForEvents: */;
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -7533,7 +7542,7 @@
GIV(messageSelector) = longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (SelectorMustBeBoolean << 2));
GIV(argumentCount) = 0;
goto normalSend;
- goto l18;
+ goto l19;
}
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -7541,7 +7550,7 @@
}
/* begin internalPop: */
localSP += 1 * BytesPerOop;
- l18: /* end jumplfTrueBy: */;
+ l19: /* end jumplfTrueBy: */;
}
break;
case 172:
@@ -7570,7 +7579,7 @@
GIV(messageSelector) = longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (SelectorMustBeBoolean << 2));
GIV(argumentCount) = 0;
goto normalSend;
- goto l19;
+ goto l20;
}
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -7578,7 +7587,7 @@
}
/* begin internalPop: */
localSP += 1 * BytesPerOop;
- l19: /* end jumplfFalseBy: */;
+ l20: /* end jumplfFalseBy: */;
}
break;
case 176:
@@ -7608,7 +7617,7 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l20;
+ goto l21;
}
}
else {
@@ -7623,67 +7632,67 @@
/* begin loadFloatOrIntFrom: */
if ((rcvr & 1)) {
rcvr1 = ((double) ((rcvr >> 1)) );
- goto l23;
+ goto l24;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((rcvr & 3) != 0) {
isFloat = 0;
- goto l22;
+ goto l23;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!(isImmediate(rcvr)));
ccIndex = (longAt(rcvr)) & 0x3FFFFF;
isFloat = ClassFloatCompactIndex == ccIndex;
- goto l22;
+ goto l23;
isFloat = (longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (ClassFloat << 2))) == (classAtIndex(ccIndex));
- l22: /* end is:instanceOf:compactClassIndex: */;
+ l23: /* end is:instanceOf:compactClassIndex: */;
if (isFloat) {
;
fetchFloatAtinto(rcvr + (BaseHeaderSize), result1);
rcvr1 = result1;
- goto l25;
+ goto l26;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
rcvr1 = 0.0;
- l25: /* end floatValueOf: */;
- l23: /* end loadFloatOrIntFrom: */;
+ l26: /* end floatValueOf: */;
+ l24: /* end loadFloatOrIntFrom: */;
/* begin loadFloatOrIntFrom: */
if ((arg & 1)) {
arg1 = ((double) ((arg >> 1)) );
- goto l26;
+ goto l27;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((arg & 3) != 0) {
isFloat1 = 0;
- goto l21;
+ goto l22;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!(isImmediate(arg)));
ccIndex1 = (longAt(arg)) & 0x3FFFFF;
isFloat1 = ClassFloatCompactIndex == ccIndex1;
- goto l21;
+ goto l22;
isFloat1 = (longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (ClassFloat << 2))) == (classAtIndex(ccIndex1));
- l21: /* end is:instanceOf:compactClassIndex: */;
+ l22: /* end is:instanceOf:compactClassIndex: */;
if (isFloat1) {
;
fetchFloatAtinto(arg + (BaseHeaderSize), result2);
arg1 = result2;
- goto l24;
+ goto l25;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
arg1 = 0.0;
- l24: /* end floatValueOf: */;
- l26: /* end loadFloatOrIntFrom: */;
+ l25: /* end floatValueOf: */;
+ l27: /* end loadFloatOrIntFrom: */;
if (!GIV(primFailCode)) {
/* begin pop:thenPushFloat: */
longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 + arg1));
@@ -7698,14 +7707,14 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l20;
+ goto l21;
}
}
GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (SpecialSelectors << 2))) + (BaseHeaderSize)) + ((0 * 2) << 2));
GIV(argumentCount) = 1;
goto normalSend;
}
- l20: /* end case */;
+ l21: /* end case */;
break;
case 177:
/* bytecodePrimSubtract */
@@ -7734,7 +7743,7 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l27;
+ goto l28;
}
}
else {
@@ -7749,67 +7758,67 @@
/* begin loadFloatOrIntFrom: */
if ((rcvr & 1)) {
rcvr1 = ((double) ((rcvr >> 1)) );
- goto l30;
+ goto l31;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((rcvr & 3) != 0) {
isFloat = 0;
- goto l29;
+ goto l30;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!(isImmediate(rcvr)));
ccIndex = (longAt(rcvr)) & 0x3FFFFF;
isFloat = ClassFloatCompactIndex == ccIndex;
- goto l29;
+ goto l30;
isFloat = (longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (ClassFloat << 2))) == (classAtIndex(ccIndex));
- l29: /* end is:instanceOf:compactClassIndex: */;
+ l30: /* end is:instanceOf:compactClassIndex: */;
if (isFloat) {
;
fetchFloatAtinto(rcvr + (BaseHeaderSize), result1);
rcvr1 = result1;
- goto l32;
+ goto l33;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
rcvr1 = 0.0;
- l32: /* end floatValueOf: */;
- l30: /* end loadFloatOrIntFrom: */;
+ l33: /* end floatValueOf: */;
+ l31: /* end loadFloatOrIntFrom: */;
/* begin loadFloatOrIntFrom: */
if ((arg & 1)) {
arg1 = ((double) ((arg >> 1)) );
- goto l33;
+ goto l34;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((arg & 3) != 0) {
isFloat1 = 0;
- goto l28;
+ goto l29;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!(isImmediate(arg)));
ccIndex1 = (longAt(arg)) & 0x3FFFFF;
isFloat1 = ClassFloatCompactIndex == ccIndex1;
- goto l28;
+ goto l29;
isFloat1 = (longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (ClassFloat << 2))) == (classAtIndex(ccIndex1));
- l28: /* end is:instanceOf:compactClassIndex: */;
+ l29: /* end is:instanceOf:compactClassIndex: */;
if (isFloat1) {
;
fetchFloatAtinto(arg + (BaseHeaderSize), result2);
arg1 = result2;
- goto l31;
+ goto l32;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
arg1 = 0.0;
- l31: /* end floatValueOf: */;
- l33: /* end loadFloatOrIntFrom: */;
+ l32: /* end floatValueOf: */;
+ l34: /* end loadFloatOrIntFrom: */;
if (!GIV(primFailCode)) {
/* begin pop:thenPushFloat: */
longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 - arg1));
@@ -7824,14 +7833,14 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l27;
+ goto l28;
}
}
GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (SpecialSelectors << 2))) + (BaseHeaderSize)) + ((1 * 2) << 2));
GIV(argumentCount) = 1;
goto normalSend;
}
- l27: /* end case */;
+ l28: /* end case */;
break;
case 178:
/* bytecodePrimLessThan */
@@ -7863,7 +7872,7 @@
else {
goto booleanCheatFalse;
}
- goto l34;
+ goto l35;
}
/* begin initPrimCall */
GIV(primFailCode) = 0;
@@ -7871,67 +7880,67 @@
/* begin loadFloatOrIntFrom: */
if ((rcvr & 1)) {
rcvr1 = ((double) ((rcvr >> 1)) );
- goto l37;
+ goto l38;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((rcvr & 3) != 0) {
isFloat = 0;
- goto l36;
+ goto l37;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!(isImmediate(rcvr)));
ccIndex = (longAt(rcvr)) & 0x3FFFFF;
isFloat = ClassFloatCompactIndex == ccIndex;
- goto l36;
+ goto l37;
isFloat = (longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (ClassFloat << 2))) == (classAtIndex(ccIndex));
- l36: /* end is:instanceOf:compactClassIndex: */;
+ l37: /* end is:instanceOf:compactClassIndex: */;
if (isFloat) {
;
fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
rcvr1 = result;
- goto l39;
+ goto l40;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
rcvr1 = 0.0;
- l39: /* end floatValueOf: */;
- l37: /* end loadFloatOrIntFrom: */;
+ l40: /* end floatValueOf: */;
+ l38: /* end loadFloatOrIntFrom: */;
/* begin loadFloatOrIntFrom: */
if ((arg & 1)) {
arg1 = ((double) ((arg >> 1)) );
- goto l40;
+ goto l41;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((arg & 3) != 0) {
isFloat1 = 0;
- goto l35;
+ goto l36;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!(isImmediate(arg)));
ccIndex1 = (longAt(arg)) & 0x3FFFFF;
isFloat1 = ClassFloatCompactIndex == ccIndex1;
- goto l35;
+ goto l36;
isFloat1 = (longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (ClassFloat << 2))) == (classAtIndex(ccIndex1));
- l35: /* end is:instanceOf:compactClassIndex: */;
+ l36: /* end is:instanceOf:compactClassIndex: */;
if (isFloat1) {
;
fetchFloatAtinto(arg + (BaseHeaderSize), result1);
arg1 = result1;
- goto l38;
+ goto l39;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
arg1 = 0.0;
- l38: /* end floatValueOf: */;
- l40: /* end loadFloatOrIntFrom: */;
+ l39: /* end floatValueOf: */;
+ l41: /* end loadFloatOrIntFrom: */;
aBool = rcvr1 < arg1;
if (!GIV(primFailCode)) {
/* begin booleanCheat: */
@@ -7941,13 +7950,13 @@
else {
goto booleanCheatFalse;
}
- goto l34;
+ goto l35;
}
GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (SpecialSelectors << 2))) + (BaseHeaderSize)) + ((2 * 2) << 2));
GIV(argumentCount) = 1;
goto normalSend;
}
- l34: /* end case */;
+ l35: /* end case */;
booleanCheatTrue:
/* booleanCheatTrue */
@@ -7971,7 +7980,7 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l306;
+ goto l307;
}
if (bytecode == 172) {
@@ -7981,7 +7990,7 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l306;
+ goto l307;
}
if (bytecode > 167) {
@@ -7992,7 +8001,7 @@
localIP = (localIP + offset) + 1;
currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
- goto l306;
+ goto l307;
}
}
currentBytecode = bytecode + GIV(bytecodeSetSelector);
@@ -8000,7 +8009,7 @@
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), GIV(trueObj));
}
- l306: /* end case */;
+ l307: /* end case */;
break;
case 179:
/* bytecodePrimGreaterThan */
@@ -8032,7 +8041,7 @@
else {
/* goto booleanCheatFalse */
}
- goto l41;
+ goto l42;
}
/* begin initPrimCall */
GIV(primFailCode) = 0;
@@ -8040,67 +8049,67 @@
/* begin loadFloatOrIntFrom: */
if ((rcvr & 1)) {
rcvr1 = ((double) ((rcvr >> 1)) );
- goto l44;
+ goto l45;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((rcvr & 3) != 0) {
isFloat = 0;
- goto l43;
+ goto l44;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!(isImmediate(rcvr)));
ccIndex = (longAt(rcvr)) & 0x3FFFFF;
isFloat = ClassFloatCompactIndex == ccIndex;
- goto l43;
+ goto l44;
isFloat = (longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (ClassFloat << 2))) == (classAtIndex(ccIndex));
- l43: /* end is:instanceOf:compactClassIndex: */;
+ l44: /* end is:instanceOf:compactClassIndex: */;
if (isFloat) {
;
fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
rcvr1 = result;
- goto l46;
+ goto l47;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
rcvr1 = 0.0;
- l46: /* end floatValueOf: */;
- l44: /* end loadFloatOrIntFrom: */;
+ l47: /* end floatValueOf: */;
+ l45: /* end loadFloatOrIntFrom: */;
/* begin loadFloatOrIntFrom: */
if ((arg & 1)) {
arg1 = ((double) ((arg >> 1)) );
- goto l47;
+ goto l48;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((arg & 3) != 0) {
isFloat1 = 0;
- goto l42;
+ goto l43;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!(isImmediate(arg)));
ccIndex1 = (longAt(arg)) & 0x3FFFFF;
isFloat1 = ClassFloatCompactIndex == ccIndex1;
- goto l42;
+ goto l43;
isFloat1 = (longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (ClassFloat << 2))) == (classAtIndex(ccIndex1));
- l42: /* end is:instanceOf:compactClassIndex: */;
+ l43: /* end is:instanceOf:compactClassIndex: */;
if (isFloat1) {
;
fetchFloatAtinto(arg + (BaseHeaderSize), result1);
arg1 = result1;
- goto l45;
+ goto l46;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
arg1 = 0.0;
- l45: /* end floatValueOf: */;
- l47: /* end loadFloatOrIntFrom: */;
+ l46: /* end floatValueOf: */;
+ l48: /* end loadFloatOrIntFrom: */;
aBool = rcvr1 > arg1;
if (!GIV(primFailCode)) {
/* begin booleanCheat: */
@@ -8110,13 +8119,13 @@
else {
goto booleanCheatFalse;
}
- goto l41;
+ goto l42;
}
GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (SpecialSelectors << 2))) + (BaseHeaderSize)) + ((3 * 2) << 2));
GIV(argumentCount) = 1;
goto normalSend;
}
- l41: /* end case */;
+ l42: /* end case */;
booleanCheatFalse:
/* booleanCheatFalse */
@@ -8140,7 +8149,7 @@
localIP = (localIP + (bytecode - 151)) + 1;
currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
- goto l307;
+ goto l308;
}
if (bytecode == 172) {
@@ -8151,14 +8160,14 @@
localIP = (localIP + offset) + 1;
currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
- goto l307;
+ goto l308;
}
@@ Diff output truncated at 50000 characters. @@
More information about the Vm-dev
mailing list