[Vm-dev] [commit][3630] CogVM source as per VMMaker.oscog-eem.1697

commits at squeakvm.org commits at squeakvm.org
Wed Feb 24 01:02:37 UTC 2016


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


More information about the Vm-dev mailing list