[Vm-dev] [commit][3336] CogVM source as per VMMaker.oscog-eem.1299

commits at squeakvm.org commits at squeakvm.org
Tue May 12 01:25:14 UTC 2015


Revision: 3336
Author:   eliot
Date:     2015-05-11 18:25:11 -0700 (Mon, 11 May 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1299

Clarify how to specify variadic primitives in the Cogit's primitive table
initializer (it had confused me enough to cause a regression).

Fix the regression in genPrmitiveClass.

Implement the stream primtiives using genFastPrimFail
which should speed up the stream prims noticeably.

Modified Paths:
--------------
    branches/Cog/nsspursrc/vm/cogit.h
    branches/Cog/nsspursrc/vm/cogitARMv5.c
    branches/Cog/nsspursrc/vm/cogitIA32.c
    branches/Cog/spursistasrc/vm/cogit.h
    branches/Cog/spursrc/vm/cogit.h
    branches/Cog/spursrc/vm/cogitARMv5.c
    branches/Cog/spursrc/vm/cogitIA32.c
    branches/Cog/src/vm/cogit.h
    branches/Cog/src/vm/cogitARMv5.c
    branches/Cog/src/vm/cogitIA32.c

Property Changed:
----------------
    branches/Cog/platforms/Cross/vm/sqSCCSVersion.h

Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h	2015-05-11 02:29:34 UTC (rev 3335)
+++ branches/Cog/nsspursrc/vm/cogit.h	2015-05-12 01:25:11 UTC (rev 3336)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1298 uuid: da9fd4c2-e7e4-48c1-bfb6-87139d690def
+	CCodeGenerator VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
  */
 
 

Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitARMv5.c	2015-05-11 02:29:34 UTC (rev 3335)
+++ branches/Cog/nsspursrc/vm/cogitARMv5.c	2015-05-12 01:25:11 UTC (rev 3336)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b
+	CCodeGenerator VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -12719,11 +12719,11 @@
 	{ genPrimitiveSize, 0, 0 },
 	{ genPrimitiveStringAt, 1, 0 },
 	{ genPrimitiveStringAtPut, 2, 0 },
+	{ genFastPrimFail, -1, 0 },
+	{ genFastPrimFail, -1, 0 },
+	{ genFastPrimFail, -1, 0 },
 	{ 0, -1, 0 },
 	{ 0, -1, 0 },
-	{ 0, -1, 0 },
-	{ 0, -1, 0 },
-	{ 0, -1, 0 },
 	{ genPrimitiveNew, -1, 0 },
 	{ genPrimitiveNewWithArg, -1, 0 },
 	{ 0, -1, 0 },
@@ -22493,19 +22493,23 @@
 		: compileFallbackToInterpreterPrimitive());
 }
 
+
+/*	Primitive class must be variadic for objectClass: */
+
 static sqInt
 genPrimitiveClass(void)
 {
     sqInt reg;
 
-	reg = ReceiverResultReg;
 	if (methodOrBlockNumArgs > 0) {
 		if (methodOrBlockNumArgs > 1) {
 			return compileFallbackToInterpreterPrimitive();
 		}
 		reg = Arg0Reg;
 	}
-
+	else {
+		reg = ReceiverResultReg;
+	}
 	if ((genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ReceiverResultReg, TempReg, methodOrBlockNumArgs == 0)) == BadRegisterSet) {
 		genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ClassReg, TempReg, methodOrBlockNumArgs == 0);
 		/* begin MoveR:R: */

Modified: branches/Cog/nsspursrc/vm/cogitIA32.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitIA32.c	2015-05-11 02:29:34 UTC (rev 3335)
+++ branches/Cog/nsspursrc/vm/cogitIA32.c	2015-05-12 01:25:11 UTC (rev 3336)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b
+	CCodeGenerator VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -11485,11 +11485,11 @@
 	{ genPrimitiveSize, 0, 0 },
 	{ genPrimitiveStringAt, 1, 0 },
 	{ genPrimitiveStringAtPut, 2, 0 },
