[Vm-dev] [commit][3565] CogVM source as per VMMaker.oscog-eem.1662

commits at squeakvm.org commits at squeakvm.org
Sat Jan 23 00:34:51 UTC 2016


Revision: 3565
Author:   eliot
Date:     2016-01-22 16:34:50 -0800 (Fri, 22 Jan 2016)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1662

Slang: Fix bad regression in type inference from VMMaker.oscog-eem.1587.
returnTypeForSend:in: can only default return types to sqInt for unknown
selectors.  The rewrite in VMMaker.oscog-eem.1587 inadvertently defaulted the
return type of known methods whose return type was yet to be determined to
sqInt.  The fix is to only default to sqInt if there is no known method for the
given selector.  This fixes, for instance, the weird flipping of the type of
32-bit Spur's headerWhileForwardingOf:,which should always be #sqLong.

Modified Paths:
--------------
    branches/Cog/nsspur64src/vm/cogit.h
    branches/Cog/nsspur64src/vm/cogitX64.c
    branches/Cog/nsspur64src/vm/cointerp.c
    branches/Cog/nsspur64src/vm/cointerp.h
    branches/Cog/nsspur64src/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/plugins/B2DPlugin/B2DPlugin.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/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspurstack64src/vm/gcc3x-interp.c
    branches/Cog/nsspurstack64src/vm/interp.c
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/spur64src/vm/cogit.h
    branches/Cog/spur64src/vm/cogitX64.c
    branches/Cog/spur64src/vm/cointerp.c
    branches/Cog/spur64src/vm/cointerp.h
    branches/Cog/spur64src/vm/gcc3x-cointerp.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/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.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/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spurstack64src/vm/gcc3x-interp.c
    branches/Cog/spurstack64src/vm/interp.c
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.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
    branches/Cog/src/vm/cointerp.c
    branches/Cog/src/vm/cointerp.h
    branches/Cog/src/vm/cointerpmt.c
    branches/Cog/src/vm/cointerpmt.h
    branches/Cog/src/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/gcc3x-cointerpmt.c
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c

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

Modified: branches/Cog/nsspur64src/vm/cogit.h
===================================================================
--- branches/Cog/nsspur64src/vm/cogit.h	2016-01-22 01:28:22 UTC (rev 3564)
+++ branches/Cog/nsspur64src/vm/cogit.h	2016-01-23 00:34:50 UTC (rev 3565)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1661 uuid: a34e0ec2-d251-4618-bd67-cef5b3eddcf5
+	CCodeGenerator VMMaker.oscog-eem.1662 uuid: 686f2648-1716-445e-8440-ec23d22489a5
  */
 
 
@@ -25,7 +25,7 @@
 extern sqInt bytecodePCForstartBcpcin(sqInt mcpc, sqInt startbcpc, CogBlockMethod *cogMethod);
 extern void callCogCodePopReceiver(void);
 extern void callCogCodePopReceiverAndClassRegs(void);
-extern sqInt ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver);
+extern void ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver);
 extern sqInt ceSICMiss(sqInt receiver);
 extern void checkAssertsEnabledInCogit(void);
 extern sqInt checkIntegrityOfObjectReferencesInCode(sqInt gcModes);

Modified: branches/Cog/nsspur64src/vm/cogitX64.c
===================================================================
--- branches/Cog/nsspur64src/vm/cogitX64.c	2016-01-22 01:28:22 UTC (rev 3564)
+++ branches/Cog/nsspur64src/vm/cogitX64.c	2016-01-23 00:34:50 UTC (rev 3565)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1661 uuid: a34e0ec2-d251-4618-bd67-cef5b3eddcf5
+	CCodeGenerator VMMaker.oscog-eem.1662 uuid: 686f2648-1716-445e-8440-ec23d22489a5
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1661 uuid: a34e0ec2-d251-4618-bd67-cef5b3eddcf5
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1662 uuid: 686f2648-1716-445e-8440-ec23d22489a5
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1661 uuid: a34e0ec2-d251-4618-bd67-cef5b3eddcf5 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1662 uuid: 686f2648-1716-445e-8440-ec23d22489a5 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -461,7 +461,7 @@
 static AbstractInstruction * NoDbgRegParms gCmpRR(sqInt reg1, sqInt reg2);
 extern void callCogCodePopReceiver(void);
 extern void callCogCodePopReceiverAndClassRegs(void);
-extern sqInt ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver);
+extern void ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver);
 extern sqInt ceSICMiss(sqInt receiver);
 extern void checkAssertsEnabledInCogit(void);
 static sqInt NoDbgRegParms checkIfValidOopRefAndTargetpccogMethod(sqInt annotation, char *mcpc, sqInt cogMethod);
@@ -483,7 +483,7 @@
 extern CogMethod * cogselector(sqInt aMethodObj, sqInt aSelectorOop);
 extern void compactCogCompiledCode(void);
 static AbstractInstruction * compileAbort(void);
-static sqInt NoDbgRegParms compileBlockDispatchFromto(sqInt lowBlockStartIndex, sqInt highBlockStartIndex);
+static void NoDbgRegParms compileBlockDispatchFromto(sqInt lowBlockStartIndex, sqInt highBlockStartIndex);
 static void NoDbgRegParms compileBlockEntry(BlockStart *blockStart);
 static void NoDbgRegParms compileCallFornumArgsargargargargresultRegsaveRegs(void *aRoutine, sqInt numArgs, sqInt regOrConst0, sqInt regOrConst1, sqInt regOrConst2, sqInt regOrConst3, sqInt resultRegOrNone, sqInt saveRegs);
 static AbstractInstruction * compileCPICEntry(void);
@@ -962,9 +962,8 @@
 static sqInt genLongUnconditionalBackwardJump(void);
 static sqInt genLongUnconditionalForwardJump(void);
 static sqInt NoDbgRegParms genLookupForPerformNumArgs(sqInt numArgs);
-static AbstractInstruction * NoDbgRegParms genMoveConstantR(sqInt constant, sqInt reg);
 static AbstractInstruction * NoDbgRegParms genMoveFalseR(sqInt reg);
-static sqInt NoDbgRegParms genMoveTrueR(sqInt reg);
+static AbstractInstruction * NoDbgRegParms genMoveTrueR(sqInt reg);
 static sqInt NoDbgRegParms genMustBeBooleanTrampolineForcalled(sqInt boolean, char *trampolineName);
 static void NoDbgRegParms genPrimReturnEnterCogCodeEnilopmart(sqInt profiling);
 static sqInt genPushClosureTempsBytecode(void);
@@ -3056,7 +3055,7 @@
 	sp=>	sender return address */
 
 	/* Cogit>>#ceCPICMiss:receiver: */
-sqInt
+void
 ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver)
 {
     sqInt cacheTag;
@@ -3070,7 +3069,8 @@
     sqInt selector;
 
 	if (isOopForwarded(receiver)) {
-		return ceSendFromInLineCacheMiss(cPIC);
+		ceSendFromInLineCacheMiss(cPIC);
+		return;
 	}
 	outerReturn = stackTop();
 	assert(!(((inlineCacheTagAt(backEnd, outerReturn)) == (picAbortDiscriminatorValue()))));
@@ -3133,11 +3133,12 @@
 	 || (isYoung(newTargetMethodOrNil))))) {
 		result = patchToOpenPICFornumArgsreceiver((cPIC->selector), (cPIC->cmNumArgs), receiver);
 		assert(!result);
-		return ceSendFromInLineCacheMiss(cPIC);
+		ceSendFromInLineCacheMiss(cPIC);
+		return;
 	}
 	cogExtendPICCaseNMethodtagisMNUCase(cPIC, newTargetMethodOrNil, cacheTag, errorSelectorOrNil == SelectorDoesNotUnderstand);
 	executeCogPICfromLinkedSendWithReceiverandCacheTag(cPIC, receiver, inlineCacheTagAt(backEnd, outerReturn));
-	return null;
+	return;
 }
 
 
