[Vm-dev] [commit][2892] CogVM source as per VMMaker.oscog-eem.672

commits at squeakvm.org commits at squeakvm.org
Fri Apr 11 18:50:33 UTC 2014


Revision: 2892
Author:   eliot
Date:     2014-04-11 11:50:26 -0700 (Fri, 11 Apr 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.672

Implement the new Spur interpreterProxy API for ObjectMemory (of course
pinObject: fails, and isCharacterValue: has a smaller range).

Modified Paths:
--------------
    branches/Cog/nscogsrc/vm/cogit.c
    branches/Cog/nscogsrc/vm/cogit.h
    branches/Cog/nscogsrc/vm/cogmethod.h
    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/cogit.c
    branches/Cog/spursrc/vm/cogit.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/cogit.c
    branches/Cog/src/vm/cogit.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/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c	2014-04-10 18:41:54 UTC (rev 2891)
+++ branches/Cog/nscogsrc/vm/cogit.c	2014-04-11 18:50:26 UTC (rev 2892)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.670 uuid: 071bf6af-04c0-4256-b053-d66378b73d27
+	CCodeGenerator VMMaker.oscog-eem.672 uuid: 21493732-2e31-4b57-a8ae-aa6e6a9e4c3c
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.670 uuid: 071bf6af-04c0-4256-b053-d66378b73d27
+	StackToRegisterMappingCogit VMMaker.oscog-eem.672 uuid: 21493732-2e31-4b57-a8ae-aa6e6a9e4c3c
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.670 uuid: 071bf6af-04c0-4256-b053-d66378b73d27 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.672 uuid: 21493732-2e31-4b57-a8ae-aa6e6a9e4c3c " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h	2014-04-10 18:41:54 UTC (rev 2891)
+++ branches/Cog/nscogsrc/vm/cogit.h	2014-04-11 18:50:26 UTC (rev 2892)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.670 uuid: 071bf6af-04c0-4256-b053-d66378b73d27
+	CCodeGenerator VMMaker.oscog-eem.672 uuid: 21493732-2e31-4b57-a8ae-aa6e6a9e4c3c
  */
 
 

Modified: branches/Cog/nscogsrc/vm/cogmethod.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogmethod.h	2014-04-10 18:41:54 UTC (rev 2891)
+++ branches/Cog/nscogsrc/vm/cogmethod.h	2014-04-11 18:50:26 UTC (rev 2892)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.670 uuid: 071bf6af-04c0-4256-b053-d66378b73d27
+	CCodeGenerator VMMaker.oscog-eem.672 uuid: 21493732-2e31-4b57-a8ae-aa6e6a9e4c3c
  */
 
 typedef struct {

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2014-04-10 18:41:54 UTC (rev 2891)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-04-11 18:50:26 UTC (rev 2892)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.670 uuid: 071bf6af-04c0-4256-b053-d66378b73d27
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.672 uuid: 21493732-2e31-4b57-a8ae-aa6e6a9e4c3c
    from
-	CoInterpreter VMMaker.oscog-eem.670 uuid: 071bf6af-04c0-4256-b053-d66378b73d27
+	CoInterpreter VMMaker.oscog-eem.672 uuid: 21493732-2e31-4b57-a8ae-aa6e6a9e4c3c
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.670 uuid: 071bf6af-04c0-4256-b053-d66378b73d27 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.672 uuid: 21493732-2e31-4b57-a8ae-aa6e6a9e4c3c " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -426,7 +426,9 @@
 void ceTraceStoreOfinto(sqInt aValue, sqInt anObject);
 static sqInt changeClassOfto(sqInt rcvr, sqInt argClass);
 sqInt characterForAscii(sqInt ascii);
+sqInt characterObjectOf(sqInt characterCode);
 sqInt characterTable(void);
+sqInt characterValueOf(sqInt oop);
 static sqInt cheapAddressCouldBeInHeap(sqInt address);
 sqInt checkAllAccessibleObjectsOkay(void);
 void checkAssertsEnabledInCoInterpreter(void);
@@ -659,6 +661,7 @@
 static sqInt isBaseFrame(char *theFP);
 sqInt isBytes(sqInt oop);
 sqInt isCharacterObject(sqInt oop);
+sqInt isCharacterValue(sqInt anInteger);
 static sqInt isClassOfNonImmequalTo(sqInt oop, sqInt classOop);
 sqInt isCogMethodReference(sqInt methodHeader);
 static sqInt isCompiledMethodHeader(sqInt objHeader);
@@ -686,6 +689,7 @@
 static sqInt isOopForwarded(sqInt oop);
 sqInt isOopImmutable(sqInt anOop);
 sqInt isOopMutable(sqInt anOop);
+sqInt isPinned(sqInt objOop);
 sqInt isPointers(sqInt oop);
 static sqInt isPrimitiveFunctionPointerAnIndex(void);
 sqInt isQuickPrimitiveIndex(sqInt anInteger);
@@ -811,6 +815,7 @@
 static sqInt pageIndexFor(void *pointer);
 static sqInt pageListIsWellFormed(void);
 sqInt penultimateLiteralOf(sqInt aMethodOop);
+void pinObject(sqInt objOop);
 sqInt popRemappableOop(void);
 sqInt popStack(void);
 sqInt pop(sqInt nItems);
@@ -2040,7 +2045,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.670";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.672";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -4338,7 +4343,7 @@
 						? ((longAt(localFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0
 						: (byteAt((localFP + FoxIFrameFlags) + 3)) != 0))) {
 					goto commonCallerReturn;
-					goto l299;
+					goto l301;
 				}
 				closure = longAt(localFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory())
 	? ((mframeCogMethod(localFP))->cmNumArgs)
@@ -4375,11 +4380,11 @@
 					theMethod = longAt((home + BaseHeaderSize) + (MethodIndex << ShiftForWord));
 					if ((primitiveIndexOfMethodheader(theMethod, headerOf(theMethod))) == 198) {
 						unwindContextOrNilOrZero = home;
-						goto l300;
+						goto l302;
 					}
 				}
 				unwindContextOrNilOrZero = ctxtOrNilOrZero;
-			l300:	/* end internalFindUnwindThroughContext: */;
+			l302:	/* end internalFindUnwindThroughContext: */;
 				if (unwindContextOrNilOrZero == GIV(nilObj)) {
 
 					/* error: can't find home on chain; cannot return */
@@ -4393,10 +4398,10 @@
 						: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 						assert(isContext(frameContext(localFP)));
 						ourContext = longAt(localFP + FoxThisContext);
-						goto l301;
+						goto l303;
 					}
 					ourContext = marryFrameSP(localFP, localSP);
-				l301:	/* end ensureFrameIsMarried:SP: */;
+				l303:	/* end ensureFrameIsMarried:SP: */;
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), ourContext);
 					/* begin internalPush: */
