[Vm-dev] [commit][3550] CogVm source as per VMMaker.oscog-eem.1627

commits at squeakvm.org commits at squeakvm.org
Sun Jan 10 19:22:22 UTC 2016


Revision: 3550
Author:   eliot
Date:     2016-01-10 11:22:21 -0800 (Sun, 10 Jan 2016)
Log Message:
-----------
CogVm source as per VMMaker.oscog-eem.1627

Slang: Avoid having to mark quick methods as <inline: true> by providing
#asSpecifiedOrQuick as an inlining policy.

x64: Add relevant stack alignment deifnitions to sqCogStackAlignment.h.

Modified Paths:
--------------
    branches/Cog/nsspursrc/vm/cogit.h
    branches/Cog/nsspursrc/vm/cogitARMv5.c
    branches/Cog/nsspursrc/vm/cogitIA32.c
    branches/Cog/nsspursrc/vm/cogitMIPSEL.c
    branches/Cog/platforms/Cross/vm/sqCogStackAlignment.h
    branches/Cog/spur64src/vm/cogit.h
    branches/Cog/spur64src/vm/cogitX64.c
    branches/Cog/spur64src/vm/cointerp.c
    branches/Cog/spur64src/vm/cointerp.h
    branches/Cog/spur64src/vm/gcc3x-cointerp.c
    branches/Cog/spursistasrc/vm/cogit.h
    branches/Cog/spursistasrc/vm/cogitARMv5.c
    branches/Cog/spursistasrc/vm/cogitIA32.c
    branches/Cog/spursistasrc/vm/cogitMIPSEL.c
    branches/Cog/spursrc/vm/cogit.h
    branches/Cog/spursrc/vm/cogitARMv5.c
    branches/Cog/spursrc/vm/cogitIA32.c
    branches/Cog/spursrc/vm/cogitMIPSEL.c
    branches/Cog/src/vm/cogit.h
    branches/Cog/src/vm/cogitARMv5.c
    branches/Cog/src/vm/cogitIA32.c
    branches/Cog/src/vm/cogitMIPSEL.c

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

Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h	2016-01-09 20:37:15 UTC (rev 3549)
+++ branches/Cog/nsspursrc/vm/cogit.h	2016-01-10 19:22:21 UTC (rev 3550)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1626 uuid: 5153564f-5657-42ca-a4c9-84b55b308375
+	CCodeGenerator VMMaker.oscog-eem.1627 uuid: f97c427f-d97d-413b-9697-368e50fbf958
  */
 
 

Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitARMv5.c	2016-01-09 20:37:15 UTC (rev 3549)
+++ branches/Cog/nsspursrc/vm/cogitARMv5.c	2016-01-10 19:22:21 UTC (rev 3550)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1626 uuid: 5153564f-5657-42ca-a4c9-84b55b308375
+	CCodeGenerator VMMaker.oscog-eem.1627 uuid: f97c427f-d97d-413b-9697-368e50fbf958
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1626 uuid: 5153564f-5657-42ca-a4c9-84b55b308375
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1627 uuid: f97c427f-d97d-413b-9697-368e50fbf958
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1626 uuid: 5153564f-5657-42ca-a4c9-84b55b308375 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1627 uuid: f97c427f-d97d-413b-9697-368e50fbf958 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -404,7 +404,6 @@
 static sqInt NoDbgRegParms availableRegisterOrNoneFor(AbstractInstruction * self_in_availableRegisterOrNoneFor, sqInt liveRegsMask);
 static AbstractInstruction * NoDbgRegParms cloneLiteralFrom(AbstractInstruction * self_in_cloneLiteralFrom, AbstractInstruction *existingLiteral);
 static sqInt NoDbgRegParms genAlignCStackSavingRegistersnumArgswordAlignment(AbstractInstruction * self_in_genAlignCStackSavingRegistersnumArgswordAlignment, sqInt saveRegs, sqInt numArgs, sqInt alignment);
-static AbstractInstruction * NoDbgRegParms generateICacheFlush(AbstractInstruction * self_in_generateICacheFlush);
 static AbstractInstruction * NoDbgRegParms genWriteCResultIntoReg(AbstractInstruction * self_in_genWriteCResultIntoReg, sqInt abstractRegister);
 static AbstractInstruction * NoDbgRegParms getJmpTarget(AbstractInstruction * self_in_getJmpTarget);
 static sqInt NoDbgRegParms inCurrentCompilation(AbstractInstruction * self_in_inCurrentCompilation, sqInt operand);
@@ -417,7 +416,6 @@
 static AbstractInstruction * NoDbgRegParms jmpTarget(AbstractInstruction * self_in_jmpTarget, AbstractInstruction *anAbstractInstruction);
 static usqInt NoDbgRegParms labelOffset(AbstractInstruction * self_in_labelOffset);
 static sqInt NoDbgRegParms literal32BeforeFollowingAddress(AbstractInstruction * self_in_literal32BeforeFollowingAddress, sqInt followingAddress);
-static sqInt NoDbgRegParms numCheckFeaturesOpcodes(AbstractInstruction * self_in_numCheckFeaturesOpcodes);
 static AbstractInstruction * NoDbgRegParms relocateJumpLongBeforeFollowingAddressby(AbstractInstruction * self_in_relocateJumpLongBeforeFollowingAddressby, sqInt pc, sqInt delta);
 static AbstractInstruction * NoDbgRegParms relocateJumpLongConditionalBeforeFollowingAddressby(AbstractInstruction * self_in_relocateJumpLongConditionalBeforeFollowingAddressby, sqInt pc, sqInt delta);
 static AbstractInstruction * NoDbgRegParms resolveJumpTarget(AbstractInstruction * self_in_resolveJumpTarget);
@@ -431,7 +429,6 @@
 static sqInt NoDbgRegParms andrnimmror(AbstractInstruction * self_in_andrnimmror, sqInt destReg, sqInt srcReg, sqInt immediate, sqInt rot);
 static sqInt NoDbgRegParms bicsrnimmror(AbstractInstruction * self_in_bicsrnimmror, sqInt destReg, sqInt srcReg, sqInt immediate, sqInt rot);
 static sqInt NoDbgRegParms bl(AbstractInstruction * self_in_bl, sqInt offset);
-static sqInt NoDbgRegParms byteReadsZeroExtend(AbstractInstruction * self_in_byteReadsZeroExtend);
 static sqInt NoDbgRegParms b(AbstractInstruction * self_in_b, sqInt offset);
 static sqInt NoDbgRegParms callerSavedRegisterMask(AbstractInstruction * self_in_callerSavedRegisterMask);
 static sqInt NoDbgRegParms callInstructionByteSize(AbstractInstruction * self_in_callInstructionByteSize);
@@ -460,15 +457,10 @@
 static AbstractInstruction * NoDbgRegParms genPushRegisterArgsForAbortMissNumArgs(AbstractInstruction * self_in_genPushRegisterArgsForAbortMissNumArgs, sqInt numArgs);
 static AbstractInstruction * NoDbgRegParms genPushRegisterArgsForNumArgsscratchReg(AbstractInstruction * self_in_genPushRegisterArgsForNumArgsscratchReg, sqInt numArgs, sqInt ignored);
 static sqInt NoDbgRegParms genRemoveNArgsFromStack(AbstractInstruction * self_in_genRemoveNArgsFromStack, sqInt n);
-static AbstractInstruction * NoDbgRegParms genRestoreRegs(AbstractInstruction * self_in_genRestoreRegs);
 static AbstractInstruction * NoDbgRegParms genRestoreRegsExcept(AbstractInstruction * self_in_genRestoreRegsExcept, sqInt abstractReg);
-static AbstractInstruction * NoDbgRegParms genSaveRegForCCall(AbstractInstruction * self_in_genSaveRegForCCall);
 static AbstractInstruction * NoDbgRegParms genSaveRegsForCCall(AbstractInstruction * self_in_genSaveRegsForCCall);
 static sqInt NoDbgRegParms genSaveStackPointers(AbstractInstruction * self_in_genSaveStackPointers);
 static AbstractInstruction * NoDbgRegParms genSubstituteReturnAddress(AbstractInstruction * self_in_genSubstituteReturnAddress, sqInt retpc);