@@ -4247,7 +4248,7 @@
 }
 
 	/* Cogit>>#compileBlockDispatchFrom:to: */
-static sqInt NoDbgRegParms
+static void NoDbgRegParms
 compileBlockDispatchFromto(sqInt lowBlockStartIndex, sqInt highBlockStartIndex)
 {
     AbstractInstruction *anInstruction;
@@ -4264,7 +4265,7 @@
 		/* begin Jump: */
 		jumpTarget = (blockStart->entryLabel);
 		genoperand(Jump, ((sqInt)jumpTarget));
-		return null;
+		return;
 	}
 	halfWay = (highBlockStartIndex + lowBlockStartIndex) / 2;
 	assert(((halfWay >= lowBlockStartIndex) && (halfWay <= highBlockStartIndex)));
@@ -4280,14 +4281,15 @@
 		jumpTarget1 = (blockStart->entryLabel);
 		genConditionalBranchoperand(JumpLessOrEqual, ((sqInt)jumpTarget1));
 		compileBlockDispatchFromto(halfWay + 1, highBlockStartIndex);
-		return null;
+		return;
 	}
 	if ((halfWay + 1) == highBlockStartIndex) {
 		blockStart = blockStartAt(highBlockStartIndex);
 		/* begin JumpGreater: */
 		jumpTarget2 = (blockStart->entryLabel);
 		genConditionalBranchoperand(JumpGreater, ((sqInt)jumpTarget2));
-		return compileBlockDispatchFromto(lowBlockStartIndex, halfWay);
+		compileBlockDispatchFromto(lowBlockStartIndex, halfWay);
+		return;
 	}
 	/* begin JumpGreater: */
 	jmp = genConditionalBranchoperand(JumpGreater, ((sqInt)0));
@@ -5878,12 +5880,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;
 
@@ -11689,7 +11691,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpTrue, genMoveConstantR(trueObject(), ReceiverResultReg));
+	jmpTarget(jumpTrue, genMoveTrueR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -11757,7 +11759,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpCond, genMoveConstantR(trueObject(), ReceiverResultReg));
+	jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -12133,7 +12135,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpCond, genMoveConstantR(trueObject(), ReceiverResultReg));
+	jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -15447,7 +15449,7 @@
 		/* begin JumpNonZero: */
 		jumpCmp = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 	}
-	/* begin genMoveConstant:R: */
+	/* begin genMoveTrueR: */
 	constant = trueObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -21975,19 +21977,6 @@
 	return 0;
 }
 
-	/* SimpleStackBasedCogit>>#genMoveConstant:R: */
-static AbstractInstruction * NoDbgRegParms
-genMoveConstantR(sqInt constant, sqInt reg)
-{
-    AbstractInstruction *anInstruction;
-
-	return (shouldAnnotateObjectReference(constant)
-		? annotateobjRef(gMoveCwR(constant, reg), constant)
-		: (/* begin MoveCq:R: */
-			(anInstruction = genoperandoperand(MoveCqR, constant, reg)),
-			anInstruction));
-}
-
 	/* SimpleStackBasedCogit>>#genMoveFalseR: */
 static AbstractInstruction * NoDbgRegParms
 genMoveFalseR(sqInt reg)
@@ -22005,7 +21994,7 @@
 }
 
 	/* SimpleStackBasedCogit>>#genMoveTrueR: */
