[Vm-dev] [commit][3087] CogVM source as per VMMaker.oscog-eem.889

commits at squeakvm.org commits at squeakvm.org
Tue Sep 30 23:39:12 UTC 2014


Revision: 3087
Author:   eliot
Date:     2014-09-30 16:39:10 -0700 (Tue, 30 Sep 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.889

Fix the assert fail caused by a frameless method with an unaccessed temp.
Move the assert check to genPushTemporaryVariable:.

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

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

Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c	2014-09-30 17:23:24 UTC (rev 3086)
+++ branches/Cog/nscogsrc/vm/cogit.c	2014-09-30 23:39:10 UTC (rev 3087)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	StackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -12553,7 +12553,7 @@
 {
     sqInt *address;
     sqInt *address1;
-    usqInt cacheAddress;
+    sqInt cacheAddress;
     sqInt cacheTag;
     sqInt cacheTag1;
     sqInt cacheTagMarked;
@@ -12723,7 +12723,7 @@
 static sqInt
 markYoungObjectspcmethod(sqInt annotation, char *mcpc, sqInt cogMethod)
 {
-    usqInt cacheAddress;
+    sqInt cacheAddress;
     sqInt cacheTag;
     sqInt cacheTag1;
     sqInt class;
@@ -13814,7 +13814,7 @@
 static sqInt
 remapIfObjectRefpchasYoung(sqInt annotation, char *mcpc, sqInt hasYoungPtr)
 {
-    usqInt cacheAddress;
+    sqInt cacheAddress;
     sqInt cacheTag;
     sqInt cacheTag1;
     sqInt entryPoint;
@@ -14583,7 +14583,7 @@
 static void
 voidImplicitReceiverCacheAt(sqInt mcpc)
 {
-    usqInt cacheAddress;
+    sqInt cacheAddress;
 
 	assert(NumOopsPerIRC == 2);
 	cacheAddress = (((usqInt)mcpc)) + (jumpShortByteSize(backEnd));
@@ -20888,9 +20888,16 @@
 	return ssPushRegister(SendNumArgsReg);
 }
 
+
+/*	If a frameless method (not a block), only argument temps can be accessed.
+	This is assured by the use of needsFrameIfMod16GENumArgs: in pushTemp. */
+
 static sqInt
 genPushTemporaryVariable(sqInt index)
 {
+	assert(inBlock
+	 || (needsFrame
+	 || (index < methodOrBlockNumArgs)));
 	return ssPushDesc(simStack[index]);
 }
 
@@ -21829,7 +21836,7 @@
 }
 
 
-/*	The register receiver (he closure itself) and args are pushed by the
+/*	The register receiver (the closure itself) and args are pushed by the
 	closure value primitive(s)
 	and hence a frameless block has all arguments and copied values pushed to
 	the stack. However,
@@ -21849,7 +21856,6 @@
 	(optStatus.isReceiverResultRegLive = 1);
 	(optStatus.ssEntry = (&simSelf));
 	assert(methodOrBlockNumTemps >= methodOrBlockNumArgs);
-	assert((numRegArgs()) <= 2);
 	for (i = 0; i < methodOrBlockNumTemps; i += 1) {
 		desc = simStackAt(i);
 		(desc->type = SSBaseOffset);
@@ -21874,8 +21880,7 @@
 	(simSelf.registerr = ReceiverResultReg);
 	(optStatus.isReceiverResultRegLive = 1);
 	(optStatus.ssEntry = (&simSelf));
-	assert((methodOrBlockNumTemps == methodOrBlockNumArgs)
-	 || (isQuickPrimitiveIndex(primitiveIndex)));
+	assert(methodOrBlockNumTemps >= methodOrBlockNumArgs);
 	assert((numRegArgs()) <= 2);
 	if (((methodOrBlockNumArgs >= 1) && (methodOrBlockNumArgs <= 1))) {
 		desc = simStackAt(0);

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h	2014-09-30 17:23:24 UTC (rev 3086)
+++ branches/Cog/nscogsrc/vm/cogit.h	2014-09-30 23:39:10 UTC (rev 3087)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
  */
 
 

Modified: branches/Cog/nsspursrc/vm/cogit.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.c	2014-09-30 17:23:24 UTC (rev 3086)
+++ branches/Cog/nsspursrc/vm/cogit.c	2014-09-30 23:39:10 UTC (rev 3087)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	StackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -22693,9 +22693,16 @@
 	return ssPushRegister(SendNumArgsReg);
 }
 
+
+/*	If a frameless method (not a block), only argument temps can be accessed.
+	This is assured by the use of needsFrameIfMod16GENumArgs: in pushTemp. */
+
 static sqInt
 genPushTemporaryVariable(sqInt index)
 {
+	assert(inBlock
+	 || (needsFrame
+	 || (index < methodOrBlockNumArgs)));
 	return ssPushDesc(simStack[index]);
 }
 
@@ -23637,7 +23644,7 @@
 }
 
 
-/*	The register receiver (he closure itself) and args are pushed by the
+/*	The register receiver (the closure itself) and args are pushed by the
 	closure value primitive(s)
 	and hence a frameless block has all arguments and copied values pushed to
 	the stack. However,
@@ -23657,7 +23664,6 @@
 	(optStatus.isReceiverResultRegLive = 1);
 	(optStatus.ssEntry = (&simSelf));
 	assert(methodOrBlockNumTemps >= methodOrBlockNumArgs);
-	assert((numRegArgs()) <= 2);
 	for (i = 0; i < methodOrBlockNumTemps; i += 1) {
 		desc = simStackAt(i);
 		(desc->type = SSBaseOffset);
@@ -23682,8 +23688,7 @@
 	(simSelf.registerr = ReceiverResultReg);
 	(optStatus.isReceiverResultRegLive = 1);
 	(optStatus.ssEntry = (&simSelf));
-	assert((methodOrBlockNumTemps == methodOrBlockNumArgs)
-	 || (isQuickPrimitiveIndex(primitiveIndex)));
+	assert(methodOrBlockNumTemps >= methodOrBlockNumArgs);
 	assert((numRegArgs()) <= 2);
 	if (((methodOrBlockNumArgs >= 1) && (methodOrBlockNumArgs <= 2))) {
 		desc = simStackAt(0);

Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h	2014-09-30 17:23:24 UTC (rev 3086)
+++ branches/Cog/nsspursrc/vm/cogit.h	2014-09-30 23:39:10 UTC (rev 3087)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
  */
 
 


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Tue Sep 30 10:22:20 PDT 2014
   + Tue Sep 30 16:39:14 PDT 2014

Modified: branches/Cog/sistasrc/vm/cogit.c
===================================================================
--- branches/Cog/sistasrc/vm/cogit.c	2014-09-30 17:23:24 UTC (rev 3086)
+++ branches/Cog/sistasrc/vm/cogit.c	2014-09-30 23:39:10 UTC (rev 3087)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
    from
-	SistaStackToRegisterMappingCogit VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	SistaStackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
  */
-static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6 " __DATE__ ;
+static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -21669,9 +21669,16 @@
 	return ssPushRegister(SendNumArgsReg);
 }
 
