[Vm-dev] [commit][3563] CogVM source as per VMMaker.oscog-eem.1656

commits at squeakvm.org commits at squeakvm.org
Wed Jan 20 02:33:25 UTC 2016


Revision: 3563
Author:   eliot
Date:     2016-01-19 18:33:22 -0800 (Tue, 19 Jan 2016)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1656

Slang: Remember to remove the declaration for a local that is introduced for
inlining where the inlining uses the parse tree, not the local.  Otherwise,
stale declarations can be left that will mistype subsequent inlines of a method
with formals of the same name.  This fixes quite a few assignment type warnings.

Changes to interpreter bytecode dispatch (fetching next bytecode later)  to support optional IMMUATBILITY

primitiveStringReplace needs to check for immutability amd soon should support
16- and 64-bit access.  Provide an error code for immediate replacement.
primitiveStringReplace.

Add immutability check to changeClassOf:to: for primitiveAdoptInstance et al.

Cogit: Merge in ARM 16 bit write handling.

Modified Paths:
--------------
    branches/Cog/nsspur64src/vm/cogit.h
    branches/Cog/nsspur64src/vm/cogitX64.c
    branches/Cog/nsspur64src/vm/cointerp.c
    branches/Cog/nsspur64src/vm/cointerp.h
    branches/Cog/nsspur64src/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/plugins/B2DPlugin/B2DPlugin.c
    branches/Cog/nsspursrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
    branches/Cog/nsspursrc/plugins/ZipPlugin/ZipPlugin.c
    branches/Cog/nsspursrc/vm/cogit.h
    branches/Cog/nsspursrc/vm/cogitARMv5.c
    branches/Cog/nsspursrc/vm/cogitIA32.c
    branches/Cog/nsspursrc/vm/cogitMIPSEL.c
    branches/Cog/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/spur64src/vm/cogit.h
    branches/Cog/spur64src/vm/cogitX64.c
    branches/Cog/spur64src/vm/cointerp.c
    branches/Cog/spur64src/vm/cointerp.h
    branches/Cog/spur64src/vm/gcc3x-cointerp.c
    branches/Cog/spursistasrc/vm/cogit.h
    branches/Cog/spursistasrc/vm/cogitARMv5.c
    branches/Cog/spursistasrc/vm/cogitIA32.c
    branches/Cog/spursistasrc/vm/cogitMIPSEL.c
    branches/Cog/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/cogitMIPSEL.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/plugins/ADPCMCodecPlugin/ADPCMCodecPlugin.c
    branches/Cog/src/plugins/B2DPlugin/B2DPlugin.c
    branches/Cog/src/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
    branches/Cog/src/plugins/SoundGenerationPlugin/SoundGenerationPlugin.c
    branches/Cog/src/plugins/ZipPlugin/ZipPlugin.c
    branches/Cog/src/vm/cogit.h
    branches/Cog/src/vm/cogitARMv5.c
    branches/Cog/src/vm/cogitIA32.c
    branches/Cog/src/vm/cogitMIPSEL.c
    branches/Cog/src/vm/cointerp.c
    branches/Cog/src/vm/cointerp.h
    branches/Cog/src/vm/cointerpmt.c
    branches/Cog/src/vm/cointerpmt.h
    branches/Cog/src/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/gcc3x-cointerpmt.c
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c

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

Modified: branches/Cog/nsspur64src/vm/cogit.h
===================================================================
--- branches/Cog/nsspur64src/vm/cogit.h	2016-01-17 04:02:34 UTC (rev 3562)
+++ branches/Cog/nsspur64src/vm/cogit.h	2016-01-20 02:33:22 UTC (rev 3563)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1647 uuid: 013e4a41-bb4b-46ba-86e0-16c6977c4865
+	CCodeGenerator VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748
  */
 
 

Modified: branches/Cog/nsspur64src/vm/cogitX64.c
===================================================================
--- branches/Cog/nsspur64src/vm/cogitX64.c	2016-01-17 04:02:34 UTC (rev 3562)
+++ branches/Cog/nsspur64src/vm/cogitX64.c	2016-01-20 02:33:22 UTC (rev 3563)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1647 uuid: 013e4a41-bb4b-46ba-86e0-16c6977c4865
+	CCodeGenerator VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1647 uuid: 013e4a41-bb4b-46ba-86e0-16c6977c4865
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1647 uuid: 013e4a41-bb4b-46ba-86e0-16c6977c4865 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -805,7 +805,7 @@
 static sqInt NoDbgRegParms genGetClassIndexOfNonImminto(sqInt sourceReg, sqInt destReg);
 static sqInt NoDbgRegParms genGetClassObjectOfClassIndexintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);
 static sqInt NoDbgRegParms genGetClassObjectOfintoscratchReginstRegIsReceiver(sqInt instReg, sqInt destReg, sqInt scratchReg, sqInt instRegIsReceiver);
-static sqInt NoDbgRegParms genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);
+static AbstractInstruction * NoDbgRegParms genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);
 static sqInt NoDbgRegParms genGetCompactClassIndexNonImmOfinto(sqInt instReg, sqInt destReg);
 static sqInt NoDbgRegParms genGetDoubleValueOfinto(sqInt srcReg, sqInt destFPReg);
 static sqInt NoDbgRegParms genGetFormatOfinto(sqInt srcReg, sqInt destReg);
@@ -852,7 +852,7 @@
 static sqInt NoDbgRegParms cmpC32RTempByteSize(AbstractInstruction * self_in_cmpC32RTempByteSize);
 static sqInt NoDbgRegParms computeMaximumSize(AbstractInstruction * self_in_computeMaximumSize);
 static sqInt NoDbgRegParms computeShiftRRSize(AbstractInstruction * self_in_computeShiftRRSize);
-static sqInt NoDbgRegParms concretizeArithCqRWithROraxOpcode(AbstractInstruction * self_in_concretizeArithCqRWithROraxOpcode, sqInt regOpcode, sqInt raxOpcode);
+static usqInt NoDbgRegParms concretizeArithCqRWithROraxOpcode(AbstractInstruction * self_in_concretizeArithCqRWithROraxOpcode, sqInt regOpcode, sqInt raxOpcode);
 static usqInt NoDbgRegParms concretizeFill32(AbstractInstruction * self_in_concretizeFill32);
 static usqInt NoDbgRegParms concretizeMoveRX32rR(AbstractInstruction * self_in_concretizeMoveRX32rR);
 static usqInt NoDbgRegParms concretizeMoveX32rRR(AbstractInstruction * self_in_concretizeMoveX32rRR);