-static sqInt NoDbgRegParms
+static AbstractInstruction * NoDbgRegParms
 genMoveTrueR(sqInt reg)
 {
     AbstractInstruction *anInstruction;

Modified: branches/Cog/nsspur64src/vm/cointerp.c
===================================================================
--- branches/Cog/nsspur64src/vm/cointerp.c	2016-01-22 01:28:22 UTC (rev 3564)
+++ branches/Cog/nsspur64src/vm/cointerp.c	2016-01-23 00:34:50 UTC (rev 3565)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1660 uuid: 372f5635-366a-462d-8979-ae86dee05577
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1662 uuid: 686f2648-1716-445e-8440-ec23d22489a5
    from
-	CoInterpreter VMMaker.oscog-eem.1660 uuid: 372f5635-366a-462d-8979-ae86dee05577
+	CoInterpreter VMMaker.oscog-eem.1662 uuid: 686f2648-1716-445e-8440-ec23d22489a5
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1660 uuid: 372f5635-366a-462d-8979-ae86dee05577 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1662 uuid: 686f2648-1716-445e-8440-ec23d22489a5 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -479,9 +479,9 @@
 extern sqInt ceReturnToInterpreter(sqInt anOop);
 extern void ceSelfSendreceiver(sqInt cacheAddress, sqInt methodReceiver);
 extern sqInt ceSendAborttonumArgs(sqInt selector, sqInt rcvr, sqInt numArgs);
-extern sqInt ceSendFromInLineCacheMiss(CogMethod *cogMethodOrPIC);
+extern void ceSendFromInLineCacheMiss(CogMethod *cogMethodOrPIC);
 extern sqInt ceSendMustBeBoolean(sqInt anObject);
-extern sqInt ceSendsupertonumArgs(sqInt selector, sqInt superNormalBar, sqInt rcvr, sqInt numArgs);
+extern void ceSendsupertonumArgs(sqInt selector, sqInt superNormalBar, sqInt rcvr, sqInt numArgs);
 extern void ceStackOverflow(sqInt contextSwitchIfNotNil);
 extern void ceTraceBlockActivation(void);
 extern void ceTraceLinkedSend(sqInt theReceiver);
@@ -527,7 +527,7 @@
 extern sqInt getCurrentBytecode(void);
 extern char * getFramePointer(void);
 static sqInt NoDbgRegParms handleForwardedSendFaultForReceiverstackDelta(sqInt forwardedReceiver, sqInt stackDelta);
-static sqInt NoDbgRegParms handleMNUInMachineCodeToclassForMessage(sqInt selectorIndex, sqInt rcvr, sqInt classForMessage);
+static void NoDbgRegParms handleMNUInMachineCodeToclassForMessage(sqInt selectorIndex, sqInt rcvr, sqInt classForMessage);
 static sqInt NoDbgRegParms iframeIsBlockActivation(char *theFP);
 static sqInt NoDbgRegParms iframeReceiver(char *theFP);
 static sqInt NoDbgRegParms iframeSavedIP(char *theFP);
@@ -584,7 +584,7 @@
 extern sqInt primitivePropertyFlags(sqInt primIndex);
 extern void * primTraceLogAddress(void);
 extern usqInt primTraceLogIndexAddress(void);
-extern sqInt printCogMethod(CogMethod *cogMethod);
+extern void printCogMethod(CogMethod *cogMethod);
 static void NoDbgRegParms printFrameFlagsForFP(char *theFP);
 static void NoDbgRegParms printFrameMethodFor(char *theFP);
 static void NoDbgRegParms printFrameThingatextraString(char *name, char *address, char *extraStringOrNil);
@@ -875,7 +875,7 @@
 extern void ensureNoForwardedLiteralsIn(sqInt aMethodObj);
 extern usqInt freeStartAddress(void);
 extern usqInt getScavengeThreshold(void);
-static sqInt NoDbgRegParms headerWhileForwardingOf(sqInt aCompiledMethodObjOop);
+static sqLong NoDbgRegParms headerWhileForwardingOf(sqInt aCompiledMethodObjOop);
 extern sqInt isForwardedClassIndex(sqInt maybeClassIndex);
 extern sqInt isImmediateClass(sqInt classObj);
 extern sqInt isReallyYoungObject(sqInt objOop);
@@ -1124,8 +1124,8 @@
 static sqInt NoDbgRegParms isValidFreeObject(sqInt objOop);
 static sqInt NoDbgRegParms isValidObjStackAt(sqInt objStackRootIndex);
 static sqInt NoDbgRegParms isValidObjStackPagemyIndex(sqInt objStackPage, sqInt myx);
-static sqInt NoDbgRegParms isValidObjStackPagemyIndexfirstPage(sqInt objStackPage, sqInt myx, sqInt isFirstPage);
-static sqInt NoDbgRegParms isValidObjStack(sqInt objStack);
+static void NoDbgRegParms isValidObjStackPagemyIndexfirstPage(sqInt objStackPage, sqInt myx, sqInt isFirstPage);
+static void NoDbgRegParms isValidObjStack(sqInt objStack);
 static sqInt NoDbgRegParms isWeakFormat(sqInt format);
 static sqInt NoDbgRegParms isWeakNonImm(sqInt objOop);
 extern sqInt isWeak(sqInt oop);
@@ -1196,7 +1196,7 @@
 extern void printFreeChunk(sqInt freeChunk);
 static void NoDbgRegParms printFreeChunkprintAsTreeNode(sqInt freeChunk, sqInt printAsTreeNode);
 extern void printFreeListHeads(void);
-extern sqInt printFreeList(sqInt chunkOrIndex);
+extern void printFreeList(sqInt chunkOrIndex);
 extern void printFreeTree(void);
 static void NoDbgRegParms printFreeTreeChunk(sqInt chunkOrZero);
 extern void printHeaderOf(sqInt objOop);
@@ -1343,8 +1343,8 @@
 static sqInt NoDbgRegParms findClassContainingMethodstartingAt(sqInt meth, sqInt classObj);
 extern sqInt findClassOfMethodforReceiver(sqInt meth, sqInt rcvr);
 static char * NoDbgRegParms findFrameAboveinPage(char *theFP, StackPage *thePage);
-static sqInt NoDbgRegParms findHomeForContext(sqInt aContext);
-static sqInt NoDbgRegParms findMethodWithPrimitiveFromContextUpToContext(sqInt primitive, sqInt senderContext, sqInt homeContext);
+static void NoDbgRegParms findHomeForContext(sqInt aContext);
+static void NoDbgRegParms findMethodWithPrimitiveFromContextUpToContext(sqInt primitive, sqInt senderContext, sqInt homeContext);
 extern sqInt findSelectorOfMethod(sqInt methArg);
 static char * NoDbgRegParms findSPOfon(char *theFP, StackPage *thePage);
 static sqInt NoDbgRegParms findUnwindThroughContext(sqInt homeContext);
@@ -1399,7 +1399,7 @@
 extern sqInt isKindOfClass(sqInt oop, sqInt aClass);
 extern sqInt isKindOf(sqInt oop, char *className);
 extern sqInt isMemberOf(sqInt oop, char *className);
-static sqInt NoDbgRegParms lengthOfNameOfClass(sqInt classOop);
+static void NoDbgRegParms lengthOfNameOfClass(sqInt classOop);
 extern sqInt literalofMethod(sqInt offset, sqInt methodPointer);
 extern sqInt loadBitBltFrom(sqInt bb);
 extern void loadInitialContext(void);
@@ -1407,7 +1407,7 @@
 extern sqInt longStoreBytecodeForHeader(sqInt methodHeader);
 static sqInt NoDbgRegParms lookupInMethodCacheSelclassTag(sqInt selector, sqInt classTag);
 static sqInt NoDbgRegParms lookupLexicalfromrule(sqInt selector, sqInt mixin, sqInt rule);
-static sqInt NoDbgRegParms lookupMethodInClass(sqInt class);
+static void NoDbgRegParms lookupMethodInClass(sqInt class);
 static sqInt lookupMNU(void);
 static sqInt NoDbgRegParms lookupMNUInClass(sqInt class);
 static sqInt NoDbgRegParms lookupOrdinaryNoMNUEtcInClass(sqInt class);
@@ -1453,7 +1453,7 @@
 extern void printAllStacks(void);
 extern void printCallStack(void);
 static sqInt NoDbgRegParms printCallStackFP(char *theFP);
-extern sqInt printCallStackOf(sqInt aContextOrProcessOrFrame);
+extern void printCallStackOf(sqInt aContextOrProcessOrFrame);
 static sqInt NoDbgRegParms printCallStackOfcurrentFP(sqInt aContext, char *currFP);
 extern void printChar(sqInt aByte);
 static sqInt NoDbgRegParms printContextCallStackOf(sqInt aContext);
@@ -1478,7 +1478,7 @@
 extern void printOop(sqInt oop);
 extern void printProcessStack(sqInt aProcess);
 extern sqInt printProcsOnList(sqInt procList);
-extern sqInt printStackCallStackOf(sqInt aContextOrProcessOrFrame);
+extern void printStackCallStackOf(sqInt aContextOrProcessOrFrame);
 extern void printStackPageList(void);
 extern void printStackPageListInUse(void);
 extern void printStackPages(void);
@@ -2436,7 +2436,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1660";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1662";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -18259,7 +18259,7 @@
 /*	self printStringOf: selector */
 
 	/* CoInterpreter>>#ceSendFromInLineCacheMiss: */
-sqInt
+void
 ceSendFromInLineCacheMiss(CogMethod *cogMethodOrPIC)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt classObj;
@@ -18314,11 +18314,13 @@
 	else {
 		if (isOopForwarded((cogMethodOrPIC->selector))) {
 			handleForwardedSelectorFaultFor((cogMethodOrPIC->selector));
-			return ceSendFromInLineCacheMiss(cogMethodOrPIC);
+			ceSendFromInLineCacheMiss(cogMethodOrPIC);
+			return;
 		}
 		if (classTag == (isForwardedObjectClassIndexPun())) {
 			handleForwardedSendFaultForReceiverstackDelta(rcvr, 1);
-			return ceSendFromInLineCacheMiss(cogMethodOrPIC);
+			ceSendFromInLineCacheMiss(cogMethodOrPIC);
+			return;
 		}
 		GIV(messageSelector) = (cogMethodOrPIC->selector);
 		/* begin classAtIndex: */
@@ -18351,7 +18353,8 @@
 		executeNewMethod();
 		assert(0);
 	}
-	return interpretMethodFromMachineCode();
+	interpretMethodFromMachineCode();
+	return;
 }
 
 	/* CoInterpreter>>#ceSendMustBeBoolean: */
@@ -18394,7 +18397,7 @@
 	cogged or not. */
 
 	/* CoInterpreter>>#ceSend:super:to:numArgs: */
-sqInt
+void
 ceSendsupertonumArgs(sqInt selector, sqInt superNormalBar, sqInt rcvr, sqInt numArgs)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt classObj;
@@ -18481,11 +18484,13 @@
 	else {
 		if (((selector & (tagMask())) == 0)
 		 && (((longAt(selector)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) {
-			return ceSendsupertonumArgs(handleForwardedSelectorFaultFor(selector), superNormalBar, rcvr, numArgs);
+			ceSendsupertonumArgs(handleForwardedSelectorFaultFor(selector), superNormalBar, rcvr, numArgs);
+			return;
 		}
 		if (classTag == (isForwardedObjectClassIndexPun())) {
 			assert(superNormalBar == 0);
-			return ceSendsupertonumArgs(selector, superNormalBar, handleForwardedSendFaultForReceiverstackDelta(rcvr, 1), numArgs);
+			ceSendsupertonumArgs(selector, superNormalBar, handleForwardedSendFaultForReceiverstackDelta(rcvr, 1), numArgs);
+			return;
 		}
 		GIV(messageSelector) = selector;
 		/* begin classAtIndex: */
@@ -18557,7 +18562,8 @@
 	top1 = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = top1;
-	return interpretMethodFromMachineCode();
+	interpretMethodFromMachineCode();
+	return;
 }
 
 
@@ -18694,7 +18700,7 @@
 static sqInt
 checkForAndFollowForwardedPrimitiveState(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt accessorDepth;
+    signed char accessorDepth;
     sqInt firstBytecode;
     sqInt found;
     sqInt found1;
@@ -20253,7 +20259,7 @@
 	method. messageSelector is an implicit argument (yuck). */
 
 	/* CoInterpreter>>#handleMNU:InMachineCodeTo:classForMessage: */
-static sqInt NoDbgRegParms
+static void NoDbgRegParms
 handleMNUInMachineCodeToclassForMessage(sqInt selectorIndex, sqInt rcvr, sqInt classForMessage)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt classForThisMessage;
@@ -20302,7 +20308,8 @@
 			/* begin push: */
 			longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
 			GIV(stackPointer) = sp;
-			return handleMNUInMachineCodeToclassForMessage(errSelIdx, rcvr, classForThisMessage);
+			handleMNUInMachineCodeToclassForMessage(errSelIdx, rcvr, classForThisMessage);
+			return;
 		}
 	}
 	if (((GIV(newMethod) & (tagMask())) == 0)
@@ -20314,7 +20321,8 @@
 		executeCogMethodfromUnlinkedSendWithReceiver(cogMethodOf(GIV(newMethod)), rcvr);
 		assert(0);
 	}
-	return interpretMethodFromMachineCode();
+	interpretMethodFromMachineCode();
+	return;
 }
 
 
@@ -24761,7 +24769,7 @@
 }
 
 	/* CoInterpreter>>#printCogMethod: */
