[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