[Vm-dev] [commit][3051] CogVM source as per VMMaker.oscog-eem.830

commits at squeakvm.org commits at squeakvm.org
Tue Jul 22 16:38:58 UTC 2014


Revision: 3051
Author:   eliot
Date:     2014-07-22 09:38:54 -0700 (Tue, 22 Jul 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.830

In the wake of the inlining change below, split lookupInMethodCacheSel:classTag:
into it and inlineLookupInMethodCacheSel:classTag:, and use the inline version
in internalFindNewMethod.

Add vmParameter 52 to answer the capacity of the root table
(in Spur a.k.a. the rememberedSet).

Delete all the explicit initializing to nil in primitiveVMParameter
since the array is instantiated normally (filled with nil).

Spur:
Add vm parameter 53 to answer the number of segments.

Move the rememberedSet into a pinned object in oldSpace.  Allow it to grow
on demand, starting at 1k entries, doubling on each grow.  Make sure to abort
if the attempt to grow the remembered set fails.  Try to grow by another 1k
slots if doubling fails, then abort.

Revise markAndTrace: given that markAndShouldScan: is inlined within it (see
Slang changes below).  Move the ephemeron processing into markAndShouldScan:
out of the now unused numStringSlotsOf:ephemeronInactiveIf: circumlocution.
Add activeAndDeferredScan: and numStrongSlotsOfInephemeral: in place of the
double negative inactiveOrFailedToDeferScan: and hence inline
numStrongSlotsOfInephemeral:.  Increase the traceImmediatelySlotLimit.  These
changes plus the 2 repeats for compaction speed up global GC by at least x2.

Change the defaultEdenBytes to 4Mb.

Allow the number of compaction passes to vary, 2 on GC, 3 on GC for snapshot.

Slang:
Add support for inlining into the condition of ifTrue:/ifFalse:
when it is marked as inline. Transform
	expr1 ifTrue:/ifFalse: [^expr2]
by inlining ^expr2 into expr1.  Transform
	expr ifTrue:/ifFalse: [statements]
by replacing ^boolean occurrences in expr with gotos.

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/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/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/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/plugins/BochsIA32Plugin/BochsIA32Plugin.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/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-07-20 16:08:57 UTC (rev 3050)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-07-22 16:38:54 UTC (rev 3051)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
    from
-	CoInterpreter VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
+	CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -850,7 +850,7 @@
 void printWronglySizedContexts(sqInt printContexts);
 static void restoreHeadersFromtofromandtofrom(sqInt firstIn, sqInt lastIn, sqInt hdrBaseIn, sqInt firstOut, sqInt lastOut, sqInt hdrBaseOut) NoDbgRegParms;
 static void runLeakCheckerForFullGC(sqInt fullGCFlag) NoDbgRegParms;
-static sqInt safeObjectAfter(sqInt oop) NoDbgRegParms;
+static usqInt safeObjectAfter(sqInt oop) NoDbgRegParms;
 static sqInt safePrintStringOf(sqInt oop) NoDbgRegParms;
 static sqInt shortentoIndexableSize(sqInt obj, sqInt nSlots) NoDbgRegParms;
 static sqInt sizeBitsOfSafe(sqInt oop) NoDbgRegParms;
@@ -1129,7 +1129,6 @@
 sqInt longStoreBytecodeForHeader(sqInt methodHeader);
 static sqInt lookupInMethodCacheSelclassTag(sqInt selector, sqInt classTag) NoDbgRegParms;
 static sqInt lookupMethodInClass(sqInt class) NoDbgRegParms;
-static sqInt lookupMethodInDictionary(sqInt dictionary) NoDbgRegParms;
 static sqInt lookupMethodNoMNUEtcInClass(sqInt class) NoDbgRegParms;
 sqInt makePointwithxValueyValue(sqInt xValue, sqInt yValue);
 static void mapInterpreterOops(void);
@@ -1359,7 +1358,6 @@
 _iss sqInt weakRootCount;
 _iss sqInt growHeadroom;
 _iss sqInt lastMethodCacheProbeWrite;
-_iss sqInt lkupClass;
 _iss sqInt preemptionYields;
 _iss sqInt cogCompiledCodeCompactionCalledFor;
 _iss usqLong nextWakeupUsecs;
@@ -1368,6 +1366,7 @@
 _iss sqInt highestRunnableProcessPriority;
 _iss sqInt lastCoggableInterpretedBlockMethod;
 _iss sqInt lastUncoggableInterpretedBlockMethod;
+_iss sqInt lkupClass;
 _iss usqLong longRunningPrimitiveStartUsecs;
 _iss usqLong longRunningPrimitiveStopUsecs;
 _iss sqInt lowSpaceThreshold;
@@ -2079,7 +2078,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.826";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.830";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -4413,11 +4412,11 @@
 					theMethod = longAt((home + BaseHeaderSize) + (MethodIndex << ShiftForWord));
 					if ((primitiveIndexOfMethodheader(theMethod, headerOf(theMethod))) == 198) {
 						unwindContextOrNilOrZero = home;
-						goto l296;
+						goto l297;
 					}
 				}
 				unwindContextOrNilOrZero = ctxtOrNilOrZero;