+
+/*	If a frameless method (not a block), only argument temps can be accessed.
+	This is assured by the use of needsFrameIfMod16GENumArgs: in pushTemp. */
+
 static sqInt
 genPushTemporaryVariable(sqInt index)
 {
+	assert(inBlock
+	 || (needsFrame
+	 || (index < methodOrBlockNumArgs)));
 	return ssPushDesc(simStack[index]);
 }
 
@@ -22377,7 +22384,7 @@
 }
 
 
-/*	The register receiver (he closure itself) and args are pushed by the
+/*	The register receiver (the closure itself) and args are pushed by the
 	closure value primitive(s)
 	and hence a frameless block has all arguments and copied values pushed to
 	the stack. However,
@@ -22397,7 +22404,6 @@
 	(optStatus.isReceiverResultRegLive = 1);
 	(optStatus.ssEntry = (&simSelf));
 	assert(methodOrBlockNumTemps >= methodOrBlockNumArgs);
-	assert((numRegArgs()) <= 2);
 	for (i = 0; i < methodOrBlockNumTemps; i += 1) {
 		desc = simStackAt(i);
 		(desc->type = SSBaseOffset);
@@ -22422,8 +22428,7 @@
 	(simSelf.registerr = ReceiverResultReg);
 	(optStatus.isReceiverResultRegLive = 1);
 	(optStatus.ssEntry = (&simSelf));
-	assert((methodOrBlockNumTemps == methodOrBlockNumArgs)
-	 || (isQuickPrimitiveIndex(primitiveIndex)));
+	assert(methodOrBlockNumTemps >= methodOrBlockNumArgs);
 	assert((numRegArgs()) <= 2);
 	if (((methodOrBlockNumArgs >= 1) && (methodOrBlockNumArgs <= 1))) {
 		desc = simStackAt(0);

Modified: branches/Cog/sistasrc/vm/cogit.h
===================================================================
--- branches/Cog/sistasrc/vm/cogit.h	2014-09-30 17:23:24 UTC (rev 3086)
+++ branches/Cog/sistasrc/vm/cogit.h	2014-09-30 23:39:10 UTC (rev 3087)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
  */
 
 

