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 */ |
Free forum by Nabble | Edit this page |