+	{ genFastPrimFail, -1, 0 },
+	{ genFastPrimFail, -1, 0 },
+	{ genFastPrimFail, -1, 0 },
 	{ 0, -1, 0 },
 	{ 0, -1, 0 },
-	{ 0, -1, 0 },
-	{ 0, -1, 0 },
-	{ 0, -1, 0 },
 	{ genPrimitiveNew, -1, 0 },
 	{ genPrimitiveNewWithArg, -1, 0 },
 	{ 0, -1, 0 },
@@ -21248,19 +21248,23 @@
 		: compileFallbackToInterpreterPrimitive());
 }
 
+
+/*	Primitive class must be variadic for objectClass: */
+
 static sqInt
 genPrimitiveClass(void)
 {
     sqInt reg;
 
-	reg = ReceiverResultReg;
 	if (methodOrBlockNumArgs > 0) {
 		if (methodOrBlockNumArgs > 1) {
 			return compileFallbackToInterpreterPrimitive();
 		}
 		reg = Arg0Reg;
 	}
-
+	else {
+		reg = ReceiverResultReg;
+	}
 	if ((genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ReceiverResultReg, TempReg, methodOrBlockNumArgs == 0)) == BadRegisterSet) {
 		genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ClassReg, TempReg, methodOrBlockNumArgs == 0);
 		/* begin MoveR:R: */


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Sun May 10 17:44:12 PDT 2015
   + Mon May 11 18:24:24 PDT 2015

Modified: branches/Cog/spursistasrc/vm/cogit.h
===================================================================
--- branches/Cog/spursistasrc/vm/cogit.h	2015-05-11 02:29:34 UTC (rev 3335)
+++ branches/Cog/spursistasrc/vm/cogit.h	2015-05-12 01:25:11 UTC (rev 3336)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1298 uuid: da9fd4c2-e7e4-48c1-bfb6-87139d690def
+	CCodeGenerator VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
  */
 
 

Modified: branches/Cog/spursrc/vm/cogit.h
===================================================================
--- branches/Cog/spursrc/vm/cogit.h	2015-05-11 02:29:34 UTC (rev 3335)
+++ branches/Cog/spursrc/vm/cogit.h	2015-05-12 01:25:11 UTC (rev 3336)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1298 uuid: da9fd4c2-e7e4-48c1-bfb6-87139d690def
+	CCodeGenerator VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
  */
 
 

Modified: branches/Cog/spursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/spursrc/vm/cogitARMv5.c	2015-05-11 02:29:34 UTC (rev 3335)
+++ branches/Cog/spursrc/vm/cogitARMv5.c	2015-05-12 01:25:11 UTC (rev 3336)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b
+	CCodeGenerator VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -12089,11 +12089,11 @@
 	{ genPrimitiveSize, 0, 0 },
 	{ genPrimitiveStringAt, 1, 0 },
 	{ genPrimitiveStringAtPut, 2, 0 },
+	{ genFastPrimFail, -1, 0 },
+	{ genFastPrimFail, -1, 0 },
+	{ genFastPrimFail, -1, 0 },
 	{ 0, -1, 0 },
 	{ 0, -1, 0 },
-	{ 0, -1, 0 },
-	{ 0, -1, 0 },
-	{ 0, -1, 0 },
 	{ genPrimitiveNew, 0, 0 },
 	{ genPrimitiveNewWithArg, 1, 0 },
 	{ 0, -1, 0 },
@@ -20354,16 +20354,25 @@
 		: compileFallbackToInterpreterPrimitive());
 }
 