@@ -4405,7 +4410,7 @@
 					GIV(argumentCount) = 1;
 					goto normalSend;
 					/* return self */
-					goto l299;
+					goto l301;
 				}
 				if (unwindContextOrNilOrZero != 0) {
 					/* begin internalAboutToReturn:through: */
@@ -4417,10 +4422,10 @@
 						: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 						assert(isContext(frameContext(localFP)));
 						ourContext1 = longAt(localFP + FoxThisContext);
-						goto l302;
+						goto l304;
 					}
 					ourContext1 = marryFrameSP(localFP, localSP);
-				l302:	/* end ensureFrameIsMarried:SP: */;
+				l304:	/* end ensureFrameIsMarried:SP: */;
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), ourContext1);
 					/* begin internalPush: */
@@ -4431,7 +4436,7 @@
 					GIV(argumentCount) = 2;
 					goto normalSend;
 					/* return self */
-					goto l299;
+					goto l301;
 				}
 				contextToReturnTo = null;
 				if (((longAt((home + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1)) {
@@ -4490,10 +4495,10 @@
 							: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 							assert(isContext(frameContext(localFP)));
 							ourContext2 = longAt(localFP + FoxThisContext);
-							goto l303;
+							goto l305;
 						}
 						ourContext2 = marryFrameSP(localFP, localSP);
-					l303:	/* end ensureFrameIsMarried:SP: */;
+					l305:	/* end ensureFrameIsMarried:SP: */;
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), ourContext2);
 						/* begin internalPush: */
@@ -4502,7 +4507,7 @@
 						GIV(argumentCount) = 1;
 						goto normalSend;
 						/* return self */
-						goto l299;
+						goto l301;
 					}
 				}
 				assert(pageListIsWellFormed());
@@ -4613,7 +4618,7 @@
 						GIV(framePointer) = localFP;
 						
 						ceEnterCogCodePopReceiverReg();
-						goto l299;
+						goto l301;
 					}
 					localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
 				}
@@ -4631,7 +4636,7 @@
 
 				/* return self */
 			}
-		l299:	/* end case */;
+		l301:	/* end case */;
 			break;
 		case 121:
 			/* returnTrue */
@@ -4751,27 +4756,27 @@
 							fp = (thePage->headFP);
 							if (fp == theFP) {
 								frameAbove = 0;
-								goto l305;
+								goto l307;
 							}
 							while (((callerFP = frameCallerFP(fp))) != 0) {
 								if (callerFP == theFP) {
 									frameAbove = fp;
-									goto l305;
+									goto l307;
 								}
 								fp = callerFP;
 							}
 							error("did not find theFP in stack page");
 							frameAbove = 0;
-						l305:	/* end findFrameAbove:inPage: */;
+						l307:	/* end findFrameAbove:inPage: */;
 							/* begin newStackPage */
 							lruOrFree = ((mostRecentlyUsedPage())->nextPage);
 							if (isFree(lruOrFree)) {
 								newPage = lruOrFree;
-								goto l306;
+								goto l308;
 							}
 							divorceFramesIn(lruOrFree);
 							newPage = lruOrFree;
-						l306:	/* end newStackPage */;
+						l308:	/* end newStackPage */;
 							assert(newPage == GIV(stackPage));
 							moveFramesInthroughtoPage(thePage, frameAbove, newPage);
 							markStackPageMostRecentlyUsed(newPage);
@@ -4795,7 +4800,7 @@
 							longAtput((sp2 = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
 							GIV(stackPointer) = sp2;
 							ceSendAborttonumArgs(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SelectorCannotReturn << ShiftForWord)), contextToReturnFrom, 1);
-							goto l307;
+							goto l309;
 						}
 						GIV(instructionPointer) = 0;
 						thePage = makeBaseFrameFor(contextToReturnTo);
@@ -4834,7 +4839,7 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
-							goto l307;
+							goto l309;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
 					}
@@ -4852,8 +4857,8 @@
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
 					/* return self */
-				l307:	/* end baseFrameReturn */;
-					goto l304;
+				l309:	/* end baseFrameReturn */;
+					goto l306;
 				}
 				/* begin frameCallerSavedIP: */
 				localIP = pointerForOop(longAt(localFP + FoxCallerSavedIP));
@@ -4882,7 +4887,7 @@
 						GIV(framePointer) = localFP;
 						
 						ceEnterCogCodePopReceiverReg();
-						goto l304;
+						goto l306;
 					}
 					localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
 				}
@@ -4899,7 +4904,7 @@
 
 				longAtPointerput(localSP, localReturnValue);
 			}
-		l304:	/* end case */;
+		l306:	/* end case */;
 			break;
 		case 126:
 			/* dynamicSuperSendBytecode */
@@ -5195,7 +5200,7 @@
 					GIV(newMethod) = GIV(methodCache)[probe1 + MethodCacheMethod];
 					primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe1 + MethodCachePrimFunction]));
 					ok = 1;
