[Vm-dev] [commit][3556] CogVM source as per VMMaker.oscog-eem.1640
commits at squeakvm.org
commits at squeakvm.org
Sat Jan 16 04:45:20 UTC 2016
Revision: 3556
Author: eliot
Date: 2016-01-15 20:45:20 -0800 (Fri, 15 Jan 2016)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1640
Spur64-bit Cogit:
Use the same approach for boxed float ops as for SmallFloat ops.
Modified Paths:
--------------
branches/Cog/spur64src/vm/cogit.h
branches/Cog/spur64src/vm/cogitX64.c
Property Changed:
----------------
branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
- Fri Jan 15 20:20:41 PST 2016
+ Fri Jan 15 20:44:34 PST 2016
Modified: branches/Cog/spur64src/vm/cogit.h
===================================================================
--- branches/Cog/spur64src/vm/cogit.h 2016-01-16 04:22:18 UTC (rev 3555)
+++ branches/Cog/spur64src/vm/cogit.h 2016-01-16 04:45:20 UTC (rev 3556)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1639 uuid: 0607da54-875d-4632-95f3-ce5b0d6d3bf9
+ CCodeGenerator VMMaker.oscog-eem.1640 uuid: 5fd87422-b235-4b98-b023-c3be3586cca5
*/
Modified: branches/Cog/spur64src/vm/cogitX64.c
===================================================================
--- branches/Cog/spur64src/vm/cogitX64.c 2016-01-16 04:22:18 UTC (rev 3555)
+++ branches/Cog/spur64src/vm/cogitX64.c 2016-01-16 04:45:20 UTC (rev 3556)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1639 uuid: 0607da54-875d-4632-95f3-ce5b0d6d3bf9
+ CCodeGenerator VMMaker.oscog-eem.1640 uuid: 5fd87422-b235-4b98-b023-c3be3586cca5
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1639 uuid: 0607da54-875d-4632-95f3-ce5b0d6d3bf9
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1640 uuid: 5fd87422-b235-4b98-b023-c3be3586cca5
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1639 uuid: 0607da54-875d-4632-95f3-ce5b0d6d3bf9 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1640 uuid: 5fd87422-b235-4b98-b023-c3be3586cca5 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -679,8 +679,6 @@
static sqInt NoDbgRegParms checkValidObjectReference(sqInt anOop);
static AbstractInstruction * NoDbgRegParms genCmpClassFloatCompactIndexR(sqInt reg);
static AbstractInstruction * NoDbgRegParms genCmpClassMethodContextCompactIndexR(sqInt reg);
-static sqInt NoDbgRegParms genDoubleArithmeticpreOpCheck(sqInt arithmeticOperator, AbstractInstruction *(*preOpCheckOrNil)(int rcvrReg, int argReg));
-static sqInt NoDbgRegParms genDoubleComparisoninvert(AbstractInstruction *(*jumpOpcodeGenerator)(void *), sqInt invertComparison);
static sqInt NoDbgRegParms genLoadSlotsourceRegdestReg(sqInt index, sqInt sourceReg, sqInt destReg);
static sqInt genPrimitiveAdd(void);
static sqInt genPrimitiveAsFloat(void);
@@ -738,6 +736,8 @@
static void NoDbgRegParms genConvertSmallIntegerToCharacterInReg(sqInt reg);
static sqInt NoDbgRegParms genConvertSmallIntegerToIntegerInReg(sqInt reg);
static sqInt NoDbgRegParms genFetchIndexRegisterfrominto(sqInt indexReg, sqInt tableObj, sqInt destReg);
+static sqInt NoDbgRegParms genFloatArithmeticpreOpCheckboxed(sqInt arithmeticOperator, AbstractInstruction *(*preOpCheckOrNil)(int rcvrReg, int argReg), sqInt rcvrBoxed);
+static sqInt NoDbgRegParms genFloatComparisoninvertboxed(AbstractInstruction *(*jumpOpcodeGenerator)(void *), sqInt invertComparison, sqInt rcvrBoxed);
static sqInt NoDbgRegParms genGetHashFieldNonImmOfasSmallIntegerInto(sqInt instReg, sqInt destReg);
static sqInt NoDbgRegParms genGetHashFieldNonImmOfinto(sqInt instReg, sqInt destReg);
static AbstractInstruction * NoDbgRegParms genGetInlineCacheClassTagFromintoforEntry(sqInt sourceReg, sqInt destReg, sqInt forEntry);
@@ -746,7 +746,6 @@
static AbstractInstruction * NoDbgRegParms genJumpIsSmallIntegerValuescratch(sqInt aRegister, sqInt scratchReg);
static AbstractInstruction * NoDbgRegParms genJumpNotCharacterscratchReg(sqInt reg, sqInt scratch);
static AbstractInstruction * NoDbgRegParms genJumpNotSmallFloatValueBitsscratch(sqInt reg, sqInt exponent);
-static AbstractInstruction * NoDbgRegParms genJumpNotSmallFloatscratchReg(sqInt reg, sqInt scratch);
static AbstractInstruction * NoDbgRegParms genJumpNotSmallIntegersInandScratchReg(sqInt aRegister, sqInt scratchReg);
static AbstractInstruction * NoDbgRegParms genJumpNotSmallIntegerValuescratch(sqInt aRegister, sqInt scratchReg);
static AbstractInstruction * NoDbgRegParms genJumpNotSmallIntegerscratchReg(sqInt reg, sqInt scratch);
@@ -760,11 +759,8 @@
static sqInt genPrimitiveStringAtPut(void);
static sqInt NoDbgRegParms genRemoveSmallIntegerTagsInScratchReg(sqInt scratchReg);
static sqInt NoDbgRegParms genShiftAwaySmallIntegerTagsInScratchReg(sqInt scratchReg);
-static sqInt NoDbgRegParms genSmallFloatArithmeticpreOpCheck(sqInt arithmeticOperator, AbstractInstruction *(*preOpCheckOrNil)(int rcvrReg, int argReg));
-static sqInt NoDbgRegParms genSmallFloatComparisoninvert(AbstractInstruction *(*jumpOpcodeGenerator)(void *), sqInt invertComparison);
static sqInt NoDbgRegParms inlineCacheTagForInstance(sqInt oop);
static sqInt log2BytesPerWord(void);
-static sqInt NoDbgRegParms maybeGenConvertIfSmallFloatInscratchRegintoandJumpTo(sqInt oopReg, sqInt scratch, sqInt dpReg, AbstractInstruction *targetInst);
static void maybeGenerateSelectorIndexDereferenceRoutine(void);
static sqInt numSmallIntegerBits(void);
static sqInt numSmallIntegerTagBits(void);
@@ -787,7 +783,7 @@
static sqInt NoDbgRegParms genGetClassIndexOfNonImminto(sqInt sourceReg, sqInt destReg);
static sqInt NoDbgRegParms genGetClassObjectOfClassIndexintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);
static sqInt NoDbgRegParms genGetClassObjectOfintoscratchReginstRegIsReceiver(sqInt instReg, sqInt destReg, sqInt scratchReg, sqInt instRegIsReceiver);
-static sqInt NoDbgRegParms genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);
+static AbstractInstruction * NoDbgRegParms genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);
static sqInt NoDbgRegParms genGetCompactClassIndexNonImmOfinto(sqInt instReg, sqInt destReg);
static sqInt NoDbgRegParms genGetDoubleValueOfinto(sqInt srcReg, sqInt destFPReg);
static sqInt NoDbgRegParms genGetFormatOfinto(sqInt srcReg, sqInt destReg);
@@ -833,7 +829,7 @@
static sqInt NoDbgRegParms cmpC32RTempByteSize(AbstractInstruction * self_in_cmpC32RTempByteSize);
static sqInt NoDbgRegParms computeMaximumSize(AbstractInstruction * self_in_computeMaximumSize);
static sqInt NoDbgRegParms computeShiftRRSize(AbstractInstruction * self_in_computeShiftRRSize);
-static sqInt NoDbgRegParms concretizeArithCqRWithROraxOpcode(AbstractInstruction * self_in_concretizeArithCqRWithROraxOpcode, sqInt regOpcode, sqInt raxOpcode);
+static usqInt NoDbgRegParms concretizeArithCqRWithROraxOpcode(AbstractInstruction * self_in_concretizeArithCqRWithROraxOpcode, sqInt regOpcode, sqInt raxOpcode);
static usqInt NoDbgRegParms concretizeFill32(AbstractInstruction * self_in_concretizeFill32);
static usqInt NoDbgRegParms concretizeMoveRX32rR(AbstractInstruction * self_in_concretizeMoveRX32rR);
static usqInt NoDbgRegParms concretizeMoveX32rRR(AbstractInstruction * self_in_concretizeMoveX32rRR);
@@ -917,7 +913,7 @@
static sqInt genLongUnconditionalBackwardJump(void);
static sqInt genLongUnconditionalForwardJump(void);
static sqInt NoDbgRegParms genLookupForPerformNumArgs(sqInt numArgs);
-static AbstractInstruction * NoDbgRegParms genMoveConstantR(sqInt constant, 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);
@@ -9714,126 +9710,6 @@
return anInstruction;
}
- /* CogObjectRepresentation>>#genDoubleArithmetic:preOpCheck: */
-static sqInt NoDbgRegParms
-genDoubleArithmeticpreOpCheck(sqInt arithmeticOperator, AbstractInstruction *(*preOpCheckOrNil)(int rcvrReg, int argReg))
-{
- AbstractInstruction *doOp;
- AbstractInstruction *jumpFailAlloc;
- AbstractInstruction *jumpFailCheck;
- AbstractInstruction *jumpFailClass;
- AbstractInstruction *jumpImmediate;
- AbstractInstruction *jumpNonInt;
-
- /* begin genLoadArgAtDepth:into: */
- assert(0 < (numRegArgs()));
- genGetDoubleValueOfinto(ReceiverResultReg, DPFPReg0);
- /* begin MoveR:R: */
- genoperandoperand(MoveRR, Arg0Reg, ClassReg);
- jumpImmediate = genJumpImmediate(Arg0Reg);
- genGetCompactClassIndexNonImmOfinto(Arg0Reg, SendNumArgsReg);
- genCmpClassFloatCompactIndexR(SendNumArgsReg);
- /* begin JumpNonZero: */
- jumpFailClass = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
- genGetDoubleValueOfinto(Arg0Reg, DPFPReg1);
- /* begin Label */
- doOp = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
- if (!(preOpCheckOrNil == null)) {
- jumpFailCheck = preOpCheckOrNil(DPFPReg0, DPFPReg1);
- }
- genoperandoperand(arithmeticOperator, DPFPReg1, DPFPReg0);
- jumpFailAlloc = genAllocFloatValueintoscratchRegscratchReg(DPFPReg0, SendNumArgsReg, ClassReg, TempReg);
- /* begin MoveR:R: */
- genoperandoperand(MoveRR, SendNumArgsReg, ReceiverResultReg);
- /* begin genPrimReturn */
- assert(methodOrBlockNumArgs <= (numRegArgs()));
- /* begin RetN: */
- genoperand(RetN, 0);
- jmpTarget(jumpImmediate, gLabel());
- maybeGenConvertIfSmallFloatInscratchRegintoandJumpTo(Arg0Reg, TempReg, DPFPReg1, doOp);
- jumpNonInt = genJumpNotSmallIntegerscratchReg(Arg0Reg, TempReg);
-
- genConvertSmallIntegerToIntegerInReg(ClassReg);
- /* begin ConvertR:Rd: */
- genoperandoperand(ConvertRRd, ClassReg, DPFPReg1);
- /* begin Jump: */
- genoperand(Jump, ((sqInt)doOp));
- jmpTarget(jumpFailAlloc, jmpTarget(jumpFailClass, gLabel()));
- jmpTarget(jumpNonInt, getJmpTarget(jumpFailClass));
-
- if (!(preOpCheckOrNil == null)) {
- jmpTarget(jumpFailCheck, getJmpTarget(jumpFailClass));
- }
- return 0;
-}
-
- /* CogObjectRepresentation>>#genDoubleComparison:invert: */
-static sqInt NoDbgRegParms
-genDoubleComparisoninvert(AbstractInstruction *(*jumpOpcodeGenerator)(void *), sqInt invertComparison)
-{
- AbstractInstruction *anInstruction;
- AbstractInstruction *compare;
- sqInt constant;
- AbstractInstruction *jumpCond;
- AbstractInstruction *jumpFail;
- AbstractInstruction *jumpImmediate;
- AbstractInstruction *jumpNonInt;
-
- /* begin genLoadArgAtDepth:into: */
- assert(0 < (numRegArgs()));
- genGetDoubleValueOfinto(ReceiverResultReg, DPFPReg0);
- jumpImmediate = genJumpImmediate(Arg0Reg);
- genGetCompactClassIndexNonImmOfinto(Arg0Reg, SendNumArgsReg);
- genCmpClassFloatCompactIndexR(SendNumArgsReg);
- /* begin JumpNonZero: */
- jumpFail = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
- genGetDoubleValueOfinto(Arg0Reg, DPFPReg1);
- if (invertComparison) {
-
- /* May need to invert for NaNs */
- /* begin CmpRd:Rd: */
- compare = genoperandoperand(CmpRdRd, DPFPReg0, DPFPReg1);
- }
- else {
- /* begin CmpRd:Rd: */
- compare = genoperandoperand(CmpRdRd, DPFPReg1, DPFPReg0);
- }
-
- /* FP jumps are a little weird */
- jumpCond = jumpOpcodeGenerator(0);
- /* begin genMoveConstant:R: */
- constant = falseObject();
- if (shouldAnnotateObjectReference(constant)) {
- annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
- }
- else {
- /* begin MoveCq:R: */
- anInstruction = genoperandoperand(MoveCqR, constant, ReceiverResultReg);
- }
- /* begin genPrimReturn */
- assert(methodOrBlockNumArgs <= (numRegArgs()));
- /* begin RetN: */
- genoperand(RetN, 0);
- jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));
- /* begin genPrimReturn */
- assert(methodOrBlockNumArgs <= (numRegArgs()));
- /* begin RetN: */
- genoperand(RetN, 0);
- jmpTarget(jumpImmediate, gLabel());
- maybeGenConvertIfSmallFloatInscratchRegintoandJumpTo(Arg0Reg, TempReg, DPFPReg1, compare);
- jumpNonInt = genJumpNotSmallIntegerscratchReg(Arg0Reg, TempReg);
-
- genConvertSmallIntegerToIntegerInReg(Arg0Reg);
- /* begin ConvertR:Rd: */
- genoperandoperand(ConvertRRd, Arg0Reg, DPFPReg1);
- /* begin Jump: */
- genoperand(Jump, ((sqInt)compare));
- jmpTarget(jumpFail, gLabel());
- jmpTarget(jumpNonInt, getJmpTarget(jumpFail));
-
- return CompletePrimitive;
-}
-
/* CogObjectRepresentation>>#genLoadSlot:sourceReg:destReg: */
static sqInt NoDbgRegParms
genLoadSlotsourceRegdestReg(sqInt index, sqInt sourceReg, sqInt destReg)
@@ -10232,63 +10108,63 @@
static sqInt
genPrimitiveFloatAdd(void)
{
- return genDoubleArithmeticpreOpCheck(AddRdRd, null);
+ return genFloatArithmeticpreOpCheckboxed(AddRdRd, null, 1);
}
/* CogObjectRepresentation>>#genPrimitiveFloatDivide */
static sqInt
genPrimitiveFloatDivide(void)
{
- return genDoubleArithmeticpreOpCheck(DivRdRd, genDoubleFailIfZeroArgRcvrarg);
+ return genFloatArithmeticpreOpCheckboxed(DivRdRd, genDoubleFailIfZeroArgRcvrarg, 1);
}
/* CogObjectRepresentation>>#genPrimitiveFloatEqual */
static sqInt
genPrimitiveFloatEqual(void)
{
- return genDoubleComparisoninvert(gJumpFPEqual, 0);
+ return genFloatComparisoninvertboxed(gJumpFPEqual, 0, 1);
}
/* CogObjectRepresentation>>#genPrimitiveFloatGreaterOrEqual */
static sqInt
genPrimitiveFloatGreaterOrEqual(void)
{
- return genDoubleComparisoninvert(gJumpFPGreaterOrEqual, 0);
+ return genFloatComparisoninvertboxed(gJumpFPGreaterOrEqual, 0, 1);
}
/* CogObjectRepresentation>>#genPrimitiveFloatGreaterThan */
static sqInt
genPrimitiveFloatGreaterThan(void)
{
- return genDoubleComparisoninvert(gJumpFPGreater, 0);
+ return genFloatComparisoninvertboxed(gJumpFPGreater, 0, 1);
}
/* CogObjectRepresentation>>#genPrimitiveFloatLessOrEqual */
static sqInt
genPrimitiveFloatLessOrEqual(void)
{
- return genDoubleComparisoninvert(gJumpFPGreaterOrEqual, 1);
+ return genFloatComparisoninvertboxed(gJumpFPGreaterOrEqual, 1, 1);
}
/* CogObjectRepresentation>>#genPrimitiveFloatLessThan */
static sqInt
genPrimitiveFloatLessThan(void)
{
- return genDoubleComparisoninvert(gJumpFPGreater, 1);
+ return genFloatComparisoninvertboxed(gJumpFPGreater, 1, 1);
}
/* CogObjectRepresentation>>#genPrimitiveFloatMultiply */
static sqInt
genPrimitiveFloatMultiply(void)
{
- return genDoubleArithmeticpreOpCheck(MulRdRd, null);
+ return genFloatArithmeticpreOpCheckboxed(MulRdRd, null, 1);
}
/* CogObjectRepresentation>>#genPrimitiveFloatNotEqual */
static sqInt
genPrimitiveFloatNotEqual(void)
{
- return genDoubleComparisoninvert(gJumpFPNotEqual, 0);
+ return genFloatComparisoninvertboxed(gJumpFPNotEqual, 0, 1);
}
/* CogObjectRepresentation>>#genPrimitiveFloatSquareRoot */
@@ -10315,7 +10191,7 @@
static sqInt
genPrimitiveFloatSubtract(void)
{
- return genDoubleArithmeticpreOpCheck(SubRdRd, null);
+ return genFloatArithmeticpreOpCheckboxed(SubRdRd, null, 1);
}
/* CogObjectRepresentation>>#genPrimitiveGreaterOrEqual */
@@ -10525,63 +10401,63 @@
static sqInt
genPrimitiveSmallFloatAdd(void)
{
- return genSmallFloatArithmeticpreOpCheck(AddRdRd, null);
+ return genFloatArithmeticpreOpCheckboxed(AddRdRd, null, 0);
}
/* CogObjectRepresentation>>#genPrimitiveSmallFloatDivide */
static sqInt
genPrimitiveSmallFloatDivide(void)
{
- return genSmallFloatArithmeticpreOpCheck(DivRdRd, genDoubleFailIfZeroArgRcvrarg);
+ return genFloatArithmeticpreOpCheckboxed(DivRdRd, genDoubleFailIfZeroArgRcvrarg, 0);
}
/* CogObjectRepresentation>>#genPrimitiveSmallFloatEqual */
static sqInt
genPrimitiveSmallFloatEqual(void)
{
- return genSmallFloatComparisoninvert(gJumpFPEqual, 0);
+ return genFloatComparisoninvertboxed(gJumpFPEqual, 0, 0);
}
/* CogObjectRepresentation>>#genPrimitiveSmallFloatGreaterOrEqual */
static sqInt
genPrimitiveSmallFloatGreaterOrEqual(void)
{
- return genSmallFloatComparisoninvert(gJumpFPGreaterOrEqual, 0);
+ return genFloatComparisoninvertboxed(gJumpFPGreaterOrEqual, 0, 0);
}
/* CogObjectRepresentation>>#genPrimitiveSmallFloatGreaterThan */
static sqInt
genPrimitiveSmallFloatGreaterThan(void)
{
- return genSmallFloatComparisoninvert(gJumpFPGreater, 0);
+ return genFloatComparisoninvertboxed(gJumpFPGreater, 0, 0);
}
/* CogObjectRepresentation>>#genPrimitiveSmallFloatLessOrEqual */
static sqInt
genPrimitiveSmallFloatLessOrEqual(void)
{
- return genSmallFloatComparisoninvert(gJumpFPGreaterOrEqual, 1);
+ return genFloatComparisoninvertboxed(gJumpFPGreaterOrEqual, 1, 0);
}
/* CogObjectRepresentation>>#genPrimitiveSmallFloatLessThan */
static sqInt
genPrimitiveSmallFloatLessThan(void)
{
- return genSmallFloatComparisoninvert(gJumpFPGreater, 1);
+ return genFloatComparisoninvertboxed(gJumpFPGreater, 1, 0);
}
/* CogObjectRepresentation>>#genPrimitiveSmallFloatMultiply */
static sqInt
genPrimitiveSmallFloatMultiply(void)
{
- return genSmallFloatArithmeticpreOpCheck(MulRdRd, null);
+ return genFloatArithmeticpreOpCheckboxed(MulRdRd, null, 0);
}
/* CogObjectRepresentation>>#genPrimitiveSmallFloatNotEqual */
static sqInt
genPrimitiveSmallFloatNotEqual(void)
{
- return genSmallFloatComparisoninvert(gJumpFPNotEqual, 0);
+ return genFloatComparisoninvertboxed(gJumpFPNotEqual, 0, 0);
}
/* CogObjectRepresentation>>#genPrimitiveSmallFloatSquareRoot */
@@ -10608,7 +10484,7 @@
static sqInt
genPrimitiveSmallFloatSubtract(void)
{
- return genSmallFloatArithmeticpreOpCheck(SubRdRd, null);
+ return genFloatArithmeticpreOpCheckboxed(SubRdRd, null, 0);
}
/* CogObjectRepresentation>>#genPrimitiveSubtract */
@@ -10659,7 +10535,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);
@@ -10727,7 +10603,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);
@@ -10975,7 +10851,175 @@
return 0;
}
+ /* CogObjectRepresentationFor64BitSpur>>#genFloatArithmetic:preOpCheck:boxed: */
+static sqInt NoDbgRegParms
+genFloatArithmeticpreOpCheckboxed(sqInt arithmeticOperator, AbstractInstruction *(*preOpCheckOrNil)(int rcvrReg, int argReg), sqInt rcvrBoxed)
+{
+ AbstractInstruction *anInstruction;
+ AbstractInstruction *anInstruction1;
+ AbstractInstruction *doOp;
+ AbstractInstruction *jumpFailAlloc;
+ AbstractInstruction *jumpFailCheck;
+ AbstractInstruction *jumpImmediate;
+ AbstractInstruction *jumpNotBoxedFloat;
+ AbstractInstruction *jumpNotSmallFloat;
+ AbstractInstruction *jumpNotSmallInteger;
+ sqInt quickConstant;
+ sqInt quickConstant1;
+ /* begin genLoadArgAtDepth:into: */
+ assert(0 < (numRegArgs()));
+ if (rcvrBoxed) {
+ genGetDoubleValueOfinto(ReceiverResultReg, DPFPReg0);
+ }
+ else {
+ genGetSmallFloatValueOfscratchinto(ReceiverResultReg, TempReg, DPFPReg0);
+ }
+ /* begin MoveR:R: */
+ genoperandoperand(MoveRR, Arg0Reg, ClassReg);
+ /* begin AndCq:R: */
+ quickConstant = tagMask();
+ /* begin gen:quickConstant:operand: */
+ anInstruction = genoperandoperand(AndCqR, quickConstant, ClassReg);
+ /* begin CmpCq:R: */
+ quickConstant1 = smallFloatTag();
+ /* begin gen:quickConstant:operand: */
+ anInstruction1 = genoperandoperand(CmpCqR, quickConstant1, ClassReg);
+ /* begin JumpNonZero: */
+ jumpNotSmallFloat = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
+ genGetSmallFloatValueOfscratchinto(Arg0Reg, TempReg, DPFPReg1);
+ /* begin Label */
+ doOp = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
+ if (!(preOpCheckOrNil == null)) {
+ jumpFailCheck = preOpCheckOrNil(DPFPReg0, DPFPReg1);
+ }
+ genoperandoperand(arithmeticOperator, DPFPReg1, DPFPReg0);
+ jumpFailAlloc = genAllocFloatValueintoscratchRegscratchReg(DPFPReg0, SendNumArgsReg, ClassReg, TempReg);
+ /* begin MoveR:R: */
+ genoperandoperand(MoveRR, SendNumArgsReg, ReceiverResultReg);
+ /* begin genPrimReturn */
+ assert(methodOrBlockNumArgs <= (numRegArgs()));
+ /* begin RetN: */
+ genoperand(RetN, 0);
+ jmpTarget(jumpNotSmallFloat, gCmpCqR(smallIntegerTag(), ClassReg));
+ /* begin JumpNonZero: */
+ jumpNotSmallInteger = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
+ /* begin MoveR:R: */
+ genoperandoperand(MoveRR, Arg0Reg, Arg1Reg);
+ genConvertSmallIntegerToIntegerInReg(Arg1Reg);
+ /* begin ConvertR:Rd: */
+ genoperandoperand(ConvertRRd, Arg1Reg, DPFPReg1);
+ /* begin Jump: */
+ genoperand(Jump, ((sqInt)doOp));
+ jmpTarget(jumpNotSmallInteger, gCmpCqR(0, ClassReg));
+ /* begin JumpNonZero: */
+ jumpImmediate = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
+ genGetCompactClassIndexNonImmOfinto(Arg0Reg, SendNumArgsReg);
+ genCmpClassFloatCompactIndexR(SendNumArgsReg);
+ /* begin JumpNonZero: */
+ jumpNotBoxedFloat = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
+ genGetDoubleValueOfinto(Arg0Reg, DPFPReg1);
+ /* begin Jump: */
+ genoperand(Jump, ((sqInt)doOp));
+ jmpTarget(jumpImmediate, jmpTarget(jumpNotBoxedFloat, jmpTarget(jumpNotSmallInteger, jmpTarget(jumpFailAlloc, gLabel()))));
+ if (!(preOpCheckOrNil == null)) {
+ jmpTarget(jumpFailCheck, getJmpTarget(jumpFailAlloc));
+ }
+ return 0;
+}
+
+ /* CogObjectRepresentationFor64BitSpur>>#genFloatComparison:invert:boxed: */
+static sqInt NoDbgRegParms
+genFloatComparisoninvertboxed(AbstractInstruction *(*jumpOpcodeGenerator)(void *), sqInt invertComparison, sqInt rcvrBoxed)
+{
+ AbstractInstruction *anInstruction;
+ AbstractInstruction *anInstruction1;
+ AbstractInstruction *anInstruction2;
+ AbstractInstruction * compare;
+ sqInt constant;
+ AbstractInstruction *jumpCond;
+ AbstractInstruction *jumpImmediate;
+ AbstractInstruction *jumpNotBoxedFloat;
+ AbstractInstruction *jumpNotSmallFloat;
+ AbstractInstruction *jumpNotSmallInteger;
+ sqInt quickConstant;
+ sqInt quickConstant1;
+
+ /* begin genLoadArgAtDepth:into: */
+ assert(0 < (numRegArgs()));
+ if (rcvrBoxed) {
+ genGetDoubleValueOfinto(ReceiverResultReg, DPFPReg0);
+ }
+ else {
+ genGetSmallFloatValueOfscratchinto(ReceiverResultReg, TempReg, DPFPReg0);
+ }
+ /* begin MoveR:R: */
+ genoperandoperand(MoveRR, Arg0Reg, ClassReg);
+ /* begin AndCq:R: */
+ quickConstant = tagMask();
+ /* begin gen:quickConstant:operand: */
+ anInstruction = genoperandoperand(AndCqR, quickConstant, ClassReg);
+ /* begin CmpCq:R: */
+ quickConstant1 = smallFloatTag();
+ /* begin gen:quickConstant:operand: */
+ anInstruction1 = genoperandoperand(CmpCqR, quickConstant1, ClassReg);
+ /* begin JumpNonZero: */
+ jumpNotSmallFloat = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
+ genGetSmallFloatValueOfscratchinto(Arg0Reg, TempReg, DPFPReg1);
+ if (invertComparison) {
+
+ /* May need to invert for NaNs */
+ /* begin CmpRd:Rd: */
+ compare = genoperandoperand(CmpRdRd, DPFPReg0, DPFPReg1);
+ }
+ else {
+ /* begin CmpRd:Rd: */
+ compare = genoperandoperand(CmpRdRd, DPFPReg1, DPFPReg0);
+ }
+
+ /* FP jumps are a little weird */
+ jumpCond = jumpOpcodeGenerator(0);
+ /* begin genMoveFalseR: */
+ constant = falseObject();
+ if (shouldAnnotateObjectReference(constant)) {
+ annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
+ }
+ else {
+ /* begin MoveCq:R: */
+ anInstruction2 = genoperandoperand(MoveCqR, constant, ReceiverResultReg);
+ }
+ /* begin genPrimReturn */
+ assert(methodOrBlockNumArgs <= (numRegArgs()));
+ /* begin RetN: */
+ genoperand(RetN, 0);
+ jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));
+ /* begin genPrimReturn */
+ assert(methodOrBlockNumArgs <= (numRegArgs()));
+ /* begin RetN: */
+ genoperand(RetN, 0);
+ jmpTarget(jumpNotSmallFloat, gCmpCqR(smallIntegerTag(), ClassReg));
+ /* begin JumpNonZero: */
+ jumpNotSmallInteger = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
+ genConvertSmallIntegerToIntegerInReg(Arg0Reg);
+ /* begin ConvertR:Rd: */
+ genoperandoperand(ConvertRRd, Arg0Reg, DPFPReg1);
+ /* begin Jump: */
+ genoperand(Jump, ((sqInt)compare));
+ jmpTarget(jumpNotSmallInteger, gCmpCqR(0, ClassReg));
+ /* begin JumpNonZero: */
+ jumpImmediate = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
+ genGetCompactClassIndexNonImmOfinto(Arg0Reg, SendNumArgsReg);
+ genCmpClassFloatCompactIndexR(SendNumArgsReg);
+ /* begin JumpNonZero: */
+ jumpNotBoxedFloat = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
+ genGetDoubleValueOfinto(Arg0Reg, DPFPReg1);
+ /* begin Jump: */
+ genoperand(Jump, ((sqInt)compare));
+ jmpTarget(jumpImmediate, jmpTarget(jumpNotBoxedFloat, gLabel()));
+ return CompletePrimitive;
+}
+
+
/* Fetch the instance's identity hash into destReg, encoded as a
SmallInteger.
*/
@@ -11232,26 +11276,6 @@
}
-/* Generate a compare and branch to test if aRegister contains other than a
- SmallFloat. Answer the jump. */
-
- /* CogObjectRepresentationFor64BitSpur>>#genJumpNotSmallFloat:scratchReg: */
-static AbstractInstruction * NoDbgRegParms
-genJumpNotSmallFloatscratchReg(sqInt reg, sqInt scratch)
-{
- AbstractInstruction *anInstruction;
- sqInt quickConstant;
-
- return (gAndCqRR(tagMask(), reg, scratch),
- /* begin CmpCq:R: */
- (quickConstant = smallFloatTag()),
- /* begin gen:quickConstant:operand: */
- (anInstruction = genoperandoperand(CmpCqR, quickConstant, scratch)),
- /* begin JumpNonZero: */
- genConditionalBranchoperand(JumpNonZero, ((sqInt)0)));
-}
-
-
/* Generate a compare and branch to test if aRegister and scratchReg contains
other than SmallIntegers,
i.e. don't branch if both aRegister and scratchReg contain SmallIntegers.
@@ -12565,165 +12589,7 @@
return 0;
}
- /* CogObjectRepresentationFor64BitSpur>>#genSmallFloatArithmetic:preOpCheck: */
-static sqInt NoDbgRegParms
-genSmallFloatArithmeticpreOpCheck(sqInt arithmeticOperator, AbstractInstruction *(*preOpCheckOrNil)(int rcvrReg, int argReg))
-{
- AbstractInstruction *anInstruction;
- AbstractInstruction *anInstruction1;
- AbstractInstruction *doOp;
- AbstractInstruction *jumpFailAlloc;
- AbstractInstruction *jumpFailCheck;
- AbstractInstruction *jumpImmediate;
- AbstractInstruction *jumpNotBoxedFloat;
- AbstractInstruction *jumpNotSmallFloat;
- AbstractInstruction *jumpNotSmallInteger;
- sqInt quickConstant;
- sqInt quickConstant1;
- /* begin genLoadArgAtDepth:into: */
- assert(0 < (numRegArgs()));
- genGetSmallFloatValueOfscratchinto(ReceiverResultReg, TempReg, DPFPReg0);
- /* begin MoveR:R: */
- genoperandoperand(MoveRR, Arg0Reg, ClassReg);
- /* begin AndCq:R: */
- quickConstant = tagMask();
- /* begin gen:quickConstant:operand: */
- anInstruction = genoperandoperand(AndCqR, quickConstant, ClassReg);
- /* begin CmpCq:R: */
- quickConstant1 = smallFloatTag();
- /* begin gen:quickConstant:operand: */
- anInstruction1 = genoperandoperand(CmpCqR, quickConstant1, ClassReg);
- /* begin JumpNonZero: */
- jumpNotSmallFloat = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
- genGetSmallFloatValueOfscratchinto(Arg0Reg, TempReg, DPFPReg1);
- /* begin Label */
- doOp = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
- if (!(preOpCheckOrNil == null)) {
- jumpFailCheck = preOpCheckOrNil(DPFPReg0, DPFPReg1);
- }
- genoperandoperand(arithmeticOperator, DPFPReg1, DPFPReg0);
- jumpFailAlloc = genAllocFloatValueintoscratchRegscratchReg(DPFPReg0, SendNumArgsReg, ClassReg, TempReg);
- /* begin MoveR:R: */
- genoperandoperand(MoveRR, SendNumArgsReg, ReceiverResultReg);
- /* begin genPrimReturn */
- assert(methodOrBlockNumArgs <= (numRegArgs()));
- /* begin RetN: */
- genoperand(RetN, 0);
- jmpTarget(jumpNotSmallFloat, gCmpCqR(smallIntegerTag(), ClassReg));
- /* begin JumpNonZero: */
- jumpNotSmallInteger = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
- /* begin MoveR:R: */
- genoperandoperand(MoveRR, Arg0Reg, Arg1Reg);
- genConvertSmallIntegerToIntegerInReg(Arg1Reg);
- /* begin ConvertR:Rd: */
- genoperandoperand(ConvertRRd, Arg1Reg, DPFPReg1);
- /* begin Jump: */
- genoperand(Jump, ((sqInt)doOp));
- jmpTarget(jumpNotSmallInteger, gCmpCqR(0, ClassReg));
- /* begin JumpNonZero: */
- jumpImmediate = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
- genGetCompactClassIndexNonImmOfinto(Arg0Reg, SendNumArgsReg);
- genCmpClassFloatCompactIndexR(SendNumArgsReg);
- /* begin JumpNonZero: */
- jumpNotBoxedFloat = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
- genGetDoubleValueOfinto(Arg0Reg, DPFPReg1);
- /* begin Jump: */
- genoperand(Jump, ((sqInt)doOp));
- jmpTarget(jumpImmediate, jmpTarget(jumpNotBoxedFloat, jmpTarget(jumpNotSmallInteger, jmpTarget(jumpFailAlloc, gLabel()))));
- if (!(preOpCheckOrNil == null)) {
- jmpTarget(jumpFailCheck, getJmpTarget(jumpFailAlloc));
- }
- return 0;
-}
-
- /* CogObjectRepresentationFor64BitSpur>>#genSmallFloatComparison:invert: */
-static sqInt NoDbgRegParms
-genSmallFloatComparisoninvert(AbstractInstruction *(*jumpOpcodeGenerator)(void *), sqInt invertComparison)
-{
- AbstractInstruction *anInstruction;
- AbstractInstruction *anInstruction1;
- AbstractInstruction *anInstruction2;
- AbstractInstruction * compare;
- sqInt constant;
- AbstractInstruction *jumpCond;
- AbstractInstruction *jumpImmediate;
- AbstractInstruction *jumpNotBoxedFloat;
- AbstractInstruction *jumpNotSmallFloat;
- AbstractInstruction *jumpNotSmallInteger;
- sqInt quickConstant;
- sqInt quickConstant1;
-
- /* begin genLoadArgAtDepth:into: */
- assert(0 < (numRegArgs()));
- genGetSmallFloatValueOfscratchinto(ReceiverResultReg, TempReg, DPFPReg0);
- /* begin MoveR:R: */
- genoperandoperand(MoveRR, Arg0Reg, ClassReg);
- /* begin AndCq:R: */
- quickConstant = tagMask();
- /* begin gen:quickConstant:operand: */
- anInstruction1 = genoperandoperand(AndCqR, quickConstant, ClassReg);
- /* begin CmpCq:R: */
- quickConstant1 = smallFloatTag();
- /* begin gen:quickConstant:operand: */
- anInstruction2 = genoperandoperand(CmpCqR, quickConstant1, ClassReg);
- /* begin JumpNonZero: */
- jumpNotSmallFloat = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
- genGetSmallFloatValueOfscratchinto(Arg0Reg, TempReg, DPFPReg1);
- if (invertComparison) {
-
- /* May need to invert for NaNs */
- /* begin CmpRd:Rd: */
- compare = genoperandoperand(CmpRdRd, DPFPReg0, DPFPReg1);
- }
- else {
- /* begin CmpRd:Rd: */
- compare = genoperandoperand(CmpRdRd, DPFPReg1, DPFPReg0);
- }
-
- /* FP jumps are a little weird */
- jumpCond = jumpOpcodeGenerator(0);
- /* begin genMoveConstant:R: */
- constant = falseObject();
- if (shouldAnnotateObjectReference(constant)) {
- annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
- }
- else {
- /* begin MoveCq:R: */
- anInstruction = genoperandoperand(MoveCqR, constant, ReceiverResultReg);
- }
- /* begin genPrimReturn */
- assert(methodOrBlockNumArgs <= (numRegArgs()));
- /* begin RetN: */
- genoperand(RetN, 0);
- jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));
- /* begin genPrimReturn */
- assert(methodOrBlockNumArgs <= (numRegArgs()));
- /* begin RetN: */
- genoperand(RetN, 0);
- jmpTarget(jumpNotSmallFloat, gCmpCqR(smallIntegerTag(), ClassReg));
- /* begin JumpNonZero: */
- jumpNotSmallInteger = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
- genConvertSmallIntegerToIntegerInReg(Arg0Reg);
- /* begin ConvertR:Rd: */
- genoperandoperand(ConvertRRd, Arg0Reg, DPFPReg1);
- /* begin Jump: */
- genoperand(Jump, ((sqInt)compare));
- jmpTarget(jumpNotSmallInteger, gCmpCqR(0, ClassReg));
- /* begin JumpNonZero: */
- jumpImmediate = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
- genGetCompactClassIndexNonImmOfinto(Arg0Reg, SendNumArgsReg);
- genCmpClassFloatCompactIndexR(SendNumArgsReg);
- /* begin JumpNonZero: */
- jumpNotBoxedFloat = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
- genGetDoubleValueOfinto(Arg0Reg, DPFPReg1);
- /* begin Jump: */
- genoperand(Jump, ((sqInt)compare));
- jmpTarget(jumpImmediate, jmpTarget(jumpNotBoxedFloat, gLabel()));
- return CompletePrimitive;
-}
-
-
/* Answer the relevant inline cache tag for an instance.
c.f. getInlineCacheClassTagFrom:into: & inlineCacheTagForClass: */
@@ -12744,27 +12610,6 @@
}
-/* Generate a test for a smallFloat in oopReg, converting it to the float
- value in dpReg
- and jumping to targetInst. If oopReg does not contain a SmallFloat, fall
- through.
- */
-
- /* CogObjectRepresentationFor64BitSpur>>#maybeGenConvertIfSmallFloatIn:scratchReg:into:andJumpTo: */
-static sqInt NoDbgRegParms
-maybeGenConvertIfSmallFloatInscratchRegintoandJumpTo(sqInt oopReg, sqInt scratch, sqInt dpReg, AbstractInstruction *targetInst)
-{
- AbstractInstruction *jumpNotSF;
-
- jumpNotSF = genJumpNotSmallFloatscratchReg(oopReg, scratch);
- genGetSmallFloatValueOfscratchinto(oopReg, scratch, dpReg);
- /* begin Jump: */
- genoperand(Jump, ((sqInt)targetInst));
- jmpTarget(jumpNotSF, gLabel());
- return 0;
-}
-
-
/* Generate the routine that converts selector indices into selector objects.
It is called from the send trampolines.
If the selector index is negative, convert it into a positive index into
@@ -13561,7 +13406,7 @@
}
/* CogObjectRepresentationForSpur>>#genGetClassTagOf:into:scratchReg: */
-static sqInt NoDbgRegParms
+static AbstractInstruction * NoDbgRegParms
genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg)
{
return genGetInlineCacheClassTagFromintoforEntry(instReg, destReg, 1);
@@ -13937,7 +13782,7 @@
assert(methodOrBlockNumArgs <= (numRegArgs()));
/* begin RetN: */
genoperand(RetN, 0);
- jmpTarget(jumpCmp, genMoveConstantR(falseObject(), ReceiverResultReg));
+ jmpTarget(jumpCmp, genMoveFalseR(ReceiverResultReg));
/* begin genPrimReturn */
assert(methodOrBlockNumArgs <= (numRegArgs()));
/* begin RetN: */
@@ -15126,7 +14971,7 @@
/* Will get inlined into concretizeAt: switch. */
/* CogX64Compiler>>#concretizeArithCqRWithRO:raxOpcode: */
-static sqInt NoDbgRegParms
+static usqInt NoDbgRegParms
concretizeArithCqRWithROraxOpcode(AbstractInstruction * self_in_concretizeArithCqRWithROraxOpcode, sqInt regOpcode, sqInt raxOpcode)
{
unsigned long reg;
@@ -15764,7 +15609,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset113) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset113) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset113) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpLongNonZero:
@@ -15804,7 +15649,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset114) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset114) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset114) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case Jump:
@@ -15869,7 +15714,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset115) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset115) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset115) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpNonNegative:
@@ -15907,7 +15752,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset116) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset116) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset116) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpOverflow:
@@ -15945,7 +15790,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset117) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset117) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset117) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpNoOverflow:
@@ -15983,7 +15828,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset118) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset118) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset118) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpCarry:
@@ -16023,7 +15868,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset119) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset119) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset119) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpNoCarry:
@@ -16063,7 +15908,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset120) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset120) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset120) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpLess:
@@ -16101,7 +15946,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset121) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset121) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset121) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpGreaterOrEqual:
@@ -16139,7 +15984,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset122) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset122) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset122) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpGreater:
@@ -16177,7 +16022,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset123) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset123) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset123) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpLessOrEqual:
@@ -16215,7 +16060,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset124) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset124) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset124) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpAbove:
@@ -16254,7 +16099,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset125) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset125) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset125) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpBelowOrEqual:
@@ -16293,7 +16138,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset126) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset126) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset126) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpFPOrdered:
@@ -16331,7 +16176,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset127) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset127) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset127) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case JumpFPUnordered:
@@ -16369,7 +16214,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset128) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset128) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset128) >> 24) & 0xFF);
- ((self_in_dispatchConcretize->machineCodeSize) = 6);
+ ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
return;
case RetN:
@@ -19982,12 +19827,15 @@
return 0;
}
- /* SimpleStackBasedCogit>>#genMoveConstant:R: */
+ /* SimpleStackBasedCogit>>#genMoveFalseR: */
static AbstractInstruction * NoDbgRegParms
-genMoveConstantR(sqInt constant, sqInt reg)
+genMoveFalseR(sqInt reg)
{
AbstractInstruction *anInstruction;
+ sqInt constant;
+ /* begin genMoveConstant:R: */
+ constant = falseObject();
return (shouldAnnotateObjectReference(constant)
? annotateobjRef(gMoveCwR(constant, reg), constant)
: (/* begin MoveCq:R: */
More information about the Vm-dev
mailing list