@@ -959,8 +959,8 @@
 static sqInt genLongUnconditionalBackwardJump(void);
 static sqInt genLongUnconditionalForwardJump(void);
 static sqInt NoDbgRegParms genLookupForPerformNumArgs(sqInt numArgs);
-static AbstractInstruction * NoDbgRegParms genMoveConstantR(sqInt constant, sqInt reg);
-static sqInt NoDbgRegParms genMoveTrueR(sqInt reg);
+static AbstractInstruction * NoDbgRegParms genMoveFalseR(sqInt reg);
+static AbstractInstruction * NoDbgRegParms genMoveTrueR(sqInt reg);
 static sqInt NoDbgRegParms genMustBeBooleanTrampolineForcalled(sqInt boolean, char *trampolineName);
 static void NoDbgRegParms genPrimReturnEnterCogCodeEnilopmart(sqInt profiling);
 static sqInt genPushClosureTempsBytecode(void);
@@ -5859,12 +5859,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;
 
@@ -11648,7 +11648,7 @@
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg0Reg, ReceiverResultReg);
 	jumpTrue = genConditionalBranchoperand(jumpOpcode, 0);
-	/* begin genMoveConstant:R: */
+	/* begin genMoveFalseR: */
 	constant = falseObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -11661,7 +11661,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpTrue, genMoveConstantR(trueObject(), ReceiverResultReg));
+	jmpTarget(jumpTrue, genMoveTrueR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -11716,7 +11716,7 @@
 
 	/* FP jumps are a little weird */
 	jumpCond = jumpFPOpcodeGenerator(0);
-	/* begin genMoveConstant:R: */
+	/* begin genMoveFalseR: */
 	constant = falseObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -11729,7 +11729,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpCond, genMoveConstantR(trueObject(), ReceiverResultReg));
+	jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -12071,11 +12071,11 @@
 	/* begin AndCq:R: */
 	quickConstant = tagMask();
 	/* begin gen:quickConstant:operand: */
-	anInstruction1 = genoperandoperand(AndCqR, quickConstant, ClassReg);
+	anInstruction = genoperandoperand(AndCqR, quickConstant, ClassReg);
 	/* begin CmpCq:R: */
 	quickConstant1 = smallFloatTag();
 	/* begin gen:quickConstant:operand: */
-	anInstruction2 = genoperandoperand(CmpCqR, quickConstant1, ClassReg);
+	anInstruction1 = genoperandoperand(CmpCqR, quickConstant1, ClassReg);
 	/* begin JumpNonZero: */
 	jumpNotSmallFloat = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 	genGetSmallFloatValueOfscratchinto(Arg0Reg, TempReg, DPFPReg1);
@@ -12092,20 +12092,20 @@
 
 	/* FP jumps are a little weird */
 	jumpCond = jumpOpcodeGenerator(0);
-	/* begin genMoveConstant:R: */
+	/* begin genMoveFalseR: */
 	constant = falseObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
 	}
 	else {
 		/* begin MoveCq:R: */
-		anInstruction = genoperandoperand(MoveCqR, constant, ReceiverResultReg);
+		anInstruction2 = genoperandoperand(MoveCqR, constant, ReceiverResultReg);
 	}
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpCond, genMoveConstantR(trueObject(), ReceiverResultReg));
+	jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -15020,7 +15020,7 @@
 }
 
 	/* CogObjectRepresentationForSpur>>#genGetClassTagOf:into:scratchReg: */
-static sqInt NoDbgRegParms
+static AbstractInstruction * NoDbgRegParms
 genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg)
 {
 	return genGetInlineCacheClassTagFromintoforEntry(instReg, destReg, 1);
@@ -15255,9 +15255,7 @@
     usqInt byteSize;
     usqLong header;
     sqInt numSlots;
-    usqInt offset;
     sqInt quickConstant;
-    usqLong quickConstant1;
     AbstractInstruction *skip;
 
 
@@ -15293,13 +15291,9 @@
 	(abstractInstruction->annotation = IsRelativeCall);
 	jmpTarget(skip, gLabel());
 	/* begin MoveR:Mw:r: */
-	offset = (ClosureOuterContextIndex * BytesPerOop) + BaseHeaderSize;
-	/* begin gen:operand:quickConstant:operand: */
-	anInstruction6 = genoperandoperandoperand(MoveRMwr, ClassReg, offset, ReceiverResultReg);
+	anInstruction6 = genoperandoperandoperand(MoveRMwr, ClassReg, (ClosureOuterContextIndex * BytesPerOop) + BaseHeaderSize, ReceiverResultReg);
 	/* begin MoveCq:R: */
-	quickConstant1 = ((bcpc << 3) | 1);
-	/* begin gen:quickConstant:operand: */
-	anInstruction7 = genoperandoperand(MoveCqR, quickConstant1, TempReg);
+	anInstruction7 = genoperandoperand(MoveCqR, ((bcpc << 3) | 1), TempReg);
 	/* begin MoveR:Mw:r: */
 	anInstruction8 = genoperandoperandoperand(MoveRMwr, TempReg, (ClosureStartPCIndex * BytesPerOop) + BaseHeaderSize, ReceiverResultReg);
 	/* begin MoveCq:R: */
@@ -15383,7 +15377,7 @@
 		/* begin JumpNonZero: */
 		jumpCmp = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 	}
-	/* begin genMoveConstant:R: */
+	/* begin genMoveTrueR: */
 	constant = trueObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -15396,7 +15390,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpCmp, genMoveConstantR(falseObject(), ReceiverResultReg));
