[Vm-dev] [commit][3523] CogVM source as per VMMaker.oscog-eem.1585
commits at squeakvm.org
commits at squeakvm.org
Sat Dec 12 20:58:40 UTC 2015
Revision: 3523
Author: eliot
Date: 2015-12-12 12:58:39 -0800 (Sat, 12 Dec 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1585
Cogit:
Nuke unused Fill options. Better document the use of Fill32: so Ryan's
objection is answered.
iOS: Add 64-bit case for the "this is not ready for prime time" message.
Modified Paths:
--------------
branches/Cog/nsspursrc/vm/cogit.h
branches/Cog/nsspursrc/vm/cogitARMv5.c
branches/Cog/nsspursrc/vm/cogitIA32.c
branches/Cog/nsspursrc/vm/cointerp.c
branches/Cog/nsspursrc/vm/cointerp.h
branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
branches/Cog/nsspurstack64src/vm/gcc3x-interp.c
branches/Cog/nsspurstack64src/vm/interp.c
branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
branches/Cog/nsspurstacksrc/vm/interp.c
branches/Cog/platforms/iOS/vm/OSX/SqueakOSXAppDelegate.m
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/cointerp.c
branches/Cog/spursistasrc/vm/cointerp.h
branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
branches/Cog/spursrc/vm/cogit.h
branches/Cog/spursrc/vm/cogitARMv5.c
branches/Cog/spursrc/vm/cogitIA32.c
branches/Cog/spursrc/vm/cointerp.c
branches/Cog/spursrc/vm/cointerp.h
branches/Cog/spursrc/vm/gcc3x-cointerp.c
branches/Cog/spurstack64src/vm/gcc3x-interp.c
branches/Cog/spurstack64src/vm/interp.c
branches/Cog/spurstacksrc/vm/gcc3x-interp.c
branches/Cog/spurstacksrc/vm/interp.c
branches/Cog/src/vm/cogit.h
branches/Cog/src/vm/cogitARMv5.c
branches/Cog/src/vm/cogitIA32.c
Property Changed:
----------------
branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h 2015-12-12 19:29:23 UTC (rev 3522)
+++ branches/Cog/nsspursrc/vm/cogit.h 2015-12-12 20:58:39 UTC (rev 3523)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1582 uuid: ca77fb29-c2fc-44bd-8ca0-dfa5e8951b19
+ CCodeGenerator VMMaker.oscog-eem.1585 uuid: 93567cbb-bf4f-4cb8-8262-0142f3fd1317
*/
Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitARMv5.c 2015-12-12 19:29:23 UTC (rev 3522)
+++ branches/Cog/nsspursrc/vm/cogitARMv5.c 2015-12-12 20:58:39 UTC (rev 3523)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1581 uuid: ceb64363-bb65-4efc-a5c9-ad90ef4fc645
+ CCodeGenerator VMMaker.oscog-eem.1585 uuid: 93567cbb-bf4f-4cb8-8262-0142f3fd1317
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1581 uuid: ceb64363-bb65-4efc-a5c9-ad90ef4fc645
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1585 uuid: 93567cbb-bf4f-4cb8-8262-0142f3fd1317
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1581 uuid: ceb64363-bb65-4efc-a5c9-ad90ef4fc645 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1585 uuid: 93567cbb-bf4f-4cb8-8262-0142f3fd1317 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -113,26 +113,26 @@
/*** Constants ***/
-#define AddCqR 99
-#define AddCwR 107
+#define AddCqR 95
+#define AddCwR 103
#define AddOpcode 4
-#define AddRdRd 114
-#define AddRR 93
+#define AddRdRd 110
+#define AddRR 89
#define AL 14
#define AlignmentNops 3
#define AltBlockCreationBytecodeSize 3
#define AltFirstSpecialSelector 80
#define AltNumSpecialSelectors 32
-#define AndCqR 101
-#define AndCqRR 112
-#define AndCwR 109
+#define AndCqR 97
+#define AndCqRR 108
+#define AndCwR 105
#define AndOpcode 0
-#define AndRR 95
+#define AndRR 91
#define AnnotationShift 5
#define Arg0Reg -7
#define Arg1Reg -8
-#define ArithmeticShiftRightCqR 84
-#define ArithmeticShiftRightRR 85
+#define ArithmeticShiftRightCqR 80
+#define ArithmeticShiftRightRR 81
#define BadRegisterSet 1
#define BicOpcode 14
#define BlockCreationBytecodeSize 4
@@ -141,8 +141,8 @@
#define CArg1Reg 1
#define CArg2Reg 2
#define CArg3Reg 3
-#define Call 10
-#define CallFull 11
+#define Call 6
+#define CallFull 7
#define CC 3
#define ClassArrayCompactIndex 51
#define ClassBlockClosureCompactIndex 37
@@ -160,19 +160,19 @@
#define CMMaxUsageCount 7
#define CMMethod 2
#define CMOpenPIC 5
-#define CMPSMULL 125
-#define CmpC32R 106
-#define CmpCqR 98
-#define CmpCwR 105
+#define CMPSMULL 121
+#define CmpC32R 102
+#define CmpCqR 94
+#define CmpCwR 101
#define CmpNotOpcode 11
#define CmpOpcode 10
-#define CmpRdRd 113
-#define CmpRR 92
+#define CmpRdRd 109
+#define CmpRR 88
#define CompletePrimitive 4
#define ConcreteIPReg 12
#define ConcreteVarBaseReg 10
#define ConstZero 1
-#define ConvertRRd 119
+#define ConvertRRd 115
#define CS 2
#define D0 0
#define D1 1
@@ -185,7 +185,7 @@
#define Debug DEBUGVM
#define DisplacementMask 0x1F
#define DisplacementX2N 0
-#define DivRdRd 117
+#define DivRdRd 113
#define DPFPReg0 -21
#define DPFPReg1 -22
#define DPFPReg2 -23
@@ -196,12 +196,10 @@
#define DPFPReg7 -28
#define EncounteredUnknownBytecode -6
#define EQ 0
-#define Fill16 6
-#define Fill32 7
-#define FillFromWord 8
+#define Fill32 4
#define FirstAnnotation 64
-#define FirstJump 15
-#define FirstShortJump 19
+#define FirstJump 11
+#define FirstShortJump 15
#define FirstSpecialSelector 176
#define FoxCallerSavedIP 4
#define FoxMethod -4
@@ -231,48 +229,48 @@
#define IsRelativeCall 5
#define IsSendCall 7
#define IsSuperSend 8
-#define Jump 19
-#define JumpAbove 34
-#define JumpAboveOrEqual 33
-#define JumpBelow 32
-#define JumpBelowOrEqual 35
-#define JumpCarry 26
-#define JumpFPEqual 36
-#define JumpFPGreater 40
-#define JumpFPGreaterOrEqual 41
-#define JumpFPLess 38
-#define JumpFPLessOrEqual 39
-#define JumpFPNotEqual 37
-#define JumpFPOrdered 42
-#define JumpFPUnordered 43
-#define JumpFull 15
-#define JumpGreater 30
-#define JumpGreaterOrEqual 29
-#define JumpLess 28
-#define JumpLessOrEqual 31
-#define JumpLong 16
-#define JumpLongNonZero 18
-#define JumpLongZero 17
-#define JumpNegative 22
-#define JumpNoCarry 27
-#define JumpNonNegative 23
-#define JumpNonZero 21
-#define JumpNoOverflow 25
-#define JumpOverflow 24
-#define JumpR 13
-#define JumpZero 20
+#define Jump 15
+#define JumpAbove 30
+#define JumpAboveOrEqual 29
+#define JumpBelow 28
+#define JumpBelowOrEqual 31
+#define JumpCarry 22
+#define JumpFPEqual 32
+#define JumpFPGreater 36
+#define JumpFPGreaterOrEqual 37
+#define JumpFPLess 34
+#define JumpFPLessOrEqual 35
+#define JumpFPNotEqual 33
+#define JumpFPOrdered 38
+#define JumpFPUnordered 39
+#define JumpFull 11
+#define JumpGreater 26
+#define JumpGreaterOrEqual 25
+#define JumpLess 24
+#define JumpLessOrEqual 27
+#define JumpLong 12
+#define JumpLongNonZero 14
+#define JumpLongZero 13
+#define JumpNegative 18
+#define JumpNoCarry 23
+#define JumpNonNegative 19
+#define JumpNonZero 17
+#define JumpNoOverflow 21
+#define JumpOverflow 20
+#define JumpR 9
+#define JumpZero 16
#define Label 1
#define LargeContextSlots 62
-#define LastJump 43
+#define LastJump 39
#define LE 13
#define LinkReg -17
#define Literal 2
#define LiteralStart 1
-#define LoadEffectiveAddressMwrR 81
-#define LogicalShiftLeftCqR 88
-#define LogicalShiftLeftRR 89
-#define LogicalShiftRightCqR 86
-#define LogicalShiftRightRR 87
+#define LoadEffectiveAddressMwrR 77
+#define LogicalShiftLeftCqR 84
+#define LogicalShiftLeftRR 85
+#define LogicalShiftRightCqR 82
+#define LogicalShiftRightRR 83
#define LookupRuleDynamicSuper 0x101
#define LookupRuleImplicit 0x100
#define LookupRuleSelf 0
@@ -296,35 +294,35 @@
#define MFMethodFlagHasContextFlag 1
#define MFMethodFlagIsBlockFlag 2
#define MI 4
-#define MoveAbR 47
-#define MoveAwR 45
-#define MoveC32R 69
-#define MoveCqR 67
-#define MoveCwR 68
-#define MoveM16rR 55
-#define MoveM64rRd 74
-#define MoveMbrR 63
-#define MoveMwrR 49
+#define MoveAbR 43
+#define MoveAwR 41
+#define MoveC32R 65
+#define MoveCqR 63
+#define MoveCwR 64
+#define MoveM16rR 51
+#define MoveM64rRd 70
+#define MoveMbrR 59
+#define MoveMwrR 45
#define MoveNotOpcode 15
#define MoveOpcode 13
-#define MoveRAb 48
-#define MoveRAw 46
-#define MoveRdM64r 75
-#define MoveRdRd 73
-#define MoveRMbr 64
-#define MoveRMwr 50
-#define MoveRR 44
-#define MoveRXbrR 66
-#define MoveRXwrR 52
-#define MoveXbrRR 65
-#define MoveXwrRR 51
-#define MSR 121
+#define MoveRAb 44
+#define MoveRAw 42
+#define MoveRdM64r 71
+#define MoveRdRd 69
+#define MoveRMbr 60
+#define MoveRMwr 46
+#define MoveRR 40
+#define MoveRXbrR 62
+#define MoveRXwrR 48
+#define MoveXbrRR 61
+#define MoveXwrRR 47
+#define MSR 117
#define MULTIPLEBYTECODESETS 1
-#define MulRdRd 116
+#define MulRdRd 112
#define NE 1
-#define NegateR 83
+#define NegateR 79
#define NewspeakVM 1
-#define Nop 9
+#define Nop 5
#define NoReg null
#define NotFullyInitialized -1
#define NSCClassTagIndex 0
@@ -336,24 +334,24 @@
#define NumSendTrampolines 4
#define NumSpecialSelectors 32
#define NumTrampolines 72
-#define OrCqR 102
-#define OrCwR 110
+#define OrCqR 98
+#define OrCwR 106
#define OrOpcode 12
-#define OrRR 96
+#define OrRR 92
#define PC 15
#define PCReg -19
#define PL 5
-#define PopR 76
-#define PrefetchAw 80
+#define PopR 72
+#define PrefetchAw 76
#define PrimCallCollectsProfileSamples 8
#define PrimCallDoNotJIT 32
#define PrimCallMayCallBack 4
#define PrimCallNeedsNewMethod 1
#define PrimCallNeedsPrimitiveFunction 2
#define PrimErrWritePastObject 17
-#define PushCq 78
-#define PushCw 79
-#define PushR 77
+#define PushCq 74
+#define PushCw 75
+#define PushR 73
#define R0 0
#define R11 11
#define R12 12
@@ -364,7 +362,7 @@
#define R8 8
#define ReceiverIndex 5
#define ReceiverResultReg -3
-#define RetN 12
+#define RetN 8
#define RISCTempReg -18
#define RsbOpcode 3
#define Scratch0Reg -9
@@ -374,24 +372,24 @@
#define SendNumArgsReg -6
#define ShouldNotJIT -8
#define SistaVM 0
-#define SMULL 120
+#define SMULL 116
#define SmallContextSlots 22
#define SP 13
#define SPReg -2
-#define SqrtRd 118
+#define SqrtRd 114
#define SSBaseOffset 1
#define SSConstant 2
#define SSRegister 3
#define SSSpill 4
#define StackPointerIndex 2
-#define Stop 14
-#define SubCqR 100
-#define SubCwR 108
+#define Stop 10
+#define SubCqR 96
+#define SubCwR 104
#define SubOpcode 2
-#define SubRdRd 115
-#define SubRR 94
+#define SubRdRd 111
+#define SubRR 90
#define TempReg -4
-#define TstCqR 103
+#define TstCqR 99
#define TstOpcode 8
#define UnfailingPrimitive 3
#define UnimplementedOperation 2
@@ -400,10 +398,10 @@
#define VarBaseReg -20
#define VC 7
#define VS 6
-#define XorCqR 104
-#define XorCwR 111
+#define XorCqR 100
+#define XorCwR 107
#define XorOpcode 1
-#define XorRR 97
+#define XorRR 93
#define YoungSelectorInPIC -5
@@ -469,9 +467,7 @@
static sqInt NoDbgRegParms concretizeAt(AbstractInstruction * self_in_concretizeAt, sqInt actualAddress);
static usqInt NoDbgRegParms concretizeCMPSMULL(AbstractInstruction * self_in_concretizeCMPSMULL);
static void NoDbgRegParms concretizeConditionalInstruction(AbstractInstruction * self_in_concretizeConditionalInstruction);
-static AbstractInstruction * NoDbgRegParms concretizeFill16(AbstractInstruction * self_in_concretizeFill16);
static usqInt NoDbgRegParms concretizeFill32(AbstractInstruction * self_in_concretizeFill32);
-static AbstractInstruction * NoDbgRegParms concretizeFillFromWord(AbstractInstruction * self_in_concretizeFillFromWord);
static usqInt NoDbgRegParms concretizeMSR(AbstractInstruction * self_in_concretizeMSR);
static usqInt NoDbgRegParms concretizeSMULL(AbstractInstruction * self_in_concretizeSMULL);
static sqInt NoDbgRegParms conditionIsNotNever(AbstractInstruction * self_in_conditionIsNotNever, sqInt instr);
@@ -2594,9 +2590,7 @@
return 0;
case Literal:
- case Fill16:
case Fill32:
- case FillFromWord:
case Nop:
case Call:
case JumpR:
@@ -3035,44 +3029,22 @@
}
-/* fill with (operand 0 bitAnd: 16rFFFF) according to the processor's
- endianness
- */
-
- /* CogARMCompiler>>#concretizeFill16 */
-static AbstractInstruction * NoDbgRegParms
-concretizeFill16(AbstractInstruction * self_in_concretizeFill16)
-{
- haltmsg("unused opcode?");
- return self_in_concretizeFill16;
-}
-
-
/* fill with operand 0 according to the processor's endianness */
/* CogARMCompiler>>#concretizeFill32 */
static usqInt NoDbgRegParms
concretizeFill32(AbstractInstruction * self_in_concretizeFill32)
{
- unsigned long word;
+ sqInt aWord;
- word = ((self_in_concretizeFill32->operands))[0];
/* begin machineCodeAt:put: */
- ((self_in_concretizeFill32->machineCode))[0 / 4] = word;
+ aWord = ((self_in_concretizeFill32->operands))[0];
+ ((self_in_concretizeFill32->machineCode))[0 / 4] = aWord;
self_in_concretizeFill32;
return ((self_in_concretizeFill32->machineCodeSize) = 4);
}
- /* CogARMCompiler>>#concretizeFillFromWord */
-static AbstractInstruction * NoDbgRegParms
-concretizeFillFromWord(AbstractInstruction * self_in_concretizeFillFromWord)
-{
- assert(0);
- notYetImplemented();
- return self_in_concretizeFillFromWord;
-}
-
/* Generate an MSR CPSR_f, #flags instruction.
Note that we only have business with the NZCV flags so we use
N -> 8
@@ -3656,18 +3628,10 @@
}
return;
- case Fill16:
- concretizeFill16(self_in_dispatchConcretize);
- return;
-
case Fill32:
concretizeFill32(self_in_dispatchConcretize);
return;
- case FillFromWord:
- concretizeFillFromWord(self_in_dispatchConcretize);
- return;
-
case Nop:
/* begin concretizeNop */
/* begin machineCodeAt:put: */
@@ -11089,12 +11053,12 @@
generateMapAtstart(sqInt addressOrNull, sqInt startAddress)
{
unsigned char annotation;
- usqInt delta;
+ sqInt delta;
sqInt i;
AbstractInstruction *instruction;
sqInt length;
- usqInt location;
- usqInt mapEntry;
+ sqInt location;
+ sqInt mapEntry;
sqInt maxDelta;
usqInt mcpc;
@@ -20635,27 +20599,17 @@
}
-/* Update an instruction that depends on a label outside of
- generated code (e.g. a method or block header). */
+/* Update an instruction that depends on a label outside
+ of generated code (e.g. a method or block header). */
/* CogOutOfLineLiteralsARMCompiler>>#updateLabel: */
static AbstractInstruction * NoDbgRegParms
updateLabel(AbstractInstruction * self_in_updateLabel, AbstractInstruction *labelInstruction)
{
- unsigned long offsetAddress;
-
if (((self_in_updateLabel->opcode)) != Literal) {
- offsetAddress = ((labelInstruction->address)) + (labelOffset(labelInstruction));
-
- switch ((self_in_updateLabel->opcode)) {
- case MoveCwR:
- case PushCw:
- case FillFromWord:
- ((self_in_updateLabel->operands))[0] = offsetAddress;
- break;
- default:
- error("Case not found and no otherwise clause");
- }
+ assert((((self_in_updateLabel->opcode)) == MoveCwR)
+ || (((self_in_updateLabel->opcode)) == PushCw));
+ ((self_in_updateLabel->operands))[0] = (((labelInstruction->address)) + (labelOffset(labelInstruction)));
}
return self_in_updateLabel;
}
Modified: branches/Cog/nsspursrc/vm/cogitIA32.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitIA32.c 2015-12-12 19:29:23 UTC (rev 3522)
+++ branches/Cog/nsspursrc/vm/cogitIA32.c 2015-12-12 20:58:39 UTC (rev 3523)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1581 uuid: ceb64363-bb65-4efc-a5c9-ad90ef4fc645
+ CCodeGenerator VMMaker.oscog-eem.1585 uuid: 93567cbb-bf4f-4cb8-8262-0142f3fd1317
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1581 uuid: ceb64363-bb65-4efc-a5c9-ad90ef4fc645
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1585 uuid: 93567cbb-bf4f-4cb8-8262-0142f3fd1317
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1581 uuid: ceb64363-bb65-4efc-a5c9-ad90ef4fc645 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1585 uuid: 93567cbb-bf4f-4cb8-8262-0142f3fd1317 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -111,29 +111,29 @@
/*** Constants ***/
-#define AddCqR 99
-#define AddCwR 107
-#define AddRdRd 114
-#define AddRR 93
+#define AddCqR 95
+#define AddCwR 103
+#define AddRdRd 110
+#define AddRR 89
#define AlignmentNops 3
#define AltBlockCreationBytecodeSize 3
#define AltFirstSpecialSelector 80
#define AltNumSpecialSelectors 32
-#define AndCqR 101
-#define AndCqRR 112
-#define AndCwR 109
-#define AndRR 95
+#define AndCqR 97
+#define AndCqRR 108
+#define AndCwR 105
+#define AndRR 91
#define AnnotationShift 5
#define Arg0Reg -7
#define Arg1Reg -8
-#define ArithmeticShiftRightCqR 84
-#define ArithmeticShiftRightRR 85
+#define ArithmeticShiftRightCqR 80
+#define ArithmeticShiftRightRR 81
#define BadRegisterSet 1
#define BlockCreationBytecodeSize 4
#define BytecodeSetHasDirectedSuperSend 0
-#define Call 10
-#define CallFull 11
-#define CDQ 120
+#define Call 6
+#define CallFull 7
+#define CDQ 116
#define ClassArrayCompactIndex 51
#define ClassBlockClosureCompactIndex 37
#define ClassFloatCompactIndex 34
@@ -150,21 +150,21 @@
#define CMMaxUsageCount 7
#define CMMethod 2
#define CMOpenPIC 5
-#define CMPXCHGAwR 128
-#define CMPXCHGMwrR 129
-#define CmpC32R 106
-#define CmpCqR 98
-#define CmpCwR 105
-#define CmpRdRd 113
-#define CmpRR 92
+#define CMPXCHGAwR 124
+#define CMPXCHGMwrR 125
+#define CmpC32R 102
+#define CmpCqR 94
+#define CmpCwR 101
+#define CmpRdRd 109
+#define CmpRR 88
#define CompletePrimitive 4
#define ConstZero 1
-#define ConvertRRd 119
-#define CPUID 123
+#define ConvertRRd 115
+#define CPUID 119
#define Debug DEBUGVM
#define DisplacementMask 0x1F
#define DisplacementX2N 0
-#define DivRdRd 117
+#define DivRdRd 113
#define DPFPReg0 -21
#define DPFPReg1 -22
#define DPFPReg2 -23
@@ -182,12 +182,10 @@
#define EncounteredUnknownBytecode -6
#define ESI 6
#define ESP 4
-#define Fill16 6
-#define Fill32 7
-#define FillFromWord 8
+#define Fill32 4
#define FirstAnnotation 64
-#define FirstJump 15
-#define FirstShortJump 19
+#define FirstJump 11
+#define FirstShortJump 15
#define FirstSpecialSelector 176
#define FoxCallerSavedIP 4
#define FoxMethod -4
@@ -200,8 +198,8 @@
#define GCModeNewSpace 2
#define HasBytecodePC 4
#define HeaderIndex 0
-#define IDIVR 121
-#define IMULRR 122
+#define IDIVR 117
+#define IMULRR 118
#define InstanceSpecificationIndex 2
#define InstructionPointerIndex 1
#define InsufficientCodeSpace -2
@@ -216,49 +214,49 @@
#define IsRelativeCall 5
#define IsSendCall 7
#define IsSuperSend 8
-#define Jump 19
-#define JumpAbove 34
-#define JumpAboveOrEqual 33
-#define JumpBelow 32
-#define JumpBelowOrEqual 35
-#define JumpCarry 26
-#define JumpFPEqual 36
-#define JumpFPGreater 40
-#define JumpFPGreaterOrEqual 41
-#define JumpFPLess 38
-#define JumpFPLessOrEqual 39
-#define JumpFPNotEqual 37
-#define JumpFPOrdered 42
-#define JumpFPUnordered 43
-#define JumpFull 15
-#define JumpGreater 30
-#define JumpGreaterOrEqual 29
-#define JumpLess 28
-#define JumpLessOrEqual 31
-#define JumpLong 16
-#define JumpLongNonZero 18
-#define JumpLongZero 17
-#define JumpNegative 22
-#define JumpNoCarry 27
-#define JumpNonNegative 23
-#define JumpNonZero 21
-#define JumpNoOverflow 25
-#define JumpOverflow 24
-#define JumpR 13
-#define JumpZero 20
+#define Jump 15
+#define JumpAbove 30
+#define JumpAboveOrEqual 29
+#define JumpBelow 28
+#define JumpBelowOrEqual 31
+#define JumpCarry 22
+#define JumpFPEqual 32
+#define JumpFPGreater 36
+#define JumpFPGreaterOrEqual 37
+#define JumpFPLess 34
+#define JumpFPLessOrEqual 35
+#define JumpFPNotEqual 33
+#define JumpFPOrdered 38
+#define JumpFPUnordered 39
+#define JumpFull 11
+#define JumpGreater 26
+#define JumpGreaterOrEqual 25
+#define JumpLess 24
+#define JumpLessOrEqual 27
+#define JumpLong 12
+#define JumpLongNonZero 14
+#define JumpLongZero 13
+#define JumpNegative 18
+#define JumpNoCarry 23
+#define JumpNonNegative 19
+#define JumpNonZero 17
+#define JumpNoOverflow 21
+#define JumpOverflow 20
+#define JumpR 9
+#define JumpZero 16
#define Label 1
#define LargeContextSlots 62
-#define LastJump 43
-#define LFENCE 124
+#define LastJump 39
+#define LFENCE 120
#define LinkReg -17
#define Literal 2
#define LiteralStart 1
-#define LOCK 127
-#define LoadEffectiveAddressMwrR 81
-#define LogicalShiftLeftCqR 88
-#define LogicalShiftLeftRR 89
-#define LogicalShiftRightCqR 86
-#define LogicalShiftRightRR 87
+#define LOCK 123
+#define LoadEffectiveAddressMwrR 77
+#define LogicalShiftLeftCqR 84
+#define LogicalShiftLeftRR 85
+#define LogicalShiftRightCqR 82
+#define LogicalShiftRightRR 83
#define LookupRuleDynamicSuper 0x101
#define LookupRuleImplicit 0x100
#define LookupRuleSelf 0
@@ -276,38 +274,38 @@
#define MethodCacheSelector 1
#define MethodIndex 3
#define MethodTooBig -4
-#define MFENCE 125
+#define MFENCE 121
#define MFMethodFlagHasContextFlag 1
#define MFMethodFlagIsBlockFlag 2
#define ModReg 3
#define ModRegInd 0
#define ModRegRegDisp32 2
#define ModRegRegDisp8 1
-#define MoveAbR 47
-#define MoveAwR 45
-#define MoveC32R 69
-#define MoveCqR 67
-#define MoveCwR 68
-#define MoveM16rR 55
-#define MoveM64rRd 74
-#define MoveMbrR 63
-#define MoveMwrR 49
-#define MoveRAb 48
-#define MoveRAw 46
-#define MoveRdM64r 75
-#define MoveRdRd 73
-#define MoveRMbr 64
-#define MoveRMwr 50
-#define MoveRR 44
-#define MoveRXbrR 66
-#define MoveRXwrR 52
-#define MoveXbrRR 65
-#define MoveXwrRR 51
+#define MoveAbR 43
+#define MoveAwR 41
+#define MoveC32R 65
+#define MoveCqR 63
+#define MoveCwR 64
+#define MoveM16rR 51
+#define MoveM64rRd 70
+#define MoveMbrR 59
+#define MoveMwrR 45
+#define MoveRAb 44
+#define MoveRAw 42
+#define MoveRdM64r 71
+#define MoveRdRd 69
+#define MoveRMbr 60
+#define MoveRMwr 46
+#define MoveRR 40
+#define MoveRXbrR 62
+#define MoveRXwrR 48
+#define MoveXbrRR 61
+#define MoveXwrRR 47
#define MULTIPLEBYTECODESETS 1
-#define MulRdRd 116
-#define NegateR 83
+#define MulRdRd 112
+#define NegateR 79
#define NewspeakVM 1
-#define Nop 9
+#define Nop 5
#define NoReg null
#define NotFullyInitialized -1
#define NSCClassTagIndex 0
@@ -319,57 +317,57 @@
#define NumSendTrampolines 4
#define NumSpecialSelectors 32
#define NumTrampolines 72
-#define OrCqR 102
-#define OrCwR 110
-#define OrRR 96
+#define OrCqR 98
+#define OrCwR 106
+#define OrRR 92
#define PCReg -19
-#define PopR 76
-#define PrefetchAw 80
+#define PopR 72
+#define PrefetchAw 76
#define PrimCallCollectsProfileSamples 8
#define PrimCallDoNotJIT 32
#define PrimCallMayCallBack 4
#define PrimCallNeedsNewMethod 1
#define PrimCallNeedsPrimitiveFunction 2
#define PrimErrWritePastObject 17
-#define PushCq 78
-#define PushCw 79
-#define PushR 77
+#define PushCq 74
+#define PushCw 75
+#define PushR 73
#define ReceiverIndex 5
#define ReceiverResultReg -3
-#define RetN 12
+#define RetN 8
#define RISCTempReg -18
#define SelectorCannotInterpret 34
#define SelectorDoesNotUnderstand 20
#define SenderIndex 0
#define SendNumArgsReg -6
-#define SFENCE 126
+#define SFENCE 122
#define ShouldNotJIT -8
#define SIB1 0
#define SIB4 2
#define SistaVM 0
#define SmallContextSlots 22
#define SPReg -2
-#define SqrtRd 118
+#define SqrtRd 114
#define SSBaseOffset 1
#define SSConstant 2
#define SSRegister 3
#define SSSpill 4
#define StackPointerIndex 2
-#define Stop 14
-#define SubCqR 100
-#define SubCwR 108
-#define SubRdRd 115
-#define SubRR 94
+#define Stop 10
+#define SubCqR 96
+#define SubCwR 104
+#define SubRdRd 111
+#define SubRR 90
#define TempReg -4
-#define TstCqR 103
+#define TstCqR 99
#define UnfailingPrimitive 3
#define UnimplementedOperation 2
#define UnimplementedPrimitive -7
#define ValueIndex 1
#define VarBaseReg -20
-#define XCHGAwR 130
-#define XCHGMwrR 131
-#define XCHGRR 132
+#define XCHGAwR 126
+#define XCHGMwrR 127
+#define XCHGRR 128
#define XMM0L 0
#define XMM1L 2
#define XMM2L 4
@@ -378,8 +376,8 @@
#define XMM5L 10
#define XMM6L 12
#define XMM7L 14
-#define XorCwR 111
-#define XorRR 97
+#define XorCwR 107
+#define XorRR 93
#define YoungSelectorInPIC -5
@@ -439,9 +437,7 @@
static usqInt NoDbgRegParms computeShiftRRSize(AbstractInstruction * self_in_computeShiftRRSize);
static sqInt NoDbgRegParms concreteDPFPRegister(AbstractInstruction * self_in_concreteDPFPRegister, sqInt registerIndex);
static sqInt NoDbgRegParms concreteRegister(AbstractInstruction * self_in_concreteRegister, sqInt registerIndex);
-static usqInt NoDbgRegParms concretizeFill16(AbstractInstruction * self_in_concretizeFill16);
static usqInt NoDbgRegParms concretizeFill32(AbstractInstruction * self_in_concretizeFill32);
-static usqInt NoDbgRegParms concretizeFillFromWord(AbstractInstruction * self_in_concretizeFillFromWord);
static usqInt NoDbgRegParms concretizeOpRR(AbstractInstruction * self_in_concretizeOpRR, sqInt x86opcode);
static usqInt NoDbgRegParms concretizeReverseOpRR(AbstractInstruction * self_in_concretizeReverseOpRR, sqInt x86opcode);
static sqInt NoDbgRegParms cResultRegister(AbstractInstruction * self_in_cResultRegister);
@@ -2284,26 +2280,16 @@
}
-/* Update an instruction that depends on a label outside of
- generated code (e.g. a method or block header). */
+/* Update an instruction that depends on a label outside
+ of generated code (e.g. a method or block header). */
/* CogAbstractInstruction>>#updateLabel: */
static AbstractInstruction * NoDbgRegParms
updateLabel(AbstractInstruction * self_in_updateLabel, AbstractInstruction *labelInstruction)
{
- unsigned long offsetAddress;
-
- offsetAddress = ((labelInstruction->address)) + (labelOffset(labelInstruction));
-
- switch ((self_in_updateLabel->opcode)) {
- case MoveCwR:
- case PushCw:
- case FillFromWord:
- ((self_in_updateLabel->operands))[0] = offsetAddress;
- break;
- default:
- error("Case not found and no otherwise clause");
- }
+ assert((((self_in_updateLabel->opcode)) == MoveCwR)
+ || (((self_in_updateLabel->opcode)) == PushCw));
+ ((self_in_updateLabel->operands))[0] = (((labelInstruction->address)) + (labelOffset(labelInstruction)));
return self_in_updateLabel;
}
@@ -2425,22 +2411,7 @@
case AlignmentNops:
return (((self_in_computeMaximumSize->operands))[0]) - 1;
- case Fill16:
- case IDIVR:
- case CPUID:
- case JumpR:
- case AddRR:
- case AndRR:
- case CmpRR:
- case OrRR:
- case XorRR:
- case SubRR:
- case NegateR:
- case MoveRR:
- return 2;
-
case Fill32:
- case FillFromWord:
case AddRdRd:
case CmpRdRd:
case SubRdRd:
@@ -2459,6 +2430,19 @@
case PushR:
return 1;
+ case IDIVR:
+ case CPUID:
+ case JumpR:
+ case AddRR:
+ case AndRR:
+ case CmpRR:
+ case OrRR:
+ case XorRR:
+ case SubRR:
+ case NegateR:
+ case MoveRR:
+ return 2;
+
case IMULRR:
case LFENCE:
case MFENCE:
@@ -2805,19 +2789,6 @@
}
}
- /* CogIA32Compiler>>#concretizeFill16 */
-static usqInt NoDbgRegParms
-concretizeFill16(AbstractInstruction * self_in_concretizeFill16)
-{
- unsigned short word;
-
- assert(((self_in_concretizeFill16->maxSize)) == 2);
- word = ((self_in_concretizeFill16->operands))[0];
- ((self_in_concretizeFill16->machineCode))[0] = (word & 0xFF);
- ((self_in_concretizeFill16->machineCode))[1] = (((usqInt) word) >> 8);
- return ((self_in_concretizeFill16->machineCodeSize) = 2);
-}
-
/* CogIA32Compiler>>#concretizeFill32 */
static usqInt NoDbgRegParms
concretizeFill32(AbstractInstruction * self_in_concretizeFill32)
@@ -2826,28 +2797,12 @@
word = ((self_in_concretizeFill32->operands))[0];
((self_in_concretizeFill32->machineCode))[0] = (word & 0xFF);
- ((self_in_concretizeFill32->machineCode))[1] = (((usqInt) word) >> 8);
- ((self_in_concretizeFill32->machineCode))[2] = (((usqInt) word) >> 16);
- ((self_in_concretizeFill32->machineCode))[3] = (((usqInt) word) >> 24);
+ ((self_in_concretizeFill32->machineCode))[1] = ((((usqInt) word) >> 8) & 0xFF);
+ ((self_in_concretizeFill32->machineCode))[2] = ((((usqInt) word) >> 16) & 0xFF);
+ ((self_in_concretizeFill32->machineCode))[3] = ((((usqInt) word) >> 24) & 0xFF);
return ((self_in_concretizeFill32->machineCodeSize) = 4);
}
- /* CogIA32Compiler>>#concretizeFillFromWord */
-static usqInt NoDbgRegParms
-concretizeFillFromWord(AbstractInstruction * self_in_concretizeFillFromWord)
-{
- sqInt i;
- unsigned long word;
-
- assert(((self_in_concretizeFillFromWord->maxSize)) == 4);
- word = (((self_in_concretizeFillFromWord->operands))[0]) + (((self_in_concretizeFillFromWord->operands))[1]);
- for (i = 0; i <= 3; i += 1) {
- ((self_in_concretizeFillFromWord->machineCode))[i] = (word & 0xFF);
- word = ((usqInt) word) >> 8;
- }
- return ((self_in_concretizeFillFromWord->machineCodeSize) = (self_in_concretizeFillFromWord->maxSize));
-}
-
/* CogIA32Compiler>>#concretizeOpRR: */
static usqInt NoDbgRegParms
concretizeOpRR(AbstractInstruction * self_in_concretizeOpRR, sqInt x86opcode)
@@ -2928,7 +2883,6 @@
sqInt distance;
sqInt distance1;
sqInt i;
- sqInt i1;
sqInt index;
sqInt index1;
sqInt index2;
@@ -3121,9 +3075,7 @@
unsigned long value7;
unsigned long value8;
unsigned long value9;
- unsigned short word;
- unsigned long word1;
- unsigned long word2;
+ unsigned long word;
switch ((self_in_dispatchConcretize->opcode)) {
@@ -3145,36 +3097,16 @@
}
return;
- case Fill16:
- /* begin concretizeFill16 */
- assert(((self_in_dispatchConcretize->maxSize)) == 2);
- word = ((self_in_dispatchConcretize->operands))[0];
- ((self_in_dispatchConcretize->machineCode))[0] = (word & 0xFF);
- ((self_in_dispatchConcretize->machineCode))[1] = (((usqInt) word) >> 8);
- ((self_in_dispatchConcretize->machineCodeSize) = 2);
- return;
-
case Fill32:
/* begin concretizeFill32 */
- word1 = ((self_in_dispatchConcretize->operands))[0];
- ((self_in_dispatchConcretize->machineCode))[0] = (word1 & 0xFF);
- ((self_in_dispatchConcretize->machineCode))[1] = (((usqInt) word1) >> 8);
- ((self_in_dispatchConcretize->machineCode))[2] = (((usqInt) word1) >> 16);
- ((self_in_dispatchConcretize->machineCode))[3] = (((usqInt) word1) >> 24);
+ word = ((self_in_dispatchConcretize->operands))[0];
+ ((self_in_dispatchConcretize->machineCode))[0] = (word & 0xFF);
+ ((self_in_dispatchConcretize->machineCode))[1] = ((((usqInt) word) >> 8) & 0xFF);
+ ((self_in_dispatchConcretize->machineCode))[2] = ((((usqInt) word) >> 16) & 0xFF);
+ ((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) word) >> 24) & 0xFF);
((self_in_dispatchConcretize->machineCodeSize) = 4);
return;
- case FillFromWord:
- /* begin concretizeFillFromWord */
- assert(((self_in_dispatchConcretize->maxSize)) == 4);
- word2 = (((self_in_dispatchConcretize->operands))[0]) + (((self_in_dispatchConcretize->operands))[1]);
- for (i1 = 0; i1 <= 3; i1 += 1) {
- ((self_in_dispatchConcretize->machineCode))[i1] = (word2 & 0xFF);
- word2 = ((usqInt) word2) >> 8;
- }
- ((self_in_dispatchConcretize->machineCodeSize) = (self_in_dispatchConcretize->maxSize));
- return;
-
case Nop:
/* begin concretizeNop */
((self_in_dispatchConcretize->machineCode))[0] = 144;
Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c 2015-12-12 19:29:23 UTC (rev 3522)
+++ branches/Cog/nsspursrc/vm/cointerp.c 2015-12-12 20:58:39 UTC (rev 3523)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1582 uuid: ca77fb29-c2fc-44bd-8ca0-dfa5e8951b19
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1583 uuid: 7eb04eee-02fd-4ece-8742-c2f9ca00d4a0
from
- CoInterpreter VMMaker.oscog-eem.1582 uuid: ca77fb29-c2fc-44bd-8ca0-dfa5e8951b19
+ CoInterpreter VMMaker.oscog-eem.1583 uuid: 7eb04eee-02fd-4ece-8742-c2f9ca00d4a0
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1582 uuid: ca77fb29-c2fc-44bd-8ca0-dfa5e8951b19 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1583 uuid: 7eb04eee-02fd-4ece-8742-c2f9ca00d4a0 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -870,11 +870,9 @@
static sqInt NoDbgRegParms lengthOfformat(sqInt objOop, sqInt fmt);
static sqInt maxSlotsForAlloc(void);
static sqInt numFreeLists(void);
-extern sqInt numTagBits(void);
static sqInt NoDbgRegParms objectAfterlimit(sqInt objOop, sqInt limit);
static void NoDbgRegParms setIsMarkedOfto(sqInt objOop, sqInt aBoolean);
extern usqInt smallObjectBytesForSlots(sqInt numSlots);
-extern sqInt tagMask(void);
static sqInt wordIndexableFormat(void);
static void NoDbgRegParms NeverInline addToEphemeronList(sqInt ephemeronCorpse);
static void NoDbgRegParms NeverInline addToWeakList(sqInt weakCorpse);
@@ -2411,7 +2409,7 @@
/*560*/ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
};
char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1582";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1583";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -2450,7 +2448,9 @@
#define pageIndexForstackBasePlus1bytesPerPage(pointer,stkBasePlus1,pageByteSize) (((char *)(pointer) - (stkBasePlus1)) / (pageByteSize))
#define smallIntegerTag() 1
#define startOfMemory() heapBase
+#define numTagBits() 2
#define shiftForWord() 2
+#define tagMask() 3
#define wordSize() 4
#define eden() GIV(eden)
#define futureSpace() GIV(futureSpace)
@@ -3657,7 +3657,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -3695,7 +3695,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -3733,7 +3733,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -3771,7 +3771,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -3809,7 +3809,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -3847,7 +3847,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -3885,7 +3885,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -3923,7 +3923,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -3961,7 +3961,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -3999,7 +3999,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4037,7 +4037,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4075,7 +4075,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4113,7 +4113,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4151,7 +4151,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4189,7 +4189,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4227,7 +4227,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4264,7 +4264,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4301,7 +4301,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4338,7 +4338,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4375,7 +4375,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4412,7 +4412,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4449,7 +4449,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4486,7 +4486,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4523,7 +4523,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4560,7 +4560,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4597,7 +4597,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4634,7 +4634,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4671,7 +4671,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4708,7 +4708,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4745,7 +4745,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4782,7 +4782,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4819,7 +4819,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize));
}
@@ -4860,7 +4860,7 @@
/* most stores into young objects */
- if (((top & 3) == 0)
+ if (((top & (tagMask())) == 0)
&& (oopisLessThan(top, GIV(newSpaceLimit)))) {
/* begin possibleRootStoreInto: */
if (!(((((usqInt) (longAt(rcvr))) >> 29) & 1) != 0)) {
@@ -5190,14 +5190,14 @@
while (closure != GIV(nilObj)) {
/* begin followField:ofObject: */
objOop = longAt((closure + BaseHeaderSize) + (ClosureOuterContextIndex << (shiftForWord())));
- if (((objOop & 3) == 0)
+ if (((objOop & (tagMask())) == 0)
&& (((longAt(objOop)) & 0x3FFFFF) == 8)) {
objOop = fixFollowedFieldofObjectwithInitialValue(ClosureOuterContextIndex, closure, objOop);
}
home = objOop;
/* begin followField:ofObject: */
objOop1 = longAt((home + BaseHeaderSize) + (ClosureIndex << (shiftForWord())));
- if (((objOop1 & 3) == 0)
+ if (((objOop1 & (tagMask())) == 0)
&& (((longAt(objOop1)) & 0x3FFFFF) == 8)) {
objOop1 = fixFollowedFieldofObjectwithInitialValue(ClosureIndex, home, objOop1);
}
@@ -5299,7 +5299,7 @@
}
else {
contextToReturnTo = longAt((home + BaseHeaderSize) + (SenderIndex << (shiftForWord())));
- if ((((contextToReturnTo & 3) == 0)
+ if ((((contextToReturnTo & (tagMask())) == 0)
&& (((longAt(contextToReturnTo)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
&& (((longAt((contextToReturnTo + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))) {
assert(checkIsStillMarriedContextcurrentFP(contextToReturnTo, localFP));
@@ -5566,7 +5566,7 @@
|| (isContext(callerContextOrNil)));
contextToReturnTo = callerContextOrNil;
freeStackPageNoAssert(GIV(stackPage));
- retToContext = ((contextToReturnTo & 3) == 0)
+ retToContext = ((contextToReturnTo & (tagMask())) == 0)
&& (((longAt(contextToReturnTo)) & 0x3FFFFF) == ClassMethodContextCompactIndex);
if (retToContext
&& ((((longAt((contextToReturnTo + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
@@ -5843,7 +5843,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize) + (0 << (shiftForWord())));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize) + (0 << (shiftForWord())));
}
@@ -5883,7 +5883,7 @@
/* most stores into young objects */
- if ((((longAtPointer(localSP)) & 3) == 0)
+ if ((((longAtPointer(localSP)) & (tagMask())) == 0)
&& (oopisLessThan(longAtPointer(localSP), GIV(newSpaceLimit)))) {
/* begin possibleRootStoreInto: */
if (!(((((usqInt) (longAt(objOop))) >> 29) & 1) != 0)) {
@@ -5912,7 +5912,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize) + (0 << (shiftForWord())));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize) + (0 << (shiftForWord())));
}
@@ -5924,7 +5924,7 @@
/* most stores into young objects */
- if ((((longAtPointer(localSP)) & 3) == 0)
+ if ((((longAtPointer(localSP)) & (tagMask())) == 0)
&& (oopisLessThan(longAtPointer(localSP), GIV(newSpaceLimit)))) {
/* begin possibleRootStoreInto: */
if (!(((((usqInt) (longAt(litVar))) >> 29) & 1) != 0)) {
@@ -5966,7 +5966,7 @@
/* most stores into young objects */
- if ((((longAtPointer(localSP)) & 3) == 0)
+ if ((((longAtPointer(localSP)) & (tagMask())) == 0)
&& (oopisLessThan(longAtPointer(localSP), GIV(newSpaceLimit)))) {
/* begin possibleRootStoreInto: */
if (!(((((usqInt) (longAt(objOop))) >> 29) & 1) != 0)) {
@@ -5995,7 +5995,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize) + (0 << (shiftForWord())));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize) + (0 << (shiftForWord())));
}
@@ -6007,7 +6007,7 @@
/* most stores into young objects */
- if ((((longAtPointer(localSP)) & 3) == 0)
+ if ((((longAtPointer(localSP)) & (tagMask())) == 0)
&& (oopisLessThan(longAtPointer(localSP), GIV(newSpaceLimit)))) {
/* begin possibleRootStoreInto: */
if (!(((((usqInt) (longAt(litVar))) >> 29) & 1) != 0)) {
@@ -6046,7 +6046,7 @@
VM_LABEL(normalSend);
rcvr = longAtPointer(localSP + (GIV(argumentCount) * BytesPerOop));
- GIV(lkupClassTag) = (((tagBits = rcvr & 3)) != 0
+ GIV(lkupClassTag) = (((tagBits = rcvr & (tagMask()))) != 0
? ((tagBits & 1) != 0
? 1
: tagBits)
@@ -6173,10 +6173,10 @@
GIV(instructionPointer) = oopForPointer(localIP);
GIV(stackPointer) = localSP;
GIV(framePointer) = localFP;
- if ((((GIV(messageSelector) & 3) == 0)
+ if ((((GIV(messageSelector) & (tagMask())) == 0)
&& (((longAt(GIV(messageSelector))) & 0x3FFFFF) == 8))
|| (GIV(lkupClassTag) == 8)) {
- if (((GIV(messageSelector) & 3) == 0)
+ if (((GIV(messageSelector) & (tagMask())) == 0)
&& (((longAt(GIV(messageSelector))) & 0x3FFFFF) == 8)) {
GIV(messageSelector) = handleForwardedSelectorFaultFor(GIV(messageSelector));
}
@@ -6628,7 +6628,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar1));
referent1 = longAt((litVar1 + BaseHeaderSize) + (0 << (shiftForWord())));
- while (((referent1 & 3) == 0)
+ while (((referent1 & (tagMask())) == 0)
&& (((longAt(referent1)) & 0x3FFFFF) == 8)) {
referent1 = longAt((referent1 + BaseHeaderSize) + (0 << (shiftForWord())));
}
@@ -6649,7 +6649,7 @@
/* begin followForwarded: */
assert(isUnambiguouslyForwarder(litVar));
referent = longAt((litVar + BaseHeaderSize) + (0 << (shiftForWord())));
- while (((referent & 3) == 0)
+ while (((referent & (tagMask())) == 0)
&& (((longAt(referent)) & 0x3FFFFF) == 8)) {
referent = longAt((referent + BaseHeaderSize) + (0 << (shiftForWord())));
}
@@ -6661,7 +6661,7 @@
/* most stores into young objects */
- if (((top & 3) == 0)
+ if (((top & (tagMask())) == 0)
&& (oopisLessThan(top, GIV(newSpaceLimit)))) {
/* begin possibleRootStoreInto: */
if (!(((((usqInt) (longAt(litVar))) >> 29) & 1) != 0)) {
@@ -6702,7 +6702,7 @@
/* most stores into young objects */
- if (((top & 3) == 0)
+ if (((top & (tagMask())) == 0)
&& (oopisLessThan(top, GIV(newSpaceLimit)))) {
/* begin possibleRootStoreInto: */
if (!(((((usqInt) (longAt(rcvr))) >> 29) & 1) != 0)) {
@@ -6754,7 +6754,7 @@
/* most stores into young objects */
- if (((top & 3) == 0)
+ if (((top & (tagMask())) == 0)
&& (oopisLessThan(top, GIV(newSpaceLimit)))) {
/* begin possibleRootStoreInto: */
if (!(((((usqInt) (longAt(rcvr))) >> 29) & 1) != 0)) {
@@ -6782,7 +6782,7 @@
/* most stores into young objects */
- if (((top & 3) == 0)
+ if (((top & (tagMask())) == 0)
&& (oopisLessThan(top, GIV(newSpaceLimit)))) {
/* begin possibleRootStoreInto: */
if (!(((((usqInt) (longAt(rcvr))) >> 29) & 1) != 0)) {
@@ -6828,7 +6828,7 @@
classPointer = methodClassOf(GIV(method));
/* begin followField:ofObject: */
objOop = longAt((classPointer + BaseHeaderSize) + (SuperclassIndex << (shiftForWord())));
- if (((objOop & 3) == 0)
+ if (((objOop & (tagMask())) == 0)
&& (((longAt(objOop)) & 0x3FFFFF) == 8)) {
objOop = fixFollowedFieldofObjectwithInitialValue(SuperclassIndex, classPointer, objOop);
}
@@ -6863,14 +6863,14 @@
: (long32At(superclass + 4)) & 0x3FFFFF)
: -PrimErrBadReceiver));
/* begin ensureReceiverUnforwarded */
- if ((((longAtPointer(localSP + (GIV(argumentCount) * BytesPerOop))) & 3) == 0)
+ if ((((longAtPointer(localSP + (GIV(argumentCount) * BytesPerOop))) & (tagMask())) == 0)
@@ Diff output truncated at 50000 characters. @@
More information about the Vm-dev
mailing list