-					goto l312;
+					goto l314;
 				}
 
 				/* second probe */
@@ -5206,7 +5211,7 @@
 					GIV(newMethod) = GIV(methodCache)[probe1 + MethodCacheMethod];
 					primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe1 + MethodCachePrimFunction]));
 					ok = 1;
-					goto l312;
+					goto l314;
 				}
 				probe1 = (((usqInt) hash1) >> 2) & MethodCacheMask;
 				if (((GIV(methodCache)[probe1 + MethodCacheSelector]) == GIV(messageSelector))
@@ -5214,10 +5219,10 @@
 					GIV(newMethod) = GIV(methodCache)[probe1 + MethodCacheMethod];
 					primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe1 + MethodCachePrimFunction]));
 					ok = 1;
-					goto l312;
+					goto l314;
 				}
 				ok = 0;
-			l312:	/* end lookupInMethodCacheSel:classTag: */;
+			l314:	/* end lookupInMethodCacheSel:classTag: */;
 				if (ok) {
 					/* begin ifAppropriateCompileToNativeCode:selector: */
 					VM_LABEL(0ifAppropriateCompileToNativeCodeselector);
@@ -5258,7 +5263,7 @@
 					localFP = pointerForOop(GIV(framePointer));
 					addNewMethodToCache(GIV(lkupClass));
 				}
-			l313:	/* end internalFindNewMethod */;
+			l315:	/* end internalFindNewMethod */;
 				/* begin internalExecuteNewMethod */
 				VM_LABEL(0internalExecuteNewMethod);
 				if (primitiveFunctionPointer != 0) {
@@ -5272,31 +5277,31 @@
 						if (localPrimIndex >= 264) {
 							longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + ((localPrimIndex - 264) << ShiftForWord)));
 							1;
-							goto l309;
+							goto l311;
 						}
 						if (localPrimIndex == 256) {
 							1;
-							goto l309;
+							goto l311;
 						}
 						if (localPrimIndex == 257) {
 							longAtPointerput(localSP, GIV(trueObj));
 							1;
-							goto l309;
+							goto l311;
 						}
 						if (localPrimIndex == 258) {
 							longAtPointerput(localSP, GIV(falseObj));
 							1;
-							goto l309;
+							goto l311;
 						}
 						if (localPrimIndex == 259) {
 							longAtPointerput(localSP, GIV(nilObj));
 							1;
-							goto l309;
+							goto l311;
 						}
 						longAtPointerput(localSP, (((localPrimIndex - 261) << 1) | 1));
 						1;
-					l309:	/* end internalQuickPrimitiveResponse */;
-						goto l308;
+					l311:	/* end internalQuickPrimitiveResponse */;
+						goto l310;
 					}
 					/* begin externalizeIPandSP */
 					assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -5347,7 +5352,7 @@
 						returntoExecutive(popStack(), 1);
 						browserPluginReturnIfNeeded();
 						null;
-						goto l308;
+						goto l310;
 					}
 				}
 				if (methodHasCogMethod(GIV(newMethod))) {
@@ -5428,11 +5433,11 @@
 									table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (PrimErrTableIndex << ShiftForWord));
 									if (GIV(primFailCode) <= (((sqInt) (lastPointerOf(table)) >> 2))) {
 										errorCode = longAt((table + BaseHeaderSize) + ((GIV(primFailCode) - 1) << ShiftForWord));
-										goto l310;
+										goto l312;
 									}
 								}
 								errorCode = ((GIV(primFailCode) << 1) | 1);
-							l310:	/* end getErrorObjectFromPrimFailCode */;
+							l312:	/* end getErrorObjectFromPrimFailCode */;
 								longAtPointerput(localSP, errorCode);
 							}
 							GIV(primFailCode) = 0;
@@ -5456,7 +5461,7 @@
 						localFP = pointerForOop(GIV(framePointer));
 					}
 				}
-			l308:	/* end internalExecuteNewMethod */;
+			l310:	/* end internalExecuteNewMethod */;
 				/* begin fetchNextBytecode */
 				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -6833,7 +6838,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l314;
+						goto l316;
 					}
 					if (bytecode == 172) {
 
@@ -6843,7 +6848,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l314;
+						goto l316;
 					}
 					if (bytecode > 167) {
 
@@ -6854,7 +6859,7 @@
 						localIP = (localIP + offset) + 1;
 						currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-						goto l314;
+						goto l316;
 					}
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
@@ -6862,7 +6867,7 @@
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(trueObj));
 			}
-		l314:	/* end case */;
+		l316:	/* end case */;
 			break;
 		case 179:
 			/* bytecodePrimGreaterThan */
@@ -7012,7 +7017,7 @@
 					localIP = (localIP + (bytecode - 151)) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l315;
+					goto l317;
 				}
 				if (bytecode == 172) {
 
@@ -7023,14 +7028,14 @@
 					localIP = (localIP + offset) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l315;
+					goto l317;
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
 
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(falseObj));
 			}
-		l315:	/* end case */;
+		l317:	/* end case */;
 			break;
 		case 180:
 			/* bytecodePrimLessOrEqual */
@@ -8377,7 +8382,9 @@
 
 								result1 = byteAt((rcvr + BaseHeaderSize) + (((index >> 1)) - 1));
 								result = (CharacterTable == null
-									? characterObjectOf(result1)
+									? (((result1 >= 0) && (result1 <= 0xFF))
+											? longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CharacterTable << ShiftForWord))) + BaseHeaderSize) + (result1 << ShiftForWord))
+											: GIV(nilObj))
 									: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CharacterTable << ShiftForWord))) + BaseHeaderSize) + (result1 << ShiftForWord)));
 								goto l120;
 							}