-			l296:	/* end internalFindUnwindThroughContext: */;
+			l297:	/* end internalFindUnwindThroughContext: */;
 				if (unwindContextOrNilOrZero == GIV(nilObj)) {
 
 					/* error: can't find home on chain; cannot return */
@@ -4431,10 +4430,10 @@
 						: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 						assert(isContext(frameContext(localFP)));
 						ourContext = longAt(localFP + FoxThisContext);
-						goto l297;
+						goto l299;
 					}
 					ourContext = marryFrameSP(localFP, localSP);
-				l297:	/* end ensureFrameIsMarried:SP: */;
+				l299:	/* end ensureFrameIsMarried:SP: */;
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), ourContext);
 					/* begin internalPush: */
@@ -4455,10 +4454,10 @@
 						: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 						assert(isContext(frameContext(localFP)));
 						ourContext1 = longAt(localFP + FoxThisContext);
-						goto l298;
+						goto l296;
 					}
 					ourContext1 = marryFrameSP(localFP, localSP);
-				l298:	/* end ensureFrameIsMarried:SP: */;
+				l296:	/* end ensureFrameIsMarried:SP: */;
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), ourContext1);
 					/* begin internalPush: */
@@ -4528,10 +4527,10 @@
 							: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 							assert(isContext(frameContext(localFP)));
 							ourContext2 = longAt(localFP + FoxThisContext);
-							goto l299;
+							goto l298;
 						}
 						ourContext2 = marryFrameSP(localFP, localSP);
-					l299:	/* end ensureFrameIsMarried:SP: */;
+					l298:	/* end ensureFrameIsMarried:SP: */;
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), ourContext2);
 						/* begin internalPush: */
@@ -4789,27 +4788,27 @@
 							fp = (thePage->headFP);
 							if (fp == theFP) {
 								frameAbove = 0;
-								goto l301;
+								goto l302;
 							}
 							while (((callerFP = frameCallerFP(fp))) != 0) {
 								if (callerFP == theFP) {
 									frameAbove = fp;
-									goto l301;
+									goto l302;
 								}
 								fp = callerFP;
 							}
 							error("did not find theFP in stack page");
 							frameAbove = 0;
-						l301:	/* end findFrameAbove:inPage: */;
+						l302:	/* end findFrameAbove:inPage: */;
 							/* begin newStackPage */
 							lruOrFree = ((mostRecentlyUsedPage())->nextPage);
 							if (isFree(lruOrFree)) {
 								newPage = lruOrFree;
-								goto l302;
+								goto l303;
 							}
 							divorceFramesIn(lruOrFree);
 							newPage = lruOrFree;
-						l302:	/* end newStackPage */;
+						l303:	/* end newStackPage */;
 							assert(newPage == GIV(stackPage));
 							moveFramesInthroughtoPage(thePage, frameAbove, newPage);
 							markStackPageMostRecentlyUsed(newPage);
@@ -4833,7 +4832,7 @@
 							longAtput((sp2 = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
 							GIV(stackPointer) = sp2;
 							ceSendAborttonumArgs(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SelectorCannotReturn << ShiftForWord)), contextToReturnFrom, 1);
-							goto l303;
+							goto l301;
 						}
 						GIV(instructionPointer) = 0;
 						thePage = makeBaseFrameFor(contextToReturnTo);
@@ -4872,7 +4871,8 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
-							goto l303;
+							null;
+							goto l301;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
 					}
@@ -4889,8 +4889,8 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					/* return self */
-				l303:	/* end baseFrameReturn */;
+					null;
+				l301:	/* end baseFrameReturn */;
 					goto l300;
 				}
 				/* begin frameCallerSavedIP: */
@@ -5183,7 +5183,6 @@
 				CogMethod *cogMethod1;
 				sqInt errorCode;
 				sqInt hash;
-				sqInt hash1;
 				sqInt i;
 				sqInt localPrimIndex;
 				sqInt methodHeader;
@@ -5194,7 +5193,6 @@
 				sqInt object;
 				sqInt ok;
 				sqInt probe;
-				sqInt probe1;
 				sqInt rcvr;
 				char *savedFramePointer;
 				char *savedStackPointer;