-sqInt
+void
 printCogMethod(CogMethod *cogMethod)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt address;
@@ -43303,7 +43311,7 @@
 	(which shouldn't happen with Spur). */
 
 	/* Spur64BitCoMemoryManager>>#headerWhileForwardingOf: */
-static sqInt NoDbgRegParms
+static sqLong NoDbgRegParms
 headerWhileForwardingOf(sqInt aCompiledMethodObjOop)
 {
 	assert(!(isForwarded(aCompiledMethodObjOop)));
@@ -54145,7 +54153,7 @@
 /*	Answer if the obj stack at stackRootIndex is valid. */
 
 	/* SpurMemoryManager>>#isValidObjStackPage:myIndex:firstPage: */
-static sqInt NoDbgRegParms
+static void NoDbgRegParms
 isValidObjStackPagemyIndexfirstPage(sqInt objStackPage, sqInt myx, sqInt isFirstPage)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeOrNextPage;
@@ -54154,33 +54162,33 @@
     sqInt page;
 
 	if (!(isValidObjStackPagemyIndex(objStackPage, myx))) {
-		return 0;
+		return;
 	}
 	freeOrNextPage = longAt((objStackPage + BaseHeaderSize) + (((long)ObjStackFreex) << (shiftForWord())));
 	while (freeOrNextPage != 0) {
 		if (!isFirstPage) {
 			GIV(objStackInvalidBecause) = "free page on other than first page";
 			GIV(invalidObjStackPage) = objStackPage;
-			return 0;
+			return;
 		}
 		if (freeOrNextPage == (longAt((objStackPage + BaseHeaderSize) + (((long)ObjStackNextx) << (shiftForWord()))))) {
 			GIV(objStackInvalidBecause) = "free page = next page";
 			GIV(invalidObjStackPage) = freeOrNextPage;
-			return 0;
+			return;
 		}
 		if (!(isValidObjStackPagemyIndex(freeOrNextPage, myx))) {
 			ns = malloc(((strlen(GIV(objStackInvalidBecause))) + (strlen(", on next page"))) + 2);
 			strcpy(ns, GIV(objStackInvalidBecause));
 			GIV(objStackInvalidBecause) = strcat(ns, ", on next page");
 
-			return 0;
+			return;
 		}
 		page = longAt((freeOrNextPage + BaseHeaderSize) + (((long)ObjStackFreex) << (shiftForWord())));
 		if ((page == freeOrNextPage)
 		 || (page == objStackPage)) {
 			GIV(objStackInvalidBecause) = "circularity in free page list";
 			GIV(invalidObjStackPage) = page;
-			return 0;
+			return;
 		}
 		freeOrNextPage = page;
 	}
@@ -54188,46 +54196,48 @@
 		if (!(((myx >= (1LL << (22 - (classTableMajorIndexShift())))) && (myx <= (((1LL << (22 - (classTableMajorIndexShift()))) + 8) - 1))))) {
 			GIV(objStackInvalidBecause) = "myx out of range";
 			GIV(invalidObjStackPage) = objStackPage;
-			return 0;
+			return;
 		}
 		if (!((longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)myx) << (shiftForWord())))) == objStackPage)) {
 			GIV(objStackInvalidBecause) = "firstPage is not root";
 			GIV(invalidObjStackPage) = objStackPage;
-			return 0;
+			return;
 		}
 	}
 	index = longAt((objStackPage + BaseHeaderSize) + (((long)ObjStackTopx) << (shiftForWord())));
 	if (!(((index >= 0) && (index <= ObjStackLimit)))) {
 		GIV(objStackInvalidBecause) = "bad topx";
 		GIV(invalidObjStackPage) = objStackPage;
-		return 0;
+		return;
 	}
 	freeOrNextPage = longAt((objStackPage + BaseHeaderSize) + (((long)ObjStackNextx) << (shiftForWord())));
 	if (freeOrNextPage == 0) {
-		return 1;
+		return;
 	}
 	if (freeOrNextPage == objStackPage) {
 		GIV(objStackInvalidBecause) = "circularity in objStack page list";
 		GIV(invalidObjStackPage) = objStackPage;
-		return 0;
+		return;
 	}
-	return isValidObjStackPagemyIndexfirstPage(freeOrNextPage, myx, 0);
+	isValidObjStackPagemyIndexfirstPage(freeOrNextPage, myx, 0);
+	return;
 }
 
 
 /*	Answer if the obj stack at objStackRootIndex is valid. */
 
 	/* SpurMemoryManager>>#isValidObjStack: */
-static sqInt NoDbgRegParms
+static void NoDbgRegParms
 isValidObjStack(sqInt objStack)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
 	if (!((addressCouldBeObj(objStack))
 		 && ((numSlotsOfAny(objStack)) == ObjStackPageSlots))) {
 		GIV(objStackInvalidBecause) = "first page not obj or wrong size";
 		GIV(invalidObjStackPage) = objStack;
-		return 0;
+		return;
 	}
-	return isValidObjStackPagemyIndexfirstPage(objStack, longAt((objStack + BaseHeaderSize) + (((long)ObjStackMyx) << (shiftForWord()))), 1);
+	isValidObjStackPagemyIndexfirstPage(objStack, longAt((objStack + BaseHeaderSize) + (((long)ObjStackMyx) << (shiftForWord()))), 1);
+	return;
 }
 
 	/* SpurMemoryManager>>#isWeakFormat: */
@@ -63970,14 +63980,15 @@
 }
 
 	/* SpurMemoryManager>>#printFreeList: */