-static sqInt NoDbgRegParms hasLinkRegister(AbstractInstruction * self_in_hasLinkRegister);
-static sqInt NoDbgRegParms hasPCDependentInstruction(AbstractInstruction * self_in_hasPCDependentInstruction);
-static sqInt NoDbgRegParms hasPCRegister(AbstractInstruction * self_in_hasPCRegister);
 static sqInt NoDbgRegParms instructionBeforeAddress(AbstractInstruction * self_in_instructionBeforeAddress, sqInt followingAddress);
 static sqInt NoDbgRegParms instructionIsBLX(AbstractInstruction * self_in_instructionIsBLX, sqInt instr);
 static sqInt NoDbgRegParms instructionIsBL(AbstractInstruction * self_in_instructionIsBL, sqInt instr);
@@ -496,7 +488,6 @@
 static sqInt NoDbgRegParms ldrrnplusImm(AbstractInstruction * self_in_ldrrnplusImm, sqInt destReg, sqInt baseReg, sqInt immediate12bitValue);
 static sqInt NoDbgRegParms ldrrnplusimm(AbstractInstruction * self_in_ldrrnplusimm, sqInt destReg, sqInt baseReg, sqInt u, sqInt immediate12bitValue);
 static sqInt NoDbgRegParms ldrrnrm(AbstractInstruction * self_in_ldrrnrm, sqInt destReg, sqInt baseReg, sqInt offsetReg);
-static sqInt NoDbgRegParms leafCallStackPointerDelta(AbstractInstruction * self_in_leafCallStackPointerDelta);
 static sqInt NoDbgRegParms loadCwInto(AbstractInstruction * self_in_loadCwInto, sqInt destReg);
 static sqInt NoDbgRegParms loadPICLiteralByteSize(AbstractInstruction * self_in_loadPICLiteralByteSize);
 static sqInt NoDbgRegParms machineCodeBytes(AbstractInstruction * self_in_machineCodeBytes);
@@ -512,7 +503,6 @@
 static sqInt NoDbgRegParms movrn(AbstractInstruction * self_in_movrn, sqInt destReg, sqInt srcReg);
 static sqInt NoDbgRegParms msr(AbstractInstruction * self_in_msr, sqInt flags);
 static sqInt NoDbgRegParms mvnimmror(AbstractInstruction * self_in_mvnimmror, sqInt destReg, sqInt immediate8bitValue, sqInt rot);
-static sqInt NoDbgRegParms numICacheFlushOpcodes(AbstractInstruction * self_in_numICacheFlushOpcodes);
 static sqInt NoDbgRegParms numIntRegArgs(AbstractInstruction * self_in_numIntRegArgs);
 static sqInt NoDbgRegParms orrimmror(AbstractInstruction * self_in_orrimmror, sqInt destReg, sqInt immediate8bitValue, sqInt rot);
 static AbstractInstruction * NoDbgRegParms padIfPossibleWithStopsFromto(AbstractInstruction * self_in_padIfPossibleWithStopsFromto, sqInt startAddr, sqInt endAddr);
@@ -876,17 +866,13 @@
 static sqInt NoDbgRegParms genShiftAwaySmallIntegerTagsInScratchReg(sqInt scratchReg);
 static sqInt NoDbgRegParms inlineCacheTagForInstance(sqInt oop);
 static AbstractInstruction * NoDbgRegParms jumpNotSmallIntegerUnsignedValueInRegister(sqInt reg);
-static sqInt log2BytesPerWord(void);
 static sqInt NoDbgRegParms markAndTraceCacheTagLiteralinatpc(sqInt literal, CogMethod *cogMethodOrNil, usqInt address);
 static sqInt numCharacterBits(void);
 static sqInt numSmallIntegerBits(void);
-static sqInt numSmallIntegerTagBits(void);
 static sqInt NoDbgRegParms validInlineCacheTag(usqInt classIndexOrTagPattern);
-static sqInt allYoungObjectsAgeInFullGC(void);
 static sqInt NoDbgRegParms cacheTagIsMarked(sqInt cacheTag);
 static sqInt NoDbgRegParms checkValidOopReference(sqInt anOop);
 static sqInt NoDbgRegParms couldBeObject(sqInt literal);
-static sqInt createsClosuresInline(void);
 static sqInt NoDbgRegParms genActiveContextTrampolineLargeinBlockcalled(sqInt isLarge, sqInt isInBlock, char *aString);
 static AbstractInstruction * NoDbgRegParms genAllocFloatValueintoscratchRegscratchReg(sqInt dpreg, sqInt resultReg, sqInt scratch1, sqInt scratch2);
 static sqInt NoDbgRegParms genConvertCharacterToCodeInReg(sqInt reg);
@@ -927,7 +913,6 @@
 static sqInt NoDbgRegParms genStoreSourceRegslotIndexdestRegscratchReginFrameneedsStoreCheck(sqInt sourceReg, sqInt index, sqInt destReg, sqInt scratchReg, sqInt inFrame, sqInt needsStoreCheck);
 static sqInt NoDbgRegParms genStoreSourceRegslotIndexintoNewObjectInDestReg(sqInt sourceReg, sqInt index, sqInt destReg);
 static sqInt getActiveContextAllocatesInMachineCode(void);
-static sqInt hasSpurMemoryManagerAPI(void);
 static sqInt NoDbgRegParms inlineCacheTagIsYoung(sqInt cacheTag);
 static AbstractInstruction * NoDbgRegParms jumpNotCharacterUnsignedValueInRegister(sqInt reg);
 static sqInt NoDbgRegParms markAndTraceLiteralinatpc(sqInt literal, CogMethod *cogMethodOrNil, usqInt address);
@@ -940,7 +925,6 @@
 static sqInt NoDbgRegParms remapOop(sqInt objOop);
 static sqInt NoDbgRegParms shouldAnnotateObjectReference(sqInt anOop);
 static sqInt NoDbgRegParms slotOffsetOfInstVarIndex(sqInt index);
-static sqInt smallIntegerIsOnlyImmediateType(void);
 static sqInt NoDbgRegParms cmpC32RTempByteSize(AbstractInstruction * self_in_cmpC32RTempByteSize);
 static AbstractInstruction * NoDbgRegParms concretizeLiteral(AbstractInstruction * self_in_concretizeLiteral);
 static sqInt NoDbgRegParms inlineCacheTagAt(AbstractInstruction * self_in_inlineCacheTagAt, sqInt callSiteReturnAddress);
@@ -1020,8 +1004,8 @@
 static sqInt genLongUnconditionalBackwardJump(void);
 static sqInt genLongUnconditionalForwardJump(void);
 static sqInt NoDbgRegParms genLookupForPerformNumArgs(sqInt numArgs);
-static AbstractInstruction * NoDbgRegParms genMoveConstantR(sqInt constant, sqInt reg);
-static sqInt NoDbgRegParms genMoveTrueR(sqInt reg);
+static AbstractInstruction * NoDbgRegParms genMoveFalseR(sqInt reg);
+static AbstractInstruction * NoDbgRegParms genMoveTrueR(sqInt reg);
 static sqInt NoDbgRegParms genMustBeBooleanTrampolineForcalled(sqInt boolean, char *trampolineName);
 static void NoDbgRegParms genPrimReturnEnterCogCodeEnilopmart(sqInt profiling);
 static sqInt genPushClosureTempsBytecode(void);
@@ -2043,17 +2027,6 @@
 	return 0;
 }
 
-
-/*	A dummy routine.
-	Processors that can generate code to flush the icache can override. */
-
-	/* CogAbstractInstruction>>#generateICacheFlush */
-static AbstractInstruction * NoDbgRegParms
-generateICacheFlush(AbstractInstruction * self_in_generateICacheFlush)
-{
-	return self_in_generateICacheFlush;
-}
-
 	/* CogAbstractInstruction>>#genWriteCResultIntoReg: */
 static AbstractInstruction * NoDbgRegParms
 genWriteCResultIntoReg(AbstractInstruction * self_in_genWriteCResultIntoReg, sqInt abstractRegister)
@@ -2205,17 +2178,6 @@
 }
 
 
-/*	If the priocessor has a feature check facility answer the number
-	of opcodes required to compile an accessor for the feature. */
-
-	/* CogAbstractInstruction>>#numCheckFeaturesOpcodes */
-static sqInt NoDbgRegParms
-numCheckFeaturesOpcodes(AbstractInstruction * self_in_numCheckFeaturesOpcodes)
-{
-	return 0;
-}
-
-
 /*	We assume here that calls and jumps look the same as regards their
 	displacement. This works on at least x86, ARM and x86_64. Processors on
 	which that isn't the
@@ -2383,14 +2345,7 @@
 	return (AL << 28) | (((10 | (1 & 1)) << 24) | ((((usqInt) offset) >> 2) & 0xFFFFFF));
 }
 
-	/* CogARMCompiler>>#byteReadsZeroExtend */
-static sqInt NoDbgRegParms
-byteReadsZeroExtend(AbstractInstruction * self_in_byteReadsZeroExtend)
-{
-	return 1;
-}
 