+
+/*	Primitive class must be variadic for objectClass: */
+
 static sqInt
 genPrimitiveClass(void)
 {
     sqInt reg;
 
-	reg = ReceiverResultReg;
-	assert(methodOrBlockNumArgs == 0);
-
-	if ((genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ReceiverResultReg, TempReg, 1)) == BadRegisterSet) {
-		genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ClassReg, TempReg, 1);
+	if (methodOrBlockNumArgs > 0) {
+		if (methodOrBlockNumArgs > 1) {
+			return compileFallbackToInterpreterPrimitive();
+		}
+		reg = Arg0Reg;
+	}
+	else {
+		reg = ReceiverResultReg;
+	}
+	if ((genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ReceiverResultReg, TempReg, methodOrBlockNumArgs == 0)) == BadRegisterSet) {
+		genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ClassReg, TempReg, methodOrBlockNumArgs == 0);
 		/* begin MoveR:R: */
 		genoperandoperand(MoveRR, ClassReg, ReceiverResultReg);
 	}

Modified: branches/Cog/spursrc/vm/cogitIA32.c
===================================================================
--- branches/Cog/spursrc/vm/cogitIA32.c	2015-05-11 02:29:34 UTC (rev 3335)
+++ branches/Cog/spursrc/vm/cogitIA32.c	2015-05-12 01:25:11 UTC (rev 3336)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b
+	CCodeGenerator VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -10844,11 +10844,11 @@
 	{ genPrimitiveSize, 0, 0 },
 	{ genPrimitiveStringAt, 1, 0 },
 	{ genPrimitiveStringAtPut, 2, 0 },
+	{ genFastPrimFail, -1, 0 },
+	{ genFastPrimFail, -1, 0 },
+	{ genFastPrimFail, -1, 0 },
 	{ 0, -1, 0 },
 	{ 0, -1, 0 },
-	{ 0, -1, 0 },
-	{ 0, -1, 0 },
-	{ 0, -1, 0 },
 	{ genPrimitiveNew, 0, 0 },
 	{ genPrimitiveNewWithArg, 1, 0 },
 	{ 0, -1, 0 },
@@ -19098,16 +19098,25 @@
 		: compileFallbackToInterpreterPrimitive());
 }
 
+
+/*	Primitive class must be variadic for objectClass: */
+
 static sqInt
 genPrimitiveClass(void)
 {
     sqInt reg;
 
-	reg = ReceiverResultReg;
-	assert(methodOrBlockNumArgs == 0);
-
-	if ((genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ReceiverResultReg, TempReg, 1)) == BadRegisterSet) {
-		genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ClassReg, TempReg, 1);
+	if (methodOrBlockNumArgs > 0) {
+		if (methodOrBlockNumArgs > 1) {
+			return compileFallbackToInterpreterPrimitive();
+		}
+		reg = Arg0Reg;
+	}
+	else {
+		reg = ReceiverResultReg;
+	}
+	if ((genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ReceiverResultReg, TempReg, methodOrBlockNumArgs == 0)) == BadRegisterSet) {
+		genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ClassReg, TempReg, methodOrBlockNumArgs == 0);
 		/* begin MoveR:R: */
 		genoperandoperand(MoveRR, ClassReg, ReceiverResultReg);
 	}

Modified: branches/Cog/src/vm/cogit.h
===================================================================
--- branches/Cog/src/vm/cogit.h	2015-05-11 02:29:34 UTC (rev 3335)
+++ branches/Cog/src/vm/cogit.h	2015-05-12 01:25:11 UTC (rev 3336)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1298 uuid: da9fd4c2-e7e4-48c1-bfb6-87139d690def
+	CCodeGenerator VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
  */
 
 

Modified: branches/Cog/src/vm/cogitARMv5.c
===================================================================
--- branches/Cog/src/vm/cogitARMv5.c	2015-05-11 02:29:34 UTC (rev 3335)
+++ branches/Cog/src/vm/cogitARMv5.c	2015-05-12 01:25:11 UTC (rev 3336)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b
+	CCodeGenerator VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -12124,11 +12124,11 @@
 	{ genPrimitiveSize, 0, 0 },
 	{ genPrimitiveStringAt, 1, 0 },
 	{ genPrimitiveStringAtPut, 2, 0 },
+	{ genFastPrimFail, -1, 0 },
+	{ genFastPrimFail, -1, 0 },
+	{ genFastPrimFail, -1, 0 },
 	{ 0, -1, 0 },
 	{ 0, -1, 0 },
