[Vm-dev] [commit][3510] CogVM source as per VMMaker.oscog-eem.1535

commits at squeakvm.org commits at squeakvm.org
Tue Dec 1 00:32:25 UTC 2015


Revision: 3510
Author:   eliot
Date:     2015-11-30 16:32:22 -0800 (Mon, 30 Nov 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1535

All:
Fix maybeInlinePositive32BitIntegerFor: and hence positive64BitIntegerFor: for
values that look like 32-bit negative SmallIntegers.

Cogit:
Move noteFollowingConditionalBranch: to catch branches created outside of
Jump<Cond>, and hence generate a lot less junk in the cogit c files.

CPIC patching (architecture independent): fix call mistaken for a jump and
conditional branch mistaken for a jump.

BochsX64Plugin:
back port a fix from Bochs v2.6.8 that fixes the sign of 64-bit divisions.

Mac OS Spur build: preserve dates when copying resources into .app bundles.

Modified Paths:
--------------
    branches/Cog/build.macos32x86/squeak.cog.spur/makeiosvm
    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/processors/IA32/bochs/cpu/mult64.cc
    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
    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/build.macos32x86/squeak.cog.spur/makeiosvm
===================================================================
--- branches/Cog/build.macos32x86/squeak.cog.spur/makeiosvm	2015-11-30 20:53:12 UTC (rev 3509)
+++ branches/Cog/build.macos32x86/squeak.cog.spur/makeiosvm	2015-12-01 00:32:22 UTC (rev 3510)
@@ -73,41 +73,41 @@
 echo FloatMathPlugin xcodebuild -project FloatMathPlugin/FloatMathPlugin.xcodeproj -configuration Release
 xcodebuild -project FloatMathPlugin/FloatMathPlugin.xcodeproj -configuration Release
 rm -rf "$DEST/Contents/Resources/FloatMathPlugin.bundle"
-echo cp -R FloatMathPlugin/build/Release/FloatMathPlugin.bundle "$DEST/Contents/Resources"
-cp -R FloatMathPlugin/build/Release/FloatMathPlugin.bundle "$DEST/Contents/Resources"
+echo cp -Rp FloatMathPlugin/build/Release/FloatMathPlugin.bundle "$DEST/Contents/Resources"
+cp -Rp FloatMathPlugin/build/Release/FloatMathPlugin.bundle "$DEST/Contents/Resources"
 
 # Build the FloatArray plugin
 echo
 echo FloatArrayPlugin xcodebuild -project FloatArrayPlugin/FloatArrayPlugin.xcodeproj -configuration Release
 xcodebuild -project FloatArrayPlugin/FloatArrayPlugin.xcodeproj -configuration Release
 rm -rf "$DEST/Contents/Resources/FloatArrayPlugin.bundle"
-cp -R FloatArrayPlugin/build/Release/FloatArrayPlugin.bundle "$DEST/Contents/Resources"
+cp -Rp FloatArrayPlugin/build/Release/FloatArrayPlugin.bundle "$DEST/Contents/Resources"
 
 # Build the Croquet plugin
 echo
 echo CroquetPlugin xcodebuild -project CroquetPlugin/CroquetPlugin.xcodeproj -configuration Release
 xcodebuild -project CroquetPlugin/CroquetPlugin.xcodeproj -configuration Release
 rm -rf "$DEST/Contents/Resources/CroquetPlugin.bundle"
-cp -R CroquetPlugin/build/Release/CroquetPlugin.bundle "$DEST/Contents/Resources"
+cp -Rp CroquetPlugin/build/Release/CroquetPlugin.bundle "$DEST/Contents/Resources"
 
 #Build the mpeg3 plugin
 echo
 echo Mpeg3Plugin xcodebuild -project Mpeg3Plugin/Mpeg3Plugin.xcodeproj -configuration $NSD_BUILD_CONFIGURATION
 xcodebuild -project Mpeg3Plugin/Mpeg3Plugin.xcodeproj -configuration $NSD_BUILD_CONFIGURATION
-cp -R Mpeg3Plugin/build/$NSD_BUILD_CONFIGURATION/Mpeg3Plugin.bundle "$DEST/Contents/Resources"
+cp -Rp Mpeg3Plugin/build/$NSD_BUILD_CONFIGURATION/Mpeg3Plugin.bundle "$DEST/Contents/Resources"
 
 echo
 echo SqueakFFIPlugin xcodebuild -project $SFP/SqueakFFI.xcodeproj -configuration $NSD_BUILD_CONFIGURATION
 xcodebuild -project $SFP/SqueakFFI.xcodeproj -configuration $NSD_BUILD_CONFIGURATION
 rm -rf "$DEST/Contents/Resources/SqueakFFIPrims.bundle"
-cp -R $SFP/build/$NSD_BUILD_CONFIGURATION/SqueakFFIPrims.bundle "$DEST/Contents/Resources"
+cp -Rp $SFP/build/$NSD_BUILD_CONFIGURATION/SqueakFFIPrims.bundle "$DEST/Contents/Resources"
 
 # Build the SSL plugin (New as of 25 March 2013)
 echo
 echo SqueakSSL xcodebuild -project SqueakSSL/SqueakSSL.xcodeproj -configuration $XCD_BUILD_CONFIGURATION
 xcodebuild -project SqueakSSL/SqueakSSL.xcodeproj -configuration $XCD_BUILD_CONFIGURATION
 rm -rf "$DEST/Contents/Resources/SqueakSSL.bundle"
-cp -R SqueakSSL/build/$XCD_BUILD_CONFIGURATION/SqueakSSL.bundle "$DEST/Contents/Resources"
+cp -Rp SqueakSSL/build/$XCD_BUILD_CONFIGURATION/SqueakSSL.bundle "$DEST/Contents/Resources"
 
 # Build the BochsIA32Plugin
 # N.B. To build the plugin you also have to build the Bochs libraries in
@@ -116,7 +116,7 @@
 echo BochsIA32Plugin xcodebuild -configuration $XCD_BUILD_CONFIGURATION -project BochsIA32Plugin/BochsIA32Plugin.xcodeproj
 xcodebuild -configuration $XCD_BUILD_CONFIGURATION -project BochsIA32Plugin/BochsIA32Plugin.xcodeproj
 rm -rf "$DEST/Contents/Resources/BochsIA32Plugin.bundle"
-cp -R BochsIA32Plugin/build/$XCD_BUILD_CONFIGURATION/BochsIA32Plugin.bundle "$DEST/Contents/Resources"
+cp -Rp BochsIA32Plugin/build/$XCD_BUILD_CONFIGURATION/BochsIA32Plugin.bundle "$DEST/Contents/Resources"
 else
 echo "not building BochsIA32Plugin; support libraries unavailable"
 fi
@@ -128,7 +128,7 @@
 echo BochsX64Plugin xcodebuild -configuration $XCD_BUILD_CONFIGURATION -project BochsX64Plugin/BochsX64Plugin.xcodeproj
 xcodebuild -configuration $XCD_BUILD_CONFIGURATION -project BochsX64Plugin/BochsX64Plugin.xcodeproj
 rm -rf "$DEST/Contents/Resources/BochsX64Plugin.bundle"
-cp -R BochsX64Plugin/build/$XCD_BUILD_CONFIGURATION/BochsX64Plugin.bundle "$DEST/Contents/Resources"
+cp -Rp BochsX64Plugin/build/$XCD_BUILD_CONFIGURATION/BochsX64Plugin.bundle "$DEST/Contents/Resources"
 else
 echo "not building BochsX64Plugin; support libraries unavailable"
 fi
@@ -140,7 +140,7 @@
 echo GdbARMPlugin xcodebuild -configuration $XCD_BUILD_CONFIGURATION -project GdbARMPlugin/GdbARMPlugin.xcodeproj
 xcodebuild -configuration $XCD_BUILD_CONFIGURATION -project GdbARMPlugin/GdbARMPlugin.xcodeproj
 rm -rf "$DEST/Contents/Resources/GdbARMPlugin.bundle"
-cp -R GdbARMPlugin/build/$XCD_BUILD_CONFIGURATION/GdbARMPlugin.bundle "$DEST/Contents/Resources"
+cp -Rp GdbARMPlugin/build/$XCD_BUILD_CONFIGURATION/GdbARMPlugin.bundle "$DEST/Contents/Resources"
 else
 echo "not building GdbARMPlugin; support libraries unavailable"
 fi
@@ -149,7 +149,7 @@
 echo UnixOSProcessPlugin xcodebuild -configuration $XCD_BUILD_CONFIGURATION -project UnixOSProcessPlugin/UnixOSProcessPlugin.xcodeproj
 xcodebuild -configuration $XCD_BUILD_CONFIGURATION -project UnixOSProcessPlugin/UnixOSProcessPlugin.xcodeproj
 rm -rf "$DEST/Contents/Resources/UnixOSProcessPlugin.bundle"
-cp -R UnixOSProcessPlugin/build/$XCD_BUILD_CONFIGURATION/UnixOSProcessPlugin.bundle "$DEST/Contents/Resources"
+cp -Rp UnixOSProcessPlugin/build/$XCD_BUILD_CONFIGURATION/UnixOSProcessPlugin.bundle "$DEST/Contents/Resources"
 
 # Clean out any .svn directories (result of copying) in the VM
 find "$DEST" -name .svn -exec rm -rf {} \;

Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h	2015-11-30 20:53:12 UTC (rev 3509)
+++ branches/Cog/nsspursrc/vm/cogit.h	2015-12-01 00:32:22 UTC (rev 3510)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-rmacnak.1532 uuid: 20303656-4854-4e5b-8bcd-eeff8cf5d262
+	CCodeGenerator VMMaker.oscog-eem.1535 uuid: eceebca6-4bc3-4640-b1eb-18e0ea917247
  */
 
 

Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitARMv5.c	2015-11-30 20:53:12 UTC (rev 3509)
+++ branches/Cog/nsspursrc/vm/cogitARMv5.c	2015-12-01 00:32:22 UTC (rev 3510)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-rmacnak.1532 uuid: 20303656-4854-4e5b-8bcd-eeff8cf5d262
+	CCodeGenerator VMMaker.oscog-eem.1535 uuid: eceebca6-4bc3-4640-b1eb-18e0ea917247
    from
-	StackToRegisterMappingCogit VMMaker.oscog-rmacnak.1532 uuid: 20303656-4854-4e5b-8bcd-eeff8cf5d262
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1535 uuid: eceebca6-4bc3-4640-b1eb-18e0ea917247
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-rmacnak.1532 uuid: 20303656-4854-4e5b-8bcd-eeff8cf5d262 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1535 uuid: eceebca6-4bc3-4640-b1eb-18e0ea917247 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -547,6 +547,7 @@
 static AbstractInstruction * NoDbgRegParms relocateCallBeforeReturnPCby(AbstractInstruction * self_in_relocateCallBeforeReturnPCby, sqInt retpc, sqInt delta);
 static sqInt NoDbgRegParms rewriteCallAttarget(AbstractInstruction * self_in_rewriteCallAttarget, usqInt callSiteReturnAddress, usqInt callTargetAddress);
 static sqInt NoDbgRegParms rewriteCallFullAttarget(AbstractInstruction * self_in_rewriteCallFullAttarget, sqInt callSiteReturnAddress, sqInt callTargetAddress);
+static sqInt NoDbgRegParms rewriteConditionalJumpLongAttarget(AbstractInstruction * self_in_rewriteConditionalJumpLongAttarget, sqInt callSiteReturnAddress, sqInt callTargetAddress);
 static sqInt NoDbgRegParms rewriteJumpFullAttarget(AbstractInstruction * self_in_rewriteJumpFullAttarget, sqInt callSiteReturnAddress, sqInt callTargetAddress);
 static sqInt NoDbgRegParms rewriteJumpLongAttarget(AbstractInstruction * self_in_rewriteJumpLongAttarget, usqInt callSiteReturnAddress, usqInt callTargetAddress);
 static sqInt NoDbgRegParms rewriteTransferAttarget(AbstractInstruction * self_in_rewriteTransferAttarget, usqInt callSiteReturnAddress, usqInt callTargetAddress);
@@ -650,6 +651,7 @@
 static void freePICsWithFreedTargets(void);
 extern void freeUnmarkedMachineCode(void);
 static sqInt genCheckForInterruptsTrampoline(void);
+static AbstractInstruction * NoDbgRegParms genConditionalBranchoperand(sqInt opcode, sqInt operandOne);
 static void (*genEnilopmartForandandforCallcalled(sqInt regArg1, sqInt regArg2, sqInt regArg3, sqInt forCall, char *trampolineName))(void) ;
 static void NoDbgRegParms genEnilopmartReturn(sqInt forCall);
 static void NoDbgRegParms generateCaptureCStackPointers(sqInt captureFramePointer);
@@ -7406,7 +7408,14 @@
 	return rewriteFullTransferAttargetexpectedInstruction(self_in_rewriteCallFullAttarget, callSiteReturnAddress, callTargetAddress, 3778019132UL);
 }
 
