[Vm-dev] [commit][3060] CogVM source as per VMMaker.oscog-eem.844

commits at squeakvm.org commits at squeakvm.org
Thu Aug 7 00:37:36 UTC 2014


Revision: 3060
Author:   eliot
Date:     2014-08-06 17:37:34 -0700 (Wed, 06 Aug 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.844

Fix bad bug in interpreter to machine code frame conversion on backward branch.
Old code would decrement branch even if backward branch checked for events and
did a process switch, potentially converting frames at arbitrary unmappable pcs,
not just backward branches.  Neaten and comment the code.  Neaten and update the
pc mapping tests for multiple bytecode sets and for sets with extensions.
Change default count to 40 from 10 to reduce number of startup methods jitted.

Nuke obsolete PRIM_TABLE code form the sqGnu.h's.

Spur:
Eliminate expensive asserts in Spur allObjects/alInstances unnecessary in
MarkObjectsForEnumerationPrimitives false regime.

Sista:
Implement genExtTrapIfNotInstanceOfBehaviorsBytecode for SqueakV3.
And fix it and the interpreter's version to pop the value from the stack.

Modified Paths:
--------------
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/nscogsrc/vm/interp.h
    branches/Cog/nscogsrc/vm/vmCallback.h
    branches/Cog/nsspursrc/vm/cogit.c
    branches/Cog/nsspursrc/vm/cogit.h
    branches/Cog/nsspursrc/vm/cogmethod.h
    branches/Cog/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/vm/interp.h
    branches/Cog/nsspursrc/vm/vmCallback.h
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/nsspurstacksrc/vm/interp.h
    branches/Cog/nsspurstacksrc/vm/vmCallback.h
    branches/Cog/platforms/Mac OS/vm/Developer/sqGnu.h
    branches/Cog/platforms/unix/vm/sqGnu.h
    branches/Cog/platforms/win32/vm/sqGnu.h
    branches/Cog/sistasrc/vm/cogit.c
    branches/Cog/sistasrc/vm/cogit.h
    branches/Cog/sistasrc/vm/cogmethod.h
    branches/Cog/sistasrc/vm/cointerp.c
    branches/Cog/sistasrc/vm/cointerp.h
    branches/Cog/sistasrc/vm/gcc3x-cointerp.c
    branches/Cog/sistasrc/vm/interp.h
    branches/Cog/sistasrc/vm/vmCallback.h
    branches/Cog/spursistasrc/vm/cogit.c
    branches/Cog/spursistasrc/vm/cogit.h
    branches/Cog/spursistasrc/vm/cogmethod.h
    branches/Cog/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursistasrc/vm/interp.h
    branches/Cog/spursistasrc/vm/vmCallback.h
    branches/Cog/spursrc/vm/cogmethod.h
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/interp.h
    branches/Cog/spursrc/vm/vmCallback.h
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/spurstacksrc/vm/interp.h
    branches/Cog/spurstacksrc/vm/vmCallback.h
    branches/Cog/src/vm/cogmethod.h
    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/src/vm/interp.h
    branches/Cog/src/vm/vmCallback.h
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c
    branches/Cog/stacksrc/vm/interp.h
    branches/Cog/stacksrc/vm/vmCallback.h

Property Changed:
----------------
    branches/Cog/platforms/Cross/vm/sqSCCSVersion.h

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2014-08-05 17:16:14 UTC (rev 3059)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-08-07 00:37:34 UTC (rev 3060)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.843 uuid: 5b054eac-e59e-46bd-a440-cc5ce9f9622b
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.844 uuid: 4ea8ab78-c8f6-4cf2-a165-23eb85dd66aa
    from
-	CoInterpreter VMMaker.oscog-eem.843 uuid: 5b054eac-e59e-46bd-a440-cc5ce9f9622b
+	CoInterpreter VMMaker.oscog-eem.844 uuid: 4ea8ab78-c8f6-4cf2-a165-23eb85dd66aa
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.843 uuid: 5b054eac-e59e-46bd-a440-cc5ce9f9622b " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.844 uuid: 4ea8ab78-c8f6-4cf2-a165-23eb85dd66aa " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -265,7 +265,7 @@
 #define MFMethodMask -0x8
 #define MFrameSlots 5
 #define MillisecondClockMask 0x1FFFFFFF
-#define MinBackwardJumpCountForCompile 10
+#define MinBackwardJumpCountForCompile 40
 #define MixinIndex 3
 #define MULTIPLEBYTECODESETS 1
 #define MyListIndex 3
@@ -2083,8 +2083,8 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.843";
-sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.844";
+sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
 
@@ -4381,7 +4381,7 @@
 						? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0
 						: (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) {
 					goto commonCallerReturn;
-					goto l295;
+					goto l297;
 				}
 				closure = longAt(localFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory())
 	? ((mframeCogMethod(localFP))->cmNumArgs)
@@ -4418,11 +4418,11 @@
 					theMethod = longAt((home + BaseHeaderSize) + (MethodIndex << ShiftForWord));
 					if ((primitiveIndexOfMethodheader(theMethod, headerOf(theMethod))) == 198) {
 						unwindContextOrNilOrZero = home;
-						goto l297;
+						goto l299;
 					}
 				}
 				unwindContextOrNilOrZero = ctxtOrNilOrZero;