-	{ 0, -1, 0 },
-	{ 0, -1, 0 },
-	{ 0, -1, 0 },
 	{ genPrimitiveNew, 0, 0 },
 	{ genPrimitiveNewWithArg, 1, 0 },
 	{ 0, -1, 0 },
@@ -18469,16 +18469,25 @@
 		: compileFallbackToInterpreterPrimitive());
 }
 
+
+/*	Primitive class must be variadic for objectClass: */
+
 static sqInt
 genPrimitiveClass(void)
 {
     sqInt reg;
 
-	reg = ReceiverResultReg;
-	assert(methodOrBlockNumArgs == 0);
-
-	if ((genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ReceiverResultReg, TempReg, 1)) == BadRegisterSet) {
-		genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ClassReg, TempReg, 1);
+	if (methodOrBlockNumArgs > 0) {
+		if (methodOrBlockNumArgs > 1) {
+			return compileFallbackToInterpreterPrimitive();
+		}
+		reg = Arg0Reg;
+	}
+	else {
+		reg = ReceiverResultReg;
+	}
+	if ((genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ReceiverResultReg, TempReg, methodOrBlockNumArgs == 0)) == BadRegisterSet) {
+		genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ClassReg, TempReg, methodOrBlockNumArgs == 0);
 		/* begin MoveR:R: */
 		genoperandoperand(MoveRR, ClassReg, ReceiverResultReg);
 	}

Modified: branches/Cog/src/vm/cogitIA32.c
===================================================================
--- branches/Cog/src/vm/cogitIA32.c	2015-05-11 02:29:34 UTC (rev 3335)
+++ branches/Cog/src/vm/cogitIA32.c	2015-05-12 01:25:11 UTC (rev 3336)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b
+	CCodeGenerator VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1296 uuid: 264a71ca-50a1-4e84-96f4-dcb1c571859b " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1299 uuid: cbe293c4-e086-4dbf-bb1c-055f8c47b3ef " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -10878,11 +10878,11 @@
 	{ genPrimitiveSize, 0, 0 },
 	{ genPrimitiveStringAt, 1, 0 },
 	{ genPrimitiveStringAtPut, 2, 0 },
+	{ genFastPrimFail, -1, 0 },
+	{ genFastPrimFail, -1, 0 },
+	{ genFastPrimFail, -1, 0 },
 	{ 0, -1, 0 },
 	{ 0, -1, 0 },
-	{ 0, -1, 0 },
-	{ 0, -1, 0 },
-	{ 0, -1, 0 },
 	{ genPrimitiveNew, 0, 0 },
 	{ genPrimitiveNewWithArg, 1, 0 },
 	{ 0, -1, 0 },
@@ -17227,16 +17227,25 @@
 		: compileFallbackToInterpreterPrimitive());
 }
 
+
+/*	Primitive class must be variadic for objectClass: */
+
 static sqInt
 genPrimitiveClass(void)
 {
     sqInt reg;
 
-	reg = ReceiverResultReg;
-	assert(methodOrBlockNumArgs == 0);
-
-	if ((genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ReceiverResultReg, TempReg, 1)) == BadRegisterSet) {
-		genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ClassReg, TempReg, 1);
+	if (methodOrBlockNumArgs > 0) {
+		if (methodOrBlockNumArgs > 1) {
+			return compileFallbackToInterpreterPrimitive();
+		}
+		reg = Arg0Reg;
+	}
+	else {
+		reg = ReceiverResultReg;
+	}
+	if ((genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ReceiverResultReg, TempReg, methodOrBlockNumArgs == 0)) == BadRegisterSet) {
+		genGetClassObjectOfintoscratchReginstRegIsReceiver(reg, ClassReg, TempReg, methodOrBlockNumArgs == 0);
 		/* begin MoveR:R: */
 		genoperandoperand(MoveRR, ClassReg, ReceiverResultReg);
 	}



More information about the Vm-dev mailing list