[Vm-dev] [commit][3117] CogVM source as per VMMaker.oscog-eem.914
commits at squeakvm.org
commits at squeakvm.org
Wed Oct 29 23:59:09 UTC 2014
Revision: 3117
Author: eliot
Date: 2014-10-29 16:58:59 -0700 (Wed, 29 Oct 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.914
Spur:
Implement safe access to contexts and methods when creating image segments
(since internally married contexts and jitted methods have hidden state encoded
in odd ways).
As a result:
Fix baaad bug in SpurMemoryManager>>lastPointerOf: for contexts, caused by
transcription from (New)ObjectMemory where the method works on a wing and a
prayer because BaseHeaderSize = BytesPerOop. And I can't be arsed to fix it.
Refactor decoding of context instruction pointers so
there is only one copy of the code.
Fix baaad bug in accessibleObjectAfter: and add an assert to primitiveNextObject
to catch similar bugs. Can now enumerate objects in new space, which will
sort-of work, but code should really use allObjects. Will fix at the image
level as time allows.
Eliminate isInSurvivorSpace: in favour of the identical isInPastSpace:.
All:
Fix the comments in loadImageSegmentFrom:outPointers:; the array is not
truncated to zero length; it retains its version info.
Fix storeShort16:ofObject:withValue: to accept negative values.
Modified Paths:
--------------
branches/Cog/image/uploadspurimage.sh
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/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/plugins/ADPCMCodecPlugin/ADPCMCodecPlugin.c
branches/Cog/src/plugins/SoundGenerationPlugin/SoundGenerationPlugin.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/image/uploadspurimage.sh
===================================================================
--- branches/Cog/image/uploadspurimage.sh 2014-10-27 18:59:12 UTC (rev 3116)
+++ branches/Cog/image/uploadspurimage.sh 2014-10-29 23:58:59 UTC (rev 3117)
@@ -6,8 +6,10 @@
"
DATE=`date +%Y-%m-%d`
BASENAME=trunk46-spur
-cd `dirname $0`
+test "$1" = -here || cd `dirname $0`
+echo uploading trunk46-spur from `pwd`
+
DIR=$RemoteRoot/$DATE
echo ssh -x $RemoteUser mkdir $DIR
ssh -x $RemoteUser mkdir $DIR
@@ -19,4 +21,4 @@
ssh $RemoteUser rm $RemoteRoot/{$BASENAME.image,$BASENAME.changes}
echo ssh $RemoteUser cd $RemoteRoot \\\; ln -s $DATE/{$BASENAME.image,$BASENAME.changes} .
ssh $RemoteUser cd $RemoteRoot \; ln -s $DATE/{$BASENAME.image,$BASENAME.changes} .
-ssh $RemoteUser ls -l $RemoteRoot
+ssh $RemoteUser ls -l $RemoteRoot $RemoteRoot/$DATE
Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c 2014-10-27 18:59:12 UTC (rev 3116)
+++ branches/Cog/nscogsrc/vm/cointerp.c 2014-10-29 23:58:59 UTC (rev 3117)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.913 uuid: 236b8f3e-0ff4-4a68-baf9-e3fc62b97da7
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
from
- CoInterpreter VMMaker.oscog-eem.913 uuid: 236b8f3e-0ff4-4a68-baf9-e3fc62b97da7
+ CoInterpreter VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.913 uuid: 236b8f3e-0ff4-4a68-baf9-e3fc62b97da7 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -465,6 +465,7 @@
void ifValidWriteBackStackPointersSaveTo(void *theCFP, void *theCSP, char **savedFPP, char **savedSPP);
sqInt implicitReceiverFormixinimplementing(sqInt rcvr, sqInt mixin, sqInt selector);
usqInt instructionPointerAddress(void);
+static sqInt instructionPointerForFramecurrentFPcurrentIP(sqInt spouseFP, sqInt currentFP, sqInt instrPtr) NoDbgRegParms;
usqInt interpretAddress(void);
static sqInt interpreterAllocationReserveBytes(void);
static sqInt interpretMethodFromMachineCode(void);
@@ -1066,6 +1067,7 @@
void * fetchArrayofObject(sqInt fieldIndex, sqInt objectPointer);
double fetchFloatofObject(sqInt fieldIndex, sqInt objectPointer);
sqInt fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
+static sqInt fetchPointerofMarriedContext(sqInt offset, sqInt aContext) NoDbgRegParms;
static sqInt fetchStackPointerOf(sqInt aContext) NoDbgRegParms;
static sqInt findApplicationOfTargetMixinstartingAtBehavior(sqInt targetMixin, sqInt aBehavior) NoDbgRegParms;
static sqInt findApplicationOfTargetMixinstartingAtNonMetaClass(sqInt targetMixin, sqInt aClass) NoDbgRegParms;
@@ -1326,8 +1328,8 @@
_iss StackPage * stackPage;
_iss sqInt bytecodeSetSelector;
_iss usqInt freeStart;
-_iss usqInt instructionPointer;
_iss sqInt argumentCount;
+_iss usqInt instructionPointer;
_iss sqInt nilObj;
_iss usqInt newMethod;
_iss sqInt messageSelector;
@@ -2085,7 +2087,7 @@
/* 574 */ (void (*)(void))0,
/* 575 */ (void (*)(void))0,
0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.913";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.914";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -4384,7 +4386,7 @@
? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0
: (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) {
goto commonCallerReturn;
- goto l298;
+ goto l296;
}
closure = longAt(localFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory())
? ((mframeCogMethod(localFP))->cmNumArgs)
@@ -4421,11 +4423,11 @@
theMethod = longAt((home + BaseHeaderSize) + (MethodIndex << ShiftForWord));
if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == 198) {
unwindContextOrNilOrZero = home;
- goto l300;
+ goto l298;
}
}
unwindContextOrNilOrZero = ctxtOrNilOrZero;
- l300: /* end internalFindUnwindThroughContext: */;
+ l298: /* end internalFindUnwindThroughContext: */;
if (unwindContextOrNilOrZero == GIV(nilObj)) {
/* error: can't find home on chain; cannot return */
@@ -4439,10 +4441,10 @@
: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(localFP)));
ourContext = longAt(localFP + FoxThisContext);
- goto l302;
+ goto l300;
}
ourContext = marryFrameSP(localFP, localSP);
- l302: /* end ensureFrameIsMarried:SP: */;
+ l300: /* end ensureFrameIsMarried:SP: */;
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), ourContext);
/* begin internalPush: */
@@ -4451,7 +4453,7 @@
GIV(argumentCount) = 1;
goto normalSend;
/* return self */
- goto l298;
+ goto l296;
}
if (unwindContextOrNilOrZero != 0) {
/* begin internalAboutToReturn:through: */
@@ -4463,10 +4465,10 @@
: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(localFP)));
ourContext1 = longAt(localFP + FoxThisContext);
- goto l299;
+ goto l297;
}
ourContext1 = marryFrameSP(localFP, localSP);
- l299: /* end ensureFrameIsMarried:SP: */;
+ l297: /* end ensureFrameIsMarried:SP: */;
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), ourContext1);
/* begin internalPush: */
@@ -4477,7 +4479,7 @@
GIV(argumentCount) = 2;
goto normalSend;
/* return self */
- goto l298;
+ goto l296;
}
contextToReturnTo = null;
if (((longAt((home + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1)) {
@@ -4536,10 +4538,10 @@
: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(localFP)));
ourContext2 = longAt(localFP + FoxThisContext);
- goto l301;
+ goto l299;
}
ourContext2 = marryFrameSP(localFP, localSP);
- l301: /* end ensureFrameIsMarried:SP: */;
+ l299: /* end ensureFrameIsMarried:SP: */;
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), ourContext2);
/* begin internalPush: */
@@ -4548,7 +4550,7 @@
GIV(argumentCount) = 1;
goto normalSend;
/* return self */
- goto l298;
+ goto l296;
}
}
assert(pageListIsWellFormed());
@@ -4659,7 +4661,7 @@
GIV(framePointer) = localFP;
ceEnterCogCodePopReceiverReg();
- goto l298;
+ goto l296;
}
localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
}
@@ -4677,7 +4679,7 @@
/* return self */
}
- l298: /* end case */;
+ l296: /* end case */;
break;
case 121:
/* returnTrue */
@@ -4797,27 +4799,27 @@
fp = (thePage->headFP);
if (fp == theFP) {
frameAbove = 0;
- goto l305;
+ goto l303;
}
while (((callerFP = frameCallerFP(fp))) != 0) {
if (callerFP == theFP) {
frameAbove = fp;
- goto l305;
+ goto l303;
}
fp = callerFP;
}
error("did not find theFP in stack page");
frameAbove = 0;
- l305: /* end findFrameAbove:inPage: */;
+ l303: /* end findFrameAbove:inPage: */;
/* begin newStackPage */
lruOrFree = ((mostRecentlyUsedPage())->nextPage);
if (isFree(lruOrFree)) {
newPage = lruOrFree;
- goto l306;
+ goto l304;
}
divorceFramesIn(lruOrFree);
newPage = lruOrFree;
- l306: /* end newStackPage */;
+ l304: /* end newStackPage */;
assert(newPage == GIV(stackPage));
moveFramesInthroughtoPage(thePage, frameAbove, newPage);
markStackPageMostRecentlyUsed(newPage);
@@ -4841,7 +4843,7 @@
longAtput((sp2 = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
GIV(stackPointer) = sp2;
ceSendAborttonumArgs(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SelectorCannotReturn << ShiftForWord)), contextToReturnFrom, 1);
- goto l304;
+ goto l302;
}
GIV(instructionPointer) = 0;
thePage = makeBaseFrameFor(contextToReturnTo);
@@ -4880,7 +4882,7 @@
GIV(framePointer) = localFP;
ceEnterCogCodePopReceiverReg();
- goto l304;
+ goto l302;
}
localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
}
@@ -4898,8 +4900,8 @@
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
/* return self */
- l304: /* end baseFrameReturn */;
- goto l303;
+ l302: /* end baseFrameReturn */;
+ goto l301;
}
/* begin frameCallerSavedIP: */
localIP = pointerForOop(longAt(localFP + FoxCallerSavedIP));
@@ -4928,7 +4930,7 @@
GIV(framePointer) = localFP;
ceEnterCogCodePopReceiverReg();
- goto l303;
+ goto l301;
}
localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
}
@@ -4945,7 +4947,7 @@
longAtPointerput(localSP, localReturnValue);
}
- l303: /* end case */;
+ l301: /* end case */;
break;
case 126:
/* dynamicSuperSendBytecode */
@@ -5237,7 +5239,7 @@
GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
ok = 1;
- goto l310;
+ goto l308;
}
/* second probe */
@@ -5248,7 +5250,7 @@
GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
ok = 1;
- goto l310;
+ goto l308;
}
probe = (((usqInt) hash) >> 2) & MethodCacheMask;
if (((GIV(methodCache)[probe + MethodCacheSelector]) == GIV(messageSelector))
@@ -5256,10 +5258,10 @@
GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
ok = 1;
- goto l310;
+ goto l308;
}
ok = 0;
- l310: /* end inlineLookupInMethodCacheSel:classTag: */;
+ l308: /* end inlineLookupInMethodCacheSel:classTag: */;
if (ok) {
/* begin ifAppropriateCompileToNativeCode:selector: */
methodHeader2 = longAt((GIV(newMethod) + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
@@ -5297,7 +5299,7 @@
localFP = pointerForOop(GIV(framePointer));
addNewMethodToCache(GIV(lkupClass));
}
- l307: /* end internalFindNewMethod */;
+ l305: /* end internalFindNewMethod */;
/* begin internalExecuteNewMethod */
VM_LABEL(0internalExecuteNewMethod);
if (primitiveFunctionPointer != 0) {
@@ -5311,31 +5313,31 @@
if (localPrimIndex >= 264) {
longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + ((localPrimIndex - 264) << ShiftForWord)));
1;
- goto l311;
+ goto l309;
}
if (localPrimIndex == 256) {
1;
- goto l311;
+ goto l309;
}
if (localPrimIndex == 257) {
longAtPointerput(localSP, GIV(trueObj));
1;
- goto l311;
+ goto l309;
}
if (localPrimIndex == 258) {
longAtPointerput(localSP, GIV(falseObj));
1;
- goto l311;
+ goto l309;
}
if (localPrimIndex == 259) {
longAtPointerput(localSP, GIV(nilObj));
1;
- goto l311;
+ goto l309;
}
longAtPointerput(localSP, (((localPrimIndex - 261) << 1) | 1));
1;
- l311: /* end internalQuickPrimitiveResponse */;
- goto l309;
+ l309: /* end internalQuickPrimitiveResponse */;
+ goto l307;
}
/* begin externalizeIPandSP */
assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -5394,7 +5396,7 @@
returntoExecutive(popStack(), 1);
browserPluginReturnIfNeeded();
null;
- goto l309;
+ goto l307;
}
}
if (methodHasCogMethod(GIV(newMethod))) {
@@ -5475,11 +5477,11 @@
table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << ShiftForWord));
if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << ShiftForWord));
- goto l308;
+ goto l306;
}
}
errorCode = ((GIV(primFailCode) << 1) | 1);
- l308: /* end getErrorObjectFromPrimFailCode */;
+ l306: /* end getErrorObjectFromPrimFailCode */;
longAtPointerput(localSP, errorCode);
}
GIV(primFailCode) = 0;
@@ -5503,7 +5505,7 @@
localFP = pointerForOop(GIV(framePointer));
}
}
- l309: /* end internalExecuteNewMethod */;
+ l307: /* end internalExecuteNewMethod */;
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -5517,11 +5519,8 @@
sqInt byte3;
sqInt callerContextOrNil;
char *callerFP;
- char *callerFP1;
- char *fp;
sqInt index;
sqInt index1;
- sqInt index2;
sqInt litVar;
sqInt litVar1;
sqInt object;
@@ -5533,16 +5532,12 @@
sqInt rcvr;
sqInt rcvr1;
sqInt result;
- sqInt result1;
sqInt senderOop;
sqInt senderOop1;
char *spouseFP;
char *theFP;
- char *theFPAbove;
- sqInt theIP;
StackPage *thePage;
StackPage *thePage1;
- StackPage *thePage2;
char *theSP;
sqInt top;
sqInt value;
@@ -5557,7 +5552,7 @@
GIV(messageSelector) = longAt((GIV(method) + BaseHeaderSize) + ((byte3 + LiteralStart) << ShiftForWord));
GIV(argumentCount) = byte2 & 0x1F;
goto normalSend;
- goto l5;
+ goto l4;
}
if (opType == 1) {
/* begin literal: */
@@ -5565,7 +5560,7 @@
GIV(messageSelector) = longAt((GIV(method) + BaseHeaderSize) + ((byte3 + LiteralStart) << ShiftForWord));
GIV(argumentCount) = byte2 & 0x1F;
goto superclassSend;
- goto l5;
+ goto l4;
}
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -5612,11 +5607,11 @@
value = result;
}
object1 = value;
- goto l8;
+ goto l6;
}
if (isWidowedContext(rcvr)) {
object1 = longAt((rcvr + BaseHeaderSize) + (byte3 << ShiftForWord));
- goto l8;
+ goto l6;
}
/* begin frameOfMarriedContext: */
senderOop = longAt((rcvr + BaseHeaderSize) + (SenderIndex << ShiftForWord));
@@ -5626,8 +5621,8 @@
if (byte3 == SenderIndex) {
/* begin ensureCallerContext: */
/* begin frameCallerFP: */
- callerFP1 = pointerForOop(longAt(spouseFP + FoxSavedFP));
- if (callerFP1 == 0) {
+ callerFP = pointerForOop(longAt(spouseFP + FoxSavedFP));
+ if (callerFP == 0) {
/* base frame, context in saved ip slot (or base of stack in Cog) */
@@ -5637,14 +5632,14 @@
/* begin stackPageAt: */
/* begin pageIndexFor: */
assert((((((char *) spouseFP)) >= (GIV(stackBasePlus1) - 1)) && ((((char *) spouseFP)) <= (((char *) GIV(pages))))));
- index2 = pageIndexForstackBasePlus1bytesPerPage(spouseFP, GIV(stackBasePlus1), GIV(bytesPerPage));
- thePage2 = stackPageAtpages(index2, GIV(pages));
- callerContextOrNil = longAt((thePage2->baseAddress));
+ index = pageIndexForstackBasePlus1bytesPerPage(spouseFP, GIV(stackBasePlus1), GIV(bytesPerPage));
+ thePage1 = stackPageAtpages(index, GIV(pages));
+ callerContextOrNil = longAt((thePage1->baseAddress));
assert(addressCouldBeObj(callerContextOrNil));
assert((callerContextOrNil == (nilObject()))
|| (isContext(callerContextOrNil)));
object1 = callerContextOrNil;
- goto l4;
+ goto l5;
}
/* begin ensureFrameIsMarried:SP: */
VM_LABEL(3ensureFrameIsMarriedSP);
@@ -5653,82 +5648,36 @@
theSP = (spouseFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())
? ((mframeCogMethod(spouseFP))->cmNumArgs)
: byteAt((spouseFP + FoxIFrameFlags) + 1))))) + BytesPerWord;
- if (((((usqInt)(longAt(callerFP1 + FoxMethod)))) < (startOfMemory())
- ? ((longAt(callerFP1 + FoxMethod)) & MFMethodFlagHasContextFlag) != 0
- : (byteAt((callerFP1 + FoxIFrameFlags) + 2)) != 0)) {
- assert(isContext(frameContext(callerFP1)));
- object1 = longAt(callerFP1 + FoxThisContext);
- goto l4;
+ if (((((usqInt)(longAt(callerFP + FoxMethod)))) < (startOfMemory())
+ ? ((longAt(callerFP + FoxMethod)) & MFMethodFlagHasContextFlag) != 0
+ : (byteAt((callerFP + FoxIFrameFlags) + 2)) != 0)) {
+ assert(isContext(frameContext(callerFP)));
+ object1 = longAt(callerFP + FoxThisContext);
+ goto l5;
}
- object1 = marryFrameSP(callerFP1, theSP);
- l4: /* end ensureCallerContext: */;
- goto l8;
+ object1 = marryFrameSP(callerFP, theSP);
+ l5: /* end ensureCallerContext: */;
+ goto l6;
}
if (byte3 == StackPointerIndex) {
assert((ReceiverIndex + (stackPointerIndexForFrame(spouseFP))) < (lengthOf(rcvr)));
object1 = (((stackPointerIndexForFrame(spouseFP)) << 1) | 1);
- goto l8;
+ goto l6;
}
if (byte3 == InstructionPointerIndex) {
- if (spouseFP == localFP) {
- theIP = oopForPointer(localIP);
- }
- else {
- /* begin stackPageFor: */
- /* begin stackPageAt: */
- /* begin pageIndexFor: */
- assert((((((char *) spouseFP)) >= (GIV(stackBasePlus1) - 1)) && ((((char *) spouseFP)) <= (((char *) GIV(pages))))));
- index = pageIndexForstackBasePlus1bytesPerPage(spouseFP, GIV(stackBasePlus1), GIV(bytesPerPage));
- thePage = stackPageAtpages(index, GIV(pages));
- /* begin findFrameAbove:inPage: */
- fp = (thePage->headFP);
- if (fp == spouseFP) {
- theFPAbove = 0;
- goto l7;
- }
- while (((callerFP = frameCallerFP(fp))) != 0) {
- if (callerFP == spouseFP) {
- theFPAbove = fp;
- goto l7;
- }
- fp = callerFP;
- }
- error("did not find theFP in stack page");
- theFPAbove = 0;
- l7: /* end findFrameAbove:inPage: */;
- theIP = (theFPAbove == 0
- ? longAt((thePage->headSP))
- : oopForPointer(frameCallerSavedIP(theFPAbove)));
- }
- value = contextInstructionPointerframe(theIP, spouseFP);
- if ((((sqInt) value)) < 0) {
- /* begin internalMustMapMachineCodePC:context: */
- /* begin externalizeIPandSP */
- assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
- GIV(instructionPointer) = oopForPointer(localIP);
- GIV(stackPointer) = localSP;
- GIV(framePointer) = localFP;
- result1 = mustMapMachineCodePCcontext((value >> 1), rcvr);
- /* begin internalizeIPandSP */
- assert(GIV(instructionPointer) != (ceReturnToInterpreterPC()));
- localIP = pointerForOop(GIV(instructionPointer));
- localSP = pointerForOop(GIV(stackPointer));
- localFP = pointerForOop(GIV(framePointer));
- value = result1;
- }
- object1 = value;
- goto l8;
+ object1 = instructionPointerForFramecurrentFPcurrentIP(spouseFP, localFP, localIP);
+ goto l6;
}
error("bad index");
object1 = 0;
- l8: /* end instVar:ofContext: */;
+ l6: /* end instVar:ofContext: */;
longAtPointerput((localSP -= BytesPerOop), object1);
}
else {
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), longAt((rcvr + BaseHeaderSize) + (byte3 << ShiftForWord)));
}
- goto l5;
+ goto l4;
}
if (opType == 3) {
/* begin pushLiteralConstant: */
@@ -5737,7 +5686,7 @@
assert(GIV(method) == (iframeMethod(localFP)));
object = longAt((GIV(method) + BaseHeaderSize) + ((byte3 + LiteralStart) << ShiftForWord));
longAtPointerput((localSP -= BytesPerOop), object);
- goto l5;
+ goto l4;
}
if (opType == 4) {
/* begin pushLiteralVariable: */
@@ -5750,7 +5699,7 @@
object2 = longAt((oop + BaseHeaderSize) + (ValueIndex << ShiftForWord));
longAtPointerput((localSP -= BytesPerOop), object2);
- goto l5;
+ goto l4;
}
top = longAtPointer(localSP);
if (opType == 7) {
@@ -5764,7 +5713,7 @@
possibleRootStoreIntovalue(litVar, top);
}
longAtput((litVar + BaseHeaderSize) + (ValueIndex << ShiftForWord), top);
- goto l5;
+ goto l4;
}
if (opType == 6) {
/* begin internalPop: */
@@ -5802,7 +5751,7 @@
ensureContextIsExecutionSafeAfterAssignToStackPointer(rcvr1);
}
null;
- goto l6;
+ goto l7;
}
/* begin frameOfMarriedContext: */
senderOop1 = longAt((rcvr1 + BaseHeaderSize) + (SenderIndex << ShiftForWord));
@@ -5815,9 +5764,9 @@
/* begin pageIndexFor: */
assert((((((char *) theFP)) >= (GIV(stackBasePlus1) - 1)) && ((((char *) theFP)) <= (((char *) GIV(pages))))));
index1 = pageIndexForstackBasePlus1bytesPerPage(theFP, GIV(stackBasePlus1), GIV(bytesPerPage));
- thePage1 = stackPageAtpages(index1, GIV(pages));
+ thePage = stackPageAtpages(index1, GIV(pages));
assert(GIV(stackPage) == (mostRecentlyUsedPage()));
- onCurrentPage = thePage1 == GIV(stackPage);
+ onCurrentPage = thePage == GIV(stackPage);
storeSenderOfFramewithValue(theFP, top);
if (onCurrentPage) {
localFP = (GIV(stackPage)->headFP);
@@ -5827,7 +5776,7 @@
markStackPageMostRecentlyUsed(GIV(stackPage));
}
null;
- goto l6;
+ goto l7;
}
/* begin externalizeIPandSP */
assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -5850,7 +5799,7 @@
localFP = pointerForOop(GIV(framePointer));
markStackPageMostRecentlyUsed(GIV(stackPage));
assertValidExecutionPointersimbarline(((usqInt)localIP), localFP, localSP, 1, __LINE__);
- l6: /* end instVar:ofContext:put: */;
+ l7: /* end instVar:ofContext:put: */;
}
else {
/* begin storePointer:ofObject:withValue: */
@@ -5860,7 +5809,7 @@
longAtput((rcvr1 + BaseHeaderSize) + (byte3 << ShiftForWord), top);
}
}
- l5: /* end case */;
+ l4: /* end case */;
break;
case 133:
/* singleExtendedSuperBytecode */
@@ -5950,10 +5899,10 @@
: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(theFP)));
ourContext = longAt(theFP + FoxThisContext);
- goto l9;
+ goto l8;
}
ourContext = marryFrameSP(theFP, theSP);
- l9: /* end ensureFrameIsMarried:SP: */;
+ l8: /* end ensureFrameIsMarried:SP: */;
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -6141,10 +6090,10 @@
: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(theFP)));
context = longAt(theFP + FoxThisContext);
- goto l10;
+ goto l9;
}
context = marryFrameSP(theFP, theSP);
- l10: /* end ensureFrameIsMarried:SP: */;
+ l9: /* end ensureFrameIsMarried:SP: */;
/* begin closureIn:numArgs:instructionPointer:numCopiedValues: */
VM_LABEL(0closureInnumArgsinstructionPointernumCopiedValues);
newClosure1 = eeInstantiateSmallClassnumSlots(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassBlockClosure << ShiftForWord)), ClosureFirstCopiedValueIndex + numCopied);
@@ -6321,7 +6270,7 @@
GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SelectorMustBeBoolean << ShiftForWord));
GIV(argumentCount) = 0;
goto normalSend;
- goto l11;
+ goto l10;
}
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -6329,7 +6278,7 @@
}
/* begin internalPop: */
localSP += 1 * BytesPerOop;
- l11: /* end jumplfFalseBy: */;
+ l10: /* end jumplfFalseBy: */;
}
break;
case 160:
@@ -6352,7 +6301,7 @@
/* begin ifBackwardsCheckForEvents: */
VM_LABEL(0ifBackwardsCheckForEvents);
if (offset >= 0) {
- goto l12;
+ goto l11;
}
if (localSP < GIV(stackLimit)) {
/* begin externalizeIPandSP */
@@ -6369,7 +6318,7 @@
localSP = pointerForOop(GIV(stackPointer));
localFP = pointerForOop(GIV(framePointer));
if (switched) {
- goto l12;
+ goto l11;
}
}
backwardJumpCountByte = byteAt(localFP + ((VMBIGENDIAN
@@ -6399,7 +6348,7 @@
byteAtput(localFP + ((VMBIGENDIAN
? (FoxIFrameFlags + BytesPerWord) - 1
: FoxIFrameFlags)), backwardJumpCountByte);
- l12: /* end ifBackwardsCheckForEvents: */;
+ l11: /* end ifBackwardsCheckForEvents: */;
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -6431,7 +6380,7 @@
GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SelectorMustBeBoolean << ShiftForWord));
GIV(argumentCount) = 0;
goto normalSend;
- goto l13;
+ goto l12;
}
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -6439,7 +6388,7 @@
}
/* begin internalPop: */
localSP += 1 * BytesPerOop;
- l13: /* end jumplfTrueBy: */;
+ l12: /* end jumplfTrueBy: */;
}
break;
case 172:
@@ -6468,7 +6417,7 @@
GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SelectorMustBeBoolean << ShiftForWord));
GIV(argumentCount) = 0;
goto normalSend;
- goto l14;
+ goto l13;
}
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -6476,7 +6425,7 @@
}
/* begin internalPop: */
localSP += 1 * BytesPerOop;
- l14: /* end jumplfFalseBy: */;
+ l13: /* end jumplfFalseBy: */;
}
break;
case 176:
@@ -6506,7 +6455,7 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l15;
+ goto l14;
}
}
else {
@@ -6521,77 +6470,77 @@
/* begin loadFloatOrIntFrom: */
if ((rcvr & 1)) {
rcvr1 = ((double) ((rcvr >> 1)) );
- goto l19;
+ goto l18;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((rcvr & 1)) {
isFloat = 0;
- goto l18;
+ goto l17;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!((rcvr & 1)));
ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
if (ccIndex == 0) {
isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
- goto l22;
+ goto l21;
}
isFloat = ClassFloatCompactIndex == ccIndex;
- goto l22;
+ goto l21;
isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
- l22: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- l18: /* end is:instanceOf:compactClassIndex: */;
+ l21: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
+ l17: /* end is:instanceOf:compactClassIndex: */;
if (isFloat) {
;
fetchFloatAtinto(rcvr + BaseHeaderSize, result1);
rcvr1 = result1;
- goto l17;
+ goto l16;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
rcvr1 = 0.0;
- l17: /* end floatValueOf: */;
- l19: /* end loadFloatOrIntFrom: */;
+ l16: /* end floatValueOf: */;
+ l18: /* end loadFloatOrIntFrom: */;
/* begin loadFloatOrIntFrom: */
if ((arg & 1)) {
arg1 = ((double) ((arg >> 1)) );
- goto l23;
+ goto l22;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((arg & 1)) {
isFloat1 = 0;
- goto l21;
+ goto l20;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!((arg & 1)));
ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
if (ccIndex1 == 0) {
isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
- goto l16;
+ goto l15;
}
isFloat1 = ClassFloatCompactIndex == ccIndex1;
- goto l16;
+ goto l15;
isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
- l16: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- l21: /* end is:instanceOf:compactClassIndex: */;
+ l15: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
+ l20: /* end is:instanceOf:compactClassIndex: */;
if (isFloat1) {
;
fetchFloatAtinto(arg + BaseHeaderSize, result2);
arg1 = result2;
- goto l20;
+ goto l19;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
arg1 = 0.0;
- l20: /* end floatValueOf: */;
- l23: /* end loadFloatOrIntFrom: */;
+ l19: /* end floatValueOf: */;
+ l22: /* end loadFloatOrIntFrom: */;
if (!GIV(primFailCode)) {
/* begin pop:thenPushFloat: */
longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 + arg1));
@@ -6606,14 +6555,14 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l15;
+ goto l14;
}
}
GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((0 * 2) << ShiftForWord));
GIV(argumentCount) = 1;
goto normalSend;
}
- l15: /* end case */;
+ l14: /* end case */;
break;
case 177:
/* bytecodePrimSubtract */
@@ -6642,7 +6591,7 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l24;
+ goto l23;
}
}
else {
@@ -6657,77 +6606,77 @@
/* begin loadFloatOrIntFrom: */
if ((rcvr & 1)) {
rcvr1 = ((double) ((rcvr >> 1)) );
- goto l28;
+ goto l27;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((rcvr & 1)) {
isFloat = 0;
- goto l27;
+ goto l26;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!((rcvr & 1)));
ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
if (ccIndex == 0) {
isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
- goto l31;
+ goto l30;
}
isFloat = ClassFloatCompactIndex == ccIndex;
- goto l31;
+ goto l30;
isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
- l31: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- l27: /* end is:instanceOf:compactClassIndex: */;
+ l30: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
+ l26: /* end is:instanceOf:compactClassIndex: */;
if (isFloat) {
;
fetchFloatAtinto(rcvr + BaseHeaderSize, result1);
rcvr1 = result1;
- goto l26;
+ goto l25;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
rcvr1 = 0.0;
- l26: /* end floatValueOf: */;
- l28: /* end loadFloatOrIntFrom: */;
+ l25: /* end floatValueOf: */;
+ l27: /* end loadFloatOrIntFrom: */;
/* begin loadFloatOrIntFrom: */
if ((arg & 1)) {
arg1 = ((double) ((arg >> 1)) );
- goto l32;
+ goto l31;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((arg & 1)) {
isFloat1 = 0;
- goto l30;
+ goto l29;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!((arg & 1)));
ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
if (ccIndex1 == 0) {
isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
- goto l25;
+ goto l24;
}
isFloat1 = ClassFloatCompactIndex == ccIndex1;
- goto l25;
+ goto l24;
isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
- l25: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- l30: /* end is:instanceOf:compactClassIndex: */;
+ l24: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
+ l29: /* end is:instanceOf:compactClassIndex: */;
if (isFloat1) {
;
fetchFloatAtinto(arg + BaseHeaderSize, result2);
arg1 = result2;
- goto l29;
+ goto l28;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
arg1 = 0.0;
- l29: /* end floatValueOf: */;
- l32: /* end loadFloatOrIntFrom: */;
+ l28: /* end floatValueOf: */;
+ l31: /* end loadFloatOrIntFrom: */;
if (!GIV(primFailCode)) {
/* begin pop:thenPushFloat: */
longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 - arg1));
@@ -6742,14 +6691,14 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l24;
+ goto l23;
}
}
GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((1 * 2) << ShiftForWord));
GIV(argumentCount) = 1;
goto normalSend;
}
- l24: /* end case */;
+ l23: /* end case */;
break;
case 178:
/* bytecodePrimLessThan */
@@ -6781,7 +6730,7 @@
else {
goto booleanCheatFalse;
}
- goto l33;
+ goto l32;
}
/* begin initPrimCall */
GIV(primFailCode) = 0;
@@ -6789,77 +6738,77 @@
/* begin loadFloatOrIntFrom: */
if ((rcvr & 1)) {
rcvr1 = ((double) ((rcvr >> 1)) );
- goto l37;
+ goto l36;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((rcvr & 1)) {
isFloat = 0;
- goto l36;
+ goto l35;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!((rcvr & 1)));
ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
if (ccIndex == 0) {
isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
- goto l40;
+ goto l39;
}
isFloat = ClassFloatCompactIndex == ccIndex;
- goto l40;
+ goto l39;
isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
- l40: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- l36: /* end is:instanceOf:compactClassIndex: */;
+ l39: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
+ l35: /* end is:instanceOf:compactClassIndex: */;
if (isFloat) {
;
fetchFloatAtinto(rcvr + BaseHeaderSize, result);
rcvr1 = result;
- goto l35;
+ goto l34;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
rcvr1 = 0.0;
- l35: /* end floatValueOf: */;
- l37: /* end loadFloatOrIntFrom: */;
+ l34: /* end floatValueOf: */;
+ l36: /* end loadFloatOrIntFrom: */;
/* begin loadFloatOrIntFrom: */
if ((arg & 1)) {
arg1 = ((double) ((arg >> 1)) );
- goto l41;
+ goto l40;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((arg & 1)) {
isFloat1 = 0;
- goto l39;
+ goto l38;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!((arg & 1)));
ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
if (ccIndex1 == 0) {
isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
- goto l34;
+ goto l33;
}
isFloat1 = ClassFloatCompactIndex == ccIndex1;
- goto l34;
+ goto l33;
isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
- l34: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- l39: /* end is:instanceOf:compactClassIndex: */;
+ l33: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
+ l38: /* end is:instanceOf:compactClassIndex: */;
if (isFloat1) {
;
fetchFloatAtinto(arg + BaseHeaderSize, result1);
arg1 = result1;
- goto l38;
+ goto l37;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
arg1 = 0.0;
- l38: /* end floatValueOf: */;
- l41: /* end loadFloatOrIntFrom: */;
+ l37: /* end floatValueOf: */;
+ l40: /* end loadFloatOrIntFrom: */;
aBool = rcvr1 < arg1;
if (!GIV(primFailCode)) {
/* begin booleanCheat: */
@@ -6869,13 +6818,13 @@
else {
goto booleanCheatFalse;
}
- goto l33;
+ goto l32;
}
GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((2 * 2) << ShiftForWord));
GIV(argumentCount) = 1;
goto normalSend;
}
- l33: /* end case */;
+ l32: /* end case */;
booleanCheatTrue:
/* booleanCheatTrue */
@@ -6899,7 +6848,7 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l312;
+ goto l310;
}
if (bytecode == 172) {
@@ -6909,7 +6858,7 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l312;
+ goto l310;
}
if (bytecode > 167) {
@@ -6920,7 +6869,7 @@
localIP = (localIP + offset) + 1;
currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
- goto l312;
+ goto l310;
}
}
currentBytecode = bytecode + GIV(bytecodeSetSelector);
@@ -6928,7 +6877,7 @@
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), GIV(trueObj));
}
- l312: /* end case */;
+ l310: /* end case */;
break;
case 179:
/* bytecodePrimGreaterThan */
@@ -6960,7 +6909,7 @@
else {
/* goto booleanCheatFalse */
}
- goto l42;
+ goto l41;
}
/* begin initPrimCall */
GIV(primFailCode) = 0;
@@ -6968,77 +6917,77 @@
/* begin loadFloatOrIntFrom: */
if ((rcvr & 1)) {
rcvr1 = ((double) ((rcvr >> 1)) );
- goto l46;
+ goto l45;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((rcvr & 1)) {
isFloat = 0;
- goto l45;
+ goto l44;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!((rcvr & 1)));
ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
if (ccIndex == 0) {
isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
- goto l49;
+ goto l48;
}
isFloat = ClassFloatCompactIndex == ccIndex;
- goto l49;
+ goto l48;
isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
- l49: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- l45: /* end is:instanceOf:compactClassIndex: */;
+ l48: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
+ l44: /* end is:instanceOf:compactClassIndex: */;
if (isFloat) {
;
fetchFloatAtinto(rcvr + BaseHeaderSize, result);
rcvr1 = result;
- goto l44;
+ goto l43;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
rcvr1 = 0.0;
- l44: /* end floatValueOf: */;
- l46: /* end loadFloatOrIntFrom: */;
+ l43: /* end floatValueOf: */;
+ l45: /* end loadFloatOrIntFrom: */;
/* begin loadFloatOrIntFrom: */
if ((arg & 1)) {
arg1 = ((double) ((arg >> 1)) );
- goto l50;
+ goto l49;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((arg & 1)) {
isFloat1 = 0;
- goto l48;
+ goto l47;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!((arg & 1)));
ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
if (ccIndex1 == 0) {
isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
- goto l43;
+ goto l42;
}
isFloat1 = ClassFloatCompactIndex == ccIndex1;
- goto l43;
+ goto l42;
isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
- l43: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- l48: /* end is:instanceOf:compactClassIndex: */;
+ l42: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
+ l47: /* end is:instanceOf:compactClassIndex: */;
if (isFloat1) {
;
fetchFloatAtinto(arg + BaseHeaderSize, result1);
arg1 = result1;
- goto l47;
+ goto l46;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
arg1 = 0.0;
- l47: /* end floatValueOf: */;
- l50: /* end loadFloatOrIntFrom: */;
+ l46: /* end floatValueOf: */;
+ l49: /* end loadFloatOrIntFrom: */;
aBool = rcvr1 > arg1;
if (!GIV(primFailCode)) {
/* begin booleanCheat: */
@@ -7048,13 +6997,13 @@
else {
goto booleanCheatFalse;
}
- goto l42;
+ goto l41;
}
GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((3 * 2) << ShiftForWord));
GIV(argumentCount) = 1;
goto normalSend;
}
- l42: /* end case */;
+ l41: /* end case */;
booleanCheatFalse:
/* booleanCheatFalse */
@@ -7078,7 +7027,7 @@
localIP = (localIP + (bytecode - 151)) + 1;
currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
- goto l313;
+ goto l311;
}
if (bytecode == 172) {
@@ -7089,14 +7038,14 @@
localIP = (localIP + offset) + 1;
currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
- goto l313;
+ goto l311;
}
currentBytecode = bytecode + GIV(bytecodeSetSelector);
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), GIV(falseObj));
}
- l313: /* end case */;
+ l311: /* end case */;
break;
case 180:
/* bytecodePrimLessOrEqual */
@@ -7128,7 +7077,7 @@
else {
goto booleanCheatFalse;
}
- goto l51;
+ goto l50;
}
/* begin initPrimCall */
GIV(primFailCode) = 0;
@@ -7136,77 +7085,77 @@
/* begin loadFloatOrIntFrom: */
if ((rcvr & 1)) {
rcvr1 = ((double) ((rcvr >> 1)) );
- goto l55;
+ goto l54;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((rcvr & 1)) {
isFloat = 0;
- goto l54;
+ goto l53;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!((rcvr & 1)));
ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
if (ccIndex == 0) {
isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
- goto l58;
+ goto l57;
}
isFloat = ClassFloatCompactIndex == ccIndex;
- goto l58;
+ goto l57;
isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
- l58: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- l54: /* end is:instanceOf:compactClassIndex: */;
+ l57: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
+ l53: /* end is:instanceOf:compactClassIndex: */;
if (isFloat) {
;
fetchFloatAtinto(rcvr + BaseHeaderSize, result);
rcvr1 = result;
- goto l53;
+ goto l52;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
rcvr1 = 0.0;
- l53: /* end floatValueOf: */;
- l55: /* end loadFloatOrIntFrom: */;
+ l52: /* end floatValueOf: */;
+ l54: /* end loadFloatOrIntFrom: */;
/* begin loadFloatOrIntFrom: */
if ((arg & 1)) {
arg1 = ((double) ((arg >> 1)) );
- goto l59;
+ goto l58;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((arg & 1)) {
isFloat1 = 0;
- goto l57;
+ goto l56;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!((arg & 1)));
ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
if (ccIndex1 == 0) {
isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
- goto l52;
+ goto l51;
}
isFloat1 = ClassFloatCompactIndex == ccIndex1;
- goto l52;
+ goto l51;
isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
- l52: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- l57: /* end is:instanceOf:compactClassIndex: */;
+ l51: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
+ l56: /* end is:instanceOf:compactClassIndex: */;
if (isFloat1) {
;
fetchFloatAtinto(arg + BaseHeaderSize, result1);
arg1 = result1;
- goto l56;
+ goto l55;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
arg1 = 0.0;
- l56: /* end floatValueOf: */;
- l59: /* end loadFloatOrIntFrom: */;
+ l55: /* end floatValueOf: */;
+ l58: /* end loadFloatOrIntFrom: */;
aBool = rcvr1 <= arg1;
if (!GIV(primFailCode)) {
/* begin booleanCheat: */
@@ -7216,13 +7165,13 @@
else {
goto booleanCheatFalse;
}
- goto l51;
+ goto l50;
}
GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((4 * 2) << ShiftForWord));
GIV(argumentCount) = 1;
goto normalSend;
}
- l51: /* end case */;
+ l50: /* end case */;
break;
case 181:
/* bytecodePrimGreaterOrEqual */
@@ -7254,7 +7203,7 @@
else {
goto booleanCheatFalse;
}
- goto l60;
+ goto l59;
}
/* begin initPrimCall */
GIV(primFailCode) = 0;
@@ -7262,77 +7211,77 @@
/* begin loadFloatOrIntFrom: */
if ((rcvr & 1)) {
rcvr1 = ((double) ((rcvr >> 1)) );
- goto l64;
+ goto l63;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((rcvr & 1)) {
isFloat = 0;
- goto l63;
+ goto l62;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
assert(!((rcvr & 1)));
ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
if (ccIndex == 0) {
isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
- goto l67;
+ goto l66;
}
isFloat = ClassFloatCompactIndex == ccIndex;
- goto l67;
+ goto l66;
isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
- l67: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
- l63: /* end is:instanceOf:compactClassIndex: */;
+ l66: /* end isClassOfNonImm:equalTo:compactClassIndex: */;
+ l62: /* end is:instanceOf:compactClassIndex: */;
if (isFloat) {
;
fetchFloatAtinto(rcvr + BaseHeaderSize, result);
rcvr1 = result;
- goto l62;
+ goto l61;
}
/* begin primitiveFail */
if (!GIV(primFailCode)) {
GIV(primFailCode) = 1;
}
rcvr1 = 0.0;
- l62: /* end floatValueOf: */;
- l64: /* end loadFloatOrIntFrom: */;
+ l61: /* end floatValueOf: */;
+ l63: /* end loadFloatOrIntFrom: */;
/* begin loadFloatOrIntFrom: */
if ((arg & 1)) {
arg1 = ((double) ((arg >> 1)) );
- goto l68;
+ goto l67;
}
/* begin floatValueOf: */
/* begin is:instanceOf:compactClassIndex: */
if ((arg & 1)) {
isFloat1 = 0;
- goto l66;
+ goto l65;
}
/* begin isClassOfNonImm:equalTo:compactClassIndex: */
@@ Diff output truncated at 50000 characters. @@
More information about the Vm-dev
mailing list