+	jmpTarget(jumpCmp, genMoveFalseR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -16600,7 +16594,7 @@
 /*	Will get inlined into concretizeAt: switch. */
 
 	/* CogX64Compiler>>#concretizeArithCqRWithRO:raxOpcode: */
-static sqInt NoDbgRegParms
+static usqInt NoDbgRegParms
 concretizeArithCqRWithROraxOpcode(AbstractInstruction * self_in_concretizeArithCqRWithROraxOpcode, sqInt regOpcode, sqInt raxOpcode)
 {
     unsigned long reg;
@@ -17238,7 +17232,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset113) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset113) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset113) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpLongNonZero:
@@ -17278,7 +17272,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset114) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset114) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset114) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case Jump:
@@ -17343,7 +17337,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset115) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset115) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset115) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpNonNegative:
@@ -17381,7 +17375,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset116) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset116) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset116) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpOverflow:
@@ -17419,7 +17413,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset117) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset117) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset117) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpNoOverflow:
@@ -17457,7 +17451,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset118) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset118) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset118) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpCarry:
@@ -17497,7 +17491,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset119) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset119) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset119) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpNoCarry:
@@ -17537,7 +17531,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset120) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset120) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset120) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpLess:
@@ -17575,7 +17569,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset121) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset121) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset121) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpGreaterOrEqual:
@@ -17613,7 +17607,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset122) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset122) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset122) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpGreater:
@@ -17651,7 +17645,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset123) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset123) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset123) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpLessOrEqual:
@@ -17689,7 +17683,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset124) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset124) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset124) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpAbove:
@@ -17728,7 +17722,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset125) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset125) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset125) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpBelowOrEqual:
@@ -17767,7 +17761,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset126) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset126) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset126) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpFPOrdered:
@@ -17805,7 +17799,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset127) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset127) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset127) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpFPUnordered:
@@ -17843,7 +17837,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset128) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset128) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset128) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case RetN:
@@ -20729,7 +20723,6 @@
     AbstractInstruction *jmp;
     AbstractInstruction *jmpSampleNonPrim;
     AbstractInstruction *jmpSamplePrim;
-    void *jumpTarget;
     sqInt literal;
     sqInt literal1;
     sqInt offset;
@@ -21195,7 +21188,8 @@
 		return genStorePopReceiverVariable(1, variableIndex);
 	}
 	if (variableType == 1) {
-		return genStorePopTemporaryVariable(1, variableIndex);
+		genStorePopTemporaryVariable(1, variableIndex);
+		return 0;
 	}
 	if (variableType == 3) {
 		return genStorePopLiteralVariable(1, variableIndex);
@@ -21216,7 +21210,8 @@
 		return genStorePopReceiverVariable(0, variableIndex);
 	}
 	if (variableType == 1) {
-		return genStorePopTemporaryVariable(0, variableIndex);
+		genStorePopTemporaryVariable(0, variableIndex);
+		return 0;
 	}
 	if (variableType == 3) {
 		return genStorePopLiteralVariable(0, variableIndex);
@@ -21891,12 +21886,15 @@
 	return 0;
 }
 
-	/* SimpleStackBasedCogit>>#genMoveConstant:R: */
+	/* SimpleStackBasedCogit>>#genMoveFalseR: */
 static AbstractInstruction * NoDbgRegParms
-genMoveConstantR(sqInt constant, sqInt reg)
+genMoveFalseR(sqInt reg)
 {
     AbstractInstruction *anInstruction;
+    sqInt constant;
 
+	/* begin genMoveConstant:R: */
+	constant = falseObject();
 	return (shouldAnnotateObjectReference(constant)
 		? annotateobjRef(gMoveCwR(constant, reg), constant)
 		: (/* begin MoveCq:R: */
@@ -21905,7 +21903,7 @@
 }
 
 	/* SimpleStackBasedCogit>>#genMoveTrueR: */
-static sqInt NoDbgRegParms
+static AbstractInstruction * NoDbgRegParms
 genMoveTrueR(sqInt reg)
 {
     AbstractInstruction *anInstruction;
@@ -24101,7 +24099,7 @@
 		break;
 	case 7:
 		genStorePopLiteralVariable(0, byte2);
-		break;
+				break;
 	default:
 		
 		/* 5 & 6 */
@@ -24111,7 +24109,7 @@
 		else {
 			genStorePopReceiverVariable(opType == 6, byte2);
 		}
-
+		
 	}
 	assert(needsFrame);
 	assert(!(prevInstIsPCAnnotated()));
@@ -27165,8 +27163,8 @@
 
 
 /*	In addition to ssStorePop:toReg:, if this is a store and not
-	a popInto and the top of the simulated stack is not spilled,
-	I change the simulated stack to use the register for the value */
+	a popInto I change the simulated stack to use the register 
+	for the top value */
 
 	/* StackToRegisterMappingCogit>>#ssStoreAndReplacePop:toReg: */
 static void NoDbgRegParms

Modified: branches/Cog/nsspur64src/vm/cointerp.c
===================================================================
--- branches/Cog/nsspur64src/vm/cointerp.c	2016-01-17 04:02:34 UTC (rev 3562)
+++ branches/Cog/nsspur64src/vm/cointerp.c	2016-01-20 02:33:22 UTC (rev 3563)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1646 uuid: 83280f1d-a69e-4201-a103-e3236315d026
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748
    from
-	CoInterpreter VMMaker.oscog-eem.1646 uuid: 83280f1d-a69e-4201-a103-e3236315d026
+	CoInterpreter VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1646 uuid: 83280f1d-a69e-4201-a103-e3236315d026 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -870,7 +870,7 @@
 extern void ensureNoForwardedLiteralsIn(sqInt aMethodObj);
 extern usqInt freeStartAddress(void);
 extern usqInt getScavengeThreshold(void);
-static sqInt NoDbgRegParms headerWhileForwardingOf(sqInt aCompiledMethodObjOop);
+static sqLong NoDbgRegParms headerWhileForwardingOf(sqInt aCompiledMethodObjOop);
 extern sqInt isForwardedClassIndex(sqInt maybeClassIndex);
 extern sqInt isImmediateClass(sqInt classObj);
 extern sqInt isReallyYoungObject(sqInt objOop);
@@ -2430,7 +2430,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.1646";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1656";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -4765,9 +4765,6 @@
 				instVarIndex = currentBytecode & 7;
 				/* begin internalPop: */
 				localSP += 1 * BytesPerOop;
-				/* begin fetchNextBytecode */
-				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
-
 				/* begin storePointerImmutabilityCheck:ofObject:withValue: */
 				/* begin storePointer:ofObject:withValue: */
 				assert(!(isForwarded(rcvr)));
@@ -4784,6 +4781,9 @@
 				}
 				longAtput((rcvr + BaseHeaderSize) + (((long)instVarIndex) << (shiftForWord())), top);
 			l1:	/* end storePointerImmutabilityCheck:ofObject:withValue: */;
+				/* begin fetchNextBytecode */
+				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
 			}
 			break;
 		case 104:
@@ -5087,7 +5087,7 @@
 				frameToReturnTo = 0;
 				if (!((byteAt((localFP + FoxIFrameFlags) + 3)) != 0)) {
 					goto commonCallerReturn;
-					goto l190;
+					goto l194;
 				}
 				closure = longAt(localFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory())
 	? ((mframeCogMethod(localFP))->cmNumArgs)
@@ -5137,10 +5137,10 @@
 						: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 						assert(isContext(frameContext(localFP)));
 						ourContext = longAt(localFP + FoxThisContext);
-						goto l194;
+						goto l198;
 					}
 					ourContext = marryFrameSP(localFP, localSP);
-				l194:	/* end ensureFrameIsMarried:SP: */;
+				l198:	/* end ensureFrameIsMarried:SP: */;
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), ourContext);
 					/* begin internalPush: */
@@ -5148,7 +5148,7 @@
 					GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorCannotReturn) << (shiftForWord())));
 					GIV(argumentCount) = 1;
 					goto normalSend;
-					goto l190;
+					goto l194;
 				}
 				if (unwindContextOrNilOrZero != 0) {
 					/* begin internalAboutToReturn:through: */
@@ -5157,10 +5157,10 @@
 						: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 						assert(isContext(frameContext(localFP)));
 						ourContext1 = longAt(localFP + FoxThisContext);
-						goto l191;
+						goto l195;
 					}
 					ourContext1 = marryFrameSP(localFP, localSP);
-				l191:	/* end ensureFrameIsMarried:SP: */;
+				l195:	/* end ensureFrameIsMarried:SP: */;
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), ourContext1);
 					/* begin internalPush: */
@@ -5170,7 +5170,7 @@
 					GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorAboutToReturn) << (shiftForWord())));
 					GIV(argumentCount) = 2;
 					goto normalSend;
-					goto l190;
+					goto l194;
 				}
 				contextToReturnTo = null;
 				if (((((longAt((home + BaseHeaderSize) + (((long)SenderIndex) << (shiftForWord()))))) & 7) == 1)) {
@@ -5222,10 +5222,10 @@
 							: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
 							assert(isContext(frameContext(localFP)));
 							ourContext2 = longAt(localFP + FoxThisContext);
-							goto l193;
+							goto l197;
 						}
 						ourContext2 = marryFrameSP(localFP, localSP);
-					l193:	/* end ensureFrameIsMarried:SP: */;
+					l197:	/* end ensureFrameIsMarried:SP: */;
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), ourContext2);
 						/* begin internalPush: */
@@ -5233,7 +5233,7 @@
 						GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorCannotReturn) << (shiftForWord())));
 						GIV(argumentCount) = 1;
 						goto normalSend;
-						goto l190;
+						goto l194;
 					}
 				}
 				assert(pageListIsWellFormed());
@@ -5338,11 +5338,11 @@
 						GIV(stackPointer) = localSP;
 						GIV(framePointer) = localFP;
 						ceEnterCogCodePopReceiverReg();
-						goto l192;
+						goto l196;
 					}
 					localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
 				}
-			l192:	/* end maybeReturnToMachineCodeFrame */;
+			l196:	/* end maybeReturnToMachineCodeFrame */;
 				/* begin setMethod: */
 				aMethodObj = longAt(localFP + FoxMethod);
 				assert((((usqInt)aMethodObj)) >= (startOfMemory()));
@@ -5357,7 +5357,7 @@
 
 				longAtPointerput(localSP, localReturnValue);
 			}
-		l190:	/* end case */;
+		l194:	/* end case */;
 			break;
 		case 121:
 			/* returnTrue */
@@ -5470,27 +5470,27 @@
 							fp = (thePage->headFP);
 							if (fp == theFP) {
 								frameAbove = 0;
-								goto l196;
+								goto l200;
 							}
 							while (((callerFP = pointerForOop(longAt(fp + FoxSavedFP)))) != 0) {
 								if (callerFP == theFP) {
 									frameAbove = fp;
-									goto l196;
+									goto l200;
 								}
 								fp = callerFP;
 							}
 							error("did not find theFP in stack page");
 							frameAbove = 0;
-						l196:	/* end findFrameAbove:inPage: */;
+						l200:	/* end findFrameAbove:inPage: */;
 							/* begin newStackPage */
 							lruOrFree = (GIV(mostRecentlyUsedPage)->nextPage);
 							if (((lruOrFree->baseFP)) == 0) {
 								newPage = lruOrFree;
-								goto l197;
+								goto l201;
 							}
 							divorceFramesIn(lruOrFree);
 							newPage = lruOrFree;
-						l197:	/* end newStackPage */;
+						l201:	/* end newStackPage */;
 							assert(newPage == GIV(stackPage));
 							moveFramesInthroughtoPage(thePage, frameAbove, newPage);
 							markStackPageMostRecentlyUsed(newPage);
@@ -5513,7 +5513,7 @@
 							longAtput((sp2 = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
 							GIV(stackPointer) = sp2;
 							ceSendAborttonumArgs(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorCannotReturn) << (shiftForWord()))), contextToReturnFrom, 1);
-							goto l195;
+							goto l199;
 						}
 						GIV(instructionPointer) = 0;
 						thePage = makeBaseFrameFor(contextToReturnTo);
@@ -5549,7 +5549,7 @@
 							GIV(stackPointer) = localSP;
 							GIV(framePointer) = localFP;
 							ceEnterCogCodePopReceiverReg();
-							goto l195;
+							goto l199;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
 					}
@@ -5567,7 +5567,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					goto l195;
+					goto l199;
 				}
 				localIP = pointerForOop(longAt(localFP + FoxCallerSavedIP));
 				localSP = localFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory())
@@ -5592,7 +5592,7 @@
 						GIV(stackPointer) = localSP;
 						GIV(framePointer) = localFP;
 						ceEnterCogCodePopReceiverReg();
-						goto l195;
+						goto l199;
 					}
 					localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
 				}
@@ -5610,7 +5610,7 @@
 
 				longAtPointerput(localSP, localReturnValue);
 			}
-		l195:	/* end case */;
+		l199:	/* end case */;
 			break;
 		case 126:
 		case 127:
@@ -5643,10 +5643,10 @@
 					: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0)) {
 					assert(isContext(frameContext(theFP)));
 					ourContext = longAt(theFP + FoxThisContext);
-					goto l198;
+					goto l202;
 				}
 				ourContext = marryFrameSP(theFP, theSP);