Modified: branches/Cog/spursistasrc/vm/cogit.c
===================================================================
--- branches/Cog/spursistasrc/vm/cogit.c	2014-09-30 17:23:24 UTC (rev 3086)
+++ branches/Cog/spursistasrc/vm/cogit.c	2014-09-30 23:39:10 UTC (rev 3087)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
    from
-	SistaStackToRegisterMappingCogit VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	SistaStackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
  */
-static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6 " __DATE__ ;
+static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -23184,9 +23184,16 @@
 	return ssPushRegister(SendNumArgsReg);
 }
 
+
+/*	If a frameless method (not a block), only argument temps can be accessed.
+	This is assured by the use of needsFrameIfMod16GENumArgs: in pushTemp. */
+
 static sqInt
 genPushTemporaryVariable(sqInt index)
 {
+	assert(inBlock
+	 || (needsFrame
+	 || (index < methodOrBlockNumArgs)));
 	return ssPushDesc(simStack[index]);
 }
 
@@ -23895,7 +23902,7 @@
 }
 
 
-/*	The register receiver (he closure itself) and args are pushed by the
+/*	The register receiver (the closure itself) and args are pushed by the
 	closure value primitive(s)
 	and hence a frameless block has all arguments and copied values pushed to
 	the stack. However,
@@ -23915,7 +23922,6 @@
 	(optStatus.isReceiverResultRegLive = 1);
 	(optStatus.ssEntry = (&simSelf));
 	assert(methodOrBlockNumTemps >= methodOrBlockNumArgs);
-	assert((numRegArgs()) <= 2);
 	for (i = 0; i < methodOrBlockNumTemps; i += 1) {
 		desc = simStackAt(i);
 		(desc->type = SSBaseOffset);
@@ -23940,8 +23946,7 @@
 	(simSelf.registerr = ReceiverResultReg);
 	(optStatus.isReceiverResultRegLive = 1);
 	(optStatus.ssEntry = (&simSelf));
-	assert((methodOrBlockNumTemps == methodOrBlockNumArgs)
-	 || (isQuickPrimitiveIndex(primitiveIndex)));
+	assert(methodOrBlockNumTemps >= methodOrBlockNumArgs);
 	assert((numRegArgs()) <= 2);
 	if (((methodOrBlockNumArgs >= 1) && (methodOrBlockNumArgs <= 2))) {
 		desc = simStackAt(0);

Modified: branches/Cog/spursistasrc/vm/cogit.h
===================================================================
--- branches/Cog/spursistasrc/vm/cogit.h	2014-09-30 17:23:24 UTC (rev 3086)
+++ branches/Cog/spursistasrc/vm/cogit.h	2014-09-30 23:39:10 UTC (rev 3087)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
  */
 
 

Modified: branches/Cog/spursrc/vm/cogit.c
===================================================================
--- branches/Cog/spursrc/vm/cogit.c	2014-09-30 17:23:24 UTC (rev 3086)
+++ branches/Cog/spursrc/vm/cogit.c	2014-09-30 23:39:10 UTC (rev 3087)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	StackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -20745,9 +20745,16 @@
 	return ssPushRegister(SendNumArgsReg);
 }
 
+
+/*	If a frameless method (not a block), only argument temps can be accessed.
+	This is assured by the use of needsFrameIfMod16GENumArgs: in pushTemp. */
+
 static sqInt
 genPushTemporaryVariable(sqInt index)
 {
+	assert(inBlock
+	 || (needsFrame
+	 || (index < methodOrBlockNumArgs)));
 	return ssPushDesc(simStack[index]);
 }
 
@@ -21640,7 +21647,7 @@
 }
 
 
