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. @@ |
Free forum by Nabble | Edit this page |