-			l198:	/* end ensureFrameIsMarried:SP: */;
+			l202:	/* end ensureFrameIsMarried:SP: */;
 				localIP -= 1;
 				/* begin internalPush: */
 				longAtPointerput((localSP -= BytesPerOop), ourContext);
@@ -5738,9 +5738,6 @@
 				VM_LABEL(extendedStoreBytecode);
 				/* begin extendedStoreBytecodePop: */
 				descriptor = byteAtPointer(++localIP);
-				/* begin fetchNextBytecode */
-				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
-
 				variableType = (((usqInt) descriptor) >> 6) & 3;
 				variableIndex = descriptor & 0x3F;
 				value = longAtPointer(localSP);
@@ -5761,9 +5758,16 @@
 						}
 					}
 					longAtput((objOop + BaseHeaderSize) + (((long)variableIndex) << (shiftForWord())), value);
+				l4:	/* end storePointerImmutabilityCheck:ofObject:withValue: */;
+					/* begin fetchNextBytecode */
+					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
 					goto l3;
 				}
 				if (variableType == 1) {
+					/* begin fetchNextBytecode */
+					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
 					if (variableIndex < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
 						longAtput((localFP + FoxCallerSavedIP) + ((frameNumArgs - variableIndex) * BytesPerWord), value);
 					}
@@ -5801,6 +5805,10 @@
 						}
 					}
 					longAtput((litVar + BaseHeaderSize) + (((long)ValueIndex) << (shiftForWord())), value);
+				l5:	/* end storeLiteralVariable:withValue: */;
+					/* begin fetchNextBytecode */
+					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
 					goto l3;
 				}
 				error("illegal store");
@@ -5822,9 +5830,6 @@
 				VM_LABEL(extendedStoreAndPopBytecode);
 				/* begin extendedStoreBytecodePop: */
 				descriptor = byteAtPointer(++localIP);
-				/* begin fetchNextBytecode */
-				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
-
 				variableType = (((usqInt) descriptor) >> 6) & 3;
 				variableIndex = descriptor & 0x3F;
 				value = longAtPointer(localSP);
@@ -5848,16 +5853,23 @@
 						}
 					}
 					longAtput((objOop + BaseHeaderSize) + (((long)variableIndex) << (shiftForWord())), value);
-					goto l4;
+				l7:	/* end storePointerImmutabilityCheck:ofObject:withValue: */;
+					/* begin fetchNextBytecode */
+					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
+					goto l6;
 				}
 				if (variableType == 1) {
+					/* begin fetchNextBytecode */
+					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
 					if (variableIndex < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
 						longAtput((localFP + FoxCallerSavedIP) + ((frameNumArgs - variableIndex) * BytesPerWord), value);
 					}
 					else {
 						longAtput(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - variableIndex) * BytesPerWord), value);
 					}
-					goto l4;
+					goto l6;
 				}
 				if (variableType == 3) {
 					/* begin storeLiteralVariable:withValue: */
@@ -5888,10 +5900,14 @@
 						}
 					}
 					longAtput((litVar + BaseHeaderSize) + (((long)ValueIndex) << (shiftForWord())), value);
-					goto l4;
+				l8:	/* end storeLiteralVariable:withValue: */;
+					/* begin fetchNextBytecode */
+					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
+					goto l6;
 				}
 				error("illegal store");
-			l4:	/* end extendedStoreBytecodePop: */;
+			l6:	/* end extendedStoreBytecodePop: */;
 			}
 			break;
 		case 131:
@@ -5942,7 +5958,7 @@
 					sqInt methodHeader2;
 					sqInt nArgs;
 					sqInt numTemps;
-					usqInt object;
+					sqInt object;
 					sqInt ok;
 					sqInt probe;
 					sqInt rcvr;
@@ -5967,12 +5983,12 @@
 						classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)fieldIndex) << (shiftForWord())));
 						if (classTablePage == GIV(nilObj)) {
 							classOrInteger = null;
-							goto l202;
+							goto l206;
 						}
 						/* begin fetchPointer:ofObject: */
 						fieldIndex1 = GIV(lkupClassTag) & ((1LL << (classTableMajorIndexShift())) - 1);
 						classOrInteger = longAt((classTablePage + BaseHeaderSize) + (((long)fieldIndex1) << (shiftForWord())));
-					l202:	/* end classAtIndex: */;
+					l206:	/* end classAtIndex: */;
 						GIV(traceLog)[GIV(traceLogIndex)] = classOrInteger;
 						GIV(traceLog)[GIV(traceLogIndex) + 1] = GIV(messageSelector);
 						GIV(traceLog)[GIV(traceLogIndex) + 2] = TraceIsFromInterpreter;
@@ -5995,7 +6011,7 @@
 						GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
 						primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
 						ok = 1;
-						goto l200;
+						goto l204;
 					}
 
 					/* second probe */
@@ -6005,7 +6021,7 @@
 						GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
 						primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
 						ok = 1;
-						goto l200;
+						goto l204;
 					}
 					probe = (((usqInt) hash) >> 2) & MethodCacheMask;
 					if (((GIV(methodCache)[probe + MethodCacheSelector]) == GIV(messageSelector))
@@ -6013,10 +6029,10 @@
 						GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
 						primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
 						ok = 1;
-						goto l200;
+						goto l204;
 					}
 					ok = 0;
-				l200:	/* end inlineLookupInMethodCacheSel:classTag: */;
+				l204:	/* end inlineLookupInMethodCacheSel:classTag: */;
 					if (ok) {
 						/* begin ifAppropriateCompileToNativeCode:selector: */
 						methodHeader2 = longAt((GIV(newMethod) + BaseHeaderSize) + (((long)HeaderIndex) << (shiftForWord())));
@@ -6072,7 +6088,7 @@
 										maybeFlagMethodAsInterpreted(GIV(newMethod));
 									}
 								}
-								goto l199;
+								goto l203;
 							}
 						}
 						/* begin classAtIndex: */
@@ -6083,12 +6099,12 @@
 						classTablePage1 = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)fieldIndex2) << (shiftForWord())));
 						if (classTablePage1 == GIV(nilObj)) {
 							GIV(lkupClass) = null;
-							goto l203;
+							goto l207;
 						}
 						/* begin fetchPointer:ofObject: */
 						fieldIndex11 = GIV(lkupClassTag) & ((1LL << (classTableMajorIndexShift())) - 1);
 						GIV(lkupClass) = longAt((classTablePage1 + BaseHeaderSize) + (((long)fieldIndex11) << (shiftForWord())));