-			l297:	/* end internalFindUnwindThroughContext: */;
+			l299:	/* end internalFindUnwindThroughContext: */;
 				if (unwindContextOrNilOrZero == GIV(nilObj)) {
 
 					/* error: can't find home on chain; cannot return */
@@ -4436,10 +4436,10 @@
 						: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 						assert(isContext(frameContext(localFP)));
 						ourContext = longAt(localFP + FoxThisContext);
-						goto l299;
+						goto l301;
 					}
 					ourContext = marryFrameSP(localFP, localSP);
-				l299:	/* end ensureFrameIsMarried:SP: */;
+				l301:	/* end ensureFrameIsMarried:SP: */;
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), ourContext);
 					/* begin internalPush: */
@@ -4448,7 +4448,7 @@
 					GIV(argumentCount) = 1;
 					goto normalSend;
 					/* return self */
-					goto l295;
+					goto l297;
 				}
 				if (unwindContextOrNilOrZero != 0) {
 					/* begin internalAboutToReturn:through: */
@@ -4460,10 +4460,10 @@
 						: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 						assert(isContext(frameContext(localFP)));
 						ourContext1 = longAt(localFP + FoxThisContext);
-						goto l296;
+						goto l298;
 					}
 					ourContext1 = marryFrameSP(localFP, localSP);
-				l296:	/* end ensureFrameIsMarried:SP: */;
+				l298:	/* end ensureFrameIsMarried:SP: */;
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), ourContext1);
 					/* begin internalPush: */
@@ -4474,7 +4474,7 @@
 					GIV(argumentCount) = 2;
 					goto normalSend;
 					/* return self */
-					goto l295;
+					goto l297;
 				}
 				contextToReturnTo = null;
 				if (((longAt((home + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1)) {
@@ -4533,10 +4533,10 @@
 							: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 							assert(isContext(frameContext(localFP)));
 							ourContext2 = longAt(localFP + FoxThisContext);
-							goto l298;
+							goto l300;
 						}
 						ourContext2 = marryFrameSP(localFP, localSP);
-					l298:	/* end ensureFrameIsMarried:SP: */;
+					l300:	/* end ensureFrameIsMarried:SP: */;
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), ourContext2);
 						/* begin internalPush: */
@@ -4545,7 +4545,7 @@
 						GIV(argumentCount) = 1;
 						goto normalSend;
 						/* return self */
-						goto l295;
+						goto l297;
 					}
 				}
 				assert(pageListIsWellFormed());
@@ -4656,7 +4656,7 @@
 						GIV(framePointer) = localFP;
 						
 						ceEnterCogCodePopReceiverReg();
-						goto l295;
+						goto l297;
 					}
 					localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
 				}
@@ -4674,7 +4674,7 @@
 
 				/* return self */
 			}
-		l295:	/* end case */;
+		l297:	/* end case */;
 			break;
 		case 121:
 			/* returnTrue */
@@ -4794,27 +4794,27 @@
 							fp = (thePage->headFP);
 							if (fp == theFP) {
 								frameAbove = 0;
-								goto l302;
+								goto l304;
 							}
 							while (((callerFP = frameCallerFP(fp))) != 0) {
 								if (callerFP == theFP) {
 									frameAbove = fp;
-									goto l302;
+									goto l304;
 								}
 								fp = callerFP;
 							}
 							error("did not find theFP in stack page");
 							frameAbove = 0;
-						l302:	/* end findFrameAbove:inPage: */;
+						l304:	/* end findFrameAbove:inPage: */;
 							/* begin newStackPage */
 							lruOrFree = ((mostRecentlyUsedPage())->nextPage);
 							if (isFree(lruOrFree)) {
 								newPage = lruOrFree;
-								goto l303;
+								goto l305;
 							}
 							divorceFramesIn(lruOrFree);
 							newPage = lruOrFree;
-						l303:	/* end newStackPage */;
+						l305:	/* end newStackPage */;
 							assert(newPage == GIV(stackPage));
 							moveFramesInthroughtoPage(thePage, frameAbove, newPage);
 							markStackPageMostRecentlyUsed(newPage);