-sqInt
+void
 printFreeList(sqInt chunkOrIndex)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeChunk;
 
 	if ((chunkOrIndex >= 0)
 	 && (chunkOrIndex < 64)) {
-		return printFreeList(GIV(freeLists)[chunkOrIndex]);
+		printFreeList(GIV(freeLists)[chunkOrIndex]);
+		return;
 	}
 	freeChunk = chunkOrIndex;
 	while (freeChunk != 0) {
@@ -67210,7 +67221,7 @@
 bridgeFromto(SpurSegmentInfo *aSegment, SpurSegmentInfo *nextSegmentOrNil)
 {
     usqInt bridgeSpan;
-    sqInt clifton;
+    usqInt clifton;
     usqInt segEnd;
 
 	segEnd = ((aSegment->segSize)) + ((aSegment->segStart));
@@ -67390,7 +67401,7 @@
 static void
 postSnapshot(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt address;
+    usqInt address;
     sqInt bytes;
     usqInt freeChunk;
     sqInt i;
@@ -67579,7 +67590,7 @@
 static sqInt NoDbgRegParms
 readHeapFromImageFiledataBytes(sqImageFile f, sqInt numBytes)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    usqInt bridge;
+    sqInt bridge;
     usqInt bridgehead;
     usqLong bridgeSpan;
     sqInt bytesRead;
@@ -67791,8 +67802,8 @@
 {
     usqLong firstSavedBridgeWord;
     sqInt nWritten;
-    sqInt pier1;
-    sqInt pier2;
+    usqInt pier1;
+    usqInt pier2;
     usqLong secondSavedBridgeWord;
 
 	pier1 = (((segment->segSize)) + ((segment->segStart))) - (2 * BaseHeaderSize);
@@ -70833,7 +70844,7 @@
 }
 
 	/* StackInterpreter>>#findHomeForContext: */
-static sqInt NoDbgRegParms
+static void NoDbgRegParms
 findHomeForContext(sqInt aContext)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt closureOrNil;
@@ -70841,18 +70852,19 @@
 
 	if (!(((aContext & (tagMask())) == 0)
 		 && (((longAt(aContext)) & (classIndexMask())) == ClassMethodContextCompactIndex))) {
-		return null;
+		return;
 	}
 	closureOrNil = longAt((aContext + BaseHeaderSize) + (((long)ClosureIndex) << (shiftForWord())));
 	if (closureOrNil == GIV(nilObj)) {
-		return aContext;
+		return;
 	}
 	if (((((tagBits = closureOrNil & (tagMask()))) != 0
 		? longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (((long)tagBits) << (shiftForWord())))
 		: fetchClassOfNonImm(closureOrNil))) != (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)ClassBlockClosure) << (shiftForWord()))))) {
-		return null;
+		return;
 	}
-	return findHomeForContext(longAt((closureOrNil + BaseHeaderSize) + (((long)ClosureOuterContextIndex) << (shiftForWord()))));
+	findHomeForContext(longAt((closureOrNil + BaseHeaderSize) + (((long)ClosureOuterContextIndex) << (shiftForWord()))));
+	return;
 }
 
 
@@ -70862,7 +70874,7 @@
 	wait.  */
 
 	/* StackInterpreter>>#findMethodWithPrimitive:FromContext:UpToContext: */
-static sqInt NoDbgRegParms
+static void NoDbgRegParms
 findMethodWithPrimitiveFromContextUpToContext(sqInt primitive, sqInt senderContext, sqInt homeContext)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt callerContextOrNil;
@@ -70885,23 +70897,23 @@
 	theContext = senderContext;
 	while (1) {
 		if (theContext == GIV(nilObj)) {
-			return theContext;
+			return;
 		}
 		if (((((longAt((theContext + BaseHeaderSize) + (((long)SenderIndex) << (shiftForWord()))))) & 7) == 1)) break;
 		if (theContext == homeContext) {
-			return 0;
+			return;
 		}
 		if (!((primitive == 0)
 			 || ((longAt((theContext + BaseHeaderSize) + (((long)ClosureIndex) << (shiftForWord())))) != GIV(nilObj)))) {
 			theMethod = longAt((theContext + BaseHeaderSize) + (((long)MethodIndex) << (shiftForWord())));
 			if ((primitiveIndexOfMethodheader(theMethod, methodHeaderOf(theMethod))) == primitive) {
-				return theContext;
+				return;
 			}
 		}
 		theContext = longAt((theContext + BaseHeaderSize) + (((long)SenderIndex) << (shiftForWord())));
 	}
 	if (isWidowedContext(theContext)) {
-		return GIV(nilObj);
+		return;
 	}
 	/* begin findMethodWithPrimitive:FromFP:UpToContext: */
 	senderOop = longAt((theContext + BaseHeaderSize) + (((long)SenderIndex) << (shiftForWord())));
@@ -70915,7 +70927,7 @@
 			? ((longAt(theFP + FoxMethod)) & MFMethodFlagHasContextFlag) != 0
 			: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0))
 		 && (homeContext == (longAt(theFP + FoxThisContext)))) {
-			return 0;
+			return;
 		}
 		if (!((primitive == 0)
 			 || (((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
@@ -70940,9 +70952,11 @@
 					? ((longAt(theFP + FoxMethod)) & MFMethodFlagHasContextFlag) != 0
 					: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0)) {
 					assert(isContext(frameContext(theFP)));
-					return longAt(theFP + FoxThisContext);
+					longAt(theFP + FoxThisContext);
+					return;
 				}
-				return marryFrameSP(theFP, theSP);
+				marryFrameSP(theFP, theSP);
+				return;
 			}
 		}
 		theFPAbove = theFP;
@@ -70961,9 +70975,10 @@
 	senderContext1 = callerContextOrNil;
 	if (!(((senderContext1 & (tagMask())) == 0)
 		 && (((longAt(senderContext1)) & (classIndexMask())) == ClassMethodContextCompactIndex))) {
-		return GIV(nilObj);
+		return;
 	}
-	return findMethodWithPrimitiveFromContextUpToContext(primitive, senderContext1, homeContext);
+	findMethodWithPrimitiveFromContextUpToContext(primitive, senderContext1, homeContext);
+	return;
 }
 
 	/* StackInterpreter>>#findSelectorOfMethod: */
@@ -72390,7 +72405,7 @@
 }
 
 	/* StackInterpreter>>#lengthOfNameOfClass: */
-static sqInt NoDbgRegParms
+static void NoDbgRegParms
 lengthOfNameOfClass(sqInt classOop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt fmt;
@@ -72408,10 +72423,11 @@
 		? ((usqInt) (((unsigned long)(((long)(longAt(classOop - BaseHeaderSize))) << 8)))) >> 8
 		: numSlots1);
 	if (numSlots == GIV(metaclassNumSlots)) {
-		return lengthOfNameOfClass(longAt((classOop + BaseHeaderSize) + (((long)GIV(thisClassIndex)) << (shiftForWord()))));
+		lengthOfNameOfClass(longAt((classOop + BaseHeaderSize) + (((long)GIV(thisClassIndex)) << (shiftForWord()))));
+		return;
 	}
 	if (numSlots <= GIV(classNameIndex)) {
-		return 0;
+		return;
 	}
 	/* begin lengthOf: */
 	objOop = longAt((classOop + BaseHeaderSize) + (((long)GIV(classNameIndex)) << (shiftForWord())));
@@ -72423,23 +72439,26 @@
 		? ((usqInt) (((unsigned long)(((long)(longAt(objOop - BaseHeaderSize))) << 8)))) >> 8
 		: numSlots11);
 	if (fmt <= 5) {
-		return numSlots2;
+		return;
 	}
 	if (fmt >= (firstByteFormat())) {
 
 		/* bytes, including CompiledMethod */
-		return (((long)numSlots2) << (shiftForWord())) - (fmt & 7);
+		(((long)numSlots2) << (shiftForWord())) - (fmt & 7);
+		return;
 	}
 	if (fmt >= (firstShortFormat())) {
-		return (((long)numSlots2) << ((shiftForWord()) - 1)) - (fmt & 3);
+		(((long)numSlots2) << ((shiftForWord()) - 1)) - (fmt & 3);
+		return;
 	}
 	if (fmt >= (firstLongFormat())) {
-		return (((long)numSlots2) << ((shiftForWord()) - 2)) - (fmt & 1);
+		(((long)numSlots2) << ((shiftForWord()) - 2)) - (fmt & 1);
+		return;
 	}
 	if (fmt == (sixtyFourBitIndexableFormat())) {
-		return numSlots2;
+		return;
 	}
-	return 0;
+	return;
 }
 
 	/* StackInterpreter>>#literal:ofMethod: */
@@ -72939,7 +72958,7 @@
 }
 
 	/* StackInterpreter>>#lookupMethodInClass: */
-static sqInt NoDbgRegParms
+static void NoDbgRegParms
 lookupMethodInClass(sqInt class)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt currentClass;
@@ -72979,7 +72998,8 @@
 			GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorCannotInterpret) << (shiftForWord())));
 			/* begin sendBreakpoint:receiver: */
 			sendBreakpointreceiver(firstFixedFieldOfMaybeImmediate(GIV(messageSelector)), lengthOfMaybeImmediate(GIV(messageSelector)), null);