-/*	The register receiver (he closure itself) and args are pushed by the
+/*	The register receiver (the closure itself) and args are pushed by the
 	closure value primitive(s)
 	and hence a frameless block has all arguments and copied values pushed to
 	the stack. However,
@@ -21660,7 +21667,6 @@
 	(optStatus.isReceiverResultRegLive = 1);
 	(optStatus.ssEntry = (&simSelf));
 	assert(methodOrBlockNumTemps >= methodOrBlockNumArgs);
-	assert((numRegArgs()) <= 2);
 	for (i = 0; i < methodOrBlockNumTemps; i += 1) {
 		desc = simStackAt(i);
 		(desc->type = SSBaseOffset);
@@ -21685,8 +21691,7 @@
 	(simSelf.registerr = ReceiverResultReg);
 	(optStatus.isReceiverResultRegLive = 1);
 	(optStatus.ssEntry = (&simSelf));
-	assert((methodOrBlockNumTemps == methodOrBlockNumArgs)
-	 || (isQuickPrimitiveIndex(primitiveIndex)));
+	assert(methodOrBlockNumTemps >= methodOrBlockNumArgs);
 	assert((numRegArgs()) <= 2);
 	if (((methodOrBlockNumArgs >= 1) && (methodOrBlockNumArgs <= 2))) {
 		desc = simStackAt(0);

Modified: branches/Cog/spursrc/vm/cogit.h
===================================================================
--- branches/Cog/spursrc/vm/cogit.h	2014-09-30 17:23:24 UTC (rev 3086)
+++ branches/Cog/spursrc/vm/cogit.h	2014-09-30 23:39:10 UTC (rev 3087)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
  */
 
 

Modified: branches/Cog/src/vm/cogit.c
===================================================================
--- branches/Cog/src/vm/cogit.c	2014-09-30 17:23:24 UTC (rev 3086)
+++ branches/Cog/src/vm/cogit.c	2014-09-30 23:39:10 UTC (rev 3087)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	StackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -19329,9 +19329,16 @@
 	return ssPushRegister(SendNumArgsReg);
 }
 
+
+/*	If a frameless method (not a block), only argument temps can be accessed.
+	This is assured by the use of needsFrameIfMod16GENumArgs: in pushTemp. */
+
 static sqInt
 genPushTemporaryVariable(sqInt index)
 {
+	assert(inBlock
+	 || (needsFrame
+	 || (index < methodOrBlockNumArgs)));
 	return ssPushDesc(simStack[index]);
 }
 
@@ -20221,7 +20228,7 @@
 }
 
 
-/*	The register receiver (he closure itself) and args are pushed by the
+/*	The register receiver (the closure itself) and args are pushed by the
 	closure value primitive(s)
 	and hence a frameless block has all arguments and copied values pushed to
 	the stack. However,
@@ -20241,7 +20248,6 @@
 	(optStatus.isReceiverResultRegLive = 1);
 	(optStatus.ssEntry = (&simSelf));
 	assert(methodOrBlockNumTemps >= methodOrBlockNumArgs);
-	assert((numRegArgs()) <= 2);
 	for (i = 0; i < methodOrBlockNumTemps; i += 1) {
 		desc = simStackAt(i);
 		(desc->type = SSBaseOffset);
@@ -20266,8 +20272,7 @@
 	(simSelf.registerr = ReceiverResultReg);
 	(optStatus.isReceiverResultRegLive = 1);
 	(optStatus.ssEntry = (&simSelf));
-	assert((methodOrBlockNumTemps == methodOrBlockNumArgs)
-	 || (isQuickPrimitiveIndex(primitiveIndex)));
+	assert(methodOrBlockNumTemps >= methodOrBlockNumArgs);
 	assert((numRegArgs()) <= 2);
 	if (((methodOrBlockNumArgs >= 1) && (methodOrBlockNumArgs <= 1))) {
 		desc = simStackAt(0);

Modified: branches/Cog/src/vm/cogit.h
===================================================================
--- branches/Cog/src/vm/cogit.h	2014-09-30 17:23:24 UTC (rev 3086)
+++ branches/Cog/src/vm/cogit.h	2014-09-30 23:39:10 UTC (rev 3087)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.888 uuid: e58fb0f2-df49-4ac0-8e84-48499470b5f6
+	CCodeGenerator VMMaker.oscog-eem.889 uuid: f7ca0f83-4116-4c07-8307-3c23f8f5600a
  */
 
 



More information about the Vm-dev mailing list