@@ -8480,7 +8487,7 @@
 
 								GIV(primFailCode) = PrimErrBadReceiver;
 								0;
-								goto l127;
+								goto l128;
 							}
 							/* begin lengthOf:baseHeader:format: */
 							if ((hdr & TypeMask) == HeaderTypeSizeAndClass) {
@@ -8492,35 +8499,35 @@
 							sz1 -= hdr & Size4Bit;
 							if (fmt1 <= 4) {
 								totalLength = ((usqInt) (sz1 - BaseHeaderSize)) >> ShiftForWord;
-								goto l125;
+								goto l126;
 							}
 							totalLength = (fmt1 < 8
 								? ((usqInt) (sz1 - BaseHeaderSize)) >> 2
 								: (sz1 - BaseHeaderSize) - (fmt1 & 3));
-						l125:	/* end lengthOf:baseHeader:format: */;
+						l126:	/* end lengthOf:baseHeader:format: */;
 							/* begin fixedFieldsOf:format:length: */
 							if ((fmt1 > 4)
 							 || (fmt1 == 2)) {
 								fixedFields1 = 0;
-								goto l126;
+								goto l127;
 							}
 							if (fmt1 < 2) {
 								fixedFields1 = totalLength;
-								goto l126;
+								goto l127;
 							}
 							class = (((ccIndex1 = (((usqInt) (longAt(rcvr))) >> 12) & 0x1F)) == 0
 								? (longAt(rcvr - BaseHeaderSize)) & AllButTypeMask
 								: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
 							classFormat = (longAt((class + BaseHeaderSize) + (InstanceSpecificationIndex << ShiftForWord))) - 1;
 							fixedFields1 = (((((usqInt) classFormat) >> 11) & 192) + ((((usqInt) classFormat) >> 2) & 0x3F)) - 1;
-						l126:	/* end fixedFieldsOf:format:length: */;
+						l127:	/* end fixedFieldsOf:format:length: */;
 
 							GIV(atCache)[atIx + AtCacheOop] = rcvr;
 							GIV(atCache)[atIx + AtCacheFmt] = fmt1;
 							GIV(atCache)[atIx + AtCacheFixedFields] = fixedFields1;
 							GIV(atCache)[atIx + AtCacheSize] = (totalLength - fixedFields1);
 							1;
-						l127:	/* end install:inAtCache:at:string: */;
+						l128:	/* end install:inAtCache:at:string: */;
 						}
 						else {
 							if (primitiveFunctionPointer == primitiveStringAtPut) {
@@ -8539,12 +8546,12 @@
 								sz2 -= hdr1 & Size4Bit;
 								if (fmt2 <= 4) {
 									totalLength1 = ((usqInt) (sz2 - BaseHeaderSize)) >> ShiftForWord;
-									goto l128;
+									goto l129;
 								}
 								totalLength1 = (fmt2 < 8
 									? ((usqInt) (sz2 - BaseHeaderSize)) >> 2
 									: (sz2 - BaseHeaderSize) - (fmt2 & 3));
-							l128:	/* end lengthOf:baseHeader:format: */;
+							l129:	/* end lengthOf:baseHeader:format: */;
 								fixedFields2 = 0;
 
 								/* special flag for strings */
@@ -8556,7 +8563,7 @@
 								GIV(atCache)[atIx + AtCacheFixedFields] = fixedFields2;
 								GIV(atCache)[atIx + AtCacheSize] = (totalLength1 - fixedFields2);
 								1;
-							l131:	/* end install:inAtCache:at:string: */;
+							l132:	/* end install:inAtCache:at:string: */;
 							}
 							else {
 								GIV(argumentCount) = 2;
@@ -8580,7 +8587,7 @@
 									possibleRootStoreIntovalue(rcvr, value);
 								}
 								longAtput((rcvr + BaseHeaderSize) + (((((index >> 1)) + fixedFields) - 1) << ShiftForWord), value);
-								goto l123;
+								goto l124;
 							}
 							if (fmt < 8) {
 
@@ -8589,10 +8596,10 @@
 								valToPut = positive32BitValueOf(value);
 								if (!GIV(primFailCode)) {
 									long32Atput((rcvr + BaseHeaderSize) + ((((index >> 1)) - 1) << 2), valToPut);
-									goto l123;
+									goto l124;
 								}
 								GIV(primFailCode) = PrimErrBadArgument;
-								goto l123;
+								goto l124;
 							}
 							if (fmt >= 16) {
 
@@ -8601,22 +8608,22 @@
 								/* begin is:instanceOf:compactClassIndex: */
 								if ((value & 1)) {
 									isCharacter = 0;
-									goto l122;
+									goto l123;
 								}
 								/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 								assert(!((value & 1)));
 								ccIndex3 = (((usqInt) (longAt(value))) >> 12) & 0x1F;
 								if (ccIndex3 == 0) {
 									isCharacter = ((longAt(value - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassCharacter << ShiftForWord)));
-									goto l132;
+									goto l133;
 								}
 								
 								isCharacter = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassCharacter << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex3 - 1) << ShiftForWord)));