@@ -4838,7 +4838,7 @@
 							longAtput((sp2 = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
 							GIV(stackPointer) = sp2;
 							ceSendAborttonumArgs(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SelectorCannotReturn << ShiftForWord)), contextToReturnFrom, 1);
-							goto l301;
+							goto l303;
 						}
 						GIV(instructionPointer) = 0;
 						thePage = makeBaseFrameFor(contextToReturnTo);
@@ -4877,7 +4877,7 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
-							goto l301;
+							goto l303;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
 					}
@@ -4895,8 +4895,8 @@
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
 					/* return self */
-				l301:	/* end baseFrameReturn */;
-					goto l300;
+				l303:	/* end baseFrameReturn */;
+					goto l302;
 				}
 				/* begin frameCallerSavedIP: */
 				localIP = pointerForOop(longAt(localFP + FoxCallerSavedIP));
@@ -4925,7 +4925,7 @@
 						GIV(framePointer) = localFP;
 						
 						ceEnterCogCodePopReceiverReg();
-						goto l300;
+						goto l302;
 					}
 					localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
 				}
@@ -4942,7 +4942,7 @@
 
 				longAtPointerput(localSP, localReturnValue);
 			}
-		l300:	/* end case */;
+		l302:	/* end case */;
 			break;
 		case 126:
 			/* dynamicSuperSendBytecode */
@@ -5234,7 +5234,7 @@
 						GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
 						primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
 						ok = 1;
-						goto l307;
+						goto l309;
 					}
 
 					/* second probe */
@@ -5245,7 +5245,7 @@
 						GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
 						primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
 						ok = 1;
-						goto l307;
+						goto l309;
 					}
 					probe = (((usqInt) hash) >> 2) & MethodCacheMask;
 					if (((GIV(methodCache)[probe + MethodCacheSelector]) == GIV(messageSelector))
@@ -5253,10 +5253,10 @@
 						GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
 						primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
 						ok = 1;
-						goto l307;
+						goto l309;
 					}
 					ok = 0;
-				l307:	/* end inlineLookupInMethodCacheSel:classTag: */;
+				l309:	/* end inlineLookupInMethodCacheSel:classTag: */;
 					if (ok) {
 						/* begin ifAppropriateCompileToNativeCode:selector: */
 						VM_LABEL(0ifAppropriateCompileToNativeCodeselector);
@@ -5297,7 +5297,7 @@
 						localFP = pointerForOop(GIV(framePointer));
 						addNewMethodToCache(GIV(lkupClass));
 					}
-				l304:	/* end internalFindNewMethod */;
+				l306:	/* end internalFindNewMethod */;
 					/* begin internalExecuteNewMethod */
 					VM_LABEL(0internalExecuteNewMethod);
 					if (primitiveFunctionPointer != 0) {
@@ -5311,31 +5311,31 @@
 							if (localPrimIndex >= 264) {
 								longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + ((localPrimIndex - 264) << ShiftForWord)));
 								1;
-								goto l308;
+								goto l310;
 							}
 							if (localPrimIndex == 256) {
 								1;
-								goto l308;
+								goto l310;
 							}
 							if (localPrimIndex == 257) {
 								longAtPointerput(localSP, GIV(trueObj));
 								1;
-								goto l308;
+								goto l310;
 							}
 							if (localPrimIndex == 258) {
 								longAtPointerput(localSP, GIV(falseObj));
 								1;
-								goto l308;
+								goto l310;
 							}
 							if (localPrimIndex == 259) {
 								longAtPointerput(localSP, GIV(nilObj));
 								1;
-								goto l308;
+								goto l310;
 							}
 							longAtPointerput(localSP, (((localPrimIndex - 261) << 1) | 1));
 							1;
-						l308:	/* end internalQuickPrimitiveResponse */;
-							goto l306;
+						l310:	/* end internalQuickPrimitiveResponse */;
+							goto l308;
 						}
 						/* begin externalizeIPandSP */
 						assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -5393,7 +5393,7 @@
 							returntoExecutive(popStack(), 1);
 							browserPluginReturnIfNeeded();
 							null;
-							goto l306;
+							goto l308;
 						}
 					}
 					if (methodHasCogMethod(GIV(newMethod))) {
@@ -5476,11 +5476,11 @@
 										table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << ShiftForWord));
 										if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
 											errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << ShiftForWord));
-											goto l305;
+											goto l307;
 										}
 									}
 									errorCode = ((GIV(primFailCode) << 1) | 1);
