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