-
 /*	return a B offset instruction; offset is signed 24bits of WORD offset, so
 	+_32Mbyte range
 	B offset
@@ -6040,20 +5995,6 @@
 }
 
 
-/*	Restore the general purpose registers for a trampoline call. */
-/*	Restore none, because the ARM ABI only defines callee saved registers, no
-	caller-saved regs.
- */
-/*	cogit gen: LDMFD operand: 16r7F */
-
-	/* CogARMCompiler>>#genRestoreRegs */
-static AbstractInstruction * NoDbgRegParms
-genRestoreRegs(AbstractInstruction * self_in_genRestoreRegs)
-{
-	return self_in_genRestoreRegs;
-}
-
-
 /*	Restore the general purpose registers except for abstractReg for a
 	trampoline call.
  */
@@ -6069,22 +6010,6 @@
 }
 
 
-/*	Save the general purpose registers for a call into the C run-time from a
-	trampoline. 
- */
-/*	Save none, because the ARM ABI only defines callee saved registers, no
-	caller-saved regs.
- */
-/*	cogit gen: STMFD operand: 16r7F */
-
-	/* CogARMCompiler>>#genSaveRegForCCall */
-static AbstractInstruction * NoDbgRegParms
-genSaveRegForCCall(AbstractInstruction * self_in_genSaveRegForCCall)
-{
-	return self_in_genSaveRegForCCall;
-}
-
-
 /*	Save the general purpose registers for a trampoline call. */
 /*	Save none, because the ARM ABI only defines callee saved registers, no
 	caller-saved regs.
@@ -6130,36 +6055,7 @@
 	return checkLiteralforInstruction(retpc, genoperandoperand(MoveCwR, retpc, LR));
 }
 
-	/* CogARMCompiler>>#hasLinkRegister */
-static sqInt NoDbgRegParms
-hasLinkRegister(AbstractInstruction * self_in_hasLinkRegister)
-{
-	return 1;
-}
 
-
-/*	e.g. B, BL: Branch, Branch and Link */
-
-	/* CogARMCompiler>>#hasPCDependentInstruction */
-static sqInt NoDbgRegParms
-hasPCDependentInstruction(AbstractInstruction * self_in_hasPCDependentInstruction)
-{
-	return 1;
-}
-
-
-/*	Answer if the processor has a generally addressable pc register, which ARM
-	does. 
- */
-
-	/* CogARMCompiler>>#hasPCRegister */
-static sqInt NoDbgRegParms
-hasPCRegister(AbstractInstruction * self_in_hasPCRegister)
-{
-	return 1;
-}
-
-
 /*	Answer the instruction immediately preceding followingAddress. */
 
 	/* CogARMCompiler>>#instructionBeforeAddress: */
@@ -6503,24 +6399,6 @@
 }
 
 
-/*	Answer the delta from the stack pointer after a call to the stack pointer
-	immediately prior to the call. This is used to compute the stack pointer
-	immediately prior to call from within a leaf routine, which in turn is
-	used to capture the c stack pointer to use in trampolines back into the C
-	run-time.  */
-/*	This might actually be false, since directly after a call, lr, fp and
-	variable registers need be pushed onto the stack. It depends on the
-	implementation of call.
- */
-
-	/* CogARMCompiler>>#leafCallStackPointerDelta */
-static sqInt NoDbgRegParms
-leafCallStackPointerDelta(AbstractInstruction * self_in_leafCallStackPointerDelta)
-{
-	return 0;
-}
-
-
 /*	Load the operand into the destination register, answering
 	the size of the instructions generated to do so. */
 
@@ -6796,17 +6674,6 @@
 	return (((AL << 28) | ((1 << 25) | ((MoveNotOpcode << 21) | (0 << 20)))) | ((0 << 16) | (destReg << 12))) | ((((((usqInt) rot) >> 1) << 8) | immediate8bitValue) & 0xFFF);
 }
 
-
-/*	ARM needs to do icache flushing when code is written */
-/*	for now return 0 to skip it and probably blow up */
-
-	/* CogARMCompiler>>#numICacheFlushOpcodes */
-static sqInt NoDbgRegParms
-numICacheFlushOpcodes(AbstractInstruction * self_in_numICacheFlushOpcodes)
-{
-	return 0;
-}
-
 	/* CogARMCompiler>>#numIntRegArgs */
 static sqInt NoDbgRegParms
 numIntRegArgs(AbstractInstruction * self_in_numIntRegArgs)
@@ -9201,7 +9068,8 @@
 			genRestoreRegsExcept(backEnd, resultRegOrNone);
 		}
 		else {
-			genRestoreRegs(backEnd);
+			/* begin genRestoreRegs */
+			((AbstractInstruction *) backEnd);
 		}
 	}
 }