+	/* CogARMCompiler>>#rewriteConditionalJumpLongAt:target: */
+static sqInt NoDbgRegParms
+rewriteConditionalJumpLongAttarget(AbstractInstruction * self_in_rewriteConditionalJumpLongAttarget, sqInt callSiteReturnAddress, sqInt callTargetAddress)
+{
+	return rewriteJumpLongAttarget(self_in_rewriteConditionalJumpLongAttarget, callSiteReturnAddress, callTargetAddress);
+}
 
+
 /*	Rewrite a full jump instruction to jump to a different target. This
 	variant is used to rewrite cached primitive calls where we load the target
 	address into ip
@@ -9411,18 +9420,12 @@
 compileBlockDispatchFromto(sqInt lowBlockStartIndex, sqInt highBlockStartIndex)
 {
     BlockStart *blockStart;
-    AbstractInstruction *branch;
-    AbstractInstruction *branch1;
-    AbstractInstruction *branch2;
     sqInt halfWay;
     AbstractInstruction *jmp;
     void *jumpTarget;
     void *jumpTarget1;
     void *jumpTarget2;
     sqInt quickConstant;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch1;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch2;
 
 	if (lowBlockStartIndex == highBlockStartIndex) {
 		blockStart = blockStartAt(lowBlockStartIndex);
@@ -9444,10 +9447,7 @@
 	if (lowBlockStartIndex == halfWay) {
 		/* begin JumpLessOrEqual: */
 		jumpTarget1 = (blockStart->entryLabel);
