Revision: 3630
Author: eliot
Date: 2016-02-23 17:02:35 -0800 (Tue, 23 Feb 2016)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1697
Fix serious bug in jitted perform: primitive. Thanks to Stephane Ducasse for
finding and to Levente Uzoni for diagnosing the bug. If the argument count
is one greater than the max number of register arguments (2 in Spur, hence
perform:with:with:) then the code to remove the receiver and arguments from
the stack neglects to remove the receiver and selector.
Modified Paths:
--------------
branches/Cog/nsspur64src/vm/cogit.h
branches/Cog/nsspur64src/vm/cogitX64.c
branches/Cog/nsspursrc/vm/cogit.h
branches/Cog/nsspursrc/vm/cogitARMv5.c
branches/Cog/nsspursrc/vm/cogitIA32.c
branches/Cog/nsspursrc/vm/cogitMIPSEL.c
branches/Cog/spur64src/vm/cogit.h
branches/Cog/spur64src/vm/cogitX64.c
branches/Cog/spursistasrc/vm/cogit.h
branches/Cog/spursistasrc/vm/cogitARMv5.c
branches/Cog/spursistasrc/vm/cogitIA32.c
branches/Cog/spursistasrc/vm/cogitMIPSEL.c
branches/Cog/spursrc/vm/cogit.h
branches/Cog/spursrc/vm/cogitARMv5.c
branches/Cog/spursrc/vm/cogitIA32.c
branches/Cog/spursrc/vm/cogitMIPSEL.c
branches/Cog/src/vm/cogit.h
branches/Cog/src/vm/cogitARMv5.c
branches/Cog/src/vm/cogitIA32.c
branches/Cog/src/vm/cogitMIPSEL.c
Property Changed:
----------------
branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/nsspur64src/vm/cogit.h
===================================================================
--- branches/Cog/nsspur64src/vm/cogit.h 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/nsspur64src/vm/cogit.h 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
Modified: branches/Cog/nsspur64src/vm/cogitX64.c
===================================================================
--- branches/Cog/nsspur64src/vm/cogitX64.c 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/nsspur64src/vm/cogitX64.c 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -3700,7 +3700,7 @@
closedPICRefersToUnmarkedObject(CogMethod *cPIC)
{
sqInt i;
- sqInt object;
+ usqInt object;
sqInt pc;
if (!((isImmediate((cPIC->selector)))
@@ -23578,10 +23578,11 @@
}
-/* e.g. Receiver Receiver
- Selector/Arg0 => Arg1
- Arg1 Arg2
- Arg2 sp-> retpc
+/* e.g. Receiver Receiver or Receiver Receiver (RISC)
+ Selector/Arg0 => Arg1 Selector/Arg0 => Arg1
+ Arg1 Arg2 Arg1 Arg2
+ Arg2 Arg3 Arg2 sp-> Arg3
+ Arg3 sp-> retpc sp-> Arg3
sp-> retpc */
/* Generate code to adjust the possibly stacked arguments immediately
before jumping to a method looked up by a perform primitive. */
@@ -23592,10 +23593,24 @@
{
AbstractInstruction *anInstruction;
AbstractInstruction *anInstruction1;
+ AbstractInstruction *anInstruction10;
+ AbstractInstruction *anInstruction11;
+ AbstractInstruction *anInstruction12;
+ AbstractInstruction *anInstruction13;
+ AbstractInstruction *anInstruction14;
+ AbstractInstruction *anInstruction15;
AbstractInstruction *anInstruction2;
AbstractInstruction *anInstruction3;
AbstractInstruction *anInstruction4;
+ AbstractInstruction *anInstruction5;
+ AbstractInstruction *anInstruction6;
+ AbstractInstruction *anInstruction7;
+ AbstractInstruction *anInstruction8;
+ AbstractInstruction *anInstruction9;
sqInt index;
+ sqInt literal;
+ sqInt quickConstant;
+ sqInt quickConstant1;
assert((numRegArgs()) <= 2);
assert(numArgs >= 1);
@@ -23607,28 +23622,33 @@
return;
}
if ((2 + 1) == numArgs) {
- /* begin PopR: */
- genoperand(PopR, TempReg);
- /* begin PopR: */
- genoperand(PopR, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction7 = genoperandoperandoperand(MoveMwrR, 0, SPReg, TempReg);
+ /* begin MoveMw:r:R: */
+ anInstruction4 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction5 = genoperandoperandoperand(MoveMwrR, BytesPerWord * 2, SPReg, Arg0Reg);
- /* begin MoveMw:r:R: */
- anInstruction = genoperandoperandoperand(MoveMwrR, 0, SPReg, Arg0Reg);
+ /* begin AddCq:R: */
+ quickConstant1 = (numArgs + 1) * BytesPerWord;
+ /* begin gen:quickConstant:operand: */
+ anInstruction8 = genoperandoperand(AddCqR, quickConstant1, SPReg);
/* begin MoveR:Mw:r: */
- anInstruction1 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ anInstruction9 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
return;
}
- for (index = (numArgs - 1); index >= 0; index += -1) {
+ for (index = (numArgs - 1); index >= 1; index += -1) {
/* begin MoveMw:r:R: */
- anInstruction2 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
+ anInstruction13 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction3 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
+ anInstruction14 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
}
/* begin PopR: */
genoperand(PopR, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction4 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ anInstruction15 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+
}
Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/nsspursrc/vm/cogit.h 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitARMv5.c 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/nsspursrc/vm/cogitARMv5.c 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -10558,12 +10558,12 @@
generateMapAtstart(sqInt addressOrNull, sqInt startAddress)
{
unsigned char annotation;
- sqInt delta;
+ usqInt delta;
sqInt i;
AbstractInstruction *instruction;
sqInt length;
- sqInt location;
- sqInt mapEntry;
+ usqInt location;
+ usqInt mapEntry;
sqInt maxDelta;
usqInt mcpc;
@@ -24957,10 +24957,11 @@
}
-/* e.g. Receiver Receiver
- Selector/Arg0 => Arg1
- Arg1 Arg2
- Arg2 sp-> retpc
+/* e.g. Receiver Receiver or Receiver Receiver (RISC)
+ Selector/Arg0 => Arg1 Selector/Arg0 => Arg1
+ Arg1 Arg2 Arg1 Arg2
+ Arg2 Arg3 Arg2 sp-> Arg3
+ Arg3 sp-> retpc sp-> Arg3
sp-> retpc */
/* Generate code to adjust the possibly stacked arguments immediately
before jumping to a method looked up by a perform primitive. */
@@ -24971,11 +24972,25 @@
{
AbstractInstruction *anInstruction;
AbstractInstruction *anInstruction1;
+ AbstractInstruction *anInstruction10;
+ AbstractInstruction *anInstruction11;
+ AbstractInstruction *anInstruction12;
+ AbstractInstruction *anInstruction13;
+ AbstractInstruction *anInstruction14;
+ AbstractInstruction *anInstruction15;
AbstractInstruction *anInstruction2;
AbstractInstruction *anInstruction3;
AbstractInstruction *anInstruction4;
+ AbstractInstruction *anInstruction5;
+ AbstractInstruction *anInstruction6;
+ AbstractInstruction *anInstruction7;
+ AbstractInstruction *anInstruction8;
+ AbstractInstruction *anInstruction9;
sqInt index;
sqInt offset;
+ sqInt offset1;
+ sqInt quickConstant;
+ sqInt quickConstant1;
assert((numRegArgs()) <= 2);
assert(numArgs >= 1);
@@ -24987,35 +25002,47 @@
return;
}
if ((2 + 1) == numArgs) {
- /* begin PopR: */
- genoperand(PopR, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction = genoperandoperandoperand(MoveMwrR, 0, SPReg, Arg1Reg);
+ if (usesOutOfLineLiteral(anInstruction)) {
+ (anInstruction->dependent = locateLiteral(0));
+ }
+ /* begin MoveMw:r:R: */
+ anInstruction1 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, Arg0Reg);
+ if (usesOutOfLineLiteral(anInstruction1)) {
+ (anInstruction1->dependent = locateLiteral(BytesPerWord));
+ }
- /* begin PopR: */
- genoperand(PopR, Arg0Reg);
+ /* begin AddCq:R: */
+ quickConstant = (numArgs + 1) * BytesPerWord;
+ /* begin gen:quickConstant:operand: */
+ anInstruction3 = genoperandoperand(AddCqR, quickConstant, SPReg);
+ if (usesOutOfLineLiteral(anInstruction3)) {
+ (anInstruction3->dependent = locateLiteral(quickConstant));
+ }
return;
}
for (index = (numArgs - 2); index >= 0; index += -1) {
/* begin MoveMw:r:R: */
- anInstruction2 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
- if (usesOutOfLineLiteral(anInstruction2)) {
- (anInstruction2->dependent = locateLiteral(index * BytesPerWord));
+ anInstruction10 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
+ if (usesOutOfLineLiteral(anInstruction10)) {
+ (anInstruction10->dependent = locateLiteral(index * BytesPerWord));
}
/* begin MoveR:Mw:r: */
offset = (index + 1) * BytesPerWord;
/* begin gen:operand:quickConstant:operand: */
- anInstruction3 = genoperandoperandoperand(MoveRMwr, TempReg, offset, SPReg);
- if (usesOutOfLineLiteral(anInstruction3)) {
- (anInstruction3->dependent = locateLiteral(offset));
+ anInstruction11 = genoperandoperandoperand(MoveRMwr, TempReg, offset, SPReg);
+ if (usesOutOfLineLiteral(anInstruction11)) {
+ (anInstruction11->dependent = locateLiteral(offset));
}
}
- /* begin PopR: */
- genoperand(PopR, TempReg);
- /* begin MoveR:Mw:r: */
- anInstruction4 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
- if (usesOutOfLineLiteral(anInstruction4)) {
- (anInstruction4->dependent = locateLiteral(0));
+ /* begin AddCq:R: */
+ anInstruction12 = genoperandoperand(AddCqR, BytesPerWord, SPReg);
+ if (usesOutOfLineLiteral(anInstruction12)) {
+ (anInstruction12->dependent = locateLiteral(BytesPerWord));
}
+
}
Modified: branches/Cog/nsspursrc/vm/cogitIA32.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitIA32.c 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/nsspursrc/vm/cogitIA32.c 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -22238,10 +22238,11 @@
}
-/* e.g. Receiver Receiver
- Selector/Arg0 => Arg1
- Arg1 Arg2
- Arg2 sp-> retpc
+/* e.g. Receiver Receiver or Receiver Receiver (RISC)
+ Selector/Arg0 => Arg1 Selector/Arg0 => Arg1
+ Arg1 Arg2 Arg1 Arg2
+ Arg2 Arg3 Arg2 sp-> Arg3
+ Arg3 sp-> retpc sp-> Arg3
sp-> retpc */
/* Generate code to adjust the possibly stacked arguments immediately
before jumping to a method looked up by a perform primitive. */
@@ -22252,10 +22253,24 @@
{
AbstractInstruction *anInstruction;
AbstractInstruction *anInstruction1;
+ AbstractInstruction *anInstruction10;
+ AbstractInstruction *anInstruction11;
+ AbstractInstruction *anInstruction12;
+ AbstractInstruction *anInstruction13;
+ AbstractInstruction *anInstruction14;
+ AbstractInstruction *anInstruction15;
AbstractInstruction *anInstruction2;
AbstractInstruction *anInstruction3;
AbstractInstruction *anInstruction4;
+ AbstractInstruction *anInstruction5;
+ AbstractInstruction *anInstruction6;
+ AbstractInstruction *anInstruction7;
+ AbstractInstruction *anInstruction8;
+ AbstractInstruction *anInstruction9;
sqInt index;
+ sqInt literal;
+ sqInt quickConstant;
+ sqInt quickConstant1;
assert((numRegArgs()) <= 2);
assert(numArgs >= 1);
@@ -22267,28 +22282,33 @@
return;
}
if ((2 + 1) == numArgs) {
- /* begin PopR: */
- genoperand(PopR, TempReg);
- /* begin PopR: */
- genoperand(PopR, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction7 = genoperandoperandoperand(MoveMwrR, 0, SPReg, TempReg);
+ /* begin MoveMw:r:R: */
+ anInstruction4 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction5 = genoperandoperandoperand(MoveMwrR, BytesPerWord * 2, SPReg, Arg0Reg);
- /* begin MoveMw:r:R: */
- anInstruction = genoperandoperandoperand(MoveMwrR, 0, SPReg, Arg0Reg);
+ /* begin AddCq:R: */
+ quickConstant1 = (numArgs + 1) * BytesPerWord;
+ /* begin gen:quickConstant:operand: */
+ anInstruction8 = genoperandoperand(AddCqR, quickConstant1, SPReg);
/* begin MoveR:Mw:r: */
- anInstruction1 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ anInstruction9 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
return;
}
- for (index = (numArgs - 1); index >= 0; index += -1) {
+ for (index = (numArgs - 1); index >= 1; index += -1) {
/* begin MoveMw:r:R: */
- anInstruction2 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
+ anInstruction13 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction3 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
+ anInstruction14 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
}
/* begin PopR: */
genoperand(PopR, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction4 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ anInstruction15 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+
}
Modified: branches/Cog/nsspursrc/vm/cogitMIPSEL.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitMIPSEL.c 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/nsspursrc/vm/cogitMIPSEL.c 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -5738,12 +5738,12 @@
generateMapAtstart(sqInt addressOrNull, sqInt startAddress)
{
unsigned char annotation;
- usqInt delta;
+ sqInt delta;
sqInt i;
AbstractInstruction *instruction;
sqInt length;
- usqInt location;
- usqInt mapEntry;
+ sqInt location;
+ sqInt mapEntry;
sqInt maxDelta;
usqInt mcpc;
@@ -22456,10 +22456,11 @@
}
-/* e.g. Receiver Receiver
- Selector/Arg0 => Arg1
- Arg1 Arg2
- Arg2 sp-> retpc
+/* e.g. Receiver Receiver or Receiver Receiver (RISC)
+ Selector/Arg0 => Arg1 Selector/Arg0 => Arg1
+ Arg1 Arg2 Arg1 Arg2
+ Arg2 Arg3 Arg2 sp-> Arg3
+ Arg3 sp-> retpc sp-> Arg3
sp-> retpc */
/* Generate code to adjust the possibly stacked arguments immediately
before jumping to a method looked up by a perform primitive. */
@@ -22470,10 +22471,24 @@
{
AbstractInstruction *anInstruction;
AbstractInstruction *anInstruction1;
+ AbstractInstruction *anInstruction10;
+ AbstractInstruction *anInstruction11;
+ AbstractInstruction *anInstruction12;
+ AbstractInstruction *anInstruction13;
+ AbstractInstruction *anInstruction14;
+ AbstractInstruction *anInstruction15;
AbstractInstruction *anInstruction2;
AbstractInstruction *anInstruction3;
AbstractInstruction *anInstruction4;
+ AbstractInstruction *anInstruction5;
+ AbstractInstruction *anInstruction6;
+ AbstractInstruction *anInstruction7;
+ AbstractInstruction *anInstruction8;
+ AbstractInstruction *anInstruction9;
sqInt index;
+ sqInt literal;
+ sqInt quickConstant;
+ sqInt quickConstant1;
assert((numRegArgs()) <= 2);
assert(numArgs >= 1);
@@ -22485,24 +22500,28 @@
return;
}
if ((2 + 1) == numArgs) {
- /* begin PopR: */
- genoperand(PopR, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction = genoperandoperandoperand(MoveMwrR, 0, SPReg, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction1 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, Arg0Reg);
- /* begin PopR: */
- genoperand(PopR, Arg0Reg);
+ /* begin AddCq:R: */
+ quickConstant = (numArgs + 1) * BytesPerWord;
+ /* begin gen:quickConstant:operand: */
+ anInstruction3 = genoperandoperand(AddCqR, quickConstant, SPReg);
return;
}
for (index = (numArgs - 2); index >= 0; index += -1) {
/* begin MoveMw:r:R: */
- anInstruction2 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
+ anInstruction10 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction3 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
+ anInstruction11 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
}
- /* begin PopR: */
- genoperand(PopR, TempReg);
- /* begin MoveR:Mw:r: */
- anInstruction4 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ /* begin AddCq:R: */
+ literal = BytesPerWord;
+ anInstruction12 = genoperandoperand(AddCqR, BytesPerWord, SPReg);
+
}
Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
- Tue Feb 23 11:46:01 PST 2016
+ Tue Feb 23 17:00:43 PST 2016
Modified: branches/Cog/spur64src/vm/cogit.h
===================================================================
--- branches/Cog/spur64src/vm/cogit.h 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/spur64src/vm/cogit.h 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
Modified: branches/Cog/spur64src/vm/cogitX64.c
===================================================================
--- branches/Cog/spur64src/vm/cogitX64.c 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/spur64src/vm/cogitX64.c 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -21323,10 +21323,11 @@
}
-/* e.g. Receiver Receiver
- Selector/Arg0 => Arg1
- Arg1 Arg2
- Arg2 sp-> retpc
+/* e.g. Receiver Receiver or Receiver Receiver (RISC)
+ Selector/Arg0 => Arg1 Selector/Arg0 => Arg1
+ Arg1 Arg2 Arg1 Arg2
+ Arg2 Arg3 Arg2 sp-> Arg3
+ Arg3 sp-> retpc sp-> Arg3
sp-> retpc */
/* Generate code to adjust the possibly stacked arguments immediately
before jumping to a method looked up by a perform primitive. */
@@ -21337,10 +21338,24 @@
{
AbstractInstruction *anInstruction;
AbstractInstruction *anInstruction1;
+ AbstractInstruction *anInstruction10;
+ AbstractInstruction *anInstruction11;
+ AbstractInstruction *anInstruction12;
+ AbstractInstruction *anInstruction13;
+ AbstractInstruction *anInstruction14;
+ AbstractInstruction *anInstruction15;
AbstractInstruction *anInstruction2;
AbstractInstruction *anInstruction3;
AbstractInstruction *anInstruction4;
+ AbstractInstruction *anInstruction5;
+ AbstractInstruction *anInstruction6;
+ AbstractInstruction *anInstruction7;
+ AbstractInstruction *anInstruction8;
+ AbstractInstruction *anInstruction9;
sqInt index;
+ sqInt literal;
+ sqInt quickConstant;
+ sqInt quickConstant1;
assert((numRegArgs()) <= 2);
assert(numArgs >= 1);
@@ -21352,28 +21367,33 @@
return;
}
if ((2 + 1) == numArgs) {
- /* begin PopR: */
- genoperand(PopR, TempReg);
- /* begin PopR: */
- genoperand(PopR, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction7 = genoperandoperandoperand(MoveMwrR, 0, SPReg, TempReg);
+ /* begin MoveMw:r:R: */
+ anInstruction4 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction5 = genoperandoperandoperand(MoveMwrR, BytesPerWord * 2, SPReg, Arg0Reg);
- /* begin MoveMw:r:R: */
- anInstruction = genoperandoperandoperand(MoveMwrR, 0, SPReg, Arg0Reg);
+ /* begin AddCq:R: */
+ quickConstant1 = (numArgs + 1) * BytesPerWord;
+ /* begin gen:quickConstant:operand: */
+ anInstruction8 = genoperandoperand(AddCqR, quickConstant1, SPReg);
/* begin MoveR:Mw:r: */
- anInstruction1 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ anInstruction9 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
return;
}
- for (index = (numArgs - 1); index >= 0; index += -1) {
+ for (index = (numArgs - 1); index >= 1; index += -1) {
/* begin MoveMw:r:R: */
- anInstruction2 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
+ anInstruction13 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction3 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
+ anInstruction14 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
}
/* begin PopR: */
genoperand(PopR, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction4 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ anInstruction15 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+
}
Modified: branches/Cog/spursistasrc/vm/cogit.h
===================================================================
--- branches/Cog/spursistasrc/vm/cogit.h 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/spursistasrc/vm/cogit.h 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
Modified: branches/Cog/spursistasrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/spursistasrc/vm/cogitARMv5.c 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/spursistasrc/vm/cogitARMv5.c 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
from
- SistaStackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ SistaStackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
-static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e " __DATE__ ;
+static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -26068,10 +26068,11 @@
}
-/* e.g. Receiver Receiver
- Selector/Arg0 => Arg1
- Arg1 Arg2
- Arg2 sp-> retpc
+/* e.g. Receiver Receiver or Receiver Receiver (RISC)
+ Selector/Arg0 => Arg1 Selector/Arg0 => Arg1
+ Arg1 Arg2 Arg1 Arg2
+ Arg2 Arg3 Arg2 sp-> Arg3
+ Arg3 sp-> retpc sp-> Arg3
sp-> retpc */
/* Generate code to adjust the possibly stacked arguments immediately
before jumping to a method looked up by a perform primitive. */
@@ -26082,11 +26083,25 @@
{
AbstractInstruction *anInstruction;
AbstractInstruction *anInstruction1;
+ AbstractInstruction *anInstruction10;
+ AbstractInstruction *anInstruction11;
+ AbstractInstruction *anInstruction12;
+ AbstractInstruction *anInstruction13;
+ AbstractInstruction *anInstruction14;
+ AbstractInstruction *anInstruction15;
AbstractInstruction *anInstruction2;
AbstractInstruction *anInstruction3;
AbstractInstruction *anInstruction4;
+ AbstractInstruction *anInstruction5;
+ AbstractInstruction *anInstruction6;
+ AbstractInstruction *anInstruction7;
+ AbstractInstruction *anInstruction8;
+ AbstractInstruction *anInstruction9;
sqInt index;
sqInt offset;
+ sqInt offset1;
+ sqInt quickConstant;
+ sqInt quickConstant1;
assert((numRegArgs()) <= 2);
assert(numArgs >= 1);
@@ -26098,35 +26113,47 @@
return;
}
if ((2 + 1) == numArgs) {
- /* begin PopR: */
- genoperand(PopR, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction = genoperandoperandoperand(MoveMwrR, 0, SPReg, Arg1Reg);
+ if (usesOutOfLineLiteral(anInstruction)) {
+ (anInstruction->dependent = locateLiteral(0));
+ }
+ /* begin MoveMw:r:R: */
+ anInstruction1 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, Arg0Reg);
+ if (usesOutOfLineLiteral(anInstruction1)) {
+ (anInstruction1->dependent = locateLiteral(BytesPerWord));
+ }
- /* begin PopR: */
- genoperand(PopR, Arg0Reg);
+ /* begin AddCq:R: */
+ quickConstant = (numArgs + 1) * BytesPerWord;
+ /* begin gen:quickConstant:operand: */
+ anInstruction3 = genoperandoperand(AddCqR, quickConstant, SPReg);
+ if (usesOutOfLineLiteral(anInstruction3)) {
+ (anInstruction3->dependent = locateLiteral(quickConstant));
+ }
return;
}
for (index = (numArgs - 2); index >= 0; index += -1) {
/* begin MoveMw:r:R: */
- anInstruction2 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
- if (usesOutOfLineLiteral(anInstruction2)) {
- (anInstruction2->dependent = locateLiteral(index * BytesPerWord));
+ anInstruction10 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
+ if (usesOutOfLineLiteral(anInstruction10)) {
+ (anInstruction10->dependent = locateLiteral(index * BytesPerWord));
}
/* begin MoveR:Mw:r: */
offset = (index + 1) * BytesPerWord;
/* begin gen:operand:quickConstant:operand: */
- anInstruction3 = genoperandoperandoperand(MoveRMwr, TempReg, offset, SPReg);
- if (usesOutOfLineLiteral(anInstruction3)) {
- (anInstruction3->dependent = locateLiteral(offset));
+ anInstruction11 = genoperandoperandoperand(MoveRMwr, TempReg, offset, SPReg);
+ if (usesOutOfLineLiteral(anInstruction11)) {
+ (anInstruction11->dependent = locateLiteral(offset));
}
}
- /* begin PopR: */
- genoperand(PopR, TempReg);
- /* begin MoveR:Mw:r: */
- anInstruction4 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
- if (usesOutOfLineLiteral(anInstruction4)) {
- (anInstruction4->dependent = locateLiteral(0));
+ /* begin AddCq:R: */
+ anInstruction12 = genoperandoperand(AddCqR, BytesPerWord, SPReg);
+ if (usesOutOfLineLiteral(anInstruction12)) {
+ (anInstruction12->dependent = locateLiteral(BytesPerWord));
}
+
}
Modified: branches/Cog/spursistasrc/vm/cogitIA32.c
===================================================================
--- branches/Cog/spursistasrc/vm/cogitIA32.c 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/spursistasrc/vm/cogitIA32.c 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
from
- SistaStackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ SistaStackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
-static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e " __DATE__ ;
+static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -23394,10 +23394,11 @@
}
-/* e.g. Receiver Receiver
- Selector/Arg0 => Arg1
- Arg1 Arg2
- Arg2 sp-> retpc
+/* e.g. Receiver Receiver or Receiver Receiver (RISC)
+ Selector/Arg0 => Arg1 Selector/Arg0 => Arg1
+ Arg1 Arg2 Arg1 Arg2
+ Arg2 Arg3 Arg2 sp-> Arg3
+ Arg3 sp-> retpc sp-> Arg3
sp-> retpc */
/* Generate code to adjust the possibly stacked arguments immediately
before jumping to a method looked up by a perform primitive. */
@@ -23408,10 +23409,24 @@
{
AbstractInstruction *anInstruction;
AbstractInstruction *anInstruction1;
+ AbstractInstruction *anInstruction10;
+ AbstractInstruction *anInstruction11;
+ AbstractInstruction *anInstruction12;
+ AbstractInstruction *anInstruction13;
+ AbstractInstruction *anInstruction14;
+ AbstractInstruction *anInstruction15;
AbstractInstruction *anInstruction2;
AbstractInstruction *anInstruction3;
AbstractInstruction *anInstruction4;
+ AbstractInstruction *anInstruction5;
+ AbstractInstruction *anInstruction6;
+ AbstractInstruction *anInstruction7;
+ AbstractInstruction *anInstruction8;
+ AbstractInstruction *anInstruction9;
sqInt index;
+ sqInt literal;
+ sqInt quickConstant;
+ sqInt quickConstant1;
assert((numRegArgs()) <= 2);
assert(numArgs >= 1);
@@ -23423,28 +23438,33 @@
return;
}
if ((2 + 1) == numArgs) {
- /* begin PopR: */
- genoperand(PopR, TempReg);
- /* begin PopR: */
- genoperand(PopR, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction7 = genoperandoperandoperand(MoveMwrR, 0, SPReg, TempReg);
+ /* begin MoveMw:r:R: */
+ anInstruction4 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction5 = genoperandoperandoperand(MoveMwrR, BytesPerWord * 2, SPReg, Arg0Reg);
- /* begin MoveMw:r:R: */
- anInstruction = genoperandoperandoperand(MoveMwrR, 0, SPReg, Arg0Reg);
+ /* begin AddCq:R: */
+ quickConstant1 = (numArgs + 1) * BytesPerWord;
+ /* begin gen:quickConstant:operand: */
+ anInstruction8 = genoperandoperand(AddCqR, quickConstant1, SPReg);
/* begin MoveR:Mw:r: */
- anInstruction1 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ anInstruction9 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
return;
}
- for (index = (numArgs - 1); index >= 0; index += -1) {
+ for (index = (numArgs - 1); index >= 1; index += -1) {
/* begin MoveMw:r:R: */
- anInstruction2 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
+ anInstruction13 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction3 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
+ anInstruction14 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
}
/* begin PopR: */
genoperand(PopR, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction4 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ anInstruction15 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+
}
Modified: branches/Cog/spursistasrc/vm/cogitMIPSEL.c
===================================================================
--- branches/Cog/spursistasrc/vm/cogitMIPSEL.c 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/spursistasrc/vm/cogitMIPSEL.c 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
from
- SistaStackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ SistaStackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
-static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e " __DATE__ ;
+static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -23611,10 +23611,11 @@
}
-/* e.g. Receiver Receiver
- Selector/Arg0 => Arg1
- Arg1 Arg2
- Arg2 sp-> retpc
+/* e.g. Receiver Receiver or Receiver Receiver (RISC)
+ Selector/Arg0 => Arg1 Selector/Arg0 => Arg1
+ Arg1 Arg2 Arg1 Arg2
+ Arg2 Arg3 Arg2 sp-> Arg3
+ Arg3 sp-> retpc sp-> Arg3
sp-> retpc */
/* Generate code to adjust the possibly stacked arguments immediately
before jumping to a method looked up by a perform primitive. */
@@ -23625,10 +23626,24 @@
{
AbstractInstruction *anInstruction;
AbstractInstruction *anInstruction1;
+ AbstractInstruction *anInstruction10;
+ AbstractInstruction *anInstruction11;
+ AbstractInstruction *anInstruction12;
+ AbstractInstruction *anInstruction13;
+ AbstractInstruction *anInstruction14;
+ AbstractInstruction *anInstruction15;
AbstractInstruction *anInstruction2;
AbstractInstruction *anInstruction3;
AbstractInstruction *anInstruction4;
+ AbstractInstruction *anInstruction5;
+ AbstractInstruction *anInstruction6;
+ AbstractInstruction *anInstruction7;
+ AbstractInstruction *anInstruction8;
+ AbstractInstruction *anInstruction9;
sqInt index;
+ sqInt literal;
+ sqInt quickConstant;
+ sqInt quickConstant1;
assert((numRegArgs()) <= 2);
assert(numArgs >= 1);
@@ -23640,24 +23655,28 @@
return;
}
if ((2 + 1) == numArgs) {
- /* begin PopR: */
- genoperand(PopR, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction = genoperandoperandoperand(MoveMwrR, 0, SPReg, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction1 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, Arg0Reg);
- /* begin PopR: */
- genoperand(PopR, Arg0Reg);
+ /* begin AddCq:R: */
+ quickConstant = (numArgs + 1) * BytesPerWord;
+ /* begin gen:quickConstant:operand: */
+ anInstruction3 = genoperandoperand(AddCqR, quickConstant, SPReg);
return;
}
for (index = (numArgs - 2); index >= 0; index += -1) {
/* begin MoveMw:r:R: */
- anInstruction2 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
+ anInstruction10 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction3 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
+ anInstruction11 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
}
- /* begin PopR: */
- genoperand(PopR, TempReg);
- /* begin MoveR:Mw:r: */
- anInstruction4 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ /* begin AddCq:R: */
+ literal = BytesPerWord;
+ anInstruction12 = genoperandoperand(AddCqR, BytesPerWord, SPReg);
+
}
Modified: branches/Cog/spursrc/vm/cogit.h
===================================================================
--- branches/Cog/spursrc/vm/cogit.h 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/spursrc/vm/cogit.h 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
Modified: branches/Cog/spursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/spursrc/vm/cogitARMv5.c 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/spursrc/vm/cogitARMv5.c 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -22554,10 +22554,11 @@
}
-/* e.g. Receiver Receiver
- Selector/Arg0 => Arg1
- Arg1 Arg2
- Arg2 sp-> retpc
+/* e.g. Receiver Receiver or Receiver Receiver (RISC)
+ Selector/Arg0 => Arg1 Selector/Arg0 => Arg1
+ Arg1 Arg2 Arg1 Arg2
+ Arg2 Arg3 Arg2 sp-> Arg3
+ Arg3 sp-> retpc sp-> Arg3
sp-> retpc */
/* Generate code to adjust the possibly stacked arguments immediately
before jumping to a method looked up by a perform primitive. */
@@ -22568,11 +22569,25 @@
{
AbstractInstruction *anInstruction;
AbstractInstruction *anInstruction1;
+ AbstractInstruction *anInstruction10;
+ AbstractInstruction *anInstruction11;
+ AbstractInstruction *anInstruction12;
+ AbstractInstruction *anInstruction13;
+ AbstractInstruction *anInstruction14;
+ AbstractInstruction *anInstruction15;
AbstractInstruction *anInstruction2;
AbstractInstruction *anInstruction3;
AbstractInstruction *anInstruction4;
+ AbstractInstruction *anInstruction5;
+ AbstractInstruction *anInstruction6;
+ AbstractInstruction *anInstruction7;
+ AbstractInstruction *anInstruction8;
+ AbstractInstruction *anInstruction9;
sqInt index;
sqInt offset;
+ sqInt offset1;
+ sqInt quickConstant;
+ sqInt quickConstant1;
assert((numRegArgs()) <= 2);
assert(numArgs >= 1);
@@ -22584,35 +22599,47 @@
return;
}
if ((2 + 1) == numArgs) {
- /* begin PopR: */
- genoperand(PopR, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction = genoperandoperandoperand(MoveMwrR, 0, SPReg, Arg1Reg);
+ if (usesOutOfLineLiteral(anInstruction)) {
+ (anInstruction->dependent = locateLiteral(0));
+ }
+ /* begin MoveMw:r:R: */
+ anInstruction1 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, Arg0Reg);
+ if (usesOutOfLineLiteral(anInstruction1)) {
+ (anInstruction1->dependent = locateLiteral(BytesPerWord));
+ }
- /* begin PopR: */
- genoperand(PopR, Arg0Reg);
+ /* begin AddCq:R: */
+ quickConstant = (numArgs + 1) * BytesPerWord;
+ /* begin gen:quickConstant:operand: */
+ anInstruction3 = genoperandoperand(AddCqR, quickConstant, SPReg);
+ if (usesOutOfLineLiteral(anInstruction3)) {
+ (anInstruction3->dependent = locateLiteral(quickConstant));
+ }
return;
}
for (index = (numArgs - 2); index >= 0; index += -1) {
/* begin MoveMw:r:R: */
- anInstruction2 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
- if (usesOutOfLineLiteral(anInstruction2)) {
- (anInstruction2->dependent = locateLiteral(index * BytesPerWord));
+ anInstruction10 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
+ if (usesOutOfLineLiteral(anInstruction10)) {
+ (anInstruction10->dependent = locateLiteral(index * BytesPerWord));
}
/* begin MoveR:Mw:r: */
offset = (index + 1) * BytesPerWord;
/* begin gen:operand:quickConstant:operand: */
- anInstruction3 = genoperandoperandoperand(MoveRMwr, TempReg, offset, SPReg);
- if (usesOutOfLineLiteral(anInstruction3)) {
- (anInstruction3->dependent = locateLiteral(offset));
+ anInstruction11 = genoperandoperandoperand(MoveRMwr, TempReg, offset, SPReg);
+ if (usesOutOfLineLiteral(anInstruction11)) {
+ (anInstruction11->dependent = locateLiteral(offset));
}
}
- /* begin PopR: */
- genoperand(PopR, TempReg);
- /* begin MoveR:Mw:r: */
- anInstruction4 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
- if (usesOutOfLineLiteral(anInstruction4)) {
- (anInstruction4->dependent = locateLiteral(0));
+ /* begin AddCq:R: */
+ anInstruction12 = genoperandoperand(AddCqR, BytesPerWord, SPReg);
+ if (usesOutOfLineLiteral(anInstruction12)) {
+ (anInstruction12->dependent = locateLiteral(BytesPerWord));
}
+
}
Modified: branches/Cog/spursrc/vm/cogitIA32.c
===================================================================
--- branches/Cog/spursrc/vm/cogitIA32.c 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/spursrc/vm/cogitIA32.c 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -19960,10 +19960,11 @@
}
-/* e.g. Receiver Receiver
- Selector/Arg0 => Arg1
- Arg1 Arg2
- Arg2 sp-> retpc
+/* e.g. Receiver Receiver or Receiver Receiver (RISC)
+ Selector/Arg0 => Arg1 Selector/Arg0 => Arg1
+ Arg1 Arg2 Arg1 Arg2
+ Arg2 Arg3 Arg2 sp-> Arg3
+ Arg3 sp-> retpc sp-> Arg3
sp-> retpc */
/* Generate code to adjust the possibly stacked arguments immediately
before jumping to a method looked up by a perform primitive. */
@@ -19974,10 +19975,24 @@
{
AbstractInstruction *anInstruction;
AbstractInstruction *anInstruction1;
+ AbstractInstruction *anInstruction10;
+ AbstractInstruction *anInstruction11;
+ AbstractInstruction *anInstruction12;
+ AbstractInstruction *anInstruction13;
+ AbstractInstruction *anInstruction14;
+ AbstractInstruction *anInstruction15;
AbstractInstruction *anInstruction2;
AbstractInstruction *anInstruction3;
AbstractInstruction *anInstruction4;
+ AbstractInstruction *anInstruction5;
+ AbstractInstruction *anInstruction6;
+ AbstractInstruction *anInstruction7;
+ AbstractInstruction *anInstruction8;
+ AbstractInstruction *anInstruction9;
sqInt index;
+ sqInt literal;
+ sqInt quickConstant;
+ sqInt quickConstant1;
assert((numRegArgs()) <= 2);
assert(numArgs >= 1);
@@ -19989,28 +20004,33 @@
return;
}
if ((2 + 1) == numArgs) {
- /* begin PopR: */
- genoperand(PopR, TempReg);
- /* begin PopR: */
- genoperand(PopR, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction7 = genoperandoperandoperand(MoveMwrR, 0, SPReg, TempReg);
+ /* begin MoveMw:r:R: */
+ anInstruction4 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction5 = genoperandoperandoperand(MoveMwrR, BytesPerWord * 2, SPReg, Arg0Reg);
- /* begin MoveMw:r:R: */
- anInstruction = genoperandoperandoperand(MoveMwrR, 0, SPReg, Arg0Reg);
+ /* begin AddCq:R: */
+ quickConstant1 = (numArgs + 1) * BytesPerWord;
+ /* begin gen:quickConstant:operand: */
+ anInstruction8 = genoperandoperand(AddCqR, quickConstant1, SPReg);
/* begin MoveR:Mw:r: */
- anInstruction1 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ anInstruction9 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
return;
}
- for (index = (numArgs - 1); index >= 0; index += -1) {
+ for (index = (numArgs - 1); index >= 1; index += -1) {
/* begin MoveMw:r:R: */
- anInstruction2 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
+ anInstruction13 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction3 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
+ anInstruction14 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
}
/* begin PopR: */
genoperand(PopR, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction4 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ anInstruction15 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+
}
Modified: branches/Cog/spursrc/vm/cogitMIPSEL.c
===================================================================
--- branches/Cog/spursrc/vm/cogitMIPSEL.c 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/spursrc/vm/cogitMIPSEL.c 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -5280,12 +5280,12 @@
generateMapAtstart(sqInt addressOrNull, sqInt startAddress)
{
unsigned char annotation;
- usqInt delta;
+ sqInt delta;
sqInt i;
AbstractInstruction *instruction;
sqInt length;
- usqInt location;
- usqInt mapEntry;
+ sqInt location;
+ sqInt mapEntry;
sqInt maxDelta;
usqInt mcpc;
@@ -20168,10 +20168,11 @@
}
-/* e.g. Receiver Receiver
- Selector/Arg0 => Arg1
- Arg1 Arg2
- Arg2 sp-> retpc
+/* e.g. Receiver Receiver or Receiver Receiver (RISC)
+ Selector/Arg0 => Arg1 Selector/Arg0 => Arg1
+ Arg1 Arg2 Arg1 Arg2
+ Arg2 Arg3 Arg2 sp-> Arg3
+ Arg3 sp-> retpc sp-> Arg3
sp-> retpc */
/* Generate code to adjust the possibly stacked arguments immediately
before jumping to a method looked up by a perform primitive. */
@@ -20182,10 +20183,24 @@
{
AbstractInstruction *anInstruction;
AbstractInstruction *anInstruction1;
+ AbstractInstruction *anInstruction10;
+ AbstractInstruction *anInstruction11;
+ AbstractInstruction *anInstruction12;
+ AbstractInstruction *anInstruction13;
+ AbstractInstruction *anInstruction14;
+ AbstractInstruction *anInstruction15;
AbstractInstruction *anInstruction2;
AbstractInstruction *anInstruction3;
AbstractInstruction *anInstruction4;
+ AbstractInstruction *anInstruction5;
+ AbstractInstruction *anInstruction6;
+ AbstractInstruction *anInstruction7;
+ AbstractInstruction *anInstruction8;
+ AbstractInstruction *anInstruction9;
sqInt index;
+ sqInt literal;
+ sqInt quickConstant;
+ sqInt quickConstant1;
assert((numRegArgs()) <= 2);
assert(numArgs >= 1);
@@ -20197,24 +20212,28 @@
return;
}
if ((2 + 1) == numArgs) {
- /* begin PopR: */
- genoperand(PopR, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction = genoperandoperandoperand(MoveMwrR, 0, SPReg, Arg1Reg);
+ /* begin MoveMw:r:R: */
+ anInstruction1 = genoperandoperandoperand(MoveMwrR, BytesPerWord, SPReg, Arg0Reg);
- /* begin PopR: */
- genoperand(PopR, Arg0Reg);
+ /* begin AddCq:R: */
+ quickConstant = (numArgs + 1) * BytesPerWord;
+ /* begin gen:quickConstant:operand: */
+ anInstruction3 = genoperandoperand(AddCqR, quickConstant, SPReg);
return;
}
for (index = (numArgs - 2); index >= 0; index += -1) {
/* begin MoveMw:r:R: */
- anInstruction2 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
+ anInstruction10 = genoperandoperandoperand(MoveMwrR, index * BytesPerWord, SPReg, TempReg);
/* begin MoveR:Mw:r: */
- anInstruction3 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
+ anInstruction11 = genoperandoperandoperand(MoveRMwr, TempReg, (index + 1) * BytesPerWord, SPReg);
}
- /* begin PopR: */
- genoperand(PopR, TempReg);
- /* begin MoveR:Mw:r: */
- anInstruction4 = genoperandoperandoperand(MoveRMwr, TempReg, 0, SPReg);
+ /* begin AddCq:R: */
+ literal = BytesPerWord;
+ anInstruction12 = genoperandoperand(AddCqR, BytesPerWord, SPReg);
+
}
Modified: branches/Cog/src/vm/cogit.h
===================================================================
--- branches/Cog/src/vm/cogit.h 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/src/vm/cogit.h 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
Modified: branches/Cog/src/vm/cogitARMv5.c
===================================================================
--- branches/Cog/src/vm/cogitARMv5.c 2016-02-23 19:46:31 UTC (rev 3629)
+++ branches/Cog/src/vm/cogitARMv5.c 2016-02-24 01:02:35 UTC (rev 3630)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ CCodeGenerator VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1697 uuid: 03f07782-25a7-4178-8528-7f8638ca30ff
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1693 uuid: 609488bc-c34d-49c6-8040-676e1a9d9d0e " __DATE__ ;
@@ Diff output truncated at 50000 characters. @@