@@ -9334,7 +9202,7 @@
 	compileCallFornumArgsargargargargresultRegsaveRegs(aRoutine, numArgs, regOrConst0, regOrConst1, regOrConst2, regOrConst3, resultRegOrNone, saveRegs);
 	genLoadStackPointers(backEnd);
 	if (pushLinkReg
-	 && (hasLinkRegister(backEnd))) {
+	 && (1)) {
 		/* begin PopR: */
 		genoperand(PopR, PCReg);
 
@@ -10309,7 +10177,6 @@
     sqInt fixupSize;
     sqInt opcodeSize;
     sqInt quickConstant;
-    sqInt quickConstant1;
     sqInt startAddress;
 
 	/* begin allocateOpcodes:bytecodes: */
@@ -10326,11 +10193,11 @@
 	genoperand(PushR, VarBaseReg);
 	((AbstractInstruction *) backEnd);
 	/* begin maybeEstablishVarBase */
-	quickConstant1 = varBaseAddress();
+	quickConstant = varBaseAddress();
 	/* begin gen:quickConstant:operand: */
-	anInstruction1 = genoperandoperand(MoveCqR, quickConstant1, VarBaseReg);
+	anInstruction1 = genoperandoperand(MoveCqR, quickConstant, VarBaseReg);
 	if (usesOutOfLineLiteral(anInstruction1)) {
-		(anInstruction1->dependent = locateLiteral(quickConstant1));
+		(anInstruction1->dependent = locateLiteral(quickConstant));
 	}
 	((AbstractInstruction *) backEnd);
 	if (captureFramePointer) {
@@ -10568,12 +10435,12 @@
 generateMapAtstart(sqInt addressOrNull, sqInt startAddress)
 {
     unsigned char annotation;
-    sqInt delta;
+    usqInt delta;
     sqInt i;
     AbstractInstruction *instruction;
     sqInt length;
-    sqInt location;
-    sqInt mapEntry;
+    usqInt location;
+    usqInt mapEntry;
     sqInt maxDelta;
     usqInt mcpc;
 
@@ -11465,8 +11332,6 @@
     sqInt fixupSize1;
     sqInt fixupSize2;
     sqInt numberOfAbstractOpcodes;
-    sqInt numberOfAbstractOpcodes1;
-    sqInt numberOfAbstractOpcodes2;
     sqInt opcodeSize;
     sqInt opcodeSize1;
     sqInt opcodeSize2;
@@ -15487,8 +15352,8 @@
 char *
 whereIsMaybeCodeThing(sqInt anOop)
 {
-	if (oopisGreaterThanOrEqualToandLessThan(anOop, cogCodeBase(), limitAddress)) {
-		if (oopisLessThan(anOop, minCogMethodAddress())) {
+	if (oopisGreaterThanOrEqualToandLessThan(anOop, codeBase, limitAddress)) {
+		if (oopisLessThan(anOop, methodZoneBase)) {
 			return " is in generated runtime";
 		}
 		if (oopisLessThan(anOop, mzFreeStart)) {
@@ -15626,7 +15491,7 @@
 
 	/* FP jumps are a little weird */
 	jumpCond = jumpOpcodeGenerator(0);
-	/* begin genMoveConstant:R: */
+	/* begin genMoveFalseR: */
 	constant = falseObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -15642,7 +15507,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpCond, genMoveConstantR(trueObject(), ReceiverResultReg));
+	jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -15947,8 +15812,8 @@
     sqInt reg1;
 
 	reg = ReceiverResultReg;
-	if ((methodNumArgs()) > 0) {
-		if ((methodNumArgs()) > 1) {
+	if (methodOrBlockNumArgs > 0) {
+		if (methodOrBlockNumArgs > 1) {
 			return UnimplementedPrimitive;
 		}
 		/* begin genLoadArgAtDepth:into: */
@@ -16451,7 +16316,7 @@
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg0Reg, ReceiverResultReg);
 	jumpTrue = genConditionalBranchoperand(jumpOpcode, 0);
-	/* begin genMoveConstant:R: */
+	/* begin genMoveFalseR: */
 	constant = falseObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -16467,7 +16332,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpTrue, genMoveConstantR(trueObject(), ReceiverResultReg));
+	jmpTarget(jumpTrue, genMoveTrueR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -16522,7 +16387,7 @@
 
 	/* FP jumps are a little weird */
 	jumpCond = jumpFPOpcodeGenerator(0);
-	/* begin genMoveConstant:R: */
+	/* begin genMoveFalseR: */
 	constant = falseObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -16538,7 +16403,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpCond, genMoveConstantR(trueObject(), ReceiverResultReg));
+	jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -16990,9 +16855,6 @@
     AbstractInstruction *jumpShortsOutOfBounds;
     AbstractInstruction *jumpWordsOutOfBounds;
     AbstractInstruction *jumpWordTooBig;
-    sqInt operandOne;
-    sqInt operandOne1;
-    sqInt operandOne2;
     sqInt quickConstant;
     sqInt quickConstant1;
     sqInt quickConstant2;
@@ -17000,6 +16862,9 @@
     sqInt quickConstant4;
     sqInt quickConstant5;
     sqInt quickConstant6;
+    sqInt quickConstant7;
+    sqInt quickConstant8;
+    sqInt quickConstant9;
 
 
 	/* c.f. StackInterpreter>>stSizeOf: SpurMemoryManager>>lengthOf:format: fixedFieldsOf:format:length: */
@@ -17012,27 +16877,27 @@
 	jumpBadIndex = genJumpNotSmallInteger(Arg0Reg);
 	genConvertSmallIntegerToIntegerInReg(Arg1Reg);
 	/* begin SubCq:R: */
-	anInstruction13 = genoperandoperand(SubCqR, 1, Arg1Reg);
-	if (usesOutOfLineLiteral(anInstruction13)) {
-		(anInstruction13->dependent = locateLiteral(1));
+	anInstruction = genoperandoperand(SubCqR, 1, Arg1Reg);
+	if (usesOutOfLineLiteral(anInstruction)) {
+		(anInstruction->dependent = locateLiteral(1));
 	}
 	genGetFormatOfintoleastSignificantHalfOfBaseHeaderIntoScratch(ReceiverResultReg, (formatReg = SendNumArgsReg), TempReg);
 	genGetNumSlotsOfinto(ReceiverResultReg, ClassReg);
 	/* begin CmpCq:R: */
 	quickConstant = firstByteFormat();
 	/* begin gen:quickConstant:operand: */
-	anInstruction = genoperandoperand(CmpCqR, quickConstant, formatReg);
-	if (usesOutOfLineLiteral(anInstruction)) {
-		(anInstruction->dependent = locateLiteral(quickConstant));
+	anInstruction1 = genoperandoperand(CmpCqR, quickConstant, formatReg);
+	if (usesOutOfLineLiteral(anInstruction1)) {
+		(anInstruction1->dependent = locateLiteral(quickConstant));
 	}
 	/* begin JumpAboveOrEqual: */
 	jumpIsBytes = genConditionalBranchoperand(JumpAboveOrEqual, ((sqInt)0));
 	/* begin CmpCq:R: */
 	quickConstant1 = arrayFormat();
 	/* begin gen:quickConstant:operand: */
-	anInstruction1 = genoperandoperand(CmpCqR, quickConstant1, formatReg);
-	if (usesOutOfLineLiteral(anInstruction1)) {
-		(anInstruction1->dependent = locateLiteral(quickConstant1));
+	anInstruction2 = genoperandoperand(CmpCqR, quickConstant1, formatReg);
+	if (usesOutOfLineLiteral(anInstruction2)) {
+		(anInstruction2->dependent = locateLiteral(quickConstant1));
 	}
 	/* begin JumpZero: */
 	jumpIsArray = genConditionalBranchoperand(JumpZero, ((sqInt)0));
@@ -17041,27 +16906,27 @@
 	/* begin CmpCq:R: */
 	quickConstant2 = weakArrayFormat();
 	/* begin gen:quickConstant:operand: */
-	anInstruction2 = genoperandoperand(CmpCqR, quickConstant2, formatReg);
-	if (usesOutOfLineLiteral(anInstruction2)) {
-		(anInstruction2->dependent = locateLiteral(quickConstant2));
+	anInstruction3 = genoperandoperand(CmpCqR, quickConstant2, formatReg);
+	if (usesOutOfLineLiteral(anInstruction3)) {
+		(anInstruction3->dependent = locateLiteral(quickConstant2));
 	}
 	/* begin JumpBelowOrEqual: */
 	jumpHasFixedFields = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin CmpCq:R: */
 	quickConstant3 = firstShortFormat();
 	/* begin gen:quickConstant:operand: */
-	anInstruction3 = genoperandoperand(CmpCqR, quickConstant3, formatReg);
-	if (usesOutOfLineLiteral(anInstruction3)) {
-		(anInstruction3->dependent = locateLiteral(quickConstant3));
+	anInstruction4 = genoperandoperand(CmpCqR, quickConstant3, formatReg);
+	if (usesOutOfLineLiteral(anInstruction4)) {
+		(anInstruction4->dependent = locateLiteral(quickConstant3));
 	}
 	/* begin JumpAboveOrEqual: */
 	jumpIsShorts = genConditionalBranchoperand(JumpAboveOrEqual, ((sqInt)0));
 	/* begin CmpCq:R: */
 	quickConstant4 = firstLongFormat();
 	/* begin gen:quickConstant:operand: */
-	anInstruction4 = genoperandoperand(CmpCqR, quickConstant4, formatReg);
-	if (usesOutOfLineLiteral(anInstruction4)) {
-		(anInstruction4->dependent = locateLiteral(quickConstant4));
+	anInstruction5 = genoperandoperand(CmpCqR, quickConstant4, formatReg);
+	if (usesOutOfLineLiteral(anInstruction5)) {
+		(anInstruction5->dependent = locateLiteral(quickConstant4));
 	}
 	/* begin JumpAboveOrEqual: */
 	jumpIsWords = genConditionalBranchoperand(JumpAboveOrEqual, ((sqInt)0));
@@ -17070,9 +16935,9 @@
 	jumpNotIndexable = genoperand(Jump, ((sqInt)0));
 	jmpTarget(jumpIsBytes, gLogicalShiftLeftCqR(shiftForWord(), ClassReg));
 	/* begin AndCq:R: */
-	anInstruction5 = genoperandoperand(AndCqR, BytesPerWord - 1, formatReg);
-	if (usesOutOfLineLiteral(anInstruction5)) {
-		(anInstruction5->dependent = locateLiteral(BytesPerWord - 1));
+	anInstruction6 = genoperandoperand(AndCqR, BytesPerWord - 1, formatReg);
+	if (usesOutOfLineLiteral(anInstruction6)) {
+		(anInstruction6->dependent = locateLiteral(BytesPerWord - 1));
 	}
 	/* begin SubR:R: */
 	genoperandoperand(SubRR, formatReg, ClassReg);
@@ -17081,9 +16946,9 @@
 	/* begin JumpBelowOrEqual: */
 	jumpBytesOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin AddCq:R: */
-	anInstruction6 = genoperandoperand(AddCqR, BaseHeaderSize, Arg1Reg);
-	if (usesOutOfLineLiteral(anInstruction6)) {
-		(anInstruction6->dependent = locateLiteral(BaseHeaderSize));
+	anInstruction7 = genoperandoperand(AddCqR, BaseHeaderSize, Arg1Reg);
+	if (usesOutOfLineLiteral(anInstruction7)) {
+		(anInstruction7->dependent = locateLiteral(BaseHeaderSize));
 	}
 	/* begin MoveXbr:R:R: */
 	genoperandoperandoperand(MoveXbrRR, Arg1Reg, ReceiverResultReg, ReceiverResultReg);
@@ -17097,9 +16962,9 @@
 	genoperand(RetN, 0);
 	jmpTarget(jumpIsShorts, gLogicalShiftLeftCqR((shiftForWord()) - 1, ClassReg));
 	/* begin AndCq:R: */
-	anInstruction7 = genoperandoperand(AndCqR, 1, formatReg);
-	if (usesOutOfLineLiteral(anInstruction7)) {
-		(anInstruction7->dependent = locateLiteral(1));
+	anInstruction8 = genoperandoperand(AndCqR, 1, formatReg);
+	if (usesOutOfLineLiteral(anInstruction8)) {
+		(anInstruction8->dependent = locateLiteral(1));
 	}
 	/* begin SubR:R: */
 	genoperandoperand(SubRR, formatReg, ClassReg);
@@ -17110,9 +16975,9 @@
 	/* begin AddR:R: */
 	genoperandoperand(AddRR, Arg1Reg, ReceiverResultReg);
 	/* begin MoveM16:r:R: */
-	anInstruction14 = genoperandoperandoperand(MoveM16rR, BaseHeaderSize, ReceiverResultReg, ReceiverResultReg);
-	if (usesOutOfLineLiteral(anInstruction14)) {
-		(anInstruction14->dependent = locateLiteral(BaseHeaderSize));
+	anInstruction9 = genoperandoperandoperand(MoveM16rR, BaseHeaderSize, ReceiverResultReg, ReceiverResultReg);
+	if (usesOutOfLineLiteral(anInstruction9)) {
+		(anInstruction9->dependent = locateLiteral(BaseHeaderSize));
 	}
 	/* begin Jump: */
 	genoperand(Jump, ((sqInt)convertToIntAndReturn));
@@ -17120,20 +16985,20 @@
 	/* begin JumpBelowOrEqual: */
 	jumpWordsOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin AddCq:R: */
-	operandOne = ((usqInt) BaseHeaderSize) >> (shiftForWord());
-	/* begin checkQuickConstant:forInstruction: */
-	anInstruction8 = genoperandoperand(AddCqR, operandOne, Arg1Reg);
-	if (usesOutOfLineLiteral(anInstruction8)) {
-		(anInstruction8->dependent = locateLiteral(operandOne));
+	quickConstant5 = ((usqInt) BaseHeaderSize) >> (shiftForWord());
+	/* begin gen:quickConstant:operand: */
+	anInstruction10 = genoperandoperand(AddCqR, quickConstant5, Arg1Reg);
+	if (usesOutOfLineLiteral(anInstruction10)) {
+		(anInstruction10->dependent = locateLiteral(quickConstant5));
 	}
 	/* begin MoveXwr:R:R: */
 	genoperandoperandoperand(MoveXwrRR, Arg1Reg, ReceiverResultReg, TempReg);
 	/* begin SubCq:R: */
-	quickConstant6 = ((usqInt) BaseHeaderSize) >> (shiftForWord());
+	quickConstant9 = ((usqInt) BaseHeaderSize) >> (shiftForWord());
 	/* begin gen:quickConstant:operand: */
-	anInstruction15 = genoperandoperand(SubCqR, quickConstant6, Arg1Reg);
-	if (usesOutOfLineLiteral(anInstruction15)) {
-		(anInstruction15->dependent = locateLiteral(quickConstant6));
+	anInstruction11 = genoperandoperand(SubCqR, quickConstant9, Arg1Reg);
+	if (usesOutOfLineLiteral(anInstruction11)) {
+		(anInstruction11->dependent = locateLiteral(quickConstant9));
 	}
 	jumpWordTooBig = jumpNotSmallIntegerUnsignedValueInRegister(TempReg);
 	/* begin MoveR:R: */
@@ -17144,9 +17009,9 @@
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, TempReg, formatReg);
 	/* begin CmpCq:R: */
-	anInstruction9 = genoperandoperand(CmpCqR, ClassMethodContextCompactIndex, TempReg);
-	if (usesOutOfLineLiteral(anInstruction9)) {
-		(anInstruction9->dependent = locateLiteral(ClassMethodContextCompactIndex));
+	anInstruction12 = genoperandoperand(CmpCqR, ClassMethodContextCompactIndex, TempReg);
+	if (usesOutOfLineLiteral(anInstruction12)) {
+		(anInstruction12->dependent = locateLiteral(ClassMethodContextCompactIndex));
 	}
 	/* begin JumpZero: */
 	jumpIsContext = genConditionalBranchoperand(JumpZero, ((sqInt)0));
@@ -17158,11 +17023,11 @@
 	genoperand(PopR, ClassReg);
 	genConvertSmallIntegerToIntegerInReg(formatReg);
 	/* begin AndCq:R: */
-	quickConstant5 = fixedFieldsOfClassFormatMask();
+	quickConstant6 = fixedFieldsOfClassFormatMask();
 	/* begin gen:quickConstant:operand: */
-	anInstruction10 = genoperandoperand(AndCqR, quickConstant5, formatReg);
-	if (usesOutOfLineLiteral(anInstruction10)) {
-		(anInstruction10->dependent = locateLiteral(quickConstant5));
+	anInstruction13 = genoperandoperand(AndCqR, quickConstant6, formatReg);
+	if (usesOutOfLineLiteral(anInstruction13)) {
+		(anInstruction13->dependent = locateLiteral(quickConstant6));
 	}
 	/* begin SubR:R: */
 	genoperandoperand(SubRR, formatReg, ClassReg);
@@ -17173,11 +17038,11 @@
 	/* begin AddR:R: */
 	genoperandoperand(AddRR, formatReg, Arg1Reg);
 	/* begin AddCq:R: */
-	operandOne1 = ((usqInt) BaseHeaderSize) >> (shiftForWord());
-	/* begin checkQuickConstant:forInstruction: */
-	anInstruction11 = genoperandoperand(AddCqR, operandOne1, Arg1Reg);
-	if (usesOutOfLineLiteral(anInstruction11)) {
-		(anInstruction11->dependent = locateLiteral(operandOne1));
+	quickConstant7 = ((usqInt) BaseHeaderSize) >> (shiftForWord());
+	/* begin gen:quickConstant:operand: */
+	anInstruction14 = genoperandoperand(AddCqR, quickConstant7, Arg1Reg);
+	if (usesOutOfLineLiteral(anInstruction14)) {
+		(anInstruction14->dependent = locateLiteral(quickConstant7));
 	}
 	/* begin MoveXwr:R:R: */
 	genoperandoperandoperand(MoveXwrRR, Arg1Reg, ReceiverResultReg, ReceiverResultReg);
@@ -17189,11 +17054,11 @@
 	/* begin JumpBelowOrEqual: */
 	jumpArrayOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin AddCq:R: */
-	operandOne2 = ((usqInt) BaseHeaderSize) >> (shiftForWord());
-	/* begin checkQuickConstant:forInstruction: */
-	anInstruction12 = genoperandoperand(AddCqR, operandOne2, Arg1Reg);
-	if (usesOutOfLineLiteral(anInstruction12)) {
-		(anInstruction12->dependent = locateLiteral(operandOne2));
+	quickConstant8 = ((usqInt) BaseHeaderSize) >> (shiftForWord());
+	/* begin gen:quickConstant:operand: */
+	anInstruction15 = genoperandoperand(AddCqR, quickConstant8, Arg1Reg);
+	if (usesOutOfLineLiteral(anInstruction15)) {
+		(anInstruction15->dependent = locateLiteral(quickConstant8));
 	}
 	/* begin MoveXwr:R:R: */
 	genoperandoperandoperand(MoveXwrRR, Arg1Reg, ReceiverResultReg, ReceiverResultReg);
@@ -17804,7 +17669,6 @@
     AbstractInstruction *jumpTooSmall;
     AbstractInstruction *jumpUnhashed;
     sqInt maxSlots;
-    sqInt operandOne;
     sqInt quickConstant;
     sqInt quickConstant1;
     sqInt quickConstant2;
@@ -17814,6 +17678,7 @@
     sqInt quickConstant6;
     sqInt quickConstant7;
     sqInt quickConstant8;
+    sqInt quickConstant9;
     AbstractInstruction *skip;
     sqInt wordConstant;
 
@@ -17867,7 +17732,7 @@
 	checkLiteralforInstruction(address, genoperandoperand(MoveAwR, address, Arg1Reg));
 	genLoadSlotsourceRegdestReg(InstanceSpecificationIndex, ReceiverResultReg, instSpecReg);
 	/* begin LogicalShiftRightCq:R: */
-	quickConstant1 = (fixedFieldsFieldWidth()) + (numSmallIntegerTagBits());
+	quickConstant1 = (fixedFieldsFieldWidth()) + 1;
 	genoperandoperand(LogicalShiftRightCqR, quickConstant1, instSpecReg);
 	/* begin AndCq:R: */
 	quickConstant2 = formatMask();
@@ -17923,9 +17788,9 @@
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, TempReg, instSpecReg);
 	/* begin PushCq: */
-	anInstruction14 = genoperand(PushCq, 0);
-	if (usesOutOfLineLiteral(anInstruction14)) {
-		(anInstruction14->dependent = locateLiteral(0));
+	anInstruction7 = genoperand(PushCq, 0);
+	if (usesOutOfLineLiteral(anInstruction7)) {
+		(anInstruction7->dependent = locateLiteral(0));
 	}
 	/* begin Jump: */
 	jumpLongPrepDone = genoperand(Jump, ((sqInt)0));
@@ -17935,16 +17800,16 @@
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, TempReg, instSpecReg);
 	/* begin MoveCq:R: */
-	anInstruction15 = genoperandoperand(MoveCqR, BytesPerWord, TempReg);
-	if (usesOutOfLineLiteral(anInstruction15)) {
-		(anInstruction15->dependent = locateLiteral(BytesPerWord));
+	anInstruction8 = genoperandoperand(MoveCqR, BytesPerWord, TempReg);
+	if (usesOutOfLineLiteral(anInstruction8)) {
+		(anInstruction8->dependent = locateLiteral(BytesPerWord));
 	}
 	/* begin SubR:R: */
 	genoperandoperand(SubRR, instSpecReg, TempReg);
 	/* begin AndCq:R: */
-	anInstruction7 = genoperandoperand(AndCqR, BytesPerWord - 1, TempReg);
-	if (usesOutOfLineLiteral(anInstruction7)) {
-		(anInstruction7->dependent = locateLiteral(BytesPerWord - 1));
+	anInstruction9 = genoperandoperand(AndCqR, BytesPerWord - 1, TempReg);
+	if (usesOutOfLineLiteral(anInstruction9)) {
+		(anInstruction9->dependent = locateLiteral(BytesPerWord - 1));
 	}
 	/* begin LogicalShiftLeftCq:R: */
 	quickConstant7 = formatShift();
@@ -17952,16 +17817,16 @@
 	/* begin AddR:R: */
 	genoperandoperand(AddRR, TempReg, halfHeaderReg);
 	/* begin AddCq:R: */
-	anInstruction8 = genoperandoperand(AddCqR, BytesPerWord - 1, instSpecReg);
-	if (usesOutOfLineLiteral(anInstruction8)) {
-		(anInstruction8->dependent = locateLiteral(BytesPerWord - 1));
+	anInstruction10 = genoperandoperand(AddCqR, BytesPerWord - 1, instSpecReg);
+	if (usesOutOfLineLiteral(anInstruction10)) {
+		(anInstruction10->dependent = locateLiteral(BytesPerWord - 1));
 	}
 	/* begin LogicalShiftRightCq:R: */
 	genoperandoperand(LogicalShiftRightCqR, shiftForWord(), instSpecReg);
 	/* begin PushCq: */
-	anInstruction16 = genoperand(PushCq, 0);
-	if (usesOutOfLineLiteral(anInstruction16)) {
-		(anInstruction16->dependent = locateLiteral(0));
+	anInstruction11 = genoperand(PushCq, 0);
+	if (usesOutOfLineLiteral(anInstruction11)) {
+		(anInstruction11->dependent = locateLiteral(0));
 	}
 	/* begin Jump: */
 	jumpBytePrepDone = genoperand(Jump, ((sqInt)0));
@@ -17976,40 +17841,40 @@
 	checkLiteralforInstruction(wordConstant, genoperand(PushCw, wordConstant));
 	jmpTarget(jumpBytePrepDone, jmpTarget(jumpLongPrepDone, gLabel()));
 	/* begin MoveR:Mw:r: */
-	anInstruction17 = genoperandoperandoperand(MoveRMwr, halfHeaderReg, 0, Arg1Reg);
-	if (usesOutOfLineLiteral(anInstruction17)) {
-		(anInstruction17->dependent = locateLiteral(0));
+	anInstruction12 = genoperandoperandoperand(MoveRMwr, halfHeaderReg, 0, Arg1Reg);
+	if (usesOutOfLineLiteral(anInstruction12)) {
+		(anInstruction12->dependent = locateLiteral(0));
 	}
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, instSpecReg, halfHeaderReg);
 	/* begin CmpCq:R: */
-	anInstruction9 = genoperandoperand(CmpCqR, 0, byteSizeReg);
-	if (usesOutOfLineLiteral(anInstruction9)) {
-		(anInstruction9->dependent = locateLiteral(0));
+	anInstruction13 = genoperandoperand(CmpCqR, 0, byteSizeReg);
+	if (usesOutOfLineLiteral(anInstruction13)) {
+		(anInstruction13->dependent = locateLiteral(0));
 	}
 	/* begin JumpNonZero: */
 	jumpHasSlots = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 	/* begin MoveCq:R: */
-	anInstruction18 = genoperandoperand(MoveCqR, BaseHeaderSize * 2, byteSizeReg);
-	if (usesOutOfLineLiteral(anInstruction18)) {
-		(anInstruction18->dependent = locateLiteral(BaseHeaderSize * 2));
+	anInstruction14 = genoperandoperand(MoveCqR, BaseHeaderSize * 2, byteSizeReg);
+	if (usesOutOfLineLiteral(anInstruction14)) {
+		(anInstruction14->dependent = locateLiteral(BaseHeaderSize * 2));
 	}
 	/* begin Jump: */
 	skip = genoperand(Jump, ((sqInt)0));
 	jmpTarget(jumpHasSlots, gMoveRR(byteSizeReg, TempReg));
 	/* begin AndCq:R: */
-	anInstruction10 = genoperandoperand(AndCqR, 1, TempReg);
-	if (usesOutOfLineLiteral(anInstruction10)) {
-		(anInstruction10->dependent = locateLiteral(1));
+	anInstruction15 = genoperandoperand(AndCqR, 1, TempReg);
+	if (usesOutOfLineLiteral(anInstruction15)) {
+		(anInstruction15->dependent = locateLiteral(1));
 	}
 	/* begin AddR:R: */
 	genoperandoperand(AddRR, TempReg, byteSizeReg);
 	/* begin AddCq:R: */
-	operandOne = BaseHeaderSize / BytesPerWord;
-	/* begin checkQuickConstant:forInstruction: */
-	anInstruction11 = genoperandoperand(AddCqR, operandOne, byteSizeReg);
-	if (usesOutOfLineLiteral(anInstruction11)) {
-		(anInstruction11->dependent = locateLiteral(operandOne));
+	quickConstant8 = BaseHeaderSize / BytesPerWord;
+	/* begin gen:quickConstant:operand: */
+	anInstruction16 = genoperandoperand(AddCqR, quickConstant8, byteSizeReg);
+	if (usesOutOfLineLiteral(anInstruction16)) {
+		(anInstruction16->dependent = locateLiteral(quickConstant8));
 	}
 	/* begin LogicalShiftLeftCq:R: */
 	genoperandoperand(LogicalShiftLeftCqR, shiftForWord(), byteSizeReg);
@@ -18017,11 +17882,11 @@
 	/* begin AddR:R: */
 	genoperandoperand(AddRR, Arg1Reg, byteSizeReg);
 	/* begin CmpCq:R: */
-	quickConstant8 = getScavengeThreshold();
+	quickConstant9 = getScavengeThreshold();
 	/* begin gen:quickConstant:operand: */
-	anInstruction12 = genoperandoperand(CmpCqR, quickConstant8, byteSizeReg);
-	if (usesOutOfLineLiteral(anInstruction12)) {
-		(anInstruction12->dependent = locateLiteral(quickConstant8));
+	anInstruction17 = genoperandoperand(CmpCqR, quickConstant9, byteSizeReg);
+	if (usesOutOfLineLiteral(anInstruction17)) {
+		(anInstruction17->dependent = locateLiteral(quickConstant9));
 	}
 	/* begin JumpAboveOrEqual: */
 	jumpNoSpace = genConditionalBranchoperand(JumpAboveOrEqual, ((sqInt)0));
@@ -18032,35 +17897,35 @@
 	/* begin gen:operand:literal: */
 	checkLiteralforInstruction(address1, genoperandoperand(MoveRAw, byteSizeReg, address1));
 	/* begin MoveR:Mw:r: */
-	anInstruction19 = genoperandoperandoperand(MoveRMwr, halfHeaderReg, 4, ReceiverResultReg);
-	if (usesOutOfLineLiteral(anInstruction19)) {
-		(anInstruction19->dependent = locateLiteral(4));
+	anInstruction18 = genoperandoperandoperand(MoveRMwr, halfHeaderReg, 4, ReceiverResultReg);
+	if (usesOutOfLineLiteral(anInstruction18)) {
+		(anInstruction18->dependent = locateLiteral(4));
 	}
 	/* begin PopR: */
 	genoperand(PopR, fillReg);
 	/* begin PopR: */
 	genoperand(PopR, TempReg);
 	/* begin LoadEffectiveAddressMw:r:R: */
-	anInstruction20 = genoperandoperandoperand(LoadEffectiveAddressMwrR, BaseHeaderSize, ReceiverResultReg, Arg1Reg);
+	anInstruction19 = genoperandoperandoperand(LoadEffectiveAddressMwrR, BaseHeaderSize, ReceiverResultReg, Arg1Reg);
+	if (usesOutOfLineLiteral(anInstruction19)) {
+		(anInstruction19->dependent = locateLiteral(BaseHeaderSize));
+	}
+	/* begin MoveR:Mw:r: */
+	anInstruction20 = genoperandoperandoperand(MoveRMwr, fillReg, 0, Arg1Reg);
 	if (usesOutOfLineLiteral(anInstruction20)) {
-		(anInstruction20->dependent = locateLiteral(BaseHeaderSize));
+		(anInstruction20->dependent = locateLiteral(0));
 	}
+	fillLoop = anInstruction20;
 	/* begin MoveR:Mw:r: */
-	anInstruction21 = genoperandoperandoperand(MoveRMwr, fillReg, 0, Arg1Reg);
+	anInstruction21 = genoperandoperandoperand(MoveRMwr, fillReg, 4, Arg1Reg);
 	if (usesOutOfLineLiteral(anInstruction21)) {
-		(anInstruction21->dependent = locateLiteral(0));
+		(anInstruction21->dependent = locateLiteral(4));
 	}
-	fillLoop = anInstruction21;
-	/* begin MoveR:Mw:r: */
-	anInstruction22 = genoperandoperandoperand(MoveRMwr, fillReg, 4, Arg1Reg);
+	/* begin AddCq:R: */
+	anInstruction22 = genoperandoperand(AddCqR, 8, Arg1Reg);
 	if (usesOutOfLineLiteral(anInstruction22)) {
-		(anInstruction22->dependent = locateLiteral(4));
+		(anInstruction22->dependent = locateLiteral(8));
 	}
-	/* begin AddCq:R: */
-	anInstruction13 = genoperandoperand(AddCqR, 8, Arg1Reg);
-	if (usesOutOfLineLiteral(anInstruction13)) {
-		(anInstruction13->dependent = locateLiteral(8));
-	}
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg1Reg, byteSizeReg);
 	/* begin JumpAbove: */
@@ -18122,7 +17987,6 @@
     AbstractInstruction *jumpTooBig;
     AbstractInstruction *jumpUnhashed;
     AbstractInstruction *jumpVariableOrEphemeron;
-    sqInt operandOne;
     sqInt quickConstant;
     sqInt quickConstant1;
     sqInt quickConstant2;
@@ -18131,13 +17995,14 @@
     sqInt quickConstant5;
     sqInt quickConstant6;
     sqInt quickConstant7;
+    sqInt quickConstant8;
     AbstractInstruction *skip;
 
-	if ((methodNumArgs()) == 1) {
+	if (methodOrBlockNumArgs == 1) {
 		return genPrimitiveMirrorNew();
 	}
 
-	if ((methodNumArgs()) != 0) {
+	if (methodOrBlockNumArgs != 0) {
 		return UnimplementedPrimitive;
 	}
 
@@ -18198,40 +18063,40 @@
 	/* begin AddR:R: */
 	genoperandoperand(AddRR, TempReg, halfHeaderReg);
 	/* begin MoveR:Mw:r: */
-	anInstruction9 = genoperandoperandoperand(MoveRMwr, halfHeaderReg, 0, Arg1Reg);
-	if (usesOutOfLineLiteral(anInstruction9)) {
-		(anInstruction9->dependent = locateLiteral(0));
+	anInstruction4 = genoperandoperandoperand(MoveRMwr, halfHeaderReg, 0, Arg1Reg);
+	if (usesOutOfLineLiteral(anInstruction4)) {
+		(anInstruction4->dependent = locateLiteral(0));
 	}
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, instSpecReg, halfHeaderReg);
 	/* begin CmpCq:R: */
-	anInstruction4 = genoperandoperand(CmpCqR, 0, byteSizeReg);
-	if (usesOutOfLineLiteral(anInstruction4)) {
-		(anInstruction4->dependent = locateLiteral(0));
+	anInstruction5 = genoperandoperand(CmpCqR, 0, byteSizeReg);
+	if (usesOutOfLineLiteral(anInstruction5)) {
+		(anInstruction5->dependent = locateLiteral(0));
 	}
 	/* begin JumpNonZero: */
 	jumpHasSlots = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 	/* begin MoveCq:R: */
-	anInstruction10 = genoperandoperand(MoveCqR, BaseHeaderSize * 2, byteSizeReg);
-	if (usesOutOfLineLiteral(anInstruction10)) {
-		(anInstruction10->dependent = locateLiteral(BaseHeaderSize * 2));
+	anInstruction6 = genoperandoperand(MoveCqR, BaseHeaderSize * 2, byteSizeReg);
+	if (usesOutOfLineLiteral(anInstruction6)) {
+		(anInstruction6->dependent = locateLiteral(BaseHeaderSize * 2));
 	}
 	/* begin Jump: */
 	skip = genoperand(Jump, ((sqInt)0));
 	jmpTarget(jumpHasSlots, gMoveRR(byteSizeReg, TempReg));
 	/* begin AndCq:R: */
-	anInstruction5 = genoperandoperand(AndCqR, 1, TempReg);
-	if (usesOutOfLineLiteral(anInstruction5)) {
-		(anInstruction5->dependent = locateLiteral(1));
+	anInstruction7 = genoperandoperand(AndCqR, 1, TempReg);
+	if (usesOutOfLineLiteral(anInstruction7)) {
+		(anInstruction7->dependent = locateLiteral(1));
 	}
 	/* begin AddR:R: */
 	genoperandoperand(AddRR, TempReg, byteSizeReg);
 	/* begin AddCq:R: */
-	operandOne = BaseHeaderSize / BytesPerWord;
-	/* begin checkQuickConstant:forInstruction: */
-	anInstruction6 = genoperandoperand(AddCqR, operandOne, byteSizeReg);
-	if (usesOutOfLineLiteral(anInstruction6)) {
-		(anInstruction6->dependent = locateLiteral(operandOne));
+	quickConstant6 = BaseHeaderSize / BytesPerWord;
+	/* begin gen:quickConstant:operand: */
+	anInstruction8 = genoperandoperand(AddCqR, quickConstant6, byteSizeReg);
+	if (usesOutOfLineLiteral(anInstruction8)) {
+		(anInstruction8->dependent = locateLiteral(quickConstant6));
 	}
 	/* begin LogicalShiftLeftCq:R: */
 	genoperandoperand(LogicalShiftLeftCqR, shiftForWord(), byteSizeReg);
@@ -18239,11 +18104,11 @@
 	/* begin AddR:R: */
 	genoperandoperand(AddRR, Arg1Reg, byteSizeReg);
 	/* begin CmpCq:R: */
-	quickConstant6 = getScavengeThreshold();
+	quickConstant7 = getScavengeThreshold();
 	/* begin gen:quickConstant:operand: */
-	anInstruction7 = genoperandoperand(CmpCqR, quickConstant6, byteSizeReg);
-	if (usesOutOfLineLiteral(anInstruction7)) {
-		(anInstruction7->dependent = locateLiteral(quickConstant6));
+	anInstruction9 = genoperandoperand(CmpCqR, quickConstant7, byteSizeReg);
+	if (usesOutOfLineLiteral(anInstruction9)) {
+		(anInstruction9->dependent = locateLiteral(quickConstant7));
 	}
 	/* begin JumpAboveOrEqual: */
 	jumpNoSpace = genConditionalBranchoperand(JumpAboveOrEqual, ((sqInt)0));
@@ -18254,38 +18119,38 @@
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, Arg1Reg, ReceiverResultReg);
 	/* begin MoveR:Mw:r: */
-	anInstruction11 = genoperandoperandoperand(MoveRMwr, halfHeaderReg, 4, Arg1Reg);
-	if (usesOutOfLineLiteral(anInstruction11)) {
-		(anInstruction11->dependent = locateLiteral(4));
+	anInstruction10 = genoperandoperandoperand(MoveRMwr, halfHeaderReg, 4, Arg1Reg);
+	if (usesOutOfLineLiteral(anInstruction10)) {
+		(anInstruction10->dependent = locateLiteral(4));
 	}
 	/* begin LoadEffectiveAddressMw:r:R: */
-	anInstruction12 = genoperandoperandoperand(LoadEffectiveAddressMwrR, BaseHeaderSize, ReceiverResultReg, Arg1Reg);
-	if (usesOutOfLineLiteral(anInstruction12)) {
-		(anInstruction12->dependent = locateLiteral(BaseHeaderSize));
+	anInstruction11 = genoperandoperandoperand(LoadEffectiveAddressMwrR, BaseHeaderSize, ReceiverResultReg, Arg1Reg);
+	if (usesOutOfLineLiteral(anInstruction11)) {
+		(anInstruction11->dependent = locateLiteral(BaseHeaderSize));
 	}
 	/* begin MoveCq:R: */
-	quickConstant7 = nilObject();
+	quickConstant8 = nilObject();
 	/* begin gen:quickConstant:operand: */
-	anInstruction13 = genoperandoperand(MoveCqR, quickConstant7, fillReg);
+	anInstruction12 = genoperandoperand(MoveCqR, quickConstant8, fillReg);
+	if (usesOutOfLineLiteral(anInstruction12)) {
+		(anInstruction12->dependent = locateLiteral(quickConstant8));
+	}
+	/* begin MoveR:Mw:r: */
+	anInstruction13 = genoperandoperandoperand(MoveRMwr, fillReg, 0, Arg1Reg);
 	if (usesOutOfLineLiteral(anInstruction13)) {
-		(anInstruction13->dependent = locateLiteral(quickConstant7));
+		(anInstruction13->dependent = locateLiteral(0));
 	}
+	fillLoop = anInstruction13;
 	/* begin MoveR:Mw:r: */
-	anInstruction14 = genoperandoperandoperand(MoveRMwr, fillReg, 0, Arg1Reg);
+	anInstruction14 = genoperandoperandoperand(MoveRMwr, fillReg, 4, Arg1Reg);
 	if (usesOutOfLineLiteral(anInstruction14)) {
-		(anInstruction14->dependent = locateLiteral(0));
+		(anInstruction14->dependent = locateLiteral(4));
 	}
-	fillLoop = anInstruction14;
-	/* begin MoveR:Mw:r: */
-	anInstruction15 = genoperandoperandoperand(MoveRMwr, fillReg, 4, Arg1Reg);
+	/* begin AddCq:R: */
+	anInstruction15 = genoperandoperand(AddCqR, 8, Arg1Reg);
 	if (usesOutOfLineLiteral(anInstruction15)) {
-		(anInstruction15->dependent = locateLiteral(4));
+		(anInstruction15->dependent = locateLiteral(8));
 	}
-	/* begin AddCq:R: */
-	anInstruction8 = genoperandoperand(AddCqR, 8, Arg1Reg);
-	if (usesOutOfLineLiteral(anInstruction8)) {
-		(anInstruction8->dependent = locateLiteral(8));
-	}
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg1Reg, byteSizeReg);
 	/* begin JumpAbove: */
@@ -18354,7 +18219,6 @@
     AbstractInstruction *jumpNoSpace;
     AbstractInstruction *jumpUnhashed;
     sqInt maxSlots;
-    sqInt operandOne;
     sqInt quickConstant;
     sqInt quickConstant1;
     sqInt quickConstant2;
@@ -18363,14 +18227,15 @@
     sqInt quickConstant5;
     sqInt quickConstant6;
     sqInt quickConstant7;
+    sqInt quickConstant8;
     AbstractInstruction *skip;
     sqInt wordConstant;
 
-	if ((methodNumArgs()) == 2) {
+	if (methodOrBlockNumArgs == 2) {
 		return genPrimitiveMirrorNewWithArg();
 	}
 
-	if ((methodNumArgs()) != 1) {
+	if (methodOrBlockNumArgs != 1) {
 		return UnimplementedPrimitive;
 	}
 	/* begin genLoadArgAtDepth:into: */
@@ -18396,7 +18261,7 @@
 	jumpNElementsNonInt = genJumpNotSmallInteger(Arg0Reg);
 	genLoadSlotsourceRegdestReg(InstanceSpecificationIndex, ReceiverResultReg, instSpecReg);
 	/* begin LogicalShiftRightCq:R: */
-	quickConstant = (fixedFieldsFieldWidth()) + (numSmallIntegerTagBits());
+	quickConstant = (fixedFieldsFieldWidth()) + 1;
 	genoperandoperand(LogicalShiftRightCqR, quickConstant, instSpecReg);
 	/* begin AndCq:R: */
 	quickConstant1 = formatMask();
@@ -18452,9 +18317,9 @@
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, TempReg, instSpecReg);
 	/* begin PushCq: */
-	anInstruction12 = genoperand(PushCq, 0);
-	if (usesOutOfLineLiteral(anInstruction12)) {
-		(anInstruction12->dependent = locateLiteral(0));
+	anInstruction5 = genoperand(PushCq, 0);
+	if (usesOutOfLineLiteral(anInstruction5)) {
+		(anInstruction5->dependent = locateLiteral(0));
 	}
 	/* begin Jump: */
 	jumpLongPrepDone = genoperand(Jump, ((sqInt)0));
@@ -18464,16 +18329,16 @@
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, TempReg, instSpecReg);
 	/* begin MoveCq:R: */
-	anInstruction13 = genoperandoperand(MoveCqR, BytesPerWord, TempReg);
-	if (usesOutOfLineLiteral(anInstruction13)) {
-		(anInstruction13->dependent = locateLiteral(BytesPerWord));
+	anInstruction6 = genoperandoperand(MoveCqR, BytesPerWord, TempReg);
+	if (usesOutOfLineLiteral(anInstruction6)) {
+		(anInstruction6->dependent = locateLiteral(BytesPerWord));
 	}
 	/* begin SubR:R: */
 	genoperandoperand(SubRR, instSpecReg, TempReg);
 	/* begin AndCq:R: */
-	anInstruction5 = genoperandoperand(AndCqR, BytesPerWord - 1, TempReg);
-	if (usesOutOfLineLiteral(anInstruction5)) {
-		(anInstruction5->dependent = locateLiteral(BytesPerWord - 1));
+	anInstruction7 = genoperandoperand(AndCqR, BytesPerWord - 1, TempReg);
+	if (usesOutOfLineLiteral(anInstruction7)) {
+		(anInstruction7->dependent = locateLiteral(BytesPerWord - 1));
 	}
 	/* begin LogicalShiftLeftCq:R: */
 	quickConstant6 = formatShift();
@@ -18481,16 +18346,16 @@
 	/* begin AddR:R: */
 	genoperandoperand(AddRR, TempReg, halfHeaderReg);
 	/* begin AddCq:R: */
-	anInstruction6 = genoperandoperand(AddCqR, BytesPerWord - 1, instSpecReg);
-	if (usesOutOfLineLiteral(anInstruction6)) {
-		(anInstruction6->dependent = locateLiteral(BytesPerWord - 1));
+	anInstruction8 = genoperandoperand(AddCqR, BytesPerWord - 1, instSpecReg);
+	if (usesOutOfLineLiteral(anInstruction8)) {
+		(anInstruction8->dependent = locateLiteral(BytesPerWord - 1));
 	}
 	/* begin LogicalShiftRightCq:R: */
 	genoperandoperand(LogicalShiftRightCqR, shiftForWord(), instSpecReg);
 	/* begin PushCq: */
-	anInstruction14 = genoperand(PushCq, 0);
-	if (usesOutOfLineLiteral(anInstruction14)) {

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list