-		/* begin noteFollowingConditionalBranch: */
-		self_in_noteFollowingConditionalBranch = previousInstruction();
-		branch = genoperand(JumpLessOrEqual, ((sqInt)jumpTarget1));
-		branch;
+		genConditionalBranchoperand(JumpLessOrEqual, ((sqInt)jumpTarget1));
 		compileBlockDispatchFromto(halfWay + 1, highBlockStartIndex);
 		return null;
 	}
@@ -9455,17 +9455,11 @@
 		blockStart = blockStartAt(highBlockStartIndex);
 		/* begin JumpGreater: */
 		jumpTarget2 = (blockStart->entryLabel);
-		/* begin noteFollowingConditionalBranch: */
-		self_in_noteFollowingConditionalBranch1 = previousInstruction();
-		branch1 = genoperand(JumpGreater, ((sqInt)jumpTarget2));
-		branch1;
+		genConditionalBranchoperand(JumpGreater, ((sqInt)jumpTarget2));
 		return compileBlockDispatchFromto(lowBlockStartIndex, halfWay);
 	}
 	/* begin JumpGreater: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch2 = previousInstruction();
-	branch2 = genoperand(JumpGreater, ((sqInt)0));
-	jmp = branch2;
+	jmp = genConditionalBranchoperand(JumpGreater, ((sqInt)0));
 	compileBlockDispatchFromto(lowBlockStartIndex, halfWay);
 	if (halfWay == highBlockStartIndex) {
 		blockStart = blockStartAt(highBlockStartIndex);
@@ -9647,17 +9641,11 @@
 static AbstractInstruction *
 compileCPICEntry(void)
 {
-    AbstractInstruction *branch;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
-
 	entry = genGetInlineCacheClassTagFromintoforEntry(ReceiverResultReg, TempReg, 1);
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, ClassReg, TempReg);
 	/* begin JumpNonZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch = previousInstruction();
-	branch = genoperand(JumpNonZero, ((sqInt)0));
-	return branch;
+	return genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 }
 
 
@@ -9673,18 +9661,13 @@
 compileEntry(void)
 {
     AbstractInstruction *abstractInstruction;
-    AbstractInstruction *branch;
     AbstractInstruction * inst;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
 
 	entry = genGetInlineCacheClassTagFromintoforEntry(ReceiverResultReg, TempReg, 1);
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, ClassReg, TempReg);
 	/* begin JumpNonZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch = previousInstruction();
-	branch = genoperand(JumpNonZero, ((sqInt)sendMiss));
-	branch;
+	genConditionalBranchoperand(JumpNonZero, ((sqInt)sendMiss));
 	/* begin Label */
 	noCheckEntry = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
 	if (compileSendTrace()) {
@@ -9967,7 +9950,7 @@
     sqInt operand;
     sqInt target;
 
-	rewriteJumpLongAttarget(backEnd, (((sqInt)cPIC)) + missOffset, picAbortTrampolineFor(numArgs));
+	rewriteCallAttarget(backEnd, (((sqInt)cPIC)) + missOffset, picAbortTrampolineFor(numArgs));
 
 	/* set the jump to the case0 method */
 
@@ -10663,7 +10646,20 @@
 	return genTrampolineForcallednumArgsargargargargsaveRegspushLinkRegresultRegappendOpcodes(ceCheckForInterrupts, "ceCheckForInterruptsTrampoline", 0, null, null, null, null, 0, 0, null, 1);
 }
 
+	/* Cogit>>#genConditionalBranch:operand: */
+static AbstractInstruction * NoDbgRegParms
+genConditionalBranchoperand(sqInt opcode, sqInt operandOne)
+{
+    AbstractInstruction *branch;
+    AbstractInstruction * self_in_noteFollowingConditionalBranch;
 
+	/* begin noteFollowingConditionalBranch: */
+	self_in_noteFollowingConditionalBranch = previousInstruction();
+	branch = genoperand(opcode, operandOne);
+	return branch;
+}
+
+
 /*	An enilopmart (the reverse of a trampoline) is a piece of code that makes
 	the system-call-like transition from the C runtime into generated machine
 	code. The desired arguments and entry-point are pushed on a stackPage's
@@ -10818,7 +10814,6 @@
 {
     AbstractInstruction *anInstruction;
     AbstractInstruction *anInstruction1;
-    AbstractInstruction *branch;
     CogMethod *cPIC;
     AbstractInstruction * cPICEndOfCodeLabel;
     sqInt endAddress;
@@ -10832,7 +10827,6 @@
     sqInt numArgs;
     sqInt opcode;
     sqInt opcodeSize;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
     sqInt wordConstant;
 
 
@@ -10867,8 +10861,8 @@
 	(anInstruction1->dependent = allocateLiteral(99282957));
 	anInstruction1;
 	/* begin JumpLong: */