-							l132:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-							l122:	/* end is:instanceOf:compactClassIndex: */;
+							l133:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+							l123:	/* end is:instanceOf:compactClassIndex: */;
 								if (!isCharacter) {
 									GIV(primFailCode) = PrimErrBadArgument;
-									goto l123;
+									goto l124;
 								}
 								valToPut = longAt((value + BaseHeaderSize) + (CharacterValueIndex << ShiftForWord));
 								valToPut = ((valToPut & 1)
@@ -8629,7 +8636,7 @@
 								if ((fmt >= 12)
 								 && (((index >> 1)) < ((((literalCountOfHeader(headerOf(rcvr))) + LiteralStart) * BytesPerOop) + 1))) {
 									GIV(primFailCode) = PrimErrBadIndex;
-									goto l123;
+									goto l124;
 								}
 								valToPut = ((value & 1)
 									? (value >> 1)
@@ -8638,17 +8645,17 @@
 							if (!((valToPut >= 0)
 								 && (valToPut <= 0xFF))) {
 								GIV(primFailCode) = PrimErrBadArgument;
-								goto l123;
+								goto l124;
 							}
 							byteAtput((rcvr + BaseHeaderSize) + (((index >> 1)) - 1), valToPut);
-							goto l123;
+							goto l124;
 						}
 						/* begin primitiveFailFor: */
 						reasonCode = (((((usqInt) (longAt(rcvr))) >> (instFormatFieldLSB())) & 15) >= 2
 							? PrimErrBadIndex
 							: PrimErrBadReceiver);
 						GIV(primFailCode) = reasonCode;
-					l123:	/* end commonVariable:at:put:cacheIndex: */;
+					l124:	/* end commonVariable:at:put:cacheIndex: */;
 					}
 					if (!GIV(primFailCode)) {
 						/* begin fetchNextBytecode */
@@ -8694,21 +8701,21 @@
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((rcvr & 1)) {
 					isString = 0;
-					goto l136;
+					goto l137;
 				}
 				/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 				assert(!((rcvr & 1)));
 				ccIndex = (((usqInt) (longAt(rcvr))) >> 12) & 0x1F;
 				if (ccIndex == 0) {
 					isString = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassByteString << ShiftForWord)));
-					goto l138;
+					goto l139;
 				}
 				isString = ClassByteStringCompactIndex == ccIndex;
-				goto l138;
+				goto l139;
 
 				isString = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassByteString << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l138:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l136:	/* end is:instanceOf:compactClassIndex: */;
+			l139:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l137:	/* end is:instanceOf:compactClassIndex: */;
 				if (isString) {
 					/* begin lengthOf: */
 					header = longAt(rcvr);
@@ -8723,36 +8730,36 @@
 					sz1 -= header & Size4Bit;
 					if (fmt <= 4) {
 						sz = ((usqInt) (sz1 - BaseHeaderSize)) >> ShiftForWord;
-						goto l134;
+						goto l135;
 					}
 					sz = (fmt < 8
 						? ((usqInt) (sz1 - BaseHeaderSize)) >> 2
 						: (sz1 - BaseHeaderSize) - (fmt & 3));
-				l134:	/* end lengthOf: */;
+				l135:	/* end lengthOf: */;
 					longAtPointerput(localSP, ((sz << 1) | 1));
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					goto l133;
+					goto l134;
 				}
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((rcvr & 1)) {
 					isArray = 0;
-					goto l137;
+					goto l138;
 				}
 				/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 				assert(!((rcvr & 1)));
 				ccIndex1 = (((usqInt) (longAt(rcvr))) >> 12) & 0x1F;
 				if (ccIndex1 == 0) {
 					isArray = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassArray << ShiftForWord)));
-					goto l139;
+					goto l140;
 				}
 				isArray = ClassArrayCompactIndex == ccIndex1;
-				goto l139;
+				goto l140;
 
 				isArray = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassArray << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l139:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l137:	/* end is:instanceOf:compactClassIndex: */;
+			l140:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l138:	/* end is:instanceOf:compactClassIndex: */;
 				if (isArray) {
 					/* begin lengthOf: */
 					header1 = longAt(rcvr);
@@ -8767,23 +8774,23 @@
 					sz2 -= header1 & Size4Bit;
 					if (fmt1 <= 4) {
 						sz = ((usqInt) (sz2 - BaseHeaderSize)) >> ShiftForWord;
-						goto l135;
+						goto l136;
 					}
 					sz = (fmt1 < 8
 						? ((usqInt) (sz2 - BaseHeaderSize)) >> 2
 						: (sz2 - BaseHeaderSize) - (fmt1 & 3));
-				l135:	/* end lengthOf: */;
+				l136:	/* end lengthOf: */;
 					longAtPointerput(localSP, ((sz << 1) | 1));
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					goto l133;
+					goto l134;
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((18 * 2) << ShiftForWord));
 				GIV(argumentCount) = 0;
 				goto normalSend;
 			}
-		l133:	/* end case */;
+		l134:	/* end case */;
 			break;
 		case 195:
 		case 355: /*99*/
@@ -8881,19 +8888,19 @@
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((rcvr & 1)) {
 					isBlock = 0;
-					goto l141;
+					goto l142;
 				}
 				/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 				assert(!((rcvr & 1)));
 				ccIndex = (((usqInt) (longAt(rcvr))) >> 12) & 0x1F;
 				if (ccIndex == 0) {
 					isBlock = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassBlockClosure << ShiftForWord)));
-					goto l142;
+					goto l143;
 				}
 				
 				isBlock = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassBlockClosure << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l142:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l141:	/* end is:instanceOf:compactClassIndex: */;
+			l143:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l142:	/* end is:instanceOf:compactClassIndex: */;
 				if (isBlock) {
 					/* begin externalizeIPandSP */
 					assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -8912,14 +8919,14 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l140;
+						goto l141;
 					}
 					GIV(primFailCode) = 0;
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((25 * 2) << ShiftForWord));
 				goto normalSend;
 			}
-		l140:	/* end case */;
+		l141:	/* end case */;
 			break;
 		case 202:
 			/* bytecodePrimValueWithArg */
@@ -8934,19 +8941,19 @@
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((rcvr & 1)) {
 					isBlock = 0;
-					goto l144;
+					goto l145;
 				}
 				/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 				assert(!((rcvr & 1)));
 				ccIndex = (((usqInt) (longAt(rcvr))) >> 12) & 0x1F;
 				if (ccIndex == 0) {
 					isBlock = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassBlockClosure << ShiftForWord)));