-			return lookupMethodInClass(followFieldofObject(SuperclassIndex, currentClass));
+			lookupMethodInClass(followFieldofObject(SuperclassIndex, currentClass));
+			return;
 		}
 		/* begin lookupMethodInDictionary: */
 		flag("endianness");
@@ -73084,7 +73104,7 @@
 		found = 0;
 	l1:	/* end lookupMethodInDictionary: */;
 		if (found) {
-			return currentClass;
+			return;
 		}
 		/* begin followField:ofObject: */
 		objOop1 = longAt((currentClass + BaseHeaderSize) + (((long)SuperclassIndex) << (shiftForWord())));
@@ -73100,7 +73120,8 @@
 	createActualMessageTo(class);
 	GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorDoesNotUnderstand) << (shiftForWord())));
 	sendBreakpointreceiver(GIV(messageSelector) + BaseHeaderSize, lengthOfformat(GIV(messageSelector), (((usqInt) (longAt(GIV(messageSelector)))) >> (formatShift())) & (formatMask())), null);
-	return lookupMethodInClass(class);
+	lookupMethodInClass(class);
+	return;
 }
 
 
@@ -75643,24 +75664,26 @@
 }
 
 	/* StackInterpreter>>#printCallStackOf: */
-sqInt
+void
 printCallStackOf(sqInt aContextOrProcessOrFrame)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt context;
 
 	if ((((((usqInt)aContextOrProcessOrFrame)) & (BytesPerWord - 1)) == 0)
 	 && ((((((usqInt)aContextOrProcessOrFrame)) >= (((usqInt)(GIV(stackBasePlus1) - 1)))) && ((((usqInt)aContextOrProcessOrFrame)) <= (((usqInt)GIV(pages))))))) {
-		return printCallStackFP(((char *) aContextOrProcessOrFrame));
+		printCallStackFP(((char *) aContextOrProcessOrFrame));
+		return;
 	}
 	if (couldBeProcess(aContextOrProcessOrFrame)) {
-		return printCallStackOf(longAt((aContextOrProcessOrFrame + BaseHeaderSize) + (((long)SuspendedContextIndex) << (shiftForWord()))));
+		printCallStackOf(longAt((aContextOrProcessOrFrame + BaseHeaderSize) + (((long)SuspendedContextIndex) << (shiftForWord()))));
+		return;
 	}
 	context = aContextOrProcessOrFrame;
 	while (!(context == GIV(nilObj))) {
 		if (((((longAt((context + BaseHeaderSize) + (((long)SenderIndex) << (shiftForWord()))))) & 7) == 1)) {
 			if (!(checkIsStillMarriedContextcurrentFP(context, GIV(framePointer)))) {
 				shortPrintContext(context);
-				return null;
+				return;
 			}
 			context = shortReversePrintFrameAndCallers(frameOfMarriedContext(context));
 		}
@@ -77545,7 +77568,7 @@
 }
 
 	/* StackInterpreter>>#printStackCallStackOf: */
-sqInt
+void
 printStackCallStackOf(sqInt aContextOrProcessOrFrame)
 {
     sqInt context;
@@ -77555,12 +77578,14 @@
 		if ((((aContextOrProcessOrFrame & (tagMask())) == 0)
 		 && (((longAt(aContextOrProcessOrFrame)) & (classIndexMask())) == ClassMethodContextCompactIndex))
 		 && (checkIsStillMarriedContextcurrentFP(aContextOrProcessOrFrame, null))) {
-			return printStackCallStackOf(((sqInt)(frameOfMarriedContext(aContextOrProcessOrFrame))));
+			printStackCallStackOf(((sqInt)(frameOfMarriedContext(aContextOrProcessOrFrame))));
+			return;
 		}
 		if (couldBeProcess(aContextOrProcessOrFrame)) {
-			return printCallStackOf(longAt((aContextOrProcessOrFrame + BaseHeaderSize) + (((long)SuspendedContextIndex) << (shiftForWord()))));
+			printCallStackOf(longAt((aContextOrProcessOrFrame + BaseHeaderSize) + (((long)SuspendedContextIndex) << (shiftForWord()))));
+			return;
 		}
-		return null;
+		return;
 	}
 
 	theFP = ((void *)aContextOrProcessOrFrame);
@@ -77569,7 +77594,7 @@
 		if (!((((((longAt((context + BaseHeaderSize) + (((long)SenderIndex) << (shiftForWord()))))) & 7) == 1))
 			 && (((theFP = frameOfMarriedContext(context)),
 			checkIsStillMarriedContextcurrentFP(context, theFP))))) {
-			return null;
+			return;
 		}
 	}
 }
@@ -80648,7 +80673,7 @@
     sqInt headerSize;
     squeakFileOffsetType headerStart;
     sqInt i;
-    sqInt imageBytes;
+    usqInt imageBytes;
     extern char imageName[];
     sqInt okToWrite;
     void *sCWIfn;

Modified: branches/Cog/nsspur64src/vm/cointerp.h
===================================================================
--- branches/Cog/nsspur64src/vm/cointerp.h	2016-01-22 01:28:22 UTC (rev 3564)
+++ branches/Cog/nsspur64src/vm/cointerp.h	2016-01-23 00:34:50 UTC (rev 3565)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1660 uuid: 372f5635-366a-462d-8979-ae86dee05577
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1662 uuid: 686f2648-1716-445e-8440-ec23d22489a5
  */
 
 
@@ -42,9 +42,9 @@
 extern sqInt ceReturnToInterpreter(sqInt anOop);
 extern void ceSelfSendreceiver(sqInt cacheAddress, sqInt methodReceiver);
 extern sqInt ceSendAborttonumArgs(sqInt selector, sqInt rcvr, sqInt numArgs);
-extern sqInt ceSendFromInLineCacheMiss(CogMethod *cogMethodOrPIC);
+extern void ceSendFromInLineCacheMiss(CogMethod *cogMethodOrPIC);
 extern sqInt ceSendMustBeBoolean(sqInt anObject);
-extern sqInt ceSendsupertonumArgs(sqInt selector, sqInt superNormalBar, sqInt rcvr, sqInt numArgs);
+extern void ceSendsupertonumArgs(sqInt selector, sqInt superNormalBar, sqInt rcvr, sqInt numArgs);
 extern void ceStackOverflow(sqInt contextSwitchIfNotNil);
 extern void ceTraceBlockActivation(void);
 extern void ceTraceLinkedSend(sqInt theReceiver);
@@ -89,7 +89,7 @@
 extern sqInt primitivePropertyFlags(sqInt primIndex);
 extern void * primTraceLogAddress(void);
 extern usqInt primTraceLogIndexAddress(void);
-extern sqInt printCogMethod(CogMethod *cogMethod);
+extern void printCogMethod(CogMethod *cogMethod);
 extern sqInt printFrameWithSP(char *theFP, char *theSP);
 extern void printMethodCacheFor(sqInt thing);
 extern sqInt quickPrimitiveConstantFor(sqInt aQuickPrimitiveIndex);
@@ -222,7 +222,7 @@
 extern void printFreeChunks(void);
 extern void printFreeChunk(sqInt freeChunk);
 extern void printFreeListHeads(void);
-extern sqInt printFreeList(sqInt chunkOrIndex);
+extern void printFreeList(sqInt chunkOrIndex);
 extern void printFreeTree(void);
 extern void printHeaderOf(sqInt objOop);
 extern void printInstancesOf(sqInt aClassOop);
@@ -283,7 +283,7 @@
 extern sqInt primitiveIndexOfMethodheader(sqInt theMethod, sqInt methodHeader);
 extern sqInt primitiveIndexOf(sqInt methodPointer);
 extern void printAllStacks(void);
-extern sqInt printCallStackOf(sqInt aContextOrProcessOrFrame);
+extern void printCallStackOf(sqInt aContextOrProcessOrFrame);
 extern void printChar(sqInt aByte);
 extern void printHex(sqInt n);
 extern void printLikelyImplementorsOfSelector(sqInt selector);