@@ -5219,43 +5217,43 @@
 				}
 				/* begin internalFindNewMethod */
 				VM_LABEL(0internalFindNewMethod);
-				/* begin lookupInMethodCacheSel:classTag: */
+				/* begin inlineLookupInMethodCacheSel:classTag: */
 
 				/* shift drops two low-order zeros from addresses */
 
-				hash1 = GIV(messageSelector) ^ lkupClassTag;
+				hash = GIV(messageSelector) ^ lkupClassTag;
 
 				/* first probe */
 
-				probe1 = hash1 & MethodCacheMask;
-				if (((GIV(methodCache)[probe1 + MethodCacheSelector]) == GIV(messageSelector))
-				 && ((GIV(methodCache)[probe1 + MethodCacheClass]) == lkupClassTag)) {
-					GIV(newMethod) = GIV(methodCache)[probe1 + MethodCacheMethod];
-					primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe1 + MethodCachePrimFunction]));
+				probe = hash & MethodCacheMask;
+				if (((GIV(methodCache)[probe + MethodCacheSelector]) == GIV(messageSelector))
+				 && ((GIV(methodCache)[probe + MethodCacheClass]) == lkupClassTag)) {
+					GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
+					primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
 					ok = 1;
-					goto l308;
+					goto l307;
 				}
 
 				/* second probe */
 
-				probe1 = (((usqInt) hash1) >> 1) & MethodCacheMask;
-				if (((GIV(methodCache)[probe1 + MethodCacheSelector]) == GIV(messageSelector))
-				 && ((GIV(methodCache)[probe1 + MethodCacheClass]) == lkupClassTag)) {
-					GIV(newMethod) = GIV(methodCache)[probe1 + MethodCacheMethod];
-					primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe1 + MethodCachePrimFunction]));
+				probe = (((usqInt) hash) >> 1) & MethodCacheMask;
+				if (((GIV(methodCache)[probe + MethodCacheSelector]) == GIV(messageSelector))
+				 && ((GIV(methodCache)[probe + MethodCacheClass]) == lkupClassTag)) {
+					GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
+					primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
 					ok = 1;
-					goto l308;
+					goto l307;
 				}
-				probe1 = (((usqInt) hash1) >> 2) & MethodCacheMask;
-				if (((GIV(methodCache)[probe1 + MethodCacheSelector]) == GIV(messageSelector))
-				 && ((GIV(methodCache)[probe1 + MethodCacheClass]) == lkupClassTag)) {
-					GIV(newMethod) = GIV(methodCache)[probe1 + MethodCacheMethod];
-					primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe1 + MethodCachePrimFunction]));
+				probe = (((usqInt) hash) >> 2) & MethodCacheMask;
+				if (((GIV(methodCache)[probe + MethodCacheSelector]) == GIV(messageSelector))
+				 && ((GIV(methodCache)[probe + MethodCacheClass]) == lkupClassTag)) {
+					GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
+					primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
 					ok = 1;
-					goto l308;
+					goto l307;
 				}
 				ok = 0;
-			l308:	/* end lookupInMethodCacheSel:classTag: */;
+			l307:	/* end inlineLookupInMethodCacheSel:classTag: */;
 				if (ok) {
 					/* begin ifAppropriateCompileToNativeCode:selector: */
 					VM_LABEL(0ifAppropriateCompileToNativeCodeselector);
@@ -5296,7 +5294,7 @@
 					localFP = pointerForOop(GIV(framePointer));
 					addNewMethodToCache(GIV(lkupClass));
 				}
-			l309:	/* end internalFindNewMethod */;
+			l304:	/* end internalFindNewMethod */;
 				/* begin internalExecuteNewMethod */
 				VM_LABEL(0internalExecuteNewMethod);
 				if (primitiveFunctionPointer != 0) {
@@ -5310,31 +5308,31 @@
 						if (localPrimIndex >= 264) {
 							longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + ((localPrimIndex - 264) << ShiftForWord)));
 							1;
-							goto l305;
+							goto l308;
 						}
 						if (localPrimIndex == 256) {
 							1;
-							goto l305;
+							goto l308;
 						}
 						if (localPrimIndex == 257) {
 							longAtPointerput(localSP, GIV(trueObj));
 							1;
-							goto l305;
+							goto l308;
 						}
 						if (localPrimIndex == 258) {
 							longAtPointerput(localSP, GIV(falseObj));
 							1;
-							goto l305;
+							goto l308;
 						}
 						if (localPrimIndex == 259) {
 							longAtPointerput(localSP, GIV(nilObj));
 							1;
-							goto l305;
+							goto l308;
 						}
 						longAtPointerput(localSP, (((localPrimIndex - 261) << 1) | 1));
 						1;