-	jumpTarget = (cPICPrototypeCaseOffset()) + 13262352;
-	genoperand(JumpLong, jumpTarget);
+	jumpTarget1 = (cPICPrototypeCaseOffset()) + 13262352;
+	genoperand(JumpLong, jumpTarget1);
 	/* begin Label */
 	endCPICCase0 = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
 	for (h = 1; h < maxCPICCases; h += 1) {
@@ -10887,11 +10881,8 @@
 		opcode = CmpCwR;
 		checkLiteralforInstruction(3133021973UL + h, genoperandoperand(opcode, 3133021973UL + h, TempReg));
 		/* begin JumpLongZero: */
-		jumpTarget2 = ((cPICPrototypeCaseOffset()) + 13262352) + (h * 16);
-		/* begin noteFollowingConditionalBranch: */
-		self_in_noteFollowingConditionalBranch = previousInstruction();
-		branch = genoperand(JumpLongZero, ((sqInt)jumpTarget2));
-		branch;
+		jumpTarget = ((cPICPrototypeCaseOffset()) + 13262352) + (h * 16);
+		genConditionalBranchoperand(JumpLongZero, ((sqInt)jumpTarget));
 		if (h == 1) {
 			/* begin Label */
 			endCPICCase1 = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
@@ -10902,8 +10893,8 @@
 	/* begin gen:literal:operand: */
 	checkLiteralforInstruction(wordConstant, genoperandoperand(MoveCwR, wordConstant, ClassReg));
 	/* begin JumpLong: */
-	jumpTarget1 = cPICMissTrampolineFor(numArgs);
-	genoperand(JumpLong, jumpTarget1);
+	jumpTarget2 = cPICMissTrampolineFor(numArgs);
+	genoperand(JumpLong, jumpTarget2);
 	/* begin Label */
 	cPICEndOfCodeLabel = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
 	dumpLiterals(0);
@@ -11041,12 +11032,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;
 
@@ -11359,18 +11350,13 @@
 static sqInt NoDbgRegParms
 genInnerPICAbortTrampoline(char *name)
 {
-    AbstractInstruction *branch;
     AbstractInstruction *jumpMNUCase;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
 
 	/* begin CmpCq:R: */
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(0, genoperandoperand(CmpCqR, 0, ClassReg));
 	/* begin JumpZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch = previousInstruction();
-	branch = genoperand(JumpZero, ((sqInt)0));
-	jumpMNUCase = branch;
+	jumpMNUCase = genConditionalBranchoperand(JumpZero, ((sqInt)0));
 	compileTrampolineFornumArgsargargargargsaveRegspushLinkRegresultReg(ceInterpretMethodFromPICreceiver, 2, SendNumArgsReg, ReceiverResultReg, null, null, 0, 0, null);
 	jmpTarget(jumpMNUCase, gLabel());
 	return genTrampolineForcallednumArgsargargargargsaveRegspushLinkRegresultRegappendOpcodes(ceMNUFromPICMNUMethodreceiver, name, 2, SendNumArgsReg, ReceiverResultReg, null, null, 0, 0, null, 1);
@@ -11489,13 +11475,9 @@
 static sqInt NoDbgRegParms
 genNSSendTrampolineFornumArgsenclosingObjectCheckcalled(void *aRoutine, sqInt numArgs, sqInt eoCheckFlag, char *aString)
 {
-    AbstractInstruction *branch;
-    AbstractInstruction *branch1;
     AbstractInstruction *jumpItsTheReceiverStupid;
     AbstractInstruction *jumpMiss;
     sqInt offset;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch1;
 
 	zeroOpcodeIndex();
 	genGetInlineCacheClassTagFromintoforEntry(ReceiverResultReg, ClassReg, 0);
@@ -11505,10 +11487,7 @@
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, ClassReg, TempReg);
 	/* begin JumpNonZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch1 = previousInstruction();
-	branch1 = genoperand(JumpNonZero, ((sqInt)0));
-	jumpMiss = branch1;
+	jumpMiss = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 	if (eoCheckFlag) {
 		/* begin MoveMw:r:R: */
 		/* begin gen:quickConstant:operand:operand: */
@@ -11517,10 +11496,7 @@
 		/* begin gen:quickConstant:operand: */
 		checkQuickConstantforInstruction(0, genoperandoperand(CmpCqR, 0, TempReg));
 		/* begin JumpZero: */
-		/* begin noteFollowingConditionalBranch: */
-		self_in_noteFollowingConditionalBranch = previousInstruction();
-		branch = genoperand(JumpZero, ((sqInt)0));
-		jumpItsTheReceiverStupid = branch;
+		jumpItsTheReceiverStupid = genConditionalBranchoperand(JumpZero, ((sqInt)0));
 		/* begin MoveR:R: */
 		genoperandoperand(MoveRR, TempReg, ReceiverResultReg);
 		if (numArgs > 2) {
@@ -14616,7 +14592,7 @@
 	classTagPC = followingAddress - (jumpLongConditionalByteSize(backEnd));
 	storeLiteralbeforeFollowingAddress(backEnd, newTag, classTagPC);
 
-	rewriteJumpLongAttarget(backEnd, followingAddress, newTarget);
+	rewriteConditionalJumpLongAttarget(backEnd, followingAddress, newTarget);
 }
 
 	/* Cogit>>#SubCw:R: */
@@ -16580,8 +16556,6 @@
 static AbstractInstruction * NoDbgRegParms
 genGetInlineCacheClassTagFromintoforEntry(sqInt sourceReg, sqInt destReg, sqInt forEntry)
 {
-    AbstractInstruction *branch;
-    AbstractInstruction *branch1;
     AbstractInstruction *entryLabel;
     AbstractInstruction *first;
     AbstractInstruction *first1;
@@ -16591,8 +16565,6 @@
     sqInt quickConstant;
     sqInt quickConstant1;
     sqInt quickConstant2;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch1;
 
 	if (forEntry) {
 		/* begin AlignmentNops: */
@@ -16625,10 +16597,7 @@
 		first;
 	l1:	/* end AndCq:R:R: */;
 		/* begin JumpNonZero: */
-		/* begin noteFollowingConditionalBranch: */
-		self_in_noteFollowingConditionalBranch = previousInstruction();
-		branch = genoperand(JumpNonZero, ((sqInt)immLabel));
-		branch;
+		genConditionalBranchoperand(JumpNonZero, ((sqInt)immLabel));
 		flag("endianness");
 		/* begin MoveMw:r:R: */
 		/* begin gen:quickConstant:operand:operand: */
@@ -16659,10 +16628,7 @@
 		first1;
 	l2:	/* end AndCq:R:R: */;
 		/* begin JumpZero: */
-		/* begin noteFollowingConditionalBranch: */
-		self_in_noteFollowingConditionalBranch1 = previousInstruction();
-		branch1 = genoperand(JumpZero, ((sqInt)0));
-		jumpNotImm = branch1;
+		jumpNotImm = genConditionalBranchoperand(JumpZero, ((sqInt)0));
 		/* begin AndCq:R: */
 		/* begin gen:quickConstant:operand: */
 		checkQuickConstantforInstruction(1, genoperandoperand(AndCqR, 1, destReg));
@@ -16685,10 +16651,8 @@
 static sqInt NoDbgRegParms
 genGetNumBytesOfinto(sqInt srcReg, sqInt destReg)
 {
-    AbstractInstruction *branch;
     AbstractInstruction *jmp;
     sqInt quickConstant;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
 
 	genGetRawSlotSizeOfNonImminto(srcReg, destReg);
 	/* begin CmpCq:R: */
@@ -16696,10 +16660,7 @@
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant, genoperandoperand(CmpCqR, quickConstant, destReg));
 	/* begin JumpLess: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch = previousInstruction();
-	branch = genoperand(JumpLess, ((sqInt)0));
-	jmp = branch;
+	jmp = genConditionalBranchoperand(JumpLess, ((sqInt)0));
 	genGetOverflowSlotsOfinto(srcReg, destReg);
 	jmpTarget(jmp, gLogicalShiftLeftCqR(shiftForWord(), destReg));
 	genGetBitsofFormatByteOfintobaseHeaderIntoScratch(3, srcReg, TempReg, null);
@@ -16725,20 +16686,6 @@
 static sqInt NoDbgRegParms
 genInnerPrimitiveAtPut(sqInt retNoffset)
 {
-    AbstractInstruction *branch;
-    AbstractInstruction *branch1;
-    AbstractInstruction *branch10;
-    AbstractInstruction *branch11;
-    AbstractInstruction *branch12;
-    AbstractInstruction *branch13;
-    AbstractInstruction *branch2;
-    AbstractInstruction *branch3;
-    AbstractInstruction *branch4;
-    AbstractInstruction *branch5;
-    AbstractInstruction *branch6;
-    AbstractInstruction *branch7;
-    AbstractInstruction *branch8;
-    AbstractInstruction *branch9;
     sqInt formatReg;
     AbstractInstruction *jumpArrayOutOfBounds;
     AbstractInstruction *jumpBadIndex;
@@ -16766,20 +16713,6 @@
     sqInt quickConstant3;
     sqInt quickConstant4;
     sqInt quickConstant5;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch1;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch10;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch11;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch12;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch13;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch2;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch3;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch4;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch5;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch6;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch7;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch8;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch9;
 
 
 	/* c.f. StackInterpreter>>stSizeOf: SpurMemoryManager>>lengthOf:format: fixedFieldsOf:format:length: */
@@ -16797,32 +16730,20 @@
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant, genoperandoperand(CmpCqR, quickConstant, formatReg));
 	/* begin JumpAbove: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch = previousInstruction();
-	branch = genoperand(JumpAbove, ((sqInt)0));
-	jumpNotPointers = branch;
+	jumpNotPointers = genConditionalBranchoperand(JumpAbove, ((sqInt)0));
 	genStoreCheckReceiverRegvalueRegscratchReginFrame(ReceiverResultReg, Arg1Reg, TempReg, 0);
 	/* begin CmpCq:R: */
 	quickConstant1 = arrayFormat();
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant1, genoperandoperand(CmpCqR, quickConstant1, formatReg));
 	/* begin JumpBelow: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch1 = previousInstruction();
-	branch1 = genoperand(JumpBelow, ((sqInt)0));
-	jumpNotIndexablePointers = branch1;
+	jumpNotIndexablePointers = genConditionalBranchoperand(JumpBelow, ((sqInt)0));
 	/* begin JumpNonZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch2 = previousInstruction();
-	branch2 = genoperand(JumpNonZero, ((sqInt)0));
-	jumpHasFixedFields = branch2;
+	jumpHasFixedFields = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg0Reg, ClassReg);
 	/* begin JumpBelowOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch3 = previousInstruction();
-	branch3 = genoperand(JumpBelowOrEqual, ((sqInt)0));
-	jumpArrayOutOfBounds = branch3;
+	jumpArrayOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin AddCq:R: */
 	/* begin gen:quickConstant:operand: */
 	operandOne = ((usqInt) BaseHeaderSize) >> (shiftForWord());
@@ -16839,10 +16760,7 @@
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(ClassMethodContextCompactIndex, genoperandoperand(CmpCqR, ClassMethodContextCompactIndex, formatReg));
 	/* begin JumpZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch4 = previousInstruction();
-	branch4 = genoperand(JumpZero, ((sqInt)0));
-	jumpIsContext = branch4;
+	jumpIsContext = genConditionalBranchoperand(JumpZero, ((sqInt)0));
 	/* begin PushR: */
 	genoperand(PushR, ClassReg);
 	genGetClassObjectOfClassIndexintoscratchReg(formatReg, ClassReg, TempReg);
@@ -16863,10 +16781,7 @@
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg0Reg, ClassReg);
 	/* begin JumpBelowOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch5 = previousInstruction();
-	branch5 = genoperand(JumpBelowOrEqual, ((sqInt)0));
-	jumpFixedFieldsOutOfBounds = branch5;
+	jumpFixedFieldsOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin AddR:R: */
 	genoperandoperand(AddRR, formatReg, Arg0Reg);
 	/* begin MoveR:Xwr:R: */
@@ -16877,45 +16792,30 @@
 	genoperand(RetN, retNoffset);
 	jmpTarget(jumpNotPointers, gCmpCqR(firstCompiledMethodFormat(), formatReg));
 	/* begin JumpAboveOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch6 = previousInstruction();
-	branch6 = genoperand(JumpAboveOrEqual, ((sqInt)0));
-	jumpIsCompiledMethod = branch6;
+	jumpIsCompiledMethod = genConditionalBranchoperand(JumpAboveOrEqual, ((sqInt)0));
 	jumpNonSmallIntegerValue = genJumpNotSmallIntegerscratchReg(Arg1Reg, TempReg);
 	/* begin CmpCq:R: */
 	quickConstant3 = firstByteFormat();
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant3, genoperandoperand(CmpCqR, quickConstant3, formatReg));
 	/* begin JumpAboveOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch7 = previousInstruction();
-	branch7 = genoperand(JumpAboveOrEqual, ((sqInt)0));
-	jumpIsBytes = branch7;
+	jumpIsBytes = genConditionalBranchoperand(JumpAboveOrEqual, ((sqInt)0));
 	/* begin CmpCq:R: */
 	quickConstant4 = firstShortFormat();
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant4, genoperandoperand(CmpCqR, quickConstant4, formatReg));
 	/* begin JumpAboveOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch8 = previousInstruction();
-	branch8 = genoperand(JumpAboveOrEqual, ((sqInt)0));
-	jumpShortsUnsupported = branch8;
+	jumpShortsUnsupported = genConditionalBranchoperand(JumpAboveOrEqual, ((sqInt)0));
 	/* begin CmpCq:R: */
 	quickConstant5 = firstLongFormat();
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant5, genoperandoperand(CmpCqR, quickConstant5, formatReg));
 	/* begin JumpBelow: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch9 = previousInstruction();
-	branch9 = genoperand(JumpBelow, ((sqInt)0));
-	jumpNotIndexableBits = branch9;
+	jumpNotIndexableBits = genConditionalBranchoperand(JumpBelow, ((sqInt)0));
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg0Reg, ClassReg);
 	/* begin JumpBelowOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch10 = previousInstruction();
-	branch10 = genoperand(JumpBelowOrEqual, ((sqInt)0));
-	jumpWordsOutOfBounds = branch10;
+	jumpWordsOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, Arg1Reg, TempReg);
 	genConvertSmallIntegerToIntegerInReg(TempReg);
@@ -16925,10 +16825,7 @@
 		checkQuickConstantforInstruction(0, genoperandoperand(CmpCqR, 0, ClassReg));
 	}
 	/* begin JumpNegative: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch11 = previousInstruction();
-	branch11 = genoperand(JumpNegative, ((sqInt)0));
-	jumpNegative = branch11;
+	jumpNegative = genConditionalBranchoperand(JumpNegative, ((sqInt)0));
 	/* begin AddCq:R: */
 	/* begin gen:quickConstant:operand: */
 	operandOne2 = ((usqInt) BaseHeaderSize) >> (shiftForWord());