@@ -292,7 +292,7 @@
 extern void printMethodDictionary(sqInt dictionary);
 extern void printProcessStack(sqInt aProcess);
 extern sqInt printProcsOnList(sqInt procList);
-extern sqInt printStackCallStackOf(sqInt aContextOrProcessOrFrame);
+extern void printStackCallStackOf(sqInt aContextOrProcessOrFrame);
 extern void printStackReferencesTo(sqInt oop);
 extern void print(char *s);
 extern void setBreakMNUSelector(char *aString);

Modified: branches/Cog/nsspur64src/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspur64src/vm/gcc3x-cointerp.c	2016-01-22 01:28:22 UTC (rev 3564)
+++ branches/Cog/nsspur64src/vm/gcc3x-cointerp.c	2016-01-23 00:34:50 UTC (rev 3565)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1660 uuid: 372f5635-366a-462d-8979-ae86dee05577
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1662 uuid: 686f2648-1716-445e-8440-ec23d22489a5
    from
-	CoInterpreter VMMaker.oscog-eem.1660 uuid: 372f5635-366a-462d-8979-ae86dee05577
+	CoInterpreter VMMaker.oscog-eem.1662 uuid: 686f2648-1716-445e-8440-ec23d22489a5
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1660 uuid: 372f5635-366a-462d-8979-ae86dee05577 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1662 uuid: 686f2648-1716-445e-8440-ec23d22489a5 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -482,9 +482,9 @@
 extern sqInt ceReturnToInterpreter(sqInt anOop);
 extern void ceSelfSendreceiver(sqInt cacheAddress, sqInt methodReceiver);
 extern sqInt ceSendAborttonumArgs(sqInt selector, sqInt rcvr, sqInt numArgs);
-extern sqInt ceSendFromInLineCacheMiss(CogMethod *cogMethodOrPIC);
+extern void ceSendFromInLineCacheMiss(CogMethod *cogMethodOrPIC);
 extern sqInt ceSendMustBeBoolean(sqInt anObject);
-extern sqInt ceSendsupertonumArgs(sqInt selector, sqInt superNormalBar, sqInt rcvr, sqInt numArgs);
+extern void ceSendsupertonumArgs(sqInt selector, sqInt superNormalBar, sqInt rcvr, sqInt numArgs);
 extern void ceStackOverflow(sqInt contextSwitchIfNotNil);
 extern void ceTraceBlockActivation(void);
 extern void ceTraceLinkedSend(sqInt theReceiver);
@@ -530,7 +530,7 @@
 extern sqInt getCurrentBytecode(void);
 extern char * getFramePointer(void);
 static sqInt NoDbgRegParms handleForwardedSendFaultForReceiverstackDelta(sqInt forwardedReceiver, sqInt stackDelta);
-static sqInt NoDbgRegParms handleMNUInMachineCodeToclassForMessage(sqInt selectorIndex, sqInt rcvr, sqInt classForMessage);
+static void NoDbgRegParms handleMNUInMachineCodeToclassForMessage(sqInt selectorIndex, sqInt rcvr, sqInt classForMessage);
 static sqInt NoDbgRegParms iframeIsBlockActivation(char *theFP);
 static sqInt NoDbgRegParms iframeReceiver(char *theFP);
 static sqInt NoDbgRegParms iframeSavedIP(char *theFP);
@@ -587,7 +587,7 @@
 extern sqInt primitivePropertyFlags(sqInt primIndex);
 extern void * primTraceLogAddress(void);
 extern usqInt primTraceLogIndexAddress(void);
-extern sqInt printCogMethod(CogMethod *cogMethod);
+extern void printCogMethod(CogMethod *cogMethod);
 static void NoDbgRegParms printFrameFlagsForFP(char *theFP);
 static void NoDbgRegParms printFrameMethodFor(char *theFP);
 static void NoDbgRegParms printFrameThingatextraString(char *name, char *address, char *extraStringOrNil);
@@ -878,7 +878,7 @@
 extern void ensureNoForwardedLiteralsIn(sqInt aMethodObj);
 extern usqInt freeStartAddress(void);
 extern usqInt getScavengeThreshold(void);
-static sqInt NoDbgRegParms headerWhileForwardingOf(sqInt aCompiledMethodObjOop);
+static sqLong NoDbgRegParms headerWhileForwardingOf(sqInt aCompiledMethodObjOop);
 extern sqInt isForwardedClassIndex(sqInt maybeClassIndex);
 extern sqInt isImmediateClass(sqInt classObj);
 extern sqInt isReallyYoungObject(sqInt objOop);
@@ -1127,8 +1127,8 @@
 static sqInt NoDbgRegParms isValidFreeObject(sqInt objOop);
 static sqInt NoDbgRegParms isValidObjStackAt(sqInt objStackRootIndex);
 static sqInt NoDbgRegParms isValidObjStackPagemyIndex(sqInt objStackPage, sqInt myx);
-static sqInt NoDbgRegParms isValidObjStackPagemyIndexfirstPage(sqInt objStackPage, sqInt myx, sqInt isFirstPage);
-static sqInt NoDbgRegParms isValidObjStack(sqInt objStack);
+static void NoDbgRegParms isValidObjStackPagemyIndexfirstPage(sqInt objStackPage, sqInt myx, sqInt isFirstPage);
+static void NoDbgRegParms isValidObjStack(sqInt objStack);
 static sqInt NoDbgRegParms isWeakFormat(sqInt format);
 static sqInt NoDbgRegParms isWeakNonImm(sqInt objOop);
 extern sqInt isWeak(sqInt oop);
@@ -1199,7 +1199,7 @@
 extern void printFreeChunk(sqInt freeChunk);
 static void NoDbgRegParms printFreeChunkprintAsTreeNode(sqInt freeChunk, sqInt printAsTreeNode);
 extern void printFreeListHeads(void);
-extern sqInt printFreeList(sqInt chunkOrIndex);
+extern void printFreeList(sqInt chunkOrIndex);
 extern void printFreeTree(void);
 static void NoDbgRegParms printFreeTreeChunk(sqInt chunkOrZero);
 extern void printHeaderOf(sqInt objOop);
@@ -1346,8 +1346,8 @@
 static sqInt NoDbgRegParms findClassContainingMethodstartingAt(sqInt meth, sqInt classObj);
 extern sqInt findClassOfMethodforReceiver(sqInt meth, sqInt rcvr);
 static char * NoDbgRegParms findFrameAboveinPage(char *theFP, StackPage *thePage);
-static sqInt NoDbgRegParms findHomeForContext(sqInt aContext);
-static sqInt NoDbgRegParms findMethodWithPrimitiveFromContextUpToContext(sqInt primitive, sqInt senderContext, sqInt homeContext);
+static void NoDbgRegParms findHomeForContext(sqInt aContext);
+static void NoDbgRegParms findMethodWithPrimitiveFromContextUpToContext(sqInt primitive, sqInt senderContext, sqInt homeContext);
 extern sqInt findSelectorOfMethod(sqInt methArg);
 static char * NoDbgRegParms findSPOfon(char *theFP, StackPage *thePage);
 static sqInt NoDbgRegParms findUnwindThroughContext(sqInt homeContext);
@@ -1402,7 +1402,7 @@
 extern sqInt isKindOfClass(sqInt oop, sqInt aClass);
 extern sqInt isKindOf(sqInt oop, char *className);
 extern sqInt isMemberOf(sqInt oop, char *className);
-static sqInt NoDbgRegParms lengthOfNameOfClass(sqInt classOop);
+static void NoDbgRegParms lengthOfNameOfClass(sqInt classOop);
 extern sqInt literalofMethod(sqInt offset, sqInt methodPointer);
 extern sqInt loadBitBltFrom(sqInt bb);
 extern void loadInitialContext(void);