-					goto l145;
+					goto l146;
 				}
 				
 				isBlock = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassBlockClosure << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l145:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l144:	/* end is:instanceOf:compactClassIndex: */;
+			l146:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l145:	/* end is:instanceOf:compactClassIndex: */;
 				if (isBlock) {
 					/* begin externalizeIPandSP */
 					assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -8965,14 +8972,14 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l143;
+						goto l144;
 					}
 					GIV(primFailCode) = 0;
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((26 * 2) << ShiftForWord));
 				goto normalSend;
 			}
-		l143:	/* end case */;
+		l144:	/* end case */;
 			break;
 		case 203:
 		case 363: /*107*/
@@ -9021,13 +9028,13 @@
 				/* begin isClassOfNonImm:equalTo: */
 				if ((rcvr & 1)) {
 					successBoolean = 0;
-					goto l147;
+					goto l148;
 				}
 				cl = (((ccIndex = (((usqInt) (longAt(rcvr))) >> 12) & 0x1F)) == 0
 					? (longAt(rcvr - BaseHeaderSize)) & AllButTypeMask
 					: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
 				successBoolean = cl == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassPoint << ShiftForWord)));
-			l147:	/* end isClassOfNonImm:equalTo: */;
+			l148:	/* end isClassOfNonImm:equalTo: */;
 				if (!successBoolean) {
 
 					/* Don't overwrite an error code that has already been set. */
@@ -9041,14 +9048,14 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					goto l146;
+					goto l147;
 				}
 				GIV(primFailCode) = 0;
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((30 * 2) << ShiftForWord));
 				GIV(argumentCount) = 0;
 				goto normalSend;
 			}
-		l146:	/* end case */;
+		l147:	/* end case */;
 			break;
 		case 207:
 			/* bytecodePrimPointY */
@@ -9067,13 +9074,13 @@
 				/* begin isClassOfNonImm:equalTo: */
 				if ((rcvr & 1)) {
 					successBoolean = 0;
-					goto l149;
+					goto l150;
 				}
 				cl = (((ccIndex = (((usqInt) (longAt(rcvr))) >> 12) & 0x1F)) == 0
 					? (longAt(rcvr - BaseHeaderSize)) & AllButTypeMask
 					: longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
 				successBoolean = cl == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassPoint << ShiftForWord)));
-			l149:	/* end isClassOfNonImm:equalTo: */;
+			l150:	/* end isClassOfNonImm:equalTo: */;
 				if (!successBoolean) {
 
 					/* Don't overwrite an error code that has already been set. */
@@ -9087,14 +9094,14 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					goto l148;
+					goto l149;
 				}
 				GIV(primFailCode) = 0;
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((0x1F * 2) << ShiftForWord));
 				GIV(argumentCount) = 0;
 				goto normalSend;
 			}
-		l148:	/* end case */;
+		l149:	/* end case */;
 			break;
 		case 208:
 		case 209:
@@ -9267,7 +9274,7 @@
 				case 0:
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), GIV(falseObj));
-					goto l150;
+					goto l151;
 
 					break;
 				case 1:
@@ -9286,10 +9293,10 @@
 						: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 						assert(isContext(frameContext(localFP)));
 						context = longAt(localFP + FoxThisContext);
-						goto l151;
+						goto l152;
 					}
 					context = marryFrameSP(localFP, localSP);
-				l151:	/* end ensureFrameIsMarried:SP: */;
+				l152:	/* end ensureFrameIsMarried:SP: */;
 					thing = context;
 
 					break;
@@ -9304,7 +9311,7 @@
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), thing);
 			}
-		l150:	/* end case */;
+		l151:	/* end case */;
 			break;
 		case 336: /*80*/
 			/* bytecodePrimAdd */
@@ -9333,7 +9340,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l152;
+						goto l153;
 					}
 				}
 				else {
@@ -9348,77 +9355,77 @@
 					/* begin loadFloatOrIntFrom: */
 					if ((rcvr & 1)) {
 						rcvr1 = ((double) ((rcvr >> 1)) );
-						goto l153;
+						goto l154;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
 					if ((rcvr & 1)) {
 						isFloat = 0;
-						goto l155;
+						goto l156;
 					}
 					/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 					assert(!((rcvr & 1)));
 					ccIndex = (((usqInt) (longAt(rcvr))) >> 12) & 0x1F;
 					if (ccIndex == 0) {
 						isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-						goto l159;
+						goto l160;
 					}
 					isFloat = ClassFloatCompactIndex == ccIndex;
-					goto l159;
+					goto l160;
 
 					isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-				l159:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-				l155:	/* end is:instanceOf:compactClassIndex: */;
+				l160:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l156:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat) {
 						;
 						fetchFloatAtinto(rcvr + (BaseHeaderSize), result1);
 						rcvr1 = result1;
-						goto l156;
+						goto l157;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					rcvr1 = 0.0;
-				l156:	/* end floatValueOf: */;
-				l153:	/* end loadFloatOrIntFrom: */;
+				l157:	/* end floatValueOf: */;
+				l154:	/* end loadFloatOrIntFrom: */;
 					/* begin loadFloatOrIntFrom: */
 					if ((arg & 1)) {
 						arg1 = ((double) ((arg >> 1)) );
-						goto l154;
+						goto l155;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
 					if ((arg & 1)) {
 						isFloat1 = 0;
-						goto l157;
+						goto l158;
 					}
 					/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 					assert(!((arg & 1)));
 					ccIndex1 = (((usqInt) (longAt(arg))) >> 12) & 0x1F;
 					if (ccIndex1 == 0) {
 						isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-						goto l160;
+						goto l161;
 					}
 					isFloat1 = ClassFloatCompactIndex == ccIndex1;
-					goto l160;
+					goto l161;
 
 					isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-				l160:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-				l157:	/* end is:instanceOf:compactClassIndex: */;
+				l161:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l158:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat1) {
 						;
 						fetchFloatAtinto(arg + (BaseHeaderSize), result2);
 						arg1 = result2;
-						goto l158;
+						goto l159;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					arg1 = 0.0;
-				l158:	/* end floatValueOf: */;
-				l154:	/* end loadFloatOrIntFrom: */;
+				l159:	/* end floatValueOf: */;
+				l155:	/* end loadFloatOrIntFrom: */;
 					if (!GIV(primFailCode)) {
 						/* begin pop:thenPushFloat: */
 						longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 + arg1));
@@ -9433,14 +9440,14 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l152;
+						goto l153;
 					}
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((0 * 2) << ShiftForWord));
 				GIV(argumentCount) = 1;
 				goto normalSend;
 			}