@@ -16941,10 +16838,7 @@
 	genoperand(RetN, retNoffset);
 	jmpTarget(jumpIsBytes, gCmpCqR(((0xFF << 1) | 1), Arg1Reg));
 	/* begin JumpAbove: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch12 = previousInstruction();
-	branch12 = genoperand(JumpAbove, ((sqInt)0));
-	jumpBytesOutOfRange = branch12;
+	jumpBytesOutOfRange = genConditionalBranchoperand(JumpAbove, ((sqInt)0));
 	/* begin LogicalShiftLeftCq:R: */
 	genoperandoperand(LogicalShiftLeftCqR, shiftForWord(), ClassReg);
 	/* begin AndCq:R: */
@@ -16955,10 +16849,7 @@
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg0Reg, ClassReg);
 	/* begin JumpBelowOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch13 = previousInstruction();
-	branch13 = genoperand(JumpBelowOrEqual, ((sqInt)0));
-	jumpBytesOutOfBounds = branch13;
+	jumpBytesOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, Arg1Reg, TempReg);
 	genConvertSmallIntegerToIntegerInReg(TempReg);
@@ -16987,18 +16878,6 @@
 static sqInt NoDbgRegParms
 genInnerPrimitiveAt(sqInt retNoffset)
 {
-    AbstractInstruction *branch;
-    AbstractInstruction *branch1;
-    AbstractInstruction *branch10;
-    AbstractInstruction *branch11;
-    AbstractInstruction *branch2;
-    AbstractInstruction *branch3;
-    AbstractInstruction *branch4;
-    AbstractInstruction *branch5;
-    AbstractInstruction *branch6;
-    AbstractInstruction *branch7;
-    AbstractInstruction *branch8;
-    AbstractInstruction *branch9;
     sqInt formatReg;
     AbstractInstruction *jumpArrayOutOfBounds;
     AbstractInstruction *jumpBadIndex;
@@ -17029,18 +16908,6 @@
     sqInt quickConstant4;
     sqInt quickConstant5;
     sqInt quickConstant6;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch1;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch10;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch11;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch2;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch3;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch4;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch5;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch6;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch7;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch8;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch9;
 
 
 	/* c.f. StackInterpreter>>stSizeOf: SpurMemoryManager>>lengthOf:format: fixedFieldsOf:format:length: */