@@ -1410,7 +1410,7 @@
 extern sqInt longStoreBytecodeForHeader(sqInt methodHeader);
 static sqInt NoDbgRegParms lookupInMethodCacheSelclassTag(sqInt selector, sqInt classTag);
 static sqInt NoDbgRegParms lookupLexicalfromrule(sqInt selector, sqInt mixin, sqInt rule);
-static sqInt NoDbgRegParms lookupMethodInClass(sqInt class);
+static void NoDbgRegParms lookupMethodInClass(sqInt class);
 static sqInt lookupMNU(void);
 static sqInt NoDbgRegParms lookupMNUInClass(sqInt class);
 static sqInt NoDbgRegParms lookupOrdinaryNoMNUEtcInClass(sqInt class);
@@ -1456,7 +1456,7 @@
 extern void printAllStacks(void);
 extern void printCallStack(void);
 static sqInt NoDbgRegParms printCallStackFP(char *theFP);
-extern sqInt printCallStackOf(sqInt aContextOrProcessOrFrame);
+extern void printCallStackOf(sqInt aContextOrProcessOrFrame);
 static sqInt NoDbgRegParms printCallStackOfcurrentFP(sqInt aContext, char *currFP);
 extern void printChar(sqInt aByte);
 static sqInt NoDbgRegParms printContextCallStackOf(sqInt aContext);
@@ -1481,7 +1481,7 @@
 extern void printOop(sqInt oop);
 extern void printProcessStack(sqInt aProcess);
 extern sqInt printProcsOnList(sqInt procList);
-extern sqInt printStackCallStackOf(sqInt aContextOrProcessOrFrame);
+extern void printStackCallStackOf(sqInt aContextOrProcessOrFrame);
 extern void printStackPageList(void);
 extern void printStackPageListInUse(void);
 extern void printStackPages(void);
@@ -2439,7 +2439,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1660";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1662";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -18268,7 +18268,7 @@
 /*	self printStringOf: selector */
 
 	/* CoInterpreter>>#ceSendFromInLineCacheMiss: */
-sqInt
+void
 ceSendFromInLineCacheMiss(CogMethod *cogMethodOrPIC)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt classObj;
@@ -18323,11 +18323,13 @@
 	else {
 		if (isOopForwarded((cogMethodOrPIC->selector))) {
 			handleForwardedSelectorFaultFor((cogMethodOrPIC->selector));
-			return ceSendFromInLineCacheMiss(cogMethodOrPIC);
+			ceSendFromInLineCacheMiss(cogMethodOrPIC);
+			return;
 		}
 		if (classTag == (isForwardedObjectClassIndexPun())) {
 			handleForwardedSendFaultForReceiverstackDelta(rcvr, 1);
-			return ceSendFromInLineCacheMiss(cogMethodOrPIC);
+			ceSendFromInLineCacheMiss(cogMethodOrPIC);
+			return;
 		}
 		GIV(messageSelector) = (cogMethodOrPIC->selector);
 		/* begin classAtIndex: */
@@ -18360,7 +18362,8 @@
 		executeNewMethod();
 		assert(0);
 	}
-	return interpretMethodFromMachineCode();
+	interpretMethodFromMachineCode();
+	return;
 }
 
 	/* CoInterpreter>>#ceSendMustBeBoolean: */
@@ -18403,7 +18406,7 @@
 	cogged or not. */
 
 	/* CoInterpreter>>#ceSend:super:to:numArgs: */
-sqInt
+void
 ceSendsupertonumArgs(sqInt selector, sqInt superNormalBar, sqInt rcvr, sqInt numArgs)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt classObj;
@@ -18490,11 +18493,13 @@
 	else {
 		if (((selector & (tagMask())) == 0)
 		 && (((longAt(selector)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) {
-			return ceSendsupertonumArgs(handleForwardedSelectorFaultFor(selector), superNormalBar, rcvr, numArgs);
+			ceSendsupertonumArgs(handleForwardedSelectorFaultFor(selector), superNormalBar, rcvr, numArgs);
+			return;
 		}
 		if (classTag == (isForwardedObjectClassIndexPun())) {
 			assert(superNormalBar == 0);
-			return ceSendsupertonumArgs(selector, superNormalBar, handleForwardedSendFaultForReceiverstackDelta(rcvr, 1), numArgs);
+			ceSendsupertonumArgs(selector, superNormalBar, handleForwardedSendFaultForReceiverstackDelta(rcvr, 1), numArgs);
+			return;
 		}
 		GIV(messageSelector) = selector;
 		/* begin classAtIndex: */
@@ -18566,7 +18571,8 @@
 	top1 = longAt(GIV(stackPointer));
 	GIV(stackPointer) += BytesPerWord;
 	GIV(instructionPointer) = top1;
-	return interpretMethodFromMachineCode();
+	interpretMethodFromMachineCode();
+	return;
 }
 
 
@@ -18703,7 +18709,7 @@
 static sqInt
 checkForAndFollowForwardedPrimitiveState(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt accessorDepth;
+    signed char accessorDepth;
     sqInt firstBytecode;
     sqInt found;
     sqInt found1;
@@ -20262,7 +20268,7 @@
 	method. messageSelector is an implicit argument (yuck). */
 
 	/* CoInterpreter>>#handleMNU:InMachineCodeTo:classForMessage: */
-static sqInt NoDbgRegParms
+static void NoDbgRegParms
 handleMNUInMachineCodeToclassForMessage(sqInt selectorIndex, sqInt rcvr, sqInt classForMessage)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt classForThisMessage;
@@ -20311,7 +20317,8 @@
 			/* begin push: */
 			longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
 			GIV(stackPointer) = sp;
-			return handleMNUInMachineCodeToclassForMessage(errSelIdx, rcvr, classForThisMessage);
+			handleMNUInMachineCodeToclassForMessage(errSelIdx, rcvr, classForThisMessage);
+			return;
 		}
 	}
 	if (((GIV(newMethod) & (tagMask())) == 0)
@@ -20323,7 +20330,8 @@
 		executeCogMethodfromUnlinkedSendWithReceiver(cogMethodOf(GIV(newMethod)), rcvr);
 		assert(0);
 	}
-	return interpretMethodFromMachineCode();
+	interpretMethodFromMachineCode();
+	return;
 }
 
 
@@ -24770,7 +24778,7 @@
 }
 
 	/* CoInterpreter>>#printCogMethod: */
-sqInt
+void
 printCogMethod(CogMethod *cogMethod)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt address;
@@ -43312,7 +43320,7 @@
 	(which shouldn't happen with Spur). */
 
 	/* Spur64BitCoMemoryManager>>#headerWhileForwardingOf: */
-static sqInt NoDbgRegParms
+static sqLong NoDbgRegParms
 headerWhileForwardingOf(sqInt aCompiledMethodObjOop)
 {
 	assert(!(isForwarded(aCompiledMethodObjOop)));
@@ -54154,7 +54162,7 @@
 /*	Answer if the obj stack at stackRootIndex is valid. */
 
 	/* SpurMemoryManager>>#isValidObjStackPage:myIndex:firstPage: */
-static sqInt NoDbgRegParms
+static void NoDbgRegParms
 isValidObjStackPagemyIndexfirstPage(sqInt objStackPage, sqInt myx, sqInt isFirstPage)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt freeOrNextPage;
@@ -54163,33 +54171,33 @@
     sqInt page;
 
 	if (!(isValidObjStackPagemyIndex(objStackPage, myx))) {
-		return 0;
+		return;
 	}
 	freeOrNextPage = longAt((objStackPage + BaseHeaderSize) + (((long)ObjStackFreex) << (shiftForWord())));
 	while (freeOrNextPage != 0) {
 		if (!isFirstPage) {
 			GIV(objStackInvalidBecause) = "free page on other than first page";
 			GIV(invalidObjStackPage) = objStackPage;
-			return 0;
+			return;
 		}
 		if (freeOrNextPage == (longAt((objStackPage + BaseHeaderSize) + (((long)ObjStackNextx) << (shiftForWord()))))) {

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list