<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">cool!<div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 11 Jan 2016, at 00:02, Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com" class="">eliot.miranda@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">and this implies that the production x86_64 VM on Mac OS X is functional.&nbsp; There is still no FFI, Alien or otherwise, so this is still insufficient for anything other than pure Smalltalk hacking.&nbsp; But this is an important milestone and I should be able to release it for people to play with later next week.<br class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Sun, Jan 10, 2016 at 2:51 PM,  <span dir="ltr" class="">&lt;<a href="mailto:commits@squeakvm.org" target="_blank" class="">commits@squeakvm.org</a>&gt;</span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="">
Revision: 3553<br class="">
Author:&nbsp; &nbsp;eliot<br class="">
Date:&nbsp; &nbsp; &nbsp;2016-01-10 14:51:42 -0800 (Sun, 10 Jan 2016)<br class="">
Log Message:<br class="">
-----------<br class="">
CogVm source as per VMMaker.oscog-eem.1630<br class="">
<br class="">
Cogit:<br class="">
Fix the bug in ceCaptureStackPointers caused by pushing VarBasReg to save it<br class="">
offsetting the stack pointer.<br class="">
<br class="">
Eliminate all the maybe*VarBase methods since we have hasVarBaseRegister and<br class="">
the few clients can test that and hnce not have to divine if maybeSaveVarBase<br class="">
pushed something or not.<br class="">
<br class="">
On Mac IS X modify the stack alignment definitions to reflect documented<br class="">
Apple policy.<br class="">
<br class="">
Modified Paths:<br class="">
--------------<br class="">
&nbsp; &nbsp; branches/Cog/nsspursrc/vm/cogit.h<br class="">
&nbsp; &nbsp; branches/Cog/nsspursrc/vm/cogitARMv5.c<br class="">
&nbsp; &nbsp; branches/Cog/nsspursrc/vm/cogitIA32.c<br class="">
&nbsp; &nbsp; branches/Cog/nsspursrc/vm/cogitMIPSEL.c<br class="">
&nbsp; &nbsp; branches/Cog/platforms/Cross/vm/sqCogStackAlignment.h<br class="">
&nbsp; &nbsp; branches/Cog/spur64src/vm/cogit.h<br class="">
&nbsp; &nbsp; branches/Cog/spur64src/vm/cogitX64.c<br class="">
&nbsp; &nbsp; branches/Cog/spursistasrc/vm/cogit.h<br class="">
&nbsp; &nbsp; branches/Cog/spursistasrc/vm/cogitARMv5.c<br class="">
&nbsp; &nbsp; branches/Cog/spursistasrc/vm/cogitIA32.c<br class="">
&nbsp; &nbsp; branches/Cog/spursistasrc/vm/cogitMIPSEL.c<br class="">
&nbsp; &nbsp; branches/Cog/spursrc/vm/cogit.h<br class="">
&nbsp; &nbsp; branches/Cog/spursrc/vm/cogitARMv5.c<br class="">
&nbsp; &nbsp; branches/Cog/spursrc/vm/cogitIA32.c<br class="">
&nbsp; &nbsp; branches/Cog/spursrc/vm/cogitMIPSEL.c<br class="">
&nbsp; &nbsp; branches/Cog/src/vm/cogit.h<br class="">
&nbsp; &nbsp; branches/Cog/src/vm/cogitARMv5.c<br class="">
&nbsp; &nbsp; branches/Cog/src/vm/cogitIA32.c<br class="">
&nbsp; &nbsp; branches/Cog/src/vm/cogitMIPSEL.c<br class="">
<br class="">
Property Changed:<br class="">
----------------<br class="">
&nbsp; &nbsp; branches/Cog/platforms/Cross/vm/sqSCCSVersion.h<br class="">
<br class="">
Modified: branches/Cog/nsspursrc/vm/cogit.h<br class="">
===================================================================<br class="">
--- branches/Cog/nsspursrc/vm/cogit.h&nbsp; &nbsp;2016-01-10 21:49:21 UTC (rev 3552)<br class="">
+++ branches/Cog/nsspursrc/vm/cogit.h&nbsp; &nbsp;2016-01-10 22:51:42 UTC (rev 3553)<br class="">
@@ -1,5 +1,5 @@<br class="">
&nbsp;/* Automatically generated by<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;CCodeGenerator VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;CCodeGenerator VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab<br class="">
&nbsp; */<br class="">
<br class="">
<br class="">
<br class="">
Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c<br class="">
===================================================================<br class="">
--- branches/Cog/nsspursrc/vm/cogitARMv5.c&nbsp; &nbsp; &nbsp; 2016-01-10 21:49:21 UTC (rev 3552)<br class="">
+++ branches/Cog/nsspursrc/vm/cogitARMv5.c&nbsp; &nbsp; &nbsp; 2016-01-10 22:51:42 UTC (rev 3553)<br class="">
@@ -1,9 +1,9 @@<br class="">
&nbsp;/* Automatically generated by<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;CCodeGenerator VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;CCodeGenerator VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab<br class="">
&nbsp; &nbsp; from<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;StackToRegisterMappingCogit VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;StackToRegisterMappingCogit VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab<br class="">
&nbsp; */<br class="">
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7 " __DATE__ ;<br class="">
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab " __DATE__ ;<br class="">
&nbsp;char *__cogitBuildInfo = __buildInfo;<br class="">
<br class="">
<br class="">
@@ -955,7 +955,6 @@<br class="">
&nbsp;static sqInt endSizeOffset(void);<br class="">
&nbsp;static sqInt NoDbgRegParms literalInstructionInRange(AbstractInstruction *litInst);<br class="">
&nbsp;static AbstractInstruction * NoDbgRegParms locateLiteral(sqInt aLiteral);<br class="">
-static sqInt NoDbgRegParms mustDumpLiterals(sqInt currentOpcodeIndex);<br class="">
&nbsp;static sqInt resetForBlockCompile(void);<br class="">
&nbsp;static sqInt saveForBlockCompile(void);<br class="">
&nbsp;static sqInt compileBlockDispatch(void);<br class="">
@@ -10067,14 +10066,14 @@<br class="">
&nbsp; &nbsp; &nbsp;sqInt size;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MoveCq:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; quickConstant = varBaseAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:quickConstant:operand: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; anInstruction = genoperandoperand(MoveCqR, quickConstant, VarBaseReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (usesOutOfLineLiteral(anInstruction)) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (anInstruction-&gt;dependent = locateLiteral(quickConstant));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genLoadStackPointers(backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (regArg3OrNone != NoReg) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin PopR: */<br class="">
@@ -10163,6 +10162,7 @@<br class="">
&nbsp; &nbsp; &nbsp;sqInt fixupSize;<br class="">
&nbsp; &nbsp; &nbsp;sqInt opcodeSize;<br class="">
&nbsp; &nbsp; &nbsp;sqInt quickConstant;<br class="">
+&nbsp; &nbsp; sqInt quickConstant1;<br class="">
&nbsp; &nbsp; &nbsp;sqInt startAddress;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin allocateOpcodes:bytecodes: */<br class="">
@@ -10174,32 +10174,42 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; fixups = ((void *)((((usqInt)abstractOpcodes)) + opcodeSize));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; labelCounter = 0;<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* Must happen first; value may be used in accessing any of the following addresses */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; startAddress = methodZoneBase;<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeSaveVarBase */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin PushR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(PushR, VarBaseReg);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;quickConstant = varBaseAddress();<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MoveCq:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;quickConstant1 = varBaseAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:quickConstant:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction1 = genoperandoperand(MoveCqR, quickConstant, VarBaseReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction1 = genoperandoperand(MoveCqR, quickConstant1, VarBaseReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (usesOutOfLineLiteral(anInstruction1)) {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(anInstruction1-&gt;dependent = locateLiteral(quickConstant));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(anInstruction1-&gt;dependent = locateLiteral(quickConstant1));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (captureFramePointer) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveR:Aw: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; address = cFramePointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:operand:literal: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; checkLiteralforInstruction(address, genoperandoperand(MoveRAw, FPReg, address));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MoveR:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;genoperandoperand(MoveRR, SPReg, TempReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin AddCq:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;quickConstant = 0 + BytesPerWord;<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin gen:quickConstant:operand: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction = genoperandoperand(AddCqR, quickConstant, TempReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;if (usesOutOfLineLiteral(anInstruction)) {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(anInstruction-&gt;dependent = locateLiteral(quickConstant));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;}<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveR:Aw: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; address1 = cStackPointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:operand:literal: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;checkLiteralforInstruction(address1, genoperandoperand(MoveRAw, SPReg, address1));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;checkLiteralforInstruction(address1, genoperandoperand(MoveRAw, TempReg, address1));<br class="">
<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeRestoreVarBase */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin PopR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(PopR, VarBaseReg);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(RetN, 0);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; outputInstructionsForGeneratedRuntimeAt(startAddress);<br class="">
@@ -16169,7 +16179,6 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jumpNotSI = genJumpNotSmallInteger(Arg0Reg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genShiftAwaySmallIntegerTagsInScratchReg(ClassReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genRemoveSmallIntegerTagsInScratchReg(Arg1Reg);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin MulR:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genMulRR(backEnd, Arg1Reg, ClassReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin JumpOverflow: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jumpOvfl = genConditionalBranchoperand(JumpOverflow, ((sqInt)0));<br class="">
@@ -21984,14 +21993,6 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; return litInst;<br class="">
&nbsp;}<br class="">
<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* OutOfLineLiteralsManager&gt;&gt;#mustDumpLiterals: */<br class="">
-static sqInt NoDbgRegParms<br class="">
-mustDumpLiterals(sqInt currentOpcodeIndex)<br class="">
-{<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;return (currentOpcodeIndex &gt;= firstOpcodeIndex)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; ((currentOpcodeIndex - firstOpcodeIndex) &gt;= (outOfLineLiteralOpcodeLimit(backEnd())));<br class="">
-}<br class="">
-<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* OutOfLineLiteralsManager&gt;&gt;#resetForBlockCompile */<br class="">
&nbsp;static sqInt<br class="">
&nbsp;resetForBlockCompile(void)<br class="">
@@ -23445,14 +23446,14 @@<br class="">
&nbsp; &nbsp; &nbsp;sqInt reg;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MoveCq:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; quickConstant = varBaseAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:quickConstant:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction6 = genoperandoperand(MoveCqR, quickConstant, VarBaseReg);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;if (usesOutOfLineLiteral(anInstruction6)) {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(anInstruction6-&gt;dependent = locateLiteral(quickConstant));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction = genoperandoperand(MoveCqR, quickConstant, VarBaseReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;if (usesOutOfLineLiteral(anInstruction)) {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(anInstruction-&gt;dependent = locateLiteral(quickConstant));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (profiling) {<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* Test nextProfileTick for being non-zero and call checkProfileTick: if so.<br class="">
@@ -23508,9 +23509,9 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; checkLiteralforInstruction(address8, genoperandoperand(MoveAwR, address8, reg));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genLoadStackPointers(backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveMw:r:R: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction4 = genoperandoperandoperand(MoveMwrR, 0, SPReg, ReceiverResultReg);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;if (usesOutOfLineLiteral(anInstruction4)) {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(anInstruction4-&gt;dependent = locateLiteral(0));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction5 = genoperandoperandoperand(MoveMwrR, 0, SPReg, ReceiverResultReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;if (usesOutOfLineLiteral(anInstruction5)) {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(anInstruction5-&gt;dependent = locateLiteral(0));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
@@ -24798,7 +24799,8 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (fixup-&gt;targetInstruction = abstractInstructionAt(nextOpcodeIndex));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin maybeDumpLiterals: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((mustDumpLiterals(opcodeIndex))<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (((opcodeIndex &gt;= firstOpcodeIndex)<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;&amp; ((opcodeIndex - firstOpcodeIndex) &gt;= (outOfLineLiteralOpcodeLimit(backEnd()))))<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|| ((isUnconditionalBranch(descriptor))<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|| ((descriptor-&gt;isReturn)))) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dumpLiterals(!((isUnconditionalBranch(descriptor))<br class="">
@@ -25439,14 +25441,14 @@<br class="">
&nbsp; &nbsp; &nbsp;sqInt size;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MoveCq:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; quickConstant = varBaseAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:quickConstant:operand: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; anInstruction = genoperandoperand(MoveCqR, quickConstant, VarBaseReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (usesOutOfLineLiteral(anInstruction)) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (anInstruction-&gt;dependent = locateLiteral(quickConstant));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genLoadStackPointers(backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin PopR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(PopR, ClassReg);<br class="">
<br class="">
Modified: branches/Cog/nsspursrc/vm/cogitIA32.c<br class="">
===================================================================<br class="">
--- branches/Cog/nsspursrc/vm/cogitIA32.c&nbsp; &nbsp; &nbsp; &nbsp;2016-01-10 21:49:21 UTC (rev 3552)<br class="">
+++ branches/Cog/nsspursrc/vm/cogitIA32.c&nbsp; &nbsp; &nbsp; &nbsp;2016-01-10 22:51:42 UTC (rev 3553)<br class="">
@@ -1,9 +1,9 @@<br class="">
&nbsp;/* Automatically generated by<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;CCodeGenerator VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;CCodeGenerator VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab<br class="">
&nbsp; &nbsp; from<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;StackToRegisterMappingCogit VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;StackToRegisterMappingCogit VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab<br class="">
&nbsp; */<br class="">
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7 " __DATE__ ;<br class="">
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab " __DATE__ ;<br class="">
&nbsp;char *__cogitBuildInfo = __buildInfo;<br class="">
<br class="">
<br class="">
@@ -929,8 +929,7 @@<br class="">
&nbsp;static sqInt genLongUnconditionalForwardJump(void);<br class="">
&nbsp;static sqInt NoDbgRegParms genLookupForPerformNumArgs(sqInt numArgs);<br class="">
&nbsp;static AbstractInstruction * NoDbgRegParms genMoveConstantR(sqInt constant, sqInt reg);<br class="">
-static AbstractInstruction * NoDbgRegParms genMoveFalseR(sqInt reg);<br class="">
-static sqInt NoDbgRegParms genMoveTrueR(sqInt reg);<br class="">
+static AbstractInstruction * NoDbgRegParms genMoveTrueR(sqInt reg);<br class="">
&nbsp;static sqInt NoDbgRegParms genMustBeBooleanTrampolineForcalled(sqInt boolean, char *trampolineName);<br class="">
&nbsp;static void NoDbgRegParms genPrimReturnEnterCogCodeEnilopmart(sqInt profiling);<br class="">
&nbsp;static sqInt genPushClosureTempsBytecode(void);<br class="">
@@ -3148,7 +3147,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset15) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset15) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset15) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpLongNonZero:<br class="">
@@ -3188,7 +3187,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset17) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset17) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset17) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case Jump:<br class="">
@@ -3253,7 +3252,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset19) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset19) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset19) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpNonNegative:<br class="">
@@ -3291,7 +3290,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset110) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset110) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset110) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpOverflow:<br class="">
@@ -3329,7 +3328,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset111) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset111) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset111) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpNoOverflow:<br class="">
@@ -3367,7 +3366,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset112) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset112) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset112) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpCarry:<br class="">
@@ -3407,7 +3406,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset113) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset113) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset113) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpNoCarry:<br class="">
@@ -3447,7 +3446,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset114) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset114) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset114) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpLess:<br class="">
@@ -3485,7 +3484,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset115) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset115) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset115) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpGreaterOrEqual:<br class="">
@@ -3523,7 +3522,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset116) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset116) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset116) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpGreater:<br class="">
@@ -3561,7 +3560,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset117) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset117) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset117) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpLessOrEqual:<br class="">
@@ -3599,7 +3598,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset118) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset118) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset118) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpAbove:<br class="">
@@ -3638,7 +3637,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset119) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset119) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset119) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpBelowOrEqual:<br class="">
@@ -3677,7 +3676,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset120) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset120) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset120) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpFPOrdered:<br class="">
@@ -3715,7 +3714,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset121) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset121) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset121) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case JumpFPUnordered:<br class="">
@@ -3753,7 +3752,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[3] = ((((usqInt) offset122) &gt;&gt; 8) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[4] = ((((usqInt) offset122) &gt;&gt; 16) &amp; 0xFF);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((self_in_dispatchConcretize-&gt;machineCode))[5] = ((((usqInt) offset122) &gt;&gt; 24) &amp; 0xFF);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((usqInt) (((self_in_dispatchConcretize-&gt;machineCodeSize) = 6)));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;((self_in_dispatchConcretize-&gt;machineCodeSize) = 6);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; case RetN:<br class="">
@@ -9211,13 +9210,13 @@<br class="">
&nbsp;static void (*genEnilopmartForandandforCallcalled(sqInt regArg1, sqInt regArg2OrNone, sqInt regArg3OrNone, sqInt forCall, char *trampolineName))(void)<br class="">
<br class="">
&nbsp;{<br class="">
+&nbsp; &nbsp; AbstractInstruction *anInstruction;<br class="">
&nbsp; &nbsp; &nbsp;sqInt endAddress;<br class="">
&nbsp; &nbsp; &nbsp;sqInt enilopmart;<br class="">
+&nbsp; &nbsp; sqInt quickConstant;<br class="">
&nbsp; &nbsp; &nbsp;sqInt size;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genLoadStackPointers(backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (regArg3OrNone != NoReg) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin PopR: */<br class="">
@@ -9294,9 +9293,11 @@<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction1;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction2;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction3;<br class="">
+&nbsp; &nbsp; AbstractInstruction *anInstruction4;<br class="">
&nbsp; &nbsp; &nbsp;sqInt fixupSize;<br class="">
&nbsp; &nbsp; &nbsp;sqInt opcodeSize;<br class="">
&nbsp; &nbsp; &nbsp;sqInt quickConstant;<br class="">
+&nbsp; &nbsp; sqInt quickConstant1;<br class="">
&nbsp; &nbsp; &nbsp;sqInt startAddress;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin allocateOpcodes:bytecodes: */<br class="">
@@ -9308,16 +9309,14 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; fixups = ((void *)((((usqInt)abstractOpcodes)) + opcodeSize));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; labelCounter = 0;<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* Must happen first; value may be used in accessing any of the following addresses */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; startAddress = methodZoneBase;<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeSaveVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (captureFramePointer) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveR:Aw: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; address = cFramePointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:operand:literal: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction1 = genoperandoperand(MoveRAw, FPReg, address);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction2 = genoperandoperand(MoveRAw, FPReg, address);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveR:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperandoperand(MoveRR, SPReg, TempReg);<br class="">
@@ -9326,12 +9325,10 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:quickConstant:operand: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; anInstruction = genoperandoperand(AddCqR, quickConstant, TempReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveR:Aw: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;address2 = cStackPointerAddress();<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;address1 = cStackPointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:operand:literal: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction3 = genoperandoperand(MoveRAw, TempReg, address2);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction3 = genoperandoperand(MoveRAw, TempReg, address1);<br class="">
<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeRestoreVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(RetN, 0);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; outputInstructionsForGeneratedRuntimeAt(startAddress);<br class="">
@@ -9554,12 +9551,12 @@<br class="">
&nbsp;generateMapAtstart(sqInt addressOrNull, sqInt startAddress)<br class="">
&nbsp;{<br class="">
&nbsp; &nbsp; &nbsp;unsigned char annotation;<br class="">
-&nbsp; &nbsp; usqInt delta;<br class="">
+&nbsp; &nbsp; sqInt delta;<br class="">
&nbsp; &nbsp; &nbsp;sqInt i;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *instruction;<br class="">
&nbsp; &nbsp; &nbsp;sqInt length;<br class="">
-&nbsp; &nbsp; usqInt location;<br class="">
-&nbsp; &nbsp; usqInt mapEntry;<br class="">
+&nbsp; &nbsp; sqInt location;<br class="">
+&nbsp; &nbsp; sqInt mapEntry;<br class="">
&nbsp; &nbsp; &nbsp;sqInt maxDelta;<br class="">
&nbsp; &nbsp; &nbsp;usqInt mcpc;<br class="">
<br class="">
@@ -10912,7 +10909,8 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; literal = literalBeforeFollowingAddress(backEnd, mcpc);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mappedLiteral = remapObject(literal);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (mappedLiteral != literal) {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;storeLiteralbeforeFollowingAddress(backEnd, mappedLiteral, mcpc);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/* begin storeLiteral:atAnnotatedAddress:using: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;storeLiteralbeforeFollowingAddress(((AbstractInstruction *) backEnd), mappedLiteral, mcpc);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; codeModified = 1;<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
@@ -12624,7 +12622,8 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (couldBeObject(literal)) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mappedLiteral = remapObject(literal);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (literal != mappedLiteral) {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;storeLiteralbeforeFollowingAddress(backEnd, mappedLiteral, ((usqInt)mcpc));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/* begin storeLiteral:atAnnotatedAddress:using: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;storeLiteralbeforeFollowingAddress(((AbstractInstruction *) backEnd), mappedLiteral, ((usqInt)mcpc));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; codeModified = 1;<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ((hasYoungPtr != 0)<br class="">
@@ -14594,7 +14593,7 @@<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* FP jumps are a little weird */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jumpCond = jumpOpcodeGenerator(0);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveFalseR: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveConstant:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; constant = falseObject();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (shouldAnnotateObjectReference(constant)) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);<br class="">
@@ -14607,7 +14606,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; assert(methodOrBlockNumArgs &lt;= (numRegArgs()));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(RetN, 0);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;jmpTarget(jumpCond, genMoveConstantR(trueObject(), ReceiverResultReg));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin genPrimReturn */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; assert(methodOrBlockNumArgs &lt;= (numRegArgs()));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
@@ -15378,7 +15377,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin CmpR:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperandoperand(CmpRR, Arg0Reg, ReceiverResultReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jumpTrue = genConditionalBranchoperand(jumpOpcode, 0);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveFalseR: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveConstant:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; constant = falseObject();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (shouldAnnotateObjectReference(constant)) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);<br class="">
@@ -15391,7 +15390,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; assert(methodOrBlockNumArgs &lt;= (numRegArgs()));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(RetN, 0);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;jmpTarget(jumpTrue, genMoveConstantR(trueObject(), ReceiverResultReg));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;jmpTarget(jumpTrue, genMoveTrueR(ReceiverResultReg));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin genPrimReturn */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; assert(methodOrBlockNumArgs &lt;= (numRegArgs()));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
@@ -15446,7 +15445,7 @@<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* FP jumps are a little weird */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jumpCond = jumpFPOpcodeGenerator(0);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveFalseR: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveConstant:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; constant = falseObject();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (shouldAnnotateObjectReference(constant)) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);<br class="">
@@ -15459,7 +15458,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; assert(methodOrBlockNumArgs &lt;= (numRegArgs()));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(RetN, 0);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;jmpTarget(jumpCond, genMoveConstantR(trueObject(), ReceiverResultReg));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin genPrimReturn */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; assert(methodOrBlockNumArgs &lt;= (numRegArgs()));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
@@ -18558,7 +18557,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin JumpNonZero: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; jumpCmp = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveConstant:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveTrueR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; constant = trueObject();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (shouldAnnotateObjectReference(constant)) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);<br class="">
@@ -18571,7 +18570,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; assert(methodOrBlockNumArgs &lt;= (numRegArgs()));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(RetN, 0);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;jmpTarget(jumpCmp, genMoveFalseR(ReceiverResultReg));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;jmpTarget(jumpCmp, genMoveConstantR(falseObject(), ReceiverResultReg));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin genPrimReturn */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; assert(methodOrBlockNumArgs &lt;= (numRegArgs()));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
@@ -20772,24 +20771,8 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; anInstruction));<br class="">
&nbsp;}<br class="">
<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* SimpleStackBasedCogit&gt;&gt;#genMoveFalseR: */<br class="">
-static AbstractInstruction * NoDbgRegParms<br class="">
-genMoveFalseR(sqInt reg)<br class="">
-{<br class="">
-&nbsp; &nbsp; AbstractInstruction *anInstruction;<br class="">
-&nbsp; &nbsp; sqInt constant;<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveConstant:R: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;constant = falseObject();<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;return (shouldAnnotateObjectReference(constant)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;? annotateobjRef(gMoveCwR(constant, reg), constant)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: (/* begin MoveCq:R: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(anInstruction = genoperandoperand(MoveCqR, constant, reg)),<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction));<br class="">
-}<br class="">
-<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* SimpleStackBasedCogit&gt;&gt;#genMoveTrueR: */<br class="">
-static sqInt NoDbgRegParms<br class="">
+static AbstractInstruction * NoDbgRegParms<br class="">
&nbsp;genMoveTrueR(sqInt reg)<br class="">
&nbsp;{<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction;<br class="">
@@ -20846,6 +20829,7 @@<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction15;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction16;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction17;<br class="">
+&nbsp; &nbsp; AbstractInstruction *anInstruction18;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction2;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction3;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction4;<br class="">
@@ -20858,11 +20842,10 @@<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *continuePostSample;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *jmpFail;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *jmpSample;<br class="">
+&nbsp; &nbsp; sqInt quickConstant;<br class="">
&nbsp; &nbsp; &nbsp;sqInt reg;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (profiling) {<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* Test nextProfileTick for being non-zero and call checkProfileTick: if so.<br class="">
@@ -20870,11 +20853,11 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveAw:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; address = nextProfileTickAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:literal:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction = genoperandoperand(MoveAwR, address, TempReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction1 = genoperandoperand(MoveAwR, address, TempReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveAw:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; address1 = (nextProfileTickAddress()) + BytesPerWord;<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:literal:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction1 = genoperandoperand(MoveAwR, address1, ClassReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction2 = genoperandoperand(MoveAwR, address1, ClassReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin OrR:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; genoperandoperand(OrRR, TempReg, ClassReg);<br class="">
<br class="">
@@ -20887,21 +20870,21 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveAw:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; address6 = primFailCodeAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:literal:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction12 = genoperandoperand(MoveAwR, address6, TempReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction13 = genoperandoperand(MoveAwR, address6, TempReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; flag("ask concrete code gen if move sets condition codes?");<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin CmpCq:R: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction13 = genoperandoperand(CmpCqR, 0, TempReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction14 = genoperandoperand(CmpCqR, 0, TempReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin JumpNonZero: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jmpFail = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveAw:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; address5 = instructionPointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:literal:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction7 = genoperandoperand(MoveAwR, address5, ClassReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction8 = genoperandoperand(MoveAwR, address5, ClassReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genLoadStackPointers(backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveMw:r:R: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction8 = genoperandoperandoperand(MoveMwrR, 0, SPReg, ReceiverResultReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction9 = genoperandoperandoperand(MoveMwrR, 0, SPReg, ReceiverResultReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveR:Mw:r: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction9 = genoperandoperandoperand(MoveRMwr, ClassReg, 0, SPReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction10 = genoperandoperandoperand(MoveRMwr, ClassReg, 0, SPReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(RetN, 0);<br class="">
<br class="">
@@ -20909,16 +20892,16 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveAw:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; address7 = cStackPointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:literal:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction14 = genoperandoperand(MoveAwR, address7, SPReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction15 = genoperandoperand(MoveAwR, address7, SPReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; compileCallFornumArgsargargargargresultRegsaveRegs(ceActivateFailingPrimitiveMethod, 1, SendNumArgsReg, null, null, null, NoReg, 0);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveAw:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; address8 = instructionPointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; reg = ClassReg;<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:literal:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction15 = genoperandoperand(MoveAwR, address8, reg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction16 = genoperandoperand(MoveAwR, address8, reg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genLoadStackPointers(backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveMw:r:R: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction11 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, ReceiverResultReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction12 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, ReceiverResultReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin PushR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(PushR, ClassReg);<br class="">
<br class="">
@@ -20932,8 +20915,8 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin CallFullRT: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; callTarget = (unsigned long)ceCheckProfileTick;<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin annotateCall: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction17 = genoperand(CallFull, callTarget);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;abstractInstruction = anInstruction17;<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction18 = genoperand(CallFull, callTarget);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;abstractInstruction = anInstruction18;<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (abstractInstruction-&gt;annotation = IsRelativeCall);<br class="">
<br class="">
<br class="">
@@ -22805,14 +22788,14 @@<br class="">
&nbsp;static void (*genCallPICEnilopmartNumArgs(sqInt numArgs))(void)<br class="">
<br class="">
&nbsp;{<br class="">
+&nbsp; &nbsp; AbstractInstruction *anInstruction;<br class="">
&nbsp; &nbsp; &nbsp;sqInt endAddress;<br class="">
&nbsp; &nbsp; &nbsp;sqInt enilopmart;<br class="">
+&nbsp; &nbsp; sqInt quickConstant;<br class="">
&nbsp; &nbsp; &nbsp;sqInt reg;<br class="">
&nbsp; &nbsp; &nbsp;sqInt size;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genLoadStackPointers(backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin PopR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(PopR, ClassReg);<br class="">
<br class="">
Modified: branches/Cog/nsspursrc/vm/cogitMIPSEL.c<br class="">
===================================================================<br class="">
--- branches/Cog/nsspursrc/vm/cogitMIPSEL.c&nbsp; &nbsp; &nbsp;2016-01-10 21:49:21 UTC (rev 3552)<br class="">
+++ branches/Cog/nsspursrc/vm/cogitMIPSEL.c&nbsp; &nbsp; &nbsp;2016-01-10 22:51:42 UTC (rev 3553)<br class="">
@@ -1,9 +1,9 @@<br class="">
&nbsp;/* Automatically generated by<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;CCodeGenerator VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;CCodeGenerator VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab<br class="">
&nbsp; &nbsp; from<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;StackToRegisterMappingCogit VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;StackToRegisterMappingCogit VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab<br class="">
&nbsp; */<br class="">
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7 " __DATE__ ;<br class="">
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab " __DATE__ ;<br class="">
&nbsp;char *__cogitBuildInfo = __buildInfo;<br class="">
<br class="">
<br class="">
@@ -756,11 +756,11 @@<br class="">
&nbsp;static sqInt NoDbgRegParms computeMaximumSize(AbstractInstruction * self_in_computeMaximumSize);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeAddCheckOverflowCqR(AbstractInstruction * self_in_concretizeAddCheckOverflowCqR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeAddCheckOverflowRR(AbstractInstruction * self_in_concretizeAddCheckOverflowRR);<br class="">
-static usqInt NoDbgRegParms concretizeAddCqR(AbstractInstruction * self_in_concretizeAddCqR);<br class="">
+static sqInt NoDbgRegParms concretizeAddCqR(AbstractInstruction * self_in_concretizeAddCqR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeAddCwR(AbstractInstruction * self_in_concretizeAddCwR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeAddRR(AbstractInstruction * self_in_concretizeAddRR);<br class="">
&nbsp;static AbstractInstruction * NoDbgRegParms concretizeAlignmentNops(AbstractInstruction * self_in_concretizeAlignmentNops);<br class="">
-static usqInt NoDbgRegParms concretizeAndCqR(AbstractInstruction * self_in_concretizeAndCqR);<br class="">
+static sqInt NoDbgRegParms concretizeAndCqR(AbstractInstruction * self_in_concretizeAndCqR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeAndCqRR(AbstractInstruction * self_in_concretizeAndCqRR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeAndCwR(AbstractInstruction * self_in_concretizeAndCwR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeAndRR(AbstractInstruction * self_in_concretizeAndRR);<br class="">
@@ -779,7 +779,7 @@<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeBrUnsignedGreaterRR(AbstractInstruction * self_in_concretizeBrUnsignedGreaterRR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeBrUnsignedLessEqualRR(AbstractInstruction * self_in_concretizeBrUnsignedLessEqualRR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeBrUnsignedLessRR(AbstractInstruction * self_in_concretizeBrUnsignedLessRR);<br class="">
-static usqInt NoDbgRegParms concretizeCall(AbstractInstruction * self_in_concretizeCall);<br class="">
+static sqInt NoDbgRegParms concretizeCall(AbstractInstruction * self_in_concretizeCall);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeCallFull(AbstractInstruction * self_in_concretizeCallFull);<br class="">
&nbsp;static sqInt NoDbgRegParms concretizeCmpCqR(AbstractInstruction * self_in_concretizeCmpCqR);<br class="">
&nbsp;static sqInt NoDbgRegParms concretizeCmpCwR(AbstractInstruction * self_in_concretizeCmpCwR);<br class="">
@@ -829,12 +829,12 @@<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeMulCheckOverflowRR(AbstractInstruction * self_in_concretizeMulCheckOverflowRR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeNegateR(AbstractInstruction * self_in_concretizeNegateR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeNop(AbstractInstruction * self_in_concretizeNop);<br class="">
-static usqInt NoDbgRegParms concretizeOrCqR(AbstractInstruction * self_in_concretizeOrCqR);<br class="">
+static sqInt NoDbgRegParms concretizeOrCqR(AbstractInstruction * self_in_concretizeOrCqR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeOrCwR(AbstractInstruction * self_in_concretizeOrCwR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeOrRR(AbstractInstruction * self_in_concretizeOrRR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizePopR(AbstractInstruction * self_in_concretizePopR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizePrefetchAw(AbstractInstruction * self_in_concretizePrefetchAw);<br class="">
-static usqInt NoDbgRegParms concretizePushCq(AbstractInstruction * self_in_concretizePushCq);<br class="">
+static sqInt NoDbgRegParms concretizePushCq(AbstractInstruction * self_in_concretizePushCq);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizePushCw(AbstractInstruction * self_in_concretizePushCw);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizePushR(AbstractInstruction * self_in_concretizePushR);<br class="">
&nbsp;static usqInt NoDbgRegParms concretizeRetN(AbstractInstruction * self_in_concretizeRetN);<br class="">
@@ -1037,7 +1037,7 @@<br class="">
&nbsp;static sqInt NoDbgRegParms genGetClassIndexOfNonImminto(sqInt sourceReg, sqInt destReg);<br class="">
&nbsp;static sqInt NoDbgRegParms genGetClassObjectOfClassIndexintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);<br class="">
&nbsp;static sqInt NoDbgRegParms genGetClassObjectOfintoscratchReginstRegIsReceiver(sqInt instReg, sqInt destReg, sqInt scratchReg, sqInt instRegIsReceiver);<br class="">
-static sqInt NoDbgRegParms genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);<br class="">
+static AbstractInstruction * NoDbgRegParms genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);<br class="">
&nbsp;static sqInt NoDbgRegParms genGetCompactClassIndexNonImmOfinto(sqInt instReg, sqInt destReg);<br class="">
&nbsp;static sqInt NoDbgRegParms genGetDoubleValueOfinto(sqInt srcReg, sqInt destFPReg);<br class="">
&nbsp;static sqInt NoDbgRegParms genGetFormatOfinto(sqInt srcReg, sqInt destReg);<br class="">
@@ -4843,7 +4843,7 @@<br class="">
&nbsp;{<br class="">
&nbsp; &nbsp; &nbsp;sqInt classTag;<br class="">
&nbsp; &nbsp; &nbsp;usqInt classTagPC;<br class="">
-&nbsp; &nbsp; usqInt entryPoint;<br class="">
+&nbsp; &nbsp; sqInt entryPoint;<br class="">
&nbsp; &nbsp; &nbsp;sqInt errors;<br class="">
&nbsp; &nbsp; &nbsp;sqInt i;<br class="">
&nbsp; &nbsp; &nbsp;usqInt methodObjPC;<br class="">
@@ -5337,13 +5337,18 @@<br class="">
&nbsp;static void (*genEnilopmartForandandforCallcalled(sqInt regArg1, sqInt regArg2OrNone, sqInt regArg3OrNone, sqInt forCall, char *trampolineName))(void)<br class="">
<br class="">
&nbsp;{<br class="">
+&nbsp; &nbsp; AbstractInstruction *anInstruction;<br class="">
&nbsp; &nbsp; &nbsp;sqInt endAddress;<br class="">
&nbsp; &nbsp; &nbsp;sqInt enilopmart;<br class="">
+&nbsp; &nbsp; sqInt quickConstant;<br class="">
&nbsp; &nbsp; &nbsp;sqInt size;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MoveCq:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;quickConstant = varBaseAddress();<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin gen:quickConstant:operand: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction = genoperandoperand(MoveCqR, quickConstant, VarBaseReg);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genLoadStackPointers(backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (regArg3OrNone != NoReg) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin PopR: */<br class="">
@@ -5433,8 +5438,11 @@<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction1;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction2;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction3;<br class="">
+&nbsp; &nbsp; AbstractInstruction *anInstruction4;<br class="">
&nbsp; &nbsp; &nbsp;sqInt fixupSize;<br class="">
&nbsp; &nbsp; &nbsp;sqInt opcodeSize;<br class="">
+&nbsp; &nbsp; sqInt quickConstant;<br class="">
+&nbsp; &nbsp; sqInt quickConstant1;<br class="">
&nbsp; &nbsp; &nbsp;sqInt startAddress;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin allocateOpcodes:bytecodes: */<br class="">
@@ -5446,24 +5454,36 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; fixups = ((void *)((((usqInt)abstractOpcodes)) + opcodeSize));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; labelCounter = 0;<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* Must happen first; value may be used in accessing any of the following addresses */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; startAddress = methodZoneBase;<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeSaveVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin PushR: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;genoperand(PushR, VarBaseReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MoveCq:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;quickConstant1 = varBaseAddress();<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin gen:quickConstant:operand: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction1 = genoperandoperand(MoveCqR, quickConstant1, VarBaseReg);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (captureFramePointer) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveR:Aw: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; address = cFramePointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:operand:literal: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction1 = genoperandoperand(MoveRAw, FPReg, address);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction2 = genoperandoperand(MoveRAw, FPReg, address);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MoveR:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;genoperandoperand(MoveRR, SPReg, TempReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin AddCq:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;quickConstant = 0 + BytesPerWord;<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin gen:quickConstant:operand: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction = genoperandoperand(AddCqR, quickConstant, TempReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveR:Aw: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; address1 = cStackPointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:operand:literal: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction2 = genoperandoperand(MoveRAw, SPReg, address1);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction3 = genoperandoperand(MoveRAw, TempReg, address1);<br class="">
<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeRestoreVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin PopR: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;genoperand(PopR, VarBaseReg);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(RetN, 0);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; outputInstructionsForGeneratedRuntimeAt(startAddress);<br class="">
@@ -5686,12 +5706,12 @@<br class="">
&nbsp;generateMapAtstart(sqInt addressOrNull, sqInt startAddress)<br class="">
&nbsp;{<br class="">
&nbsp; &nbsp; &nbsp;unsigned char annotation;<br class="">
-&nbsp; &nbsp; usqInt delta;<br class="">
+&nbsp; &nbsp; sqInt delta;<br class="">
&nbsp; &nbsp; &nbsp;sqInt i;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *instruction;<br class="">
&nbsp; &nbsp; &nbsp;sqInt length;<br class="">
-&nbsp; &nbsp; usqInt location;<br class="">
-&nbsp; &nbsp; usqInt mapEntry;<br class="">
+&nbsp; &nbsp; sqInt location;<br class="">
+&nbsp; &nbsp; sqInt mapEntry;<br class="">
&nbsp; &nbsp; &nbsp;sqInt maxDelta;<br class="">
&nbsp; &nbsp; &nbsp;usqInt mcpc;<br class="">
<br class="">
@@ -10942,7 +10962,7 @@<br class="">
&nbsp;}<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* CogMIPSELCompiler&gt;&gt;#concretizeAddCqR */<br class="">
-static usqInt NoDbgRegParms<br class="">
+static sqInt NoDbgRegParms<br class="">
&nbsp;concretizeAddCqR(AbstractInstruction * self_in_concretizeAddCqR)<br class="">
&nbsp;{<br class="">
&nbsp; &nbsp; &nbsp;sqInt aWord;<br class="">
@@ -11018,7 +11038,7 @@<br class="">
&nbsp;}<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* CogMIPSELCompiler&gt;&gt;#concretizeAndCqR */<br class="">
-static usqInt NoDbgRegParms<br class="">
+static sqInt NoDbgRegParms<br class="">
&nbsp;concretizeAndCqR(AbstractInstruction * self_in_concretizeAndCqR)<br class="">
&nbsp;{<br class="">
&nbsp; &nbsp; &nbsp;sqInt aWord;<br class="">
@@ -11596,7 +11616,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; the method zone. */<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* CogMIPSELCompiler&gt;&gt;#concretizeCall */<br class="">
-static usqInt NoDbgRegParms<br class="">
+static sqInt NoDbgRegParms<br class="">
&nbsp;concretizeCall(AbstractInstruction * self_in_concretizeCall)<br class="">
&nbsp;{<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; return concretizeCallFull(self_in_concretizeCall);<br class="">
@@ -12465,7 +12485,7 @@<br class="">
&nbsp;}<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* CogMIPSELCompiler&gt;&gt;#concretizeOrCqR */<br class="">
-static usqInt NoDbgRegParms<br class="">
+static sqInt NoDbgRegParms<br class="">
&nbsp;concretizeOrCqR(AbstractInstruction * self_in_concretizeOrCqR)<br class="">
&nbsp;{<br class="">
&nbsp; &nbsp; &nbsp;sqInt aWord;<br class="">
@@ -12567,7 +12587,7 @@<br class="">
&nbsp;}<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* CogMIPSELCompiler&gt;&gt;#concretizePushCq */<br class="">
-static usqInt NoDbgRegParms<br class="">
+static sqInt NoDbgRegParms<br class="">
&nbsp;concretizePushCq(AbstractInstruction * self_in_concretizePushCq)<br class="">
&nbsp;{<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; return concretizePushCw(self_in_concretizePushCq);<br class="">
@@ -15497,6 +15517,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jumpNotSI = genJumpNotSmallInteger(Arg0Reg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genShiftAwaySmallIntegerTagsInScratchReg(ClassReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genRemoveSmallIntegerTagsInScratchReg(Arg1Reg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MulR:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genMulRR(backEnd, Arg1Reg, ClassReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin JumpOverflow: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jumpOvfl = genConditionalBranchoperand(JumpOverflow, ((sqInt)0));<br class="">
@@ -18353,7 +18374,7 @@<br class="">
&nbsp;}<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* CogObjectRepresentationForSpur&gt;&gt;#genGetClassTagOf:into:scratchReg: */<br class="">
-static sqInt NoDbgRegParms<br class="">
+static AbstractInstruction * NoDbgRegParms<br class="">
&nbsp;genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg)<br class="">
&nbsp;{<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; return genGetInlineCacheClassTagFromintoforEntry(instReg, destReg, 1);<br class="">
@@ -21024,6 +21045,7 @@<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction15;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction16;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction17;<br class="">
+&nbsp; &nbsp; AbstractInstruction *anInstruction18;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction2;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction3;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *anInstruction4;<br class="">
@@ -21037,11 +21059,15 @@<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction * inst;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *jmpFail;<br class="">
&nbsp; &nbsp; &nbsp;AbstractInstruction *jmpSample;<br class="">
+&nbsp; &nbsp; sqInt quickConstant;<br class="">
&nbsp; &nbsp; &nbsp;sqInt reg;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MoveCq:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;quickConstant = varBaseAddress();<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin gen:quickConstant:operand: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction = genoperandoperand(MoveCqR, quickConstant, VarBaseReg);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (profiling) {<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* Test nextProfileTick for being non-zero and call checkProfileTick: if so.<br class="">
@@ -21049,11 +21075,11 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveAw:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; address = nextProfileTickAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:literal:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction = genoperandoperand(MoveAwR, address, TempReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction1 = genoperandoperand(MoveAwR, address, TempReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveAw:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; address1 = (nextProfileTickAddress()) + BytesPerWord;<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:literal:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction1 = genoperandoperand(MoveAwR, address1, ClassReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction2 = genoperandoperand(MoveAwR, address1, ClassReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin OrR:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; genoperandoperand(OrRR, TempReg, ClassReg);<br class="">
<br class="">
@@ -21066,19 +21092,19 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveAw:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; address6 = primFailCodeAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:literal:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction12 = genoperandoperand(MoveAwR, address6, TempReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction13 = genoperandoperand(MoveAwR, address6, TempReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; flag("ask concrete code gen if move sets condition codes?");<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin CmpCq:R: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction13 = genoperandoperand(CmpCqR, 0, TempReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction14 = genoperandoperand(CmpCqR, 0, TempReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin JumpNonZero: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jmpFail = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genLoadStackPointers(backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveMw:r:R: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction5 = genoperandoperandoperand(MoveMwrR, 0, SPReg, ReceiverResultReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction6 = genoperandoperandoperand(MoveMwrR, 0, SPReg, ReceiverResultReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveAw:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; address4 = instructionPointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:literal:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction6 = genoperandoperand(MoveAwR, address4, LinkReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction7 = genoperandoperand(MoveAwR, address4, LinkReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(RetN, BytesPerWord);<br class="">
<br class="">
@@ -21087,16 +21113,16 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveAw:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; address7 = cStackPointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:literal:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction14 = genoperandoperand(MoveAwR, address7, SPReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction15 = genoperandoperand(MoveAwR, address7, SPReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; compileCallFornumArgsargargargargresultRegsaveRegs(ceActivateFailingPrimitiveMethod, 1, SendNumArgsReg, null, null, null, NoReg, 0);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveAw:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; address8 = instructionPointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; reg = LinkReg;<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:literal:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction15 = genoperandoperand(MoveAwR, address8, reg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction16 = genoperandoperand(MoveAwR, address8, reg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genLoadStackPointers(backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveMw:r:R: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction10 = genoperandoperandoperand(MoveMwrR, 0, SPReg, ReceiverResultReg);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction11 = genoperandoperandoperand(MoveMwrR, 0, SPReg, ReceiverResultReg);<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(RetN, BytesPerWord);<br class="">
@@ -21110,7 +21136,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin CallFullRT: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; callTarget = (unsigned long)ceCheckProfileTick;<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin CallFull: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction16 = genoperand(CallFull, callTarget);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction17 = genoperand(CallFull, callTarget);<br class="">
<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin PopR: */<br class="">
@@ -22985,14 +23011,19 @@<br class="">
&nbsp;static void (*genCallPICEnilopmartNumArgs(sqInt numArgs))(void)<br class="">
<br class="">
&nbsp;{<br class="">
+&nbsp; &nbsp; AbstractInstruction *anInstruction;<br class="">
&nbsp; &nbsp; &nbsp;sqInt endAddress;<br class="">
&nbsp; &nbsp; &nbsp;sqInt enilopmart;<br class="">
+&nbsp; &nbsp; sqInt quickConstant;<br class="">
&nbsp; &nbsp; &nbsp;sqInt reg;<br class="">
&nbsp; &nbsp; &nbsp;sqInt size;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MoveCq:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;quickConstant = varBaseAddress();<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin gen:quickConstant:operand: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction = genoperandoperand(MoveCqR, quickConstant, VarBaseReg);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genLoadStackPointers(backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin PopR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(PopR, ClassReg);<br class="">
<br class="">
Modified: branches/Cog/platforms/Cross/vm/sqCogStackAlignment.h<br class="">
===================================================================<br class="">
--- branches/Cog/platforms/Cross/vm/sqCogStackAlignment.h&nbsp; &nbsp; &nbsp; &nbsp;2016-01-10 21:49:21 UTC (rev 3552)<br class="">
+++ branches/Cog/platforms/Cross/vm/sqCogStackAlignment.h&nbsp; &nbsp; &nbsp; &nbsp;2016-01-10 22:51:42 UTC (rev 3553)<br class="">
@@ -37,8 +37,22 @@<br class="">
&nbsp; * __m256 is passed on stack) byte boundary. In other words, the value<br class="">
&nbsp; * (%rsp + 8) is always a multiple of 16 (32) when control is transferred to<br class="">
&nbsp; * the function entry point.<br class="">
+ * However,<br class="">
+ * <a href="https://developer.apple.com/library/mac/documentation/DeveloperTools/" rel="noreferrer" target="_blank" class="">https://developer.apple.com/library/mac/documentation/DeveloperTools/</a><br class="">
+ * Conceptual/LowLevelABI/140-x86-64_Function_Calling_Conventions/x86_64.html<br class="">
+ * claims<br class="">
+ * "The OS X x86-64 function calling conventions are the same as the function<br class="">
+ * calling conventions described in System V Application Binary Interface AMD64<br class="">
+ * Architecture Processor Supplement, found at<br class="">
+ * <a href="http://people.freebsd.org/~obrien/amd64-elf-abi.pdf" rel="noreferrer" target="_blank" class="">http://people.freebsd.org/~obrien/amd64-elf-abi.pdf</a>. See that document for<br class="">
+ * details."<br class="">
+ * and that document states:<br class="">
+ * "The end of the input argument area shall be aligned on a 16 byte boundary.<br class="">
+ * In other words, the value (%rsp ? 8) is always a multiple of 16 when control<br class="">
+ * is transferred to the function entry point. The stack pointer, %rsp, always<br class="">
+ * points to the end of the latest allocated stack frame."<br class="">
&nbsp; */<br class="">
-# if __APPLE__ &amp;&amp; __MACH__ /* i.e. the __m256 regime */<br class="">
+# if __APPLE__ &amp;&amp; __MACH__ &amp;&amp; 0/* i.e. the __m256 regime */<br class="">
&nbsp;#&nbsp; &nbsp; &nbsp; define STACK_ALIGN_BYTES 32<br class="">
&nbsp;#&nbsp; &nbsp; &nbsp; define STACK_FP_ALIGNMENT 16 /* aligned sp - retpc - saved fp */<br class="">
&nbsp;# else<br class="">
<br class="">
<br class="">
Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h<br class="">
___________________________________________________________________<br class="">
Modified: checkindate<br class="">
&nbsp; &nbsp;- Sun Jan 10 13:47:59 PST 2016<br class="">
&nbsp; &nbsp;+ Sun Jan 10 14:48:56 PST 2016<br class="">
<br class="">
Modified: branches/Cog/spur64src/vm/cogit.h<br class="">
===================================================================<br class="">
--- branches/Cog/spur64src/vm/cogit.h&nbsp; &nbsp;2016-01-10 21:49:21 UTC (rev 3552)<br class="">
+++ branches/Cog/spur64src/vm/cogit.h&nbsp; &nbsp;2016-01-10 22:51:42 UTC (rev 3553)<br class="">
@@ -1,5 +1,5 @@<br class="">
&nbsp;/* Automatically generated by<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;CCodeGenerator VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;CCodeGenerator VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab<br class="">
&nbsp; */<br class="">
<br class="">
<br class="">
<br class="">
Modified: branches/Cog/spur64src/vm/cogitX64.c<br class="">
===================================================================<br class="">
--- branches/Cog/spur64src/vm/cogitX64.c&nbsp; &nbsp; &nbsp; &nbsp; 2016-01-10 21:49:21 UTC (rev 3552)<br class="">
+++ branches/Cog/spur64src/vm/cogitX64.c&nbsp; &nbsp; &nbsp; &nbsp; 2016-01-10 22:51:42 UTC (rev 3553)<br class="">
@@ -1,9 +1,9 @@<br class="">
&nbsp;/* Automatically generated by<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;CCodeGenerator VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;CCodeGenerator VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab<br class="">
&nbsp; &nbsp; from<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;StackToRegisterMappingCogit VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;StackToRegisterMappingCogit VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab<br class="">
&nbsp; */<br class="">
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1629 uuid: e706b773-41e5-482b-aa41-bacdf83d47e7 " __DATE__ ;<br class="">
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1630 uuid: 2ed025ea-f400-4440-8e8b-5aa46d06c9ab " __DATE__ ;<br class="">
&nbsp;char *__cogitBuildInfo = __buildInfo;<br class="">
<br class="">
<br class="">
@@ -782,7 +782,7 @@<br class="">
&nbsp;static sqInt NoDbgRegParms genGetClassIndexOfNonImminto(sqInt sourceReg, sqInt destReg);<br class="">
&nbsp;static sqInt NoDbgRegParms genGetClassObjectOfClassIndexintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);<br class="">
&nbsp;static sqInt NoDbgRegParms genGetClassObjectOfintoscratchReginstRegIsReceiver(sqInt instReg, sqInt destReg, sqInt scratchReg, sqInt instRegIsReceiver);<br class="">
-static sqInt NoDbgRegParms genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);<br class="">
+static AbstractInstruction * NoDbgRegParms genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);<br class="">
&nbsp;static sqInt NoDbgRegParms genGetCompactClassIndexNonImmOfinto(sqInt instReg, sqInt destReg);<br class="">
&nbsp;static sqInt NoDbgRegParms genGetDoubleValueOfinto(sqInt srcReg, sqInt destFPReg);<br class="">
&nbsp;static sqInt NoDbgRegParms genGetFormatOfinto(sqInt srcReg, sqInt destReg);<br class="">
@@ -912,6 +912,7 @@<br class="">
&nbsp;static sqInt genLongUnconditionalForwardJump(void);<br class="">
&nbsp;static sqInt NoDbgRegParms genLookupForPerformNumArgs(sqInt numArgs);<br class="">
&nbsp;static AbstractInstruction * NoDbgRegParms genMoveConstantR(sqInt constant, sqInt reg);<br class="">
+static AbstractInstruction * NoDbgRegParms genMoveFalseR(sqInt reg);<br class="">
&nbsp;static sqInt NoDbgRegParms genMoveTrueR(sqInt reg);<br class="">
&nbsp;static sqInt NoDbgRegParms genMustBeBooleanTrampolineForcalled(sqInt boolean, char *trampolineName);<br class="">
&nbsp;static void NoDbgRegParms genPrimReturnEnterCogCodeEnilopmart(sqInt profiling);<br class="">
@@ -5016,11 +5017,11 @@<br class="">
&nbsp; &nbsp; &nbsp;sqInt size;<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MoveCq:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; quickConstant = varBaseAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:quickConstant:operand: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; anInstruction = genoperandoperand(MoveCqR, quickConstant, VarBaseReg);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genLoadStackPointers(backEnd);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (regArg3OrNone != NoReg) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin PopR: */<br class="">
@@ -5113,35 +5114,36 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; fixups = ((void *)((((usqInt)abstractOpcodes)) + opcodeSize));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; zeroOpcodeIndex();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; labelCounter = 0;<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* Must happen first; value may be used in accessing any of the following addresses */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; startAddress = methodZoneBase;<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeSaveVarBase */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin PushR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(PushR, VarBaseReg);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeEstablishVarBase */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin MoveCq:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; quickConstant1 = varBaseAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:quickConstant:operand: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction4 = genoperandoperand(MoveCqR, quickConstant1, VarBaseReg);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction1 = genoperandoperand(MoveCqR, quickConstant1, VarBaseReg);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (captureFramePointer) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveR:Aw: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; address = cFramePointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:operand:literal: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction1 = genoperandoperand(MoveRAw, FPReg, address);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;anInstruction2 = genoperandoperand(MoveRAw, FPReg, address);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveR:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperandoperand(MoveRR, SPReg, TempReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin AddCq:R: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;quickConstant = leafCallStackPointerDelta(backEnd);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;quickConstant = (leafCallStackPointerDelta(backEnd)) + BytesPerWord;<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:quickConstant:operand: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; anInstruction = genoperandoperand(AddCqR, quickConstant, TempReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin MoveR:Aw: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;address2 = cStackPointerAddress();<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;address1 = cStackPointerAddress();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin gen:operand:literal: */<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;anInstruction3 = genoperandoperand(MoveRAw, TempReg, address2);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;anInstruction3 = genoperandoperand(MoveRAw, TempReg, address1);<br class="">
<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin maybeRestoreVarBase */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin PopR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(PopR, VarBaseReg);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;((AbstractInstruction *) backEnd);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(RetN, 0);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; outputInstructionsForGeneratedRuntimeAt(startAddress);<br class="">
@@ -6047,6 +6049,8 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; ((methodLabel-&gt;operands))[0] = 0;<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; ((methodLabel-&gt;operands))[1] = 0;<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; callerSavedRegMask = callerSavedRegisterMask(backEnd);<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;assert(((registerMaskFor(VarBaseReg)) &amp; callerSavedRegMask) == 0);<br class="">
+<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin allocateLiterals: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
<br class="">
@@ -9779,7 +9783,7 @@<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* FP jumps are a little weird */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jumpCond = jumpOpcodeGenerator(0);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveConstant:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveFalseR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; constant = falseObject();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (shouldAnnotateObjectReference(constant)) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);<br class="">
@@ -10657,7 +10661,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin CmpR:R: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperandoperand(CmpRR, Arg0Reg, ReceiverResultReg);<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jumpTrue = genConditionalBranchoperand(jumpOpcode, 0);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveConstant:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveFalseR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; constant = falseObject();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (shouldAnnotateObjectReference(constant)) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);<br class="">
@@ -10725,7 +10729,7 @@<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* FP jumps are a little weird */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jumpCond = jumpFPOpcodeGenerator(0);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveConstant:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveFalseR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; constant = falseObject();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (shouldAnnotateObjectReference(constant)) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);<br class="">
@@ -12094,7 +12098,7 @@<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* FP jumps are a little weird */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; jumpCond = jumpOpcodeGenerator(0);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveConstant:R: */<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;/* begin genMoveFalseR: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; constant = falseObject();<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; if (shouldAnnotateObjectReference(constant)) {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);<br class="">
@@ -12950,7 +12954,7 @@<br class="">
&nbsp;}<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* CogObjectRepresentationForSpur&gt;&gt;#genGetClassTagOf:into:scratchReg: */<br class="">
-static sqInt NoDbgRegParms<br class="">
+static AbstractInstruction * NoDbgRegParms<br class="">
&nbsp;genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg)<br class="">
&nbsp;{<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; return genGetInlineCacheClassTagFromintoforEntry(instReg, destReg, 1);<br class="">
@@ -13332,7 +13336,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; assert(methodOrBlockNumArgs &lt;= (numRegArgs()));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; genoperand(RetN, 0);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;jmpTarget(jumpCmp, genMoveConstantR(falseObject(), ReceiverResultReg));<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;jmpTarget(jumpCmp, genMoveFalseR(ReceiverResultReg));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin genPrimReturn */<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; assert(methodOrBlockNumArgs &lt;= (numRegArgs()));<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; /* begin RetN: */<br class="">
<br class="">
@@ Diff output truncated at 50000 characters. @@<br class="">
</blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature"><div dir="ltr" class=""><div class=""><span style="font-size:small;border-collapse:separate" class=""><div class="">_,,,^..^,,,_<br class=""></div><div class="">best,&nbsp;Eliot</div></span></div></div></div>
</div></div>
</div></blockquote></div><br class=""></div></body></html>