-		l152:	/* end case */;
+		l153:	/* end case */;
 			break;
 		case 337: /*81*/
 			/* bytecodePrimSubtract */
@@ -9469,7 +9476,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l161;
+						goto l162;
 					}
 				}
 				else {
@@ -9484,77 +9491,77 @@
 					/* begin loadFloatOrIntFrom: */
 					if ((rcvr & 1)) {
 						rcvr1 = ((double) ((rcvr >> 1)) );
-						goto l162;
+						goto l163;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
 					if ((rcvr & 1)) {
 						isFloat = 0;
-						goto l164;
+						goto l165;
 					}
 					/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 					assert(!((rcvr & 1)));
 					ccIndex = (((usqInt) (longAt(rcvr))) >> 12) & 0x1F;
 					if (ccIndex == 0) {
 						isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-						goto l168;
+						goto l169;
 					}
 					isFloat = ClassFloatCompactIndex == ccIndex;
-					goto l168;
+					goto l169;
 
 					isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-				l168:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-				l164:	/* end is:instanceOf:compactClassIndex: */;
+				l169:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l165:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat) {
 						;
 						fetchFloatAtinto(rcvr + (BaseHeaderSize), result1);
 						rcvr1 = result1;
-						goto l165;
+						goto l166;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					rcvr1 = 0.0;
-				l165:	/* end floatValueOf: */;
-				l162:	/* end loadFloatOrIntFrom: */;
+				l166:	/* end floatValueOf: */;
+				l163:	/* end loadFloatOrIntFrom: */;
 					/* begin loadFloatOrIntFrom: */
 					if ((arg & 1)) {
 						arg1 = ((double) ((arg >> 1)) );
-						goto l163;
+						goto l164;
 					}
 					/* begin floatValueOf: */
 					/* begin is:instanceOf:compactClassIndex: */
 					if ((arg & 1)) {
 						isFloat1 = 0;
-						goto l166;
+						goto l167;
 					}
 					/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 					assert(!((arg & 1)));
 					ccIndex1 = (((usqInt) (longAt(arg))) >> 12) & 0x1F;
 					if (ccIndex1 == 0) {
 						isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-						goto l169;
+						goto l170;
 					}
 					isFloat1 = ClassFloatCompactIndex == ccIndex1;
-					goto l169;
+					goto l170;
 
 					isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-				l169:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-				l166:	/* end is:instanceOf:compactClassIndex: */;
+				l170:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+				l167:	/* end is:instanceOf:compactClassIndex: */;
 					if (isFloat1) {
 						;
 						fetchFloatAtinto(arg + (BaseHeaderSize), result2);
 						arg1 = result2;
-						goto l167;
+						goto l168;
 					}
 					/* begin primitiveFail */
 					if (!GIV(primFailCode)) {
 						GIV(primFailCode) = 1;
 					}
 					arg1 = 0.0;
-				l167:	/* end floatValueOf: */;
-				l163:	/* end loadFloatOrIntFrom: */;
+				l168:	/* end floatValueOf: */;
+				l164:	/* end loadFloatOrIntFrom: */;
 					if (!GIV(primFailCode)) {
 						/* begin pop:thenPushFloat: */
 						longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 - arg1));
@@ -9569,14 +9576,14 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l161;
+						goto l162;
 					}
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((1 * 2) << ShiftForWord));
 				GIV(argumentCount) = 1;
 				goto normalSend;
 			}
-		l161:	/* end case */;
+		l162:	/* end case */;
 			break;
 		case 338: /*82*/
 			/* bytecodePrimLessThanV4 */
@@ -9608,7 +9615,7 @@
 					else {
 						goto booleanCheatFalseV4;
 					}
-					goto l170;
+					goto l171;
 				}
 				/* begin initPrimCall */
 				GIV(primFailCode) = 0;
@@ -9616,77 +9623,77 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l171;
+					goto l172;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((rcvr & 1)) {
 					isFloat = 0;
-					goto l173;
+					goto l174;
 				}
 				/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 				assert(!((rcvr & 1)));
 				ccIndex = (((usqInt) (longAt(rcvr))) >> 12) & 0x1F;
 				if (ccIndex == 0) {
 					isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l177;
+					goto l178;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l177;
+				goto l178;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l177:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l173:	/* end is:instanceOf:compactClassIndex: */;
+			l178:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l174:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l174;
+					goto l175;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l174:	/* end floatValueOf: */;
-			l171:	/* end loadFloatOrIntFrom: */;
+			l175:	/* end floatValueOf: */;
+			l172:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l172;
+					goto l173;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((arg & 1)) {
 					isFloat1 = 0;
-					goto l175;
+					goto l176;
 				}
 				/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 				assert(!((arg & 1)));
 				ccIndex1 = (((usqInt) (longAt(arg))) >> 12) & 0x1F;
 				if (ccIndex1 == 0) {
 					isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l178;
+					goto l179;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l178;
+				goto l179;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l178:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l175:	/* end is:instanceOf:compactClassIndex: */;
+			l179:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l176:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l176;
+					goto l177;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l176:	/* end floatValueOf: */;
-			l172:	/* end loadFloatOrIntFrom: */;
+			l177:	/* end floatValueOf: */;
+			l173:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 < arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheatV4: */
@@ -9696,13 +9703,13 @@
 					else {
 						goto booleanCheatFalseV4;
 					}
-					goto l170;
+					goto l171;
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((2 * 2) << ShiftForWord));
 				GIV(argumentCount) = 1;
 				goto normalSend;
 			}
