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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

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

commits-3
 
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. @@