-								l305:	/* end getErrorObjectFromPrimFailCode */;
+								l307:	/* end getErrorObjectFromPrimFailCode */;
 									longAtPointerput(localSP, errorCode);
 								}
 								GIV(primFailCode) = 0;
@@ -5504,7 +5504,7 @@
 							localFP = pointerForOop(GIV(framePointer));
 						}
 					}
-				l306:	/* end internalExecuteNewMethod */;
+				l308:	/* end internalExecuteNewMethod */;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -6352,54 +6352,55 @@
 				localIP += offset;
 				/* begin ifBackwardsCheckForEvents: */
 				VM_LABEL(0ifBackwardsCheckForEvents);
-				if (offset < 0) {
-					if (localSP < GIV(stackLimit)) {
+				if (offset >= 0) {
+					goto l12;
+				}
+				if (localSP < GIV(stackLimit)) {
+					/* begin externalizeIPandSP */
+					assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
+					GIV(instructionPointer) = oopForPointer(localIP);
+					GIV(stackPointer) = localSP;
+					GIV(framePointer) = localFP;
+					switched = checkForEventsMayContextSwitch(1);
+					returnToExecutivepostContextSwitch(1, switched);
+					browserPluginReturnIfNeeded();
+					/* begin internalizeIPandSP */
+					assert(GIV(instructionPointer) != (ceReturnToInterpreterPC()));
+					localIP = pointerForOop(GIV(instructionPointer));
+					localSP = pointerForOop(GIV(stackPointer));
+					localFP = pointerForOop(GIV(framePointer));
+					if (switched) {
+						goto l12;
+					}
+				}
+				backwardJumpCountByte = byteAt(localFP + ((VMBIGENDIAN
+	? (FoxIFrameFlags + BytesPerWord) - 1
+	: FoxIFrameFlags)));
+				if (((backwardJumpCountByte -= 2)) == 1) {
+					if (methodWithHeaderShouldBeCogged(headerOf(GIV(method)))) {
 						/* begin externalizeIPandSP */
 						assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
 						GIV(instructionPointer) = oopForPointer(localIP);
 						GIV(stackPointer) = localSP;
 						GIV(framePointer) = localFP;
-						switched = checkForEventsMayContextSwitch(1);
-						returnToExecutivepostContextSwitch(1, switched);
-						browserPluginReturnIfNeeded();
-						/* begin internalizeIPandSP */
-						assert(GIV(instructionPointer) != (ceReturnToInterpreterPC()));
-						localIP = pointerForOop(GIV(instructionPointer));
-						localSP = pointerForOop(GIV(stackPointer));
-						localFP = pointerForOop(GIV(framePointer));
+						attemptToSwitchToMachineCode(((((oopForPointer(localIP)) - offset) - GIV(method)) - BaseHeaderSize) - 1);
 					}
-					backwardJumpCountByte = byteAt(localFP + ((VMBIGENDIAN
-	? (FoxIFrameFlags + BytesPerWord) - 1
-	: FoxIFrameFlags)));
-					if (((backwardJumpCountByte -= 2)) <= 1) {
-						if (backwardJumpCountByte == -1) {
+					backwardJumpCountByte = 0x7F;
+				}
+				else {
+					if (backwardJumpCountByte == -1) {
 
-							/* initialize the count */
+						/* initialize the count */
 
-							assert(minBackwardJumpCountForCompile <= 128);
-							backwardJumpCountByte = ((minBackwardJumpCountForCompile - 1) << 1) + 1;
-						}
-						else {
-							if (methodWithHeaderShouldBeCogged(headerOf(GIV(method)))) {
-								/* begin externalizeFPandSP */
-								assert((localSP < ((GIV(stackPage)->baseAddress)))
-								 && (localSP > (((GIV(stackPage)->realStackLimit)) - LargeContextSize)));
-								GIV(stackPointer) = localSP;
-								GIV(framePointer) = localFP;
-								attemptToSwitchToMachineCode(((((oopForPointer(localIP)) - offset) - GIV(method)) - BaseHeaderSize) - 1);
-							}
-							else {
-
-								/* avoid asking for as long as possible */
-
-								backwardJumpCountByte = 0xFF;
-							}
-						}
+						assert(minBackwardJumpCountForCompile <= 128);
+						backwardJumpCountByte = ((minBackwardJumpCountForCompile - 1) << 1) + 1;
 					}
-					byteAtput(localFP + ((VMBIGENDIAN
+				}
+				/* begin iframeBackwardBranchByte:put: */
+				byteAtput(localFP + ((VMBIGENDIAN
 	? (FoxIFrameFlags + BytesPerWord) - 1
 	: FoxIFrameFlags)), backwardJumpCountByte);
-				}
+			l12:	/* end ifBackwardsCheckForEvents: */;
 				/* begin fetchNextBytecode */
 				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -6431,7 +6432,7 @@
 						GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SelectorMustBeBoolean << ShiftForWord));
 						GIV(argumentCount) = 0;
 						goto normalSend;
-						goto l12;
+						goto l13;
 					}
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -6439,7 +6440,7 @@
 				}
 				/* begin internalPop: */
 				localSP += 1 * BytesPerOop;
-			l12:	/* end jumplfTrueBy: */;
+			l13:	/* end jumplfTrueBy: */;
 			}
 			break;
 		case 172:
@@ -6468,7 +6469,7 @@
 						GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SelectorMustBeBoolean << ShiftForWord));
 						GIV(argumentCount) = 0;
 						goto normalSend;
-						goto l13;
+						goto l14;
 					}
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -6476,7 +6477,7 @@
 				}
 				/* begin internalPop: */
 				localSP += 1 * BytesPerOop;
-			l13:	/* end jumplfFalseBy: */;
+			l14:	/* end jumplfFalseBy: */;
 			}
 			break;
 		case 176:
@@ -6506,7 +6507,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l14;
+						goto l15;
 					}
 				}
 				else {
@@ -6521,77 +6522,77 @@
 					/* begin loadFloatOrIntFrom: */
 					if ((rcvr & 1)) {
 						rcvr1 = ((double) ((rcvr >> 1)) );
-						goto l18;
+						goto l19;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
 					if ((rcvr & 1)) {
 						isFloat = 0;
-						goto l17;
+						goto l18;
 					}
 					/* 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 l21;
+						goto l22;
 					}
 					isFloat = ClassFloatCompactIndex == ccIndex;
-					goto l21;
+					goto l22;
 
 					isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-				l21:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-				l17:	/* end is:instanceOf:compactClassIndex: */;
+				l22:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l18:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat) {
 						;
 						fetchFloatAtinto(rcvr + (BaseHeaderSize), result1);
 						rcvr1 = result1;
-						goto l16;
+						goto l17;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					rcvr1 = 0.0;
-				l16:	/* end floatValueOf: */;
-				l18:	/* end loadFloatOrIntFrom: */;
+				l17:	/* end floatValueOf: */;
+				l19:	/* end loadFloatOrIntFrom: */;
 					/* begin loadFloatOrIntFrom: */
 					if ((arg & 1)) {
 						arg1 = ((double) ((arg >> 1)) );
-						goto l22;
+						goto l23;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
 					if ((arg & 1)) {
 						isFloat1 = 0;
-						goto l20;
+						goto l21;
 					}
 					/* 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 l15;
+						goto l16;
 					}
 					isFloat1 = ClassFloatCompactIndex == ccIndex1;
-					goto l15;
+					goto l16;
 
 					isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-				l15:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-				l20:	/* end is:instanceOf:compactClassIndex: */;
+				l16:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l21:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat1) {
 						;
 						fetchFloatAtinto(arg + (BaseHeaderSize), result2);
 						arg1 = result2;
-						goto l19;
+						goto l20;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					arg1 = 0.0;
-				l19:	/* end floatValueOf: */;
-				l22:	/* end loadFloatOrIntFrom: */;
+				l20:	/* end floatValueOf: */;
+				l23:	/* end loadFloatOrIntFrom: */;
 					if (!GIV(primFailCode)) {
 						/* begin pop:thenPushFloat: */
 						longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 + arg1));
@@ -6606,14 +6607,14 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l14;
+						goto l15;
 					}
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((0 * 2) << ShiftForWord));
 				GIV(argumentCount) = 1;
 				goto normalSend;
 			}
-		l14:	/* end case */;
+		l15:	/* end case */;
 			break;
 		case 177:
 			/* bytecodePrimSubtract */