-					l203:	/* end classAtIndex: */;
+					l207:	/* end classAtIndex: */;
 						lookupOrdinarySend();
 
 						/* begin internalizeIPandSP */
@@ -6098,7 +6114,7 @@
 						localFP = pointerForOop(GIV(framePointer));
 						addNewMethodToCache(GIV(lkupClass));
 					}
-				l199:	/* end internalFindNewMethodOrdinary */;
+				l203:	/* end internalFindNewMethodOrdinary */;
 					/* begin internalExecuteNewMethod */
 					if (primitiveFunctionPointer != 0) {
 						if ((((unsigned long) primitiveFunctionPointer)) <= MaxQuickPrimitiveIndex) {
@@ -6110,26 +6126,26 @@
 							if (localPrimIndex >= 264) {
 								/* begin internalStackTopPut: */
 								longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + (((long)(localPrimIndex - 264)) << (shiftForWord()))));
-								goto l201;
+								goto l205;
 							}
 							if (localPrimIndex == 256) {
-								goto l201;
+								goto l205;
 							}
 							if (localPrimIndex == 257) {
 								longAtPointerput(localSP, GIV(trueObj));
-								goto l201;
+								goto l205;
 							}
 							if (localPrimIndex == 258) {
 								longAtPointerput(localSP, GIV(falseObj));
-								goto l201;
+								goto l205;
 							}
 							if (localPrimIndex == 259) {
 								longAtPointerput(localSP, GIV(nilObj));
-								goto l201;
+								goto l205;
 							}
 							longAtPointerput(localSP, (((localPrimIndex - 261) << 3) | 1));
-						l201:	/* end internalQuickPrimitiveResponse */;
-							goto l205;
+						l205:	/* end internalQuickPrimitiveResponse */;
+							goto l209;
 						}
 						/* begin externalizeIPandSP */
 						assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -6191,7 +6207,7 @@
 						if (succeeded) {
 							returntoExecutive(popStack(), 1);
 							browserPluginReturnIfNeeded();
-							goto l205;
+							goto l209;
 						}
 					}
 					if (methodHasCogMethod(GIV(newMethod))) {
@@ -6266,11 +6282,11 @@
 										table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)PrimErrTableIndex) << (shiftForWord())));
 										if (GIV(primFailCode) <= (numSlotsOf(table))) {
 											errorCode = longAt((table + BaseHeaderSize) + (((long)(GIV(primFailCode) - 1)) << (shiftForWord())));
-											goto l204;
+											goto l208;
 										}
 									}
 									errorCode = ((GIV(primFailCode) << 3) | 1);
-								l204:	/* end getErrorObjectFromPrimFailCode */;
+								l208:	/* end getErrorObjectFromPrimFailCode */;
 									longAtPointerput(localSP, errorCode);
 								}
 								GIV(primFailCode) = 0;
@@ -6294,7 +6310,7 @@
 							localFP = pointerForOop(GIV(framePointer));
 						}
 					}
-				l205:	/* end internalExecuteNewMethod */;
+				l209:	/* end internalExecuteNewMethod */;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -6326,8 +6342,8 @@
 				sqInt senderOop;
 				sqInt senderOop1;
 				char *spouseFP;
-				char *theFP;
-				StackPage *thePage;
+				char * theFP;
+				StackPage * thePage;
 				StackPage *thePage1;
 				char *theSP;
 				sqInt top;
@@ -6343,7 +6359,7 @@
 					GIV(messageSelector) = longAt((GIV(method) + BaseHeaderSize) + (((long)(byte3 + LiteralStart)) << (shiftForWord())));
 					GIV(argumentCount) = byte2 & 0x1F;
 					goto normalSend;
-					goto l6;
+					goto l9;
 				}
 				if (opType == 1) {
 					/* begin literal: */
@@ -6351,12 +6367,12 @@
 					GIV(messageSelector) = longAt((GIV(method) + BaseHeaderSize) + (((long)(byte3 + LiteralStart)) << (shiftForWord())));
 					GIV(argumentCount) = byte2 & 0x1F;
 					goto superclassSend;
-					goto l6;
+					goto l9;
 				}
-				/* begin fetchNextBytecode */
-				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+				if (opType == 2) {
+					/* begin fetchNextBytecode */
+					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-				if (opType == 2) {
 					/* begin pushMaybeContextReceiverVariable: */
 					rcvr = longAt(localFP + FoxIFReceiver);
 					if ((byte3 <= StackPointerIndex)
@@ -6394,11 +6410,11 @@
 								value = result;
 							}
 							object1 = value;
-							goto l8;
+							goto l12;
 						}
 						if (isWidowedContext(rcvr)) {
 							object1 = longAt((rcvr + BaseHeaderSize) + (((long)byte3) << (shiftForWord())));
-							goto l8;
+							goto l12;
 						}
 						/* begin frameOfMarriedContext: */
 						senderOop = longAt((rcvr + BaseHeaderSize) + (((long)SenderIndex) << (shiftForWord())));
@@ -6422,7 +6438,7 @@
 								assert((callerContextOrNil == (nilObject()))
 								 || (isContext(callerContextOrNil)));
 								object1 = callerContextOrNil;
-								goto l5;
+								goto l10;
 							}
 							/* begin ensureFrameIsMarried:SP: */
 							assert(!(isBaseFrame(spouseFP)));
@@ -6434,40 +6450,46 @@
 								: (byteAt((callerFP + FoxIFrameFlags) + 2)) != 0)) {
 								assert(isContext(frameContext(callerFP)));
 								object1 = longAt(callerFP + FoxThisContext);
-								goto l5;
+								goto l10;
 							}
 							object1 = marryFrameSP(callerFP, theSP);
-						l5:	/* end ensureCallerContext: */;
-							goto l8;
+						l10:	/* end ensureCallerContext: */;
+							goto l12;
 						}
 						if (byte3 == StackPointerIndex) {
 							assert((ReceiverIndex + (stackPointerIndexForFrame(spouseFP))) < (lengthOf(rcvr)));
 							object1 = (((stackPointerIndexForFrame(spouseFP)) << 3) | 1);
-							goto l8;
+							goto l12;
 						}
 						if (byte3 == InstructionPointerIndex) {
 							object1 = instructionPointerForFramecurrentFPcurrentIP(spouseFP, localFP, oopForPointer(localIP));
-							goto l8;
+							goto l12;
 						}
 						error("bad index");
 						object1 = 0;