@@ -17060,51 +16927,33 @@
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant, genoperandoperand(CmpCqR, quickConstant, formatReg));
 	/* begin JumpAboveOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch = previousInstruction();
-	branch = genoperand(JumpAboveOrEqual, ((sqInt)0));
-	jumpIsBytes = branch;
+	jumpIsBytes = genConditionalBranchoperand(JumpAboveOrEqual, ((sqInt)0));
 	/* begin CmpCq:R: */
 	quickConstant1 = arrayFormat();
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant1, genoperandoperand(CmpCqR, quickConstant1, formatReg));
 	/* begin JumpZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch1 = previousInstruction();
-	branch1 = genoperand(JumpZero, ((sqInt)0));
-	jumpIsArray = branch1;
+	jumpIsArray = genConditionalBranchoperand(JumpZero, ((sqInt)0));
 	/* begin JumpBelow: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch2 = previousInstruction();
-	branch2 = genoperand(JumpBelow, ((sqInt)0));
-	jumpNotIndexable = branch2;
+	jumpNotIndexable = genConditionalBranchoperand(JumpBelow, ((sqInt)0));
 	/* begin CmpCq:R: */
 	quickConstant2 = weakArrayFormat();
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant2, genoperandoperand(CmpCqR, quickConstant2, formatReg));
 	/* begin JumpBelowOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch3 = previousInstruction();
-	branch3 = genoperand(JumpBelowOrEqual, ((sqInt)0));
-	jumpHasFixedFields = branch3;
+	jumpHasFixedFields = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin CmpCq:R: */
 	quickConstant3 = firstShortFormat();
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant3, genoperandoperand(CmpCqR, quickConstant3, formatReg));
 	/* begin JumpAboveOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch4 = previousInstruction();
-	branch4 = genoperand(JumpAboveOrEqual, ((sqInt)0));
-	jumpIsShorts = branch4;
+	jumpIsShorts = genConditionalBranchoperand(JumpAboveOrEqual, ((sqInt)0));
 	/* begin CmpCq:R: */
 	quickConstant4 = firstLongFormat();
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant4, genoperandoperand(CmpCqR, quickConstant4, formatReg));
 	/* begin JumpAboveOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch5 = previousInstruction();
-	branch5 = genoperand(JumpAboveOrEqual, ((sqInt)0));
-	jumpIsWords = branch5;
+	jumpIsWords = genConditionalBranchoperand(JumpAboveOrEqual, ((sqInt)0));
 	jmpTarget(jumpNotIndexable, gLabel());
 	/* begin Jump: */
 	jumpNotIndexable = genoperand(Jump, ((sqInt)0));
@@ -17117,10 +16966,7 @@
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg1Reg, ClassReg);
 	/* begin JumpBelowOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch6 = previousInstruction();
-	branch6 = genoperand(JumpBelowOrEqual, ((sqInt)0));
-	jumpBytesOutOfBounds = branch6;
+	jumpBytesOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin AddCq:R: */
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(BaseHeaderSize, genoperandoperand(AddCqR, BaseHeaderSize, Arg1Reg));
@@ -17138,10 +16984,7 @@
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg1Reg, ClassReg);
 	/* begin JumpBelowOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch7 = previousInstruction();
-	branch7 = genoperand(JumpBelowOrEqual, ((sqInt)0));
-	jumpShortsOutOfBounds = branch7;
+	jumpShortsOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin AddR:R: */
 	genoperandoperand(AddRR, Arg1Reg, ReceiverResultReg);
 	/* begin MoveM16:r:R: */