@@ -6642,7 +6643,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l23;
+						goto l24;
 					}
 				}
 				else {
@@ -6657,77 +6658,77 @@
 					/* begin loadFloatOrIntFrom: */
 					if ((rcvr & 1)) {
 						rcvr1 = ((double) ((rcvr >> 1)) );
-						goto l27;
+						goto l28;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
 					if ((rcvr & 1)) {
 						isFloat = 0;
-						goto l26;
+						goto l27;
 					}
 					/* 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 l30;
+						goto l31;
 					}
 					isFloat = ClassFloatCompactIndex == ccIndex;
-					goto l30;
+					goto l31;
 
 					isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-				l30:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-				l26:	/* end is:instanceOf:compactClassIndex: */;
+				l31:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l27:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat) {
 						;
 						fetchFloatAtinto(rcvr + (BaseHeaderSize), result1);
 						rcvr1 = result1;
-						goto l25;
+						goto l26;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					rcvr1 = 0.0;
-				l25:	/* end floatValueOf: */;
-				l27:	/* end loadFloatOrIntFrom: */;
+				l26:	/* end floatValueOf: */;
+				l28:	/* end loadFloatOrIntFrom: */;
 					/* begin loadFloatOrIntFrom: */
 					if ((arg & 1)) {
 						arg1 = ((double) ((arg >> 1)) );
-						goto l31;
+						goto l32;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
 					if ((arg & 1)) {
 						isFloat1 = 0;
-						goto l29;
+						goto l30;
 					}
 					/* 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 l24;
+						goto l25;
 					}
 					isFloat1 = ClassFloatCompactIndex == ccIndex1;
-					goto l24;
+					goto l25;
 
 					isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-				l24:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-				l29:	/* end is:instanceOf:compactClassIndex: */;
+				l25:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l30:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat1) {
 						;
 						fetchFloatAtinto(arg + (BaseHeaderSize), result2);
 						arg1 = result2;
-						goto l28;
+						goto l29;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					arg1 = 0.0;
-				l28:	/* end floatValueOf: */;
-				l31:	/* end loadFloatOrIntFrom: */;
+				l29:	/* end floatValueOf: */;
+				l32:	/* end loadFloatOrIntFrom: */;
 					if (!GIV(primFailCode)) {
 						/* begin pop:thenPushFloat: */
 						longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 - arg1));
@@ -6742,14 +6743,14 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l23;
+						goto l24;
 					}
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((1 * 2) << ShiftForWord));
 				GIV(argumentCount) = 1;
 				goto normalSend;
 			}
-		l23:	/* end case */;
+		l24:	/* end case */;
 			break;
 		case 178:
 			/* bytecodePrimLessThan */
@@ -6781,7 +6782,7 @@
 					else {
 						goto booleanCheatFalse;
 					}
-					goto l32;
+					goto l33;
 				}
 				/* begin initPrimCall */
 				GIV(primFailCode) = 0;
@@ -6789,77 +6790,77 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l36;
+					goto l37;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((rcvr & 1)) {
 					isFloat = 0;
-					goto l35;
+					goto l36;
 				}
 				/* 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 l39;
+					goto l40;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l39;
+				goto l40;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l39:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l35:	/* end is:instanceOf:compactClassIndex: */;
+			l40:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l36:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l34;
+					goto l35;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l34:	/* end floatValueOf: */;
-			l36:	/* end loadFloatOrIntFrom: */;
+			l35:	/* end floatValueOf: */;
+			l37:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l40;
+					goto l41;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((arg & 1)) {
 					isFloat1 = 0;
-					goto l38;
+					goto l39;
 				}
 				/* 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 l33;
+					goto l34;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l33;
+				goto l34;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l33:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l38:	/* end is:instanceOf:compactClassIndex: */;
+			l34:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l39:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l37;
+					goto l38;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l37:	/* end floatValueOf: */;
-			l40:	/* end loadFloatOrIntFrom: */;
+			l38:	/* end floatValueOf: */;
+			l41:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 < arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheat: */
@@ -6869,13 +6870,13 @@
 					else {
 						goto booleanCheatFalse;
 					}
-					goto l32;
+					goto l33;
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((2 * 2) << ShiftForWord));
 				GIV(argumentCount) = 1;
 				goto normalSend;
 			}
-		l32:	/* end case */;
+		l33:	/* end case */;
 			
 		booleanCheatTrue:
 			/* booleanCheatTrue */
@@ -6899,7 +6900,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l309;
+						goto l311;
 					}
 					if (bytecode == 172) {
 
@@ -6909,7 +6910,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l309;
+						goto l311;
 					}
 					if (bytecode > 167) {
 
@@ -6920,7 +6921,7 @@
 						localIP = (localIP + offset) + 1;
 						currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-						goto l309;
+						goto l311;
 					}
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
@@ -6928,7 +6929,7 @@
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(trueObj));
 			}
-		l309:	/* end case */;
+		l311:	/* end case */;
 			break;
 		case 179:
 			/* bytecodePrimGreaterThan */
@@ -6960,7 +6961,7 @@
 					else {
 						/* goto booleanCheatFalse */
 					}
-					goto l41;
+					goto l42;
 				}
 				/* begin initPrimCall */
 				GIV(primFailCode) = 0;
