[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