@@ -17152,10 +16995,7 @@
 	jumpShortsDone = genoperand(Jump, ((sqInt)0));
 	jmpTarget(jumpIsWords, gCmpRR(Arg1Reg, ClassReg));
 	/* begin JumpBelowOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch8 = previousInstruction();
-	branch8 = genoperand(JumpBelowOrEqual, ((sqInt)0));
-	jumpWordsOutOfBounds = branch8;
+	jumpWordsOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin AddCq:R: */
 	/* begin gen:quickConstant:operand: */
 	operandOne = ((usqInt) BaseHeaderSize) >> (shiftForWord());
@@ -17179,10 +17019,7 @@
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(ClassMethodContextCompactIndex, genoperandoperand(CmpCqR, ClassMethodContextCompactIndex, TempReg));
 	/* begin JumpZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch9 = previousInstruction();
-	branch9 = genoperand(JumpZero, ((sqInt)0));
-	jumpIsContext = branch9;
+	jumpIsContext = genConditionalBranchoperand(JumpZero, ((sqInt)0));
 	/* begin PushR: */
 	genoperand(PushR, ClassReg);
 	genGetClassObjectOfClassIndexintoscratchReg(formatReg, ClassReg, TempReg);
@@ -17199,10 +17036,7 @@
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg1Reg, ClassReg);
 	/* begin JumpBelowOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch10 = previousInstruction();
-	branch10 = genoperand(JumpBelowOrEqual, ((sqInt)0));
-	jumpFixedFieldsOutOfBounds = branch10;
+	jumpFixedFieldsOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin AddR:R: */
 	genoperandoperand(AddRR, formatReg, Arg1Reg);
 	/* begin AddCq:R: */
@@ -17215,10 +17049,7 @@
 	jumpFixedFieldsDone = genoperand(Jump, ((sqInt)0));
 	jmpTarget(jumpIsArray, gCmpRR(Arg1Reg, ClassReg));
 	/* begin JumpBelowOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch11 = previousInstruction();
-	branch11 = genoperand(JumpBelowOrEqual, ((sqInt)0));
-	jumpArrayOutOfBounds = branch11;
+	jumpArrayOutOfBounds = genConditionalBranchoperand(JumpBelowOrEqual, ((sqInt)0));
 	/* begin AddCq:R: */
 	/* begin gen:quickConstant:operand: */
 	operandOne2 = ((usqInt) BaseHeaderSize) >> (shiftForWord());
@@ -17234,12 +17065,10 @@
 static sqInt NoDbgRegParms
 genInnerPrimitiveIdentityHash(sqInt retNoffset)
 {
-    AbstractInstruction *branch;
     AbstractInstruction *jumpImm;
     AbstractInstruction *jumpNotSet;
     AbstractInstruction *jumpSI;
     AbstractInstruction * ret;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
 
 	jumpImm = genJumpImmediate(ReceiverResultReg);
 	genGetHashFieldNonImmOfasSmallIntegerInto(ReceiverResultReg, TempReg);
@@ -17247,10 +17076,7 @@
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(ConstZero, genoperandoperand(CmpCqR, ConstZero, TempReg));
 	/* begin JumpZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch = previousInstruction();
-	branch = genoperand(JumpZero, ((sqInt)0));
-	jumpNotSet = branch;
+	jumpNotSet = genConditionalBranchoperand(JumpZero, ((sqInt)0));
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, TempReg, ReceiverResultReg);
 	/* begin RetN: */
@@ -17282,18 +17108,6 @@
 {
     sqInt address;
     sqInt address1;
-    AbstractInstruction *branch;
-    AbstractInstruction *branch1;
-    AbstractInstruction *branch10;
-    AbstractInstruction *branch11;
-    AbstractInstruction *branch2;
-    AbstractInstruction *branch3;
-    AbstractInstruction *branch4;
-    AbstractInstruction *branch5;
-    AbstractInstruction *branch6;
-    AbstractInstruction *branch7;
-    AbstractInstruction *branch8;
-    AbstractInstruction *branch9;
     sqInt byteSizeReg;
     AbstractInstruction *fillLoop;
     sqInt fillReg;
@@ -17325,18 +17139,6 @@
     sqInt quickConstant6;
     sqInt quickConstant7;
     sqInt quickConstant8;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch1;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch10;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch11;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch2;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch3;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch4;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch5;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch6;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch7;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch8;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch9;
     AbstractInstruction *skip;
     sqInt wordConstant;
 
@@ -17367,25 +17169,16 @@
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant, genoperandoperand(CmpCqR, quickConstant, TempReg));
 	/* begin JumpNonZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch = previousInstruction();
-	branch = genoperand(JumpNonZero, ((sqInt)0));
-	jumpNotFixedPointers = branch;
+	jumpNotFixedPointers = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 	genGetRawSlotSizeOfNonImminto(Arg0Reg, TempReg);
 	/* begin CmpCq:R: */
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(InstanceSpecificationIndex + 1, genoperandoperand(CmpCqR, InstanceSpecificationIndex + 1, TempReg));
 	/* begin JumpLess: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch1 = previousInstruction();
-	branch1 = genoperand(JumpLess, ((sqInt)0));
-	jumpTooSmall = branch1;
+	jumpTooSmall = genConditionalBranchoperand(JumpLess, ((sqInt)0));
 	genGetHashFieldNonImmOfinto(Arg0Reg, halfHeaderReg);
 	/* begin JumpZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch2 = previousInstruction();
-	branch2 = genoperand(JumpZero, ((sqInt)0));
-	jumpUnhashed = branch2;
+	jumpUnhashed = genConditionalBranchoperand(JumpZero, ((sqInt)0));
 	/* begin PushR: */
 	genoperand(PushR, ReceiverResultReg);
 	/* begin MoveR:R: */
@@ -17419,36 +17212,24 @@
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant4, genoperandoperand(CmpCqR, quickConstant4, instSpecReg));
 	/* begin JumpZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch3 = previousInstruction();
-	branch3 = genoperand(JumpZero, ((sqInt)0));
-	jumpArrayFormat = branch3;
+	jumpArrayFormat = genConditionalBranchoperand(JumpZero, ((sqInt)0));
 	/* begin CmpCq:R: */
 	quickConstant5 = firstByteFormat();
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant5, genoperandoperand(CmpCqR, quickConstant5, instSpecReg));
 	/* begin JumpZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch4 = previousInstruction();
-	branch4 = genoperand(JumpZero, ((sqInt)0));
-	jumpByteFormat = branch4;
+	jumpByteFormat = genConditionalBranchoperand(JumpZero, ((sqInt)0));
 	/* begin CmpCq:R: */
 	quickConstant6 = firstLongFormat();
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant6, genoperandoperand(CmpCqR, quickConstant6, instSpecReg));
 	/* begin JumpNonZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch5 = previousInstruction();
-	branch5 = genoperand(JumpNonZero, ((sqInt)0));
-	jumpFailCuzFixed = branch5;
+	jumpFailCuzFixed = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 	/* begin CmpCq:R: */
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(((maxSlots << 1) | 1), genoperandoperand(CmpCqR, ((maxSlots << 1) | 1), Arg0Reg));
 	/* begin JumpAbove: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch6 = previousInstruction();
-	branch6 = genoperand(JumpAbove, ((sqInt)0));
-	jumpLongTooBig = branch6;
+	jumpLongTooBig = genConditionalBranchoperand(JumpAbove, ((sqInt)0));
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, TempReg, instSpecReg);
 	/* begin PushCq: */