-					l8:	/* end instVar:ofContext: */;
+					l12:	/* end instVar:ofContext: */;
 						longAtPointerput((localSP -= BytesPerOop), object1);
 					}
 					else {
 						/* begin internalPush: */
 						longAtPointerput((localSP -= BytesPerOop), longAt((rcvr + BaseHeaderSize) + (((long)byte3) << (shiftForWord()))));
 					}
-					goto l6;
+					goto l9;
 				}
 				if (opType == 3) {
+					/* begin fetchNextBytecode */
+					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
 					/* begin pushLiteralConstant: */
 					assert(GIV(method) == (iframeMethod(localFP)));
 					object = longAt((GIV(method) + BaseHeaderSize) + (((long)(byte3 + LiteralStart)) << (shiftForWord())));
 					longAtPointerput((localSP -= BytesPerOop), object);
-					goto l6;
+					goto l9;
 				}
 				if (opType == 4) {
+					/* begin fetchNextBytecode */
+					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
 					/* begin pushLiteralVariable: */
 					
 					/* push/store/popLiteralVariable all fetch a literal, and either read or write the literal's value field.
@@ -6490,7 +6512,7 @@
 					/* begin internalPush: */
 					longAtPointerput((localSP -= BytesPerOop), longAt((litVar1 + BaseHeaderSize) + (((long)ValueIndex) << (shiftForWord()))));
 
-					goto l6;
+					goto l9;
 				}
 				top = longAtPointer(localSP);
 				if (opType == 7) {
@@ -6522,8 +6544,11 @@
 						}
 					}
 					longAtput((litVar + BaseHeaderSize) + (((long)ValueIndex) << (shiftForWord())), top);
-				l10:	/* end storeLiteralVariable:withValue: */;
-					goto l6;
+				l14:	/* end storeLiteralVariable:withValue: */;
+					/* begin fetchNextBytecode */
+					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
+					goto l9;
 				}
 				if (opType == 6) {
 					/* begin internalPop: */
@@ -6566,7 +6591,7 @@
 						if (byte3 == StackPointerIndex) {
 							ensureContextIsExecutionSafeAfterAssignToStackPointer(rcvr1);
 						}
-						goto l9;
+						goto l13;
 					}
 					/* begin frameOfMarriedContext: */
 					senderOop1 = longAt((rcvr1 + BaseHeaderSize) + (((long)SenderIndex) << (shiftForWord())));
@@ -6588,7 +6613,7 @@
 						else {
 							markStackPageMostRecentlyUsed(GIV(stackPage));
 						}
-						goto l9;
+						goto l13;
 					}
 					/* begin externalizeIPandSP */
 					assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -6620,7 +6645,7 @@
 					localFP = pointerForOop(GIV(framePointer));
 					markStackPageMostRecentlyUsed(GIV(stackPage));
 					assertValidExecutionPointersimbarline(((usqInt)localIP), localFP, localSP, 1, __LINE__);
-				l9:	/* end instVar:ofContext:put: */;
+				l13:	/* end instVar:ofContext:put: */;
 				}
 				else {
 					/* begin storePointerImmutabilityCheck:ofObject:withValue: */
@@ -6638,10 +6663,13 @@
 						}
 					}
 					longAtput((rcvr1 + BaseHeaderSize) + (((long)byte3) << (shiftForWord())), top);
-				l7:	/* end storePointerImmutabilityCheck:ofObject:withValue: */;
+				l11:	/* end storePointerImmutabilityCheck:ofObject:withValue: */;
 				}
+				/* begin fetchNextBytecode */
+				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
 			}
-		l6:	/* end case */;
+		l9:	/* end case */;
 			break;
 		case 133:
 			/* singleExtendedSuperBytecode */
@@ -6784,10 +6812,10 @@
 					: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0)) {
 					assert(isContext(frameContext(theFP)));
 					ourContext = longAt(theFP + FoxThisContext);
-					goto l11;
+					goto l15;
 				}
 				ourContext = marryFrameSP(theFP, theSP);
-			l11:	/* end ensureFrameIsMarried:SP: */;
+			l15:	/* end ensureFrameIsMarried:SP: */;
 				/* begin fetchNextBytecode */
 				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -6838,13 +6866,13 @@
 					if ((GIV(freeStart) + numBytes) > (((eden()).limit))) {
 						error("no room in eden for allocateSmallNewSpaceSlots:format:classIndex:");
 						array = 0;
-						goto l12;
+						goto l16;
 					}
 				}
 				long64Atput(newObj, ((((long)(((usqLong) size))) << (numSlotsFullShift())) + (2LL << (formatShift()))) + ClassArrayCompactIndex);
 				GIV(freeStart) += numBytes;
 				array = newObj;
-			l12:	/* end allocateSmallNewSpaceSlots:format:classIndex: */;
+			l16:	/* end allocateSmallNewSpaceSlots:format:classIndex: */;
 
 				if (popValues) {
 					for (i = 0; i < size; i += 1) {
@@ -6891,15 +6919,15 @@
 					localIP = (localIP + (3)) - 1;
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
-					goto l13;
+					goto l17;
 				}
 				else {
 					goto respondToUnknownBytecode;
-					goto l13;
+					goto l17;
 				}
 
 			}
-		l13:	/* end case */;
+		l17:	/* end case */;
 			break;
 		case 140:
 		case 506: /*250*/
@@ -7038,10 +7066,10 @@
 					: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0)) {
 					assert(isContext(frameContext(theFP)));
 					context = longAt(theFP + FoxThisContext);
-					goto l14;
+					goto l20;
 				}
 				context = marryFrameSP(theFP, theSP);
-			l14:	/* end ensureFrameIsMarried:SP: */;
+			l20:	/* end ensureFrameIsMarried:SP: */;
 				/* begin closureIn:numArgs:instructionPointer:numCopiedValues: */
 				initialIP = ((oopForPointer(localIP)) + 2) - (GIV(method) + BaseHeaderSize);
 				/* begin eeInstantiateSmallClassIndex:format:numSlots: */
