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. @@ |
Free forum by Nabble | Edit this page |