-		l170:	/* end case */;
+		l171:	/* end case */;
 			
 		booleanCheatTrueV4:
 			/* booleanCheatTrueV4 */
@@ -9725,7 +9732,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l316;
+						goto l318;
 					}
 					if (bytecode == 244) {
 
@@ -9735,7 +9742,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l316;
+						goto l318;
 					}
 					if (bytecode == 243) {
 
@@ -9746,7 +9753,7 @@
 						localIP = (localIP + offset) + 1;
 						currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-						goto l316;
+						goto l318;
 					}
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
@@ -9754,7 +9761,7 @@
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(trueObj));
 			}
-		l316:	/* end case */;
+		l318:	/* end case */;
 			break;
 		case 339: /*83*/
 			/* bytecodePrimGreaterThanV4 */
@@ -9786,7 +9793,7 @@
 					else {
 						/* goto booleanCheatFalseV4 */
 					}
-					goto l179;
+					goto l180;
 				}
 				/* begin initPrimCall */
 				GIV(primFailCode) = 0;
@@ -9794,77 +9801,77 @@
 				/* begin loadFloatOrIntFrom: */
 				if ((rcvr & 1)) {
 					rcvr1 = ((double) ((rcvr >> 1)) );
-					goto l180;
+					goto l181;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((rcvr & 1)) {
 					isFloat = 0;
-					goto l182;
+					goto l183;
 				}
 				/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 				assert(!((rcvr & 1)));
 				ccIndex = (((usqInt) (longAt(rcvr))) >> 12) & 0x1F;
 				if (ccIndex == 0) {
 					isFloat = ((longAt(rcvr - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l186;
+					goto l187;
 				}
 				isFloat = ClassFloatCompactIndex == ccIndex;
-				goto l186;
+				goto l187;
 
 				isFloat = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord)));
-			l186:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l182:	/* end is:instanceOf:compactClassIndex: */;
+			l187:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l183:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat) {
 					;
 					fetchFloatAtinto(rcvr + (BaseHeaderSize), result);
 					rcvr1 = result;
-					goto l183;
+					goto l184;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				rcvr1 = 0.0;
-			l183:	/* end floatValueOf: */;
-			l180:	/* end loadFloatOrIntFrom: */;
+			l184:	/* end floatValueOf: */;
+			l181:	/* end loadFloatOrIntFrom: */;
 				/* begin loadFloatOrIntFrom: */
 				if ((arg & 1)) {
 					arg1 = ((double) ((arg >> 1)) );
-					goto l181;
+					goto l182;
 				}
 				/* begin floatValueOf: */
 				/* begin is:instanceOf:compactClassIndex: */
 				if ((arg & 1)) {
 					isFloat1 = 0;
-					goto l184;
+					goto l185;
 				}
 				/* begin isClassOfNonImm:equalTo:compactClassIndex: */
 				assert(!((arg & 1)));
 				ccIndex1 = (((usqInt) (longAt(arg))) >> 12) & 0x1F;
 				if (ccIndex1 == 0) {
 					isFloat1 = ((longAt(arg - BaseHeaderSize)) & AllButTypeMask) == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord)));
-					goto l187;
+					goto l188;
 				}
 				isFloat1 = ClassFloatCompactIndex == ccIndex1;
-				goto l187;
+				goto l188;
 
 				isFloat1 = (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassFloat << ShiftForWord))) == (longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex1 - 1) << ShiftForWord)));
-			l187:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
-			l184:	/* end is:instanceOf:compactClassIndex: */;
+			l188:	/* end isClassOfNonImm:equalTo:compactClassIndex: */;
+			l185:	/* end is:instanceOf:compactClassIndex: */;
 				if (isFloat1) {
 					;
 					fetchFloatAtinto(arg + (BaseHeaderSize), result1);
 					arg1 = result1;
-					goto l185;
+					goto l186;
 				}
 				/* begin primitiveFail */
 				if (!GIV(primFailCode)) {
 					GIV(primFailCode) = 1;
 				}
 				arg1 = 0.0;
-			l185:	/* end floatValueOf: */;
-			l181:	/* end loadFloatOrIntFrom: */;
+			l186:	/* end floatValueOf: */;
+			l182:	/* end loadFloatOrIntFrom: */;
 				aBool = rcvr1 > arg1;
 				if (!GIV(primFailCode)) {
 					/* begin booleanCheatV4: */
@@ -9874,13 +9881,13 @@
 					else {
 						goto booleanCheatFalseV4;
 					}
-					goto l179;
+					goto l180;
 				}
 				GIV(messageSelector) = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SpecialSelectors << ShiftForWord))) + BaseHeaderSize) + ((3 * 2) << ShiftForWord));
 				GIV(argumentCount) = 1;
 				goto normalSend;
 			}
-		l179:	/* end case */;
+		l180:	/* end case */;
 			
 		booleanCheatFalseV4:
 			/* booleanCheatFalseV4 */
@@ -9904,7 +9911,7 @@
 					localIP = (localIP + (bytecode - 207)) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l317;
+					goto l319;
 				}
 				if (bytecode == 244) {
 
@@ -9915,14 +9922,14 @@
 					localIP = (localIP + offset) + 1;
 					currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector);
 
-					goto l317;
+					goto l319;
 				}
 				currentBytecode = bytecode + GIV(bytecodeSetSelector);
 
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), GIV(falseObj));
 			}
-		l317:	/* end case */;
+		l319:	/* end case */;

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list