@@ -7069,13 +7097,13 @@
 					if ((GIV(freeStart) + numBytes) > (((eden()).limit))) {
 						error("no room in eden for allocateSmallNewSpaceSlots:format:classIndex:");
 						newClosure1 = 0;
-						goto l15;
+						goto l18;
 					}
 				}
 				long64Atput(newObj, ((((long)(((usqLong) numSlots))) << (numSlotsFullShift())) + (((long)objFormat) << (formatShift()))) + ClassBlockClosureCompactIndex);
 				GIV(freeStart) += numBytes;
 				newClosure1 = newObj;
-			l15:	/* end allocateSmallNewSpaceSlots:format:classIndex: */;
+			l18:	/* end allocateSmallNewSpaceSlots:format:classIndex: */;
 
 				/* begin storePointerUnchecked:ofObject:withValue: */
 				assert(!(isForwarded(newClosure1)));
@@ -7255,7 +7283,7 @@
 						GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorMustBeBoolean) << (shiftForWord())));
 						GIV(argumentCount) = 0;
 						goto normalSend;
-						goto l17;
+						goto l21;
 					}
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -7263,7 +7291,7 @@
 				}
 				/* begin internalPop: */
 				localSP += 1 * BytesPerOop;
-			l17:	/* end jumplfFalseBy: */;
+			l21:	/* end jumplfFalseBy: */;
 			}
 			break;
 		case 160:
@@ -7285,7 +7313,7 @@
 				localIP += offset;
 				/* begin ifBackwardsCheckForEvents: */
 				if (offset >= 0) {
-					goto l18;
+					goto l22;
 				}
 				if (localSP < GIV(stackLimit)) {
 					/* begin externalizeIPandSP */
@@ -7302,7 +7330,7 @@
 					localSP = pointerForOop(GIV(stackPointer));
 					localFP = pointerForOop(GIV(framePointer));
 					if (switched) {
-						goto l18;
+						goto l22;
 					}
 				}
 				backwardJumpCountByte = byteAt(localFP + ((VMBIGENDIAN
@@ -7331,7 +7359,7 @@
 				byteAtput(localFP + ((VMBIGENDIAN
 	? (FoxIFrameFlags + BytesPerWord) - 1
 	: FoxIFrameFlags)), backwardJumpCountByte);
-			l18:	/* end ifBackwardsCheckForEvents: */;
+			l22:	/* end ifBackwardsCheckForEvents: */;
 				/* begin fetchNextBytecode */
 				currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
@@ -7362,7 +7390,7 @@
 						GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorMustBeBoolean) << (shiftForWord())));
 						GIV(argumentCount) = 0;
 						goto normalSend;
-						goto l19;
+						goto l23;
 					}
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -7370,7 +7398,7 @@
 				}
 				/* begin internalPop: */
 				localSP += 1 * BytesPerOop;
-			l19:	/* end jumplfTrueBy: */;
+			l23:	/* end jumplfTrueBy: */;
 			}
 			break;
 		case 172:
@@ -7398,7 +7426,7 @@
 						GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorMustBeBoolean) << (shiftForWord())));
 						GIV(argumentCount) = 0;
 						goto normalSend;
-						goto l20;
+						goto l24;
 					}
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -7406,7 +7434,7 @@
 				}
 				/* begin internalPop: */
 				localSP += 1 * BytesPerOop;
-			l20:	/* end jumplfFalseBy: */;
+			l24:	/* end jumplfFalseBy: */;
 			}
 			break;
 		case 176:
@@ -7441,7 +7469,7 @@
 						/* begin fetchNextBytecode */
 						currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-						goto l21;
+						goto l25;
 					}
 				}
 				else {
@@ -7466,20 +7494,20 @@
 							rot = (((long)rot) << 0x3F) + (((usqInt) (((unsigned long)rot))) >> 1);
 							bits = rot;
 							rcvr1 = (((double *) ((&bits))))[0];
-							goto l22;
+							goto l26;
 						}
 						if ((tagBits == (smallIntegerTag()))
 						 && (((shift = (64 - (numTagBits())) - (smallFloatMantissaBits())),
 						(((sqInt) (((long)rcvr) << shift)) >> shift) == rcvr))) {
 							rcvr1 = ((double) ((rcvr >> 3)) );
-							goto l22;
+							goto l26;
 						}
 					}
 					else {
 						if (((longAt(rcvr)) & (classIndexMask())) == ClassFloatCompactIndex) {
 							fetchFloatAtinto(rcvr + BaseHeaderSize, result1);
 							rcvr1 = result1;
-							goto l22;
+							goto l26;
 						}
 					}
 					/* begin primitiveFail */
@@ -7487,7 +7515,7 @@
 						GIV(primFailCode) = 1;
 					}
 					rcvr1 = 0.0;
-				l22:	/* end loadFloatOrIntFrom: */;
+				l26:	/* end loadFloatOrIntFrom: */;
 					/* begin loadFloatOrIntFrom: */
 					if (((tagBits1 = arg & (tagMask()))) != 0) {
 						if (tagBits1 == (smallFloatTag())) {
@@ -7502,20 +7530,20 @@
 							rot1 = (((long)rot1) << 0x3F) + (((usqInt) (((unsigned long)rot1))) >> 1);
 							bits1 = rot1;
 							arg1 = (((double *) ((&bits1))))[0];
-							goto l23;
+							goto l27;
 						}
 						if ((tagBits1 == (smallIntegerTag()))
 						 && (((shift1 = (64 - (numTagBits())) - (smallFloatMantissaBits())),
 						(((sqInt) (((long)arg) << shift1)) >> shift1) == arg))) {
 							arg1 = ((double) ((arg >> 3)) );
-							goto l23;
+							goto l27;
 						}
 					}
 					else {
 						if (((longAt(arg)) & (classIndexMask())) == ClassFloatCompactIndex) {
 							fetchFloatAtinto(arg + BaseHeaderSize, result2);
 							arg1 = result2;
-							goto l23;
+							goto l27;
 						}
 					}
 					/* begin primitiveFail */
@@ -7523,7 +7551,7 @@
 						GIV(primFailCode) = 1;
 					}
 					arg1 = 0.0;
-				l23:	/* end loadFloatOrIntFrom: */;
+				l27:	/* end loadFloatOrIntFrom: */;
 					if (!GIV(primFailCode)) {
 						/* begin pop:thenPushFloat: */
 						longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 + arg1));
@@ -7538,7 +7566,7 @@

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list