@@ -17458,10 +17239,7 @@
 	jumpLongPrepDone = genoperand(Jump, ((sqInt)0));
 	jmpTarget(jumpByteFormat, gCmpCqR((((maxSlots * BytesPerWord) << 1) | 1), Arg0Reg));
 	/* begin JumpAbove: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch7 = previousInstruction();
-	branch7 = genoperand(JumpAbove, ((sqInt)0));
-	jumpByteTooBig = branch7;
+	jumpByteTooBig = genConditionalBranchoperand(JumpAbove, ((sqInt)0));
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, TempReg, instSpecReg);
 	/* begin MoveCq:R: */
@@ -17489,10 +17267,7 @@
 	jumpBytePrepDone = genoperand(Jump, ((sqInt)0));
 	jmpTarget(jumpArrayFormat, gCmpCqR(((maxSlots << 1) | 1), Arg0Reg));
 	/* begin JumpAbove: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch8 = previousInstruction();
-	branch8 = genoperand(JumpAbove, ((sqInt)0));
-	jumpArrayTooBig = branch8;
+	jumpArrayTooBig = genConditionalBranchoperand(JumpAbove, ((sqInt)0));
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, TempReg, instSpecReg);
 	/* begin PushCw: */
@@ -17509,10 +17284,7 @@
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(0, genoperandoperand(CmpCqR, 0, byteSizeReg));
 	/* begin JumpNonZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch9 = previousInstruction();
-	branch9 = genoperand(JumpNonZero, ((sqInt)0));
-	jumpHasSlots = branch9;
+	jumpHasSlots = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 	/* begin MoveCq:R: */
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(BaseHeaderSize * 2, genoperandoperand(MoveCqR, BaseHeaderSize * 2, byteSizeReg));
@@ -17538,10 +17310,7 @@
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant8, genoperandoperand(CmpCqR, quickConstant8, byteSizeReg));
 	/* begin JumpAboveOrEqual: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch10 = previousInstruction();
-	branch10 = genoperand(JumpAboveOrEqual, ((sqInt)0));
-	jumpNoSpace = branch10;
+	jumpNoSpace = genConditionalBranchoperand(JumpAboveOrEqual, ((sqInt)0));
 	/* begin MoveR:R: */
 	genoperandoperand(MoveRR, Arg1Reg, ReceiverResultReg);
 	/* begin MoveR:Aw: */
@@ -17570,10 +17339,7 @@
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg1Reg, byteSizeReg);
 	/* begin JumpAbove: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch11 = previousInstruction();
-	branch11 = genoperand(JumpAbove, ((sqInt)fillLoop));
-	branch11;
+	genConditionalBranchoperand(JumpAbove, ((sqInt)fillLoop));
 	/* begin RetN: */
 	genoperand(RetN, retNoffset);
 	jmpTarget(jumpNoSpace, gPopR(TempReg));
@@ -17603,14 +17369,6 @@
 {
     sqInt address;
     sqInt address1;
-    AbstractInstruction *branch;
-    AbstractInstruction *branch1;
-    AbstractInstruction *branch2;
-    AbstractInstruction *branch3;
-    AbstractInstruction *branch4;
-    AbstractInstruction *branch5;
-    AbstractInstruction *branch6;
-    AbstractInstruction *branch7;
     sqInt byteSizeReg;
     AbstractInstruction *fillLoop;
     sqInt fillReg;
@@ -17635,14 +17393,6 @@
     sqInt quickConstant6;
     sqInt quickConstant7;
     sqInt quickConstant8;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch1;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch2;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch3;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch4;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch5;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch6;
-    AbstractInstruction * self_in_noteFollowingConditionalBranch7;
     AbstractInstruction *skip;
 
 
@@ -17671,25 +17421,16 @@
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant, genoperandoperand(CmpCqR, quickConstant, TempReg));
 	/* begin JumpNonZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch = previousInstruction();
-	branch = genoperand(JumpNonZero, ((sqInt)0));
-	jumpNotFixedPointers = branch;
+	jumpNotFixedPointers = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 	genGetRawSlotSizeOfNonImminto(Arg0Reg, TempReg);
 	/* begin CmpCq:R: */
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(InstanceSpecificationIndex + 1, genoperandoperand(CmpCqR, InstanceSpecificationIndex + 1, TempReg));
 	/* begin JumpLess: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch1 = previousInstruction();
-	branch1 = genoperand(JumpLess, ((sqInt)0));
-	jumpTooSmall = branch1;
+	jumpTooSmall = genConditionalBranchoperand(JumpLess, ((sqInt)0));
 	genGetHashFieldNonImmOfinto(Arg0Reg, halfHeaderReg);
 	/* begin JumpZero: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch2 = previousInstruction();
-	branch2 = genoperand(JumpZero, ((sqInt)0));
-	jumpUnhashed = branch2;
+	jumpUnhashed = genConditionalBranchoperand(JumpZero, ((sqInt)0));
 	genLoadSlotsourceRegdestReg(InstanceSpecificationIndex, Arg0Reg, instSpecReg);
 	jumpBadFormat = genJumpNotSmallIntegerscratchReg(instSpecReg, TempReg);
 	genConvertSmallIntegerToIntegerInReg(instSpecReg);
@@ -17711,19 +17452,13 @@
 	/* begin gen:quickConstant:operand: */
 	checkQuickConstantforInstruction(quickConstant4, genoperandoperand(CmpCqR, quickConstant4, TempReg));
 	/* begin JumpAbove: */
-	/* begin noteFollowingConditionalBranch: */
-	self_in_noteFollowingConditionalBranch3 = previousInstruction();
-	branch3 = genoperand(JumpAbove, ((sqInt)0));
-	jumpVariableOrEphemeron = branch3;
+	jumpVariableOrEphemeron = genConditionalBranchoperand(JumpAbove, ((sqInt)0));
 	/* begin CmpCq:R: */
 	quickConstant5 = numSlotsMask();

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list