@@ -6968,77 +6969,77 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l45;
+					goto l46;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((rcvr & 1)) {
 					isFloat = 0;
-					goto l44;
+					goto l45;
 				}
 				/* 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 l48;
+					goto l49;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l48;
+				goto l49;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l48:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l44:	/* end is:instanceOf:compactClassIndex: */;
+			l49:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l45:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l43;
+					goto l44;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l43:	/* end floatValueOf: */;
-			l45:	/* end loadFloatOrIntFrom: */;
+			l44:	/* end floatValueOf: */;
+			l46:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l49;
+					goto l50;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((arg & 1)) {
 					isFloat1 = 0;
-					goto l47;
+					goto l48;
 				}
 				/* 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 l42;
+					goto l43;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l42;
+				goto l43;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l42:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l47:	/* end is:instanceOf:compactClassIndex: */;
+			l43:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l48:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l46;
+					goto l47;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l46:	/* end floatValueOf: */;
-			l49:	/* end loadFloatOrIntFrom: */;
+			l47:	/* end floatValueOf: */;
+			l50:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 > arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheat: */
@@ -7048,13 +7049,13 @@
 					else {
 						goto booleanCheatFalse;
 					}
-					goto l41;
+					goto l42;
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((3 * 2) << ShiftForWord));
 				GIV(argumentCount) = 1;
 				goto normalSend;
 			}
-		l41:	/* end case */;
+		l42:	/* end case */;
 			
 		booleanCheatFalse:
 			/* booleanCheatFalse */
@@ -7078,7 +7079,7 @@
 					localIP = (localIP + (bytecode - 151)) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l310;
+					goto l312;
 				}
 				if (bytecode == 172) {
 
@@ -7089,14 +7090,14 @@
 					localIP = (localIP + offset) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l310;
+					goto l312;
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
 
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(falseObj));
 			}
-		l310:	/* end case */;
+		l312:	/* end case */;
 			break;
 		case 180:
 			/* bytecodePrimLessOrEqual */
@@ -7128,7 +7129,7 @@
 					else {
 						goto booleanCheatFalse;
 					}
-					goto l50;
+					goto l51;
 				}
 				/* begin initPrimCall */
 				GIV(primFailCode) = 0;
@@ -7136,77 +7137,77 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l54;
+					goto l55;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((rcvr & 1)) {
 					isFloat = 0;
-					goto l53;
+					goto l54;
 				}
 				/* 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 l57;
+					goto l58;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l57;
+				goto l58;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l57:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l53:	/* end is:instanceOf:compactClassIndex: */;
+			l58:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l54:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l52;
+					goto l53;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l52:	/* end floatValueOf: */;
-			l54:	/* end loadFloatOrIntFrom: */;
+			l53:	/* end floatValueOf: */;
+			l55:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l58;
+					goto l59;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((arg & 1)) {
 					isFloat1 = 0;
-					goto l56;
+					goto l57;
 				}
 				/* 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 l51;
+					goto l52;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l51;
+				goto l52;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l51:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l56:	/* end is:instanceOf:compactClassIndex: */;
+			l52:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l57:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l55;
+					goto l56;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l55:	/* end floatValueOf: */;
-			l58:	/* end loadFloatOrIntFrom: */;
+			l56:	/* end floatValueOf: */;
+			l59:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 <= arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheat: */
@@ -7216,13 +7217,13 @@
 					else {
 						goto booleanCheatFalse;
 					}
-					goto l50;
+					goto l51;
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((4 * 2) << ShiftForWord));
 				GIV(argumentCount) = 1;
 				goto normalSend;
 			}
-		l50:	/* end case */;
+		l51:	/* end case */;
 			break;
 		case 181:
 			/* bytecodePrimGreaterOrEqual */
@@ -7254,7 +7255,7 @@
 					else {
 						goto booleanCheatFalse;
 					}
-					goto l59;
+					goto l60;
 				}
 				/* begin initPrimCall */
 				GIV(primFailCode) = 0;
@@ -7262,77 +7263,77 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l63;
+					goto l64;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((rcvr & 1)) {
 					isFloat = 0;
-					goto l62;
+					goto l63;
 				}
 				/* 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 l66;
+					goto l67;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l66;
+				goto l67;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l66:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l62:	/* end is:instanceOf:compactClassIndex: */;
+			l67:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l63:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l61;
+					goto l62;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l61:	/* end floatValueOf: */;
-			l63:	/* end loadFloatOrIntFrom: */;
+			l62:	/* end floatValueOf: */;
+			l64:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l67;
+					goto l68;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((arg & 1)) {
 					isFloat1 = 0;
-					goto l65;
+					goto l66;
 				}
 				/* 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 l60;
+					goto l61;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l60;
+				goto l61;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l60:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l65:	/* end is:instanceOf:compactClassIndex: */;
+			l61:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l66:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l64;
+					goto l65;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l64:	/* end floatValueOf: */;
-			l67:	/* end loadFloatOrIntFrom: */;
+			l65:	/* end floatValueOf: */;
+			l68:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 >= arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheat: */
@@ -7342,13 +7343,13 @@
 					else {
 						goto booleanCheatFalse;
 					}
-					goto l59;
+					goto l60;
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((5 * 2) << ShiftForWord));
 				GIV(argumentCount) = 1;
 				goto normalSend;
 			}
-		l59:	/* end case */;
+		l60:	/* end case */;
 			break;
 		case 182:
 			/* bytecodePrimEqual */
@@ -7376,7 +7377,7 @@
 					else {
 						goto booleanCheatFalse;
 					}
-					goto l68;
+					goto l69;
 				}
 				/* begin initPrimCall */
 				GIV(primFailCode) = 0;
@@ -7384,77 +7385,77 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l72;
+					goto l73;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((rcvr & 1)) {
 					isFloat = 0;
-					goto l71;
+					goto l72;
 				}
 				/* 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 l75;
+					goto l76;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l75;
+				goto l76;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l75:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l71:	/* end is:instanceOf:compactClassIndex: */;
+			l76:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l72:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l70;
+					goto l71;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l70:	/* end floatValueOf: */;
-			l72:	/* end loadFloatOrIntFrom: */;
+			l71:	/* end floatValueOf: */;
+			l73:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l76;
+					goto l77;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((arg & 1)) {
 					isFloat1 = 0;
-					goto l74;
+					goto l75;
 				}
 				/* 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 l69;
+					goto l70;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l69;
+				goto l70;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l69:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l74:	/* end is:instanceOf:compactClassIndex: */;
+			l70:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l75:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l73;
+					goto l74;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l73:	/* end floatValueOf: */;
-			l76:	/* end loadFloatOrIntFrom: */;
+			l74:	/* end floatValueOf: */;
+			l77:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 == arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheat: */
@@ -7464,13 +7465,13 @@
 					else {
 						goto booleanCheatFalse;
 					}
-					goto l68;
+					goto l69;
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((6 * 2) << ShiftForWord));
 				GIV(argumentCount) = 1;
 				goto normalSend;
 			}
-		l68:	/* end case */;
+		l69:	/* end case */;
 			break;
 		case 183:
 			/* bytecodePrimNotEqual */
@@ -7498,7 +7499,7 @@
 					else {
 						goto booleanCheatFalse;
 					}
-					goto l77;
+					goto l78;
 				}
 				/* begin initPrimCall */
 				GIV(primFailCode) = 0;
@@ -7506,77 +7507,77 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l81;
+					goto l82;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((rcvr & 1)) {
 					isFloat = 0;
-					goto l80;
+					goto l81;
 				}
 				/* 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 l84;
+					goto l85;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l84;
+				goto l85;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l84:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l80:	/* end is:instanceOf:compactClassIndex: */;
+			l85:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l81:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l79;
+					goto l80;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l79:	/* end floatValueOf: */;
-			l81:	/* end loadFloatOrIntFrom: */;
+			l80:	/* end floatValueOf: */;
+			l82:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l85;
+					goto l86;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((arg & 1)) {
 					isFloat1 = 0;
-					goto l83;
+					goto l84;
 				}
 				/* 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 l78;
+					goto l79;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l78;
+				goto l79;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l78:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l83:	/* end is:instanceOf:compactClassIndex: */;
+			l79:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l84:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l82;
+					goto l83;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l82:	/* end floatValueOf: */;
-			l85:	/* end loadFloatOrIntFrom: */;
+			l83:	/* end floatValueOf: */;
+			l86:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 == arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheat: */
@@ -7586,13 +7587,13 @@
 					else {
 						goto booleanCheatFalse;
 					}
-					goto l77;
+					goto l78;
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((7 * 2) << ShiftForWord));
 				GIV(argumentCount) = 1;
 				goto normalSend;
 			}
-		l77:	/* end case */;
+		l78:	/* end case */;
 			break;
 		case 184:
 			/* bytecodePrimMultiply */
@@ -7625,7 +7626,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l86;
+						goto l87;
 					}
 				}
 				else {
@@ -7640,77 +7641,77 @@
 					/* begin loadFloatOrIntFrom: */
 					if ((rcvr & 1)) {
 						rcvr1 = ((double) ((rcvr >> 1)) );
-						goto l90;
+						goto l91;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
 					if ((rcvr & 1)) {
 						isFloat = 0;
-						goto l89;
+						goto l90;
 					}
 					/* begin isClassOfNonImm:equalTo:compactClassIndex: */

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list