-					l305:	/* end internalQuickPrimitiveResponse */;
-						goto l304;
+					l308:	/* end internalQuickPrimitiveResponse */;
+						goto l306;
 					}
 					/* begin externalizeIPandSP */
 					assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -5392,7 +5390,7 @@
 						returntoExecutive(popStack(), 1);
 						browserPluginReturnIfNeeded();
 						null;
-						goto l304;
+						goto l306;
 					}
 				}
 				if (methodHasCogMethod(GIV(newMethod))) {
@@ -5475,11 +5473,11 @@
 									table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << ShiftForWord));
 									if (GIV(primFailCode) <= ((lastPointerOf(table)) / BytesPerWord)) {
 										errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << ShiftForWord));
-										goto l306;
+										goto l305;
 									}
 								}
 								errorCode = ((GIV(primFailCode) << 1) | 1);
-							l306:	/* end getErrorObjectFromPrimFailCode */;
+							l305:	/* end getErrorObjectFromPrimFailCode */;
 								longAtPointerput(localSP, errorCode);
 							}
 							GIV(primFailCode) = 0;
@@ -5503,7 +5501,7 @@
 						localFP = pointerForOop(GIV(framePointer));
 					}
 				}
-			l304:	/* end internalExecuteNewMethod */;
+			l306:	/* end internalExecuteNewMethod */;
 				/* begin fetchNextBytecode */
 				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -5611,11 +5609,11 @@
 								value = result;
 							}
 							object1 = value;
-							goto l7;
+							goto l8;
 						}
 						if (isWidowedContext(rcvr)) {
 							object1 = longAt((rcvr + BaseHeaderSize) + (byte3 << ShiftForWord));
-							goto l7;
+							goto l8;
 						}
 						/* begin frameOfMarriedContext: */
 						senderOop = longAt((rcvr + BaseHeaderSize) + (SenderIndex << ShiftForWord));
@@ -5661,12 +5659,12 @@
 							}
 							object1 = marryFrameSP(callerFP1, theSP);
 						l4:	/* end ensureCallerContext: */;
-							goto l7;
+							goto l8;
 						}
 						if (byte3 == StackPointerIndex) {
 							assert((ReceiverIndex + (stackPointerIndexForFrame(spouseFP))) < (lengthOf(rcvr)));
 							object1 = (((stackPointerIndexForFrame(spouseFP)) << 1) | 1);
-							goto l7;
+							goto l8;
 						}
 						if (byte3 == InstructionPointerIndex) {
 							if (spouseFP == localFP) {
@@ -5683,18 +5681,18 @@
 								fp = (thePage->headFP);
 								if (fp == spouseFP) {
 									theFPAbove = 0;
-									goto l6;
+									goto l7;
 								}
 								while (((callerFP = frameCallerFP(fp))) != 0) {
 									if (callerFP == spouseFP) {
 										theFPAbove = fp;
-										goto l6;
+										goto l7;
 									}
 									fp = callerFP;
 								}
 								error("did not find theFP in stack page");
 								theFPAbove = 0;
-							l6:	/* end findFrameAbove:inPage: */;
+							l7:	/* end findFrameAbove:inPage: */;
 								theIP = (theFPAbove == 0
 									? longAt((thePage->headSP))
 									: oopForPointer(frameCallerSavedIP(theFPAbove)));
@@ -5716,11 +5714,11 @@
 								value = result1;
 							}
 							object1 = value;
-							goto l7;
+							goto l8;
 						}
 						error("bad index");
 						object1 = 0;
-					l7:	/* end instVar:ofContext: */;
+					l8:	/* end instVar:ofContext: */;
 						longAtPointerput((localSP -= BytesPerOop), object1);
 					}
 					else {
@@ -5801,7 +5799,7 @@
 							ensureContextIsExecutionSafeAfterAssignToStackPointer(rcvr1);
 						}
 						null;
-						goto l8;
+						goto l6;
 					}
 					/* begin frameOfMarriedContext: */
 					senderOop1 = longAt((rcvr1 + BaseHeaderSize) + (SenderIndex << ShiftForWord));
@@ -5826,7 +5824,7 @@
 							markStackPageMostRecentlyUsed(GIV(stackPage));
 						}
 						null;
-						goto l8;
+						goto l6;
 					}
 					/* begin externalizeIPandSP */
 					assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -5849,7 +5847,7 @@
 					localFP = pointerForOop(GIV(framePointer));
 					markStackPageMostRecentlyUsed(GIV(stackPage));
 					assertValidExecutionPointersimbarline(((usqInt)localIP), localFP, localSP, 1, __LINE__);
-				l8:	/* end instVar:ofContext:put: */;
+				l6:	/* end instVar:ofContext:put: */;
 				}
 				else {
 					/* begin storePointer:ofObject:withValue: */
@@ -6519,7 +6517,7 @@
 					/* begin loadFloatOrIntFrom: */
 					if ((rcvr & 1)) {
 						rcvr1 = ((double) ((rcvr >> 1)) );
-						goto l15;
+						goto l18;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
@@ -6532,31 +6530,31 @@
 					ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
 					if (ccIndex == 0) {
 						isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-						goto l18;
+						goto l21;
 					}
 					isFloat = ClassFloatCompactIndex == ccIndex;
-					goto l18;
+					goto l21;
 
 					isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-				l18:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l21:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 				l17:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat) {
 						;
 						fetchFloatAtinto(rcvr + (BaseHeaderSize), result1);
 						rcvr1 = result1;
-						goto l19;
+						goto l16;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					rcvr1 = 0.0;
-				l19:	/* end floatValueOf: */;
-				l15:	/* end loadFloatOrIntFrom: */;
+				l16:	/* end floatValueOf: */;
+				l18:	/* end loadFloatOrIntFrom: */;
 					/* begin loadFloatOrIntFrom: */
 					if ((arg & 1)) {
 						arg1 = ((double) ((arg >> 1)) );
-						goto l16;
+						goto l22;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
@@ -6569,27 +6567,27 @@
 					ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
 					if (ccIndex1 == 0) {
 						isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-						goto l21;
+						goto l15;
 					}
 					isFloat1 = ClassFloatCompactIndex == ccIndex1;
-					goto l21;
+					goto l15;
 
 					isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-				l21:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l15:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 				l20:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat1) {
 						;
 						fetchFloatAtinto(arg + (BaseHeaderSize), result2);
 						arg1 = result2;
-						goto l22;
+						goto l19;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					arg1 = 0.0;
-				l22:	/* end floatValueOf: */;
-				l16:	/* end loadFloatOrIntFrom: */;
+				l19:	/* end floatValueOf: */;
+				l22:	/* end loadFloatOrIntFrom: */;
 					if (!GIV(primFailCode)) {
 						/* begin pop:thenPushFloat: */
 						longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 + arg1));
@@ -6655,7 +6653,7 @@
 					/* begin loadFloatOrIntFrom: */
 					if ((rcvr & 1)) {
 						rcvr1 = ((double) ((rcvr >> 1)) );
-						goto l24;
+						goto l27;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
@@ -6668,31 +6666,31 @@
 					ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
 					if (ccIndex == 0) {
 						isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-						goto l27;
+						goto l30;
 					}
 					isFloat = ClassFloatCompactIndex == ccIndex;
-					goto l27;
+					goto l30;
 
 					isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-				l27:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l30:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 				l26:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat) {
 						;
 						fetchFloatAtinto(rcvr + (BaseHeaderSize), result1);
 						rcvr1 = result1;
-						goto l28;
+						goto l25;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					rcvr1 = 0.0;
-				l28:	/* end floatValueOf: */;
-				l24:	/* end loadFloatOrIntFrom: */;
+				l25:	/* end floatValueOf: */;
+				l27:	/* end loadFloatOrIntFrom: */;
 					/* begin loadFloatOrIntFrom: */
 					if ((arg & 1)) {
 						arg1 = ((double) ((arg >> 1)) );
-						goto l25;
+						goto l31;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
@@ -6705,27 +6703,27 @@
 					ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
 					if (ccIndex1 == 0) {
 						isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-						goto l30;
+						goto l24;
 					}
 					isFloat1 = ClassFloatCompactIndex == ccIndex1;
-					goto l30;
+					goto l24;
 
 					isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-				l30:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l24:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 				l29:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat1) {
 						;
 						fetchFloatAtinto(arg + (BaseHeaderSize), result2);
 						arg1 = result2;
-						goto l31;
+						goto l28;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					arg1 = 0.0;
-				l31:	/* end floatValueOf: */;
-				l25:	/* end loadFloatOrIntFrom: */;
+				l28:	/* end floatValueOf: */;
+				l31:	/* end loadFloatOrIntFrom: */;
 					if (!GIV(primFailCode)) {
 						/* begin pop:thenPushFloat: */
 						longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 - arg1));
@@ -6787,7 +6785,7 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l33;
+					goto l36;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
@@ -6800,31 +6798,31 @@
 				ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
 				if (ccIndex == 0) {
 					isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l36;
+					goto l39;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l36;
+				goto l39;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l36:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l39:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 			l35:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l37;
+					goto l34;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l37:	/* end floatValueOf: */;
-			l33:	/* end loadFloatOrIntFrom: */;
+			l34:	/* end floatValueOf: */;
+			l36:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l34;
+					goto l40;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
@@ -6837,27 +6835,27 @@
 				ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
 				if (ccIndex1 == 0) {
 					isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l39;
+					goto l33;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l39;
+				goto l33;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l39:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l33:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 			l38:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l40;
+					goto l37;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l40:	/* end floatValueOf: */;
-			l34:	/* end loadFloatOrIntFrom: */;
+			l37:	/* end floatValueOf: */;
+			l40:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 < arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheat: */
@@ -6897,7 +6895,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l310;
+						goto l309;
 					}
 					if (bytecode == 172) {
 
@@ -6907,7 +6905,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l310;
+						goto l309;
 					}
 					if (bytecode > 167) {
 
@@ -6918,7 +6916,7 @@
 						localIP = (localIP + offset) + 1;
 						currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-						goto l310;
+						goto l309;
 					}
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
@@ -6926,7 +6924,7 @@
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(trueObj));
 			}
-		l310:	/* end case */;
+		l309:	/* end case */;
 			break;
 		case 179:
 			/* bytecodePrimGreaterThan */
@@ -6966,7 +6964,7 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l42;
+					goto l45;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
@@ -6979,31 +6977,31 @@
 				ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
 				if (ccIndex == 0) {
 					isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l45;
+					goto l48;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l45;
+				goto l48;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l45:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l48:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 			l44:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l46;
+					goto l43;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l46:	/* end floatValueOf: */;
-			l42:	/* end loadFloatOrIntFrom: */;
+			l43:	/* end floatValueOf: */;
+			l45:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l43;
+					goto l49;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
@@ -7016,27 +7014,27 @@
 				ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
 				if (ccIndex1 == 0) {
 					isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l48;
+					goto l42;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l48;
+				goto l42;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l48:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l42:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 			l47:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l49;
+					goto l46;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l49:	/* end floatValueOf: */;
-			l43:	/* end loadFloatOrIntFrom: */;
+			l46:	/* end floatValueOf: */;
+			l49:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 > arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheat: */
@@ -7076,7 +7074,7 @@
 					localIP = (localIP + (bytecode - 151)) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l311;
+					goto l310;
 				}
 				if (bytecode == 172) {
 
@@ -7087,14 +7085,14 @@
 					localIP = (localIP + offset) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l311;
+					goto l310;
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
 
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(falseObj));
 			}
-		l311:	/* end case */;
+		l310:	/* end case */;
 			break;
 		case 180:
 			/* bytecodePrimLessOrEqual */
@@ -7134,7 +7132,7 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l51;
+					goto l54;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
@@ -7147,31 +7145,31 @@
 				ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
 				if (ccIndex == 0) {
 					isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l54;
+					goto l57;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l54;
+				goto l57;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l54:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l57:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 			l53:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l55;
+					goto l52;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l55:	/* end floatValueOf: */;
-			l51:	/* end loadFloatOrIntFrom: */;
+			l52:	/* end floatValueOf: */;
+			l54:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l52;
+					goto l58;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
@@ -7184,27 +7182,27 @@
 				ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
 				if (ccIndex1 == 0) {
 					isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l57;
+					goto l51;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l57;
+				goto l51;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l57:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l51:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 			l56:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l58;
+					goto l55;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l58:	/* end floatValueOf: */;
-			l52:	/* end loadFloatOrIntFrom: */;
+			l55:	/* end floatValueOf: */;
+			l58:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 <= arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheat: */
@@ -7260,7 +7258,7 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l60;
+					goto l63;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
@@ -7273,31 +7271,31 @@
 				ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
 				if (ccIndex == 0) {
 					isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l63;
+					goto l66;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l63;
+				goto l66;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l63:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l66:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 			l62:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l64;
+					goto l61;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l64:	/* end floatValueOf: */;
-			l60:	/* end loadFloatOrIntFrom: */;
+			l61:	/* end floatValueOf: */;
+			l63:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l61;
+					goto l67;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
@@ -7310,27 +7308,27 @@
 				ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
 				if (ccIndex1 == 0) {
 					isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l66;
+					goto l60;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l66;
+				goto l60;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l66:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l60:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 			l65:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l67;
+					goto l64;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l67:	/* end floatValueOf: */;
-			l61:	/* end loadFloatOrIntFrom: */;
+			l64:	/* end floatValueOf: */;
+			l67:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 >= arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheat: */
@@ -7382,7 +7380,7 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l69;
+					goto l72;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
@@ -7395,31 +7393,31 @@
 				ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
 				if (ccIndex == 0) {
 					isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l72;
+					goto l75;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l72;
+				goto l75;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l72:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l75:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 			l71:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l73;
+					goto l70;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l73:	/* end floatValueOf: */;
-			l69:	/* end loadFloatOrIntFrom: */;
+			l70:	/* end floatValueOf: */;
+			l72:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l70;
+					goto l76;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
@@ -7432,27 +7430,27 @@
 				ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
 				if (ccIndex1 == 0) {
 					isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l75;
+					goto l69;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l75;
+				goto l69;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l75:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l69:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 			l74:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l76;
+					goto l73;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l76:	/* end floatValueOf: */;
-			l70:	/* end loadFloatOrIntFrom: */;
+			l73:	/* end floatValueOf: */;
+			l76:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 == arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheat: */
@@ -7504,7 +7502,7 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l78;
+					goto l81;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
@@ -7517,31 +7515,31 @@
 				ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
 				if (ccIndex == 0) {
 					isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l81;
+					goto l84;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l81;
+				goto l84;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l81:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l84:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 			l80:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l82;
+					goto l79;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l82:	/* end floatValueOf: */;
-			l78:	/* end loadFloatOrIntFrom: */;
+			l79:	/* end floatValueOf: */;
+			l81:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l79;
+					goto l85;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
@@ -7554,27 +7552,27 @@
 				ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
 				if (ccIndex1 == 0) {
 					isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l84;
+					goto l78;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l84;
+				goto l78;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l84:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l78:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 			l83:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l85;
+					goto l82;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l85:	/* end floatValueOf: */;
-			l79:	/* end loadFloatOrIntFrom: */;
+			l82:	/* end floatValueOf: */;
+			l85:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 == arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheat: */
@@ -7638,7 +7636,7 @@
 					/* begin loadFloatOrIntFrom: */
 					if ((rcvr & 1)) {
 						rcvr1 = ((double) ((rcvr >> 1)) );
-						goto l87;
+						goto l90;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
@@ -7651,31 +7649,31 @@
 					ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
 					if (ccIndex == 0) {
 						isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-						goto l90;
+						goto l93;
 					}
 					isFloat = ClassFloatCompactIndex == ccIndex;
-					goto l90;
+					goto l93;
 
 					isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-				l90:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l93:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 				l89:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat) {
 						;
 						fetchFloatAtinto(rcvr + (BaseHeaderSize), result1);
 						rcvr1 = result1;
-						goto l91;
+						goto l88;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					rcvr1 = 0.0;
-				l91:	/* end floatValueOf: */;
-				l87:	/* end loadFloatOrIntFrom: */;
+				l88:	/* end floatValueOf: */;
+				l90:	/* end loadFloatOrIntFrom: */;
 					/* begin loadFloatOrIntFrom: */
 					if ((arg & 1)) {
 						arg1 = ((double) ((arg >> 1)) );
-						goto l88;
+						goto l94;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
@@ -7688,27 +7686,27 @@
 					ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
 					if (ccIndex1 == 0) {
 						isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-						goto l93;
+						goto l87;
 					}
 					isFloat1 = ClassFloatCompactIndex == ccIndex1;
-					goto l93;
+					goto l87;
 
 					isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-				l93:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l87:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 				l92:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat1) {
 						;
 						fetchFloatAtinto(arg + (BaseHeaderSize), result2);
 						arg1 = result2;
-						goto l94;
+						goto l91;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					arg1 = 0.0;
-				l94:	/* end floatValueOf: */;
-				l88:	/* end loadFloatOrIntFrom: */;
+				l91:	/* end floatValueOf: */;
+				l94:	/* end loadFloatOrIntFrom: */;
 					if (!GIV(primFailCode)) {
 						/* begin pop:thenPushFloat: */
 						longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 * arg1));
@@ -7783,7 +7781,7 @@
 					/* begin loadFloatOrIntFrom: */
 					if ((rcvr & 1)) {
 						rcvr1 = ((double) ((rcvr >> 1)) );
-						goto l96;
+						goto l99;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
@@ -7796,31 +7794,31 @@
 					ccIndex = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F;
 					if (ccIndex == 0) {
 						isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-						goto l99;
+						goto l102;
 					}
 					isFloat = ClassFloatCompactIndex == ccIndex;
-					goto l99;
+					goto l102;
 
 					isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-				l99:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l102:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 				l98:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat) {
 						;
 						fetchFloatAtinto(rcvr + (BaseHeaderSize), result1);
 						rcvr1 = result1;
-						goto l100;
+						goto l97;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					rcvr1 = 0.0;
-				l100:	/* end floatValueOf: */;
-				l96:	/* end loadFloatOrIntFrom: */;
+				l97:	/* end floatValueOf: */;
+				l99:	/* end loadFloatOrIntFrom: */;
 					/* begin loadFloatOrIntFrom: */
 					if ((arg & 1)) {
 						arg1 = ((double) ((arg >> 1)) );
-						goto l97;
+						goto l103;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
@@ -7833,27 +7831,27 @@
 					ccIndex1 = (((usqInt) (longAt(arg))) >> (compactClassFieldLSB())) & 0x1F;
 					if (ccIndex1 == 0) {
 						isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-						goto l102;
+						goto l96;
 					}
 					isFloat1 = ClassFloatCompactIndex == ccIndex1;
-					goto l102;
+					goto l96;
 
 					isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-				l102:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l96:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
 				l101:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat1) {
 						;
 						fetchFloatAtinto(arg + (BaseHeaderSize), result2);
 						arg1 = result2;
-						goto l103;
+						goto l100;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					arg1 = 0.0;
-				l103:	/* end floatValueOf: */;
-				l97:	/* end loadFloatOrIntFrom: */;
+				l100:	/* end floatValueOf: */;
+				l103:	/* end loadFloatOrIntFrom: */;
 					/* begin success: */
 					if (!(arg1 != 0.0)) {
 
@@ -8327,7 +8325,7 @@
 
 								GIV(primFailCode) = PrimErrBadReceiver;
 								0;
-								goto l115;
+								goto l118;
 							}
 							/* begin lengthOf:baseHeader:format: */
 							if ((hdr & TypeMask) == HeaderTypeSizeAndClass) {
@@ -8339,35 +8337,35 @@
 							sz1 -= hdr & Size4Bit;
 							if (fmt <= 4) {
 								totalLength = ((usqInt) (sz1 - BaseHeaderSize)) >> ShiftForWord;
-								goto l114;
+								goto l121;
 							}
 							totalLength = (fmt < 8
 								? ((usqInt) (sz1 - BaseHeaderSize)) >> 2
 								: (sz1 - BaseHeaderSize) - (fmt & 3));
-						l114:	/* end lengthOf:baseHeader:format: */;
+						l121:	/* end lengthOf:baseHeader:format: */;
 							/* begin fixedFieldsOf:format:length: */
 							if ((fmt > 4)
 							 || (fmt == 2)) {
 								fixedFields = 0;
-								goto l119;
+								goto l113;
 							}
 							if (fmt < 2) {
 								fixedFields = totalLength;
-								goto l119;
+								goto l113;
 							}
 							class = (((ccIndex1 = (((usqInt) (longAt(rcvr))) >> (compactClassFieldLSB())) & 0x1F)) == 0
 								? (longAt(rcvr - BaseHeaderSize)) & AllButTypeMask
 								: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
 							classFormat = (longAt((class + BaseHeaderSize) + (InstanceSpecificationIndex << ShiftForWord))) - 1;
 							fixedFields = (((((usqInt) classFormat) >> 11) & 192) + ((((usqInt) classFormat) >> 2) & 0x3F)) - 1;
-						l119:	/* end fixedFieldsOf:format:length: */;
+						l113:	/* end fixedFieldsOf:format:length: */;
 
 							GIV(atCache)[atIx + AtCacheOop] = rcvr;
 							GIV(atCache)[atIx + AtCacheFmt] = fmt;
 							GIV(atCache)[atIx + AtCacheFixedFields] = fixedFields;
 							GIV(atCache)[atIx + AtCacheSize] = (totalLength - fixedFields);
 							1;
-						l115:	/* end install:inAtCache:at:string: */;
+						l118:	/* end install:inAtCache:at:string: */;
 						}
 						else {
 							if (primitiveFunctionPointer == primitiveStringAt) {
@@ -8386,12 +8384,12 @@
 								sz2 -= hdr1 & Size4Bit;
 								if (fmt1 <= 4) {
 									totalLength1 = ((usqInt) (sz2 - BaseHeaderSize)) >> ShiftForWord;
-									goto l116;
+									goto l114;
 								}
 								totalLength1 = (fmt1 < 8
 									? ((usqInt) (sz2 - BaseHeaderSize)) >> 2
 									: (sz2 - BaseHeaderSize) - (fmt1 & 3));
-							l116:	/* end lengthOf:baseHeader:format: */;
+							l114:	/* end lengthOf:baseHeader:format: */;
 								fixedFields1 = 0;
 
 								/* special flag for strings */
@@ -8403,7 +8401,7 @@
 								GIV(atCache)[atIx + AtCacheFixedFields] = fixedFields1;
 								GIV(atCache)[atIx + AtCacheSize] = (totalLength1 - fixedFields1);
 								1;
-							l118:	/* end install:inAtCache:at:string: */;
+							l117:	/* end install:inAtCache:at:string: */;
 							}
 							else {

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list