Revision: 2847 Author: eliot Date: 2014-01-16 10:49:26 -0800 (Thu, 16 Jan 2014) Log Message: ----------- CogVM source as per VMMaker.oscog-eem.585 Fix become on compiled methods in Spur. followForwardedMethods must use isForwarded:/followForwarded: not shouldRemapObj: because the latter will confuse methods in newSpace for forwarded methods. Rename the interpreter followForwardedMethods' to followForwardedMethodsInMethodZone. Add CogMethodZone>>printCogYoungReferrers. Better svn:ignore pattern for . to ignore spur linux installs. Modified Paths: -------------- branches/Cog/nscogsrc/vm/cogit.c branches/Cog/nscogsrc/vm/cogit.h branches/Cog/nscogsrc/vm/cogmethod.h branches/Cog/spursrc/vm/cogit.c branches/Cog/spursrc/vm/cogit.h branches/Cog/spursrc/vm/cointerp.c branches/Cog/spursrc/vm/cointerp.h branches/Cog/spursrc/vm/gcc3x-cointerp.c branches/Cog/spurstacksrc/vm/gcc3x-interp.c branches/Cog/spurstacksrc/vm/interp.c branches/Cog/spurstacksrc/vm/interp.h branches/Cog/spurstacksrc/vm/vmCallback.h branches/Cog/src/vm/cogit.c branches/Cog/src/vm/cogit.h branches/Cog/src/vm/cogmethod.h branches/Cog/src/vm/cointerpmt.c branches/Cog/src/vm/cointerpmt.h branches/Cog/src/vm/gcc3x-cointerpmt.c branches/Cog/stacksrc/vm/gcc3x-interp.c branches/Cog/stacksrc/vm/interp.c branches/Cog/stacksrc/vm/interp.h branches/Cog/stacksrc/vm/vmCallback.h Property Changed: ---------------- branches/Cog/ branches/Cog/platforms/Cross/vm/sqSCCSVersion.h Property changes on: branches/Cog ___________________________________________________________________ Modified: svn:ignore - ChangeHistory MVALOG README.* *.app *.dmg *.msi *.tgz *.zip cogastlinux cogastlinuxpt cogdbglinux cogdbglinuxpt coglinux coglinuxpt cogmtlinux cogwin cogmtwin nsvmlinux nsvmlinuxpt nsvmlinuxast nsvmlinuxastpt nsvmlinuxdbg nsvmlinuxdbgpt nsvmwin + ChangeHistory MVALOG README.* *.app *.dmg *.msi *.tgz *.zip cog*linux* cog*win* nsvm*linux* nsvm*win* Modified: branches/Cog/nscogsrc/vm/cogit.c =================================================================== --- branches/Cog/nscogsrc/vm/cogit.c 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/nscogsrc/vm/cogit.c 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 + CCodeGenerator VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff from - StackToRegisterMappingCogit VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 + StackToRegisterMappingCogit VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff " __DATE__ ; char *__cogitBuildInfo = __buildInfo; @@ -979,6 +979,7 @@ void printCogMethodsWithMethod(sqInt methodOop); void printCogMethodsWithPrimitive(sqInt primIdx); void printCogMethodsWithSelector(sqInt selectorOop); +void printCogYoungReferrers(void); void printTrampolineTable(void); static sqInt processorHasDivQuoRem(sqInt ignoredPrimIndex); static sqInt processorHasDoublePrecisionFloatingPointSupport(sqInt ignoredPrimIndex); @@ -4270,8 +4271,9 @@ /* Compile the abstract instructions for a full closed PIC used to initialize - closedPICSize - */ + closedPICSize. The loads into SendNumArgsReg are those for optional method + objects which may be + used in MNU cases. */ static sqInt compileClosedPICPrototype(void) @@ -15417,11 +15419,7 @@ ssPop(2); resultReg = availableRegisterOrNil(); if (!(resultReg)) { - if (((numRegArgs()) > 1) - && ((!needsFrame) - && (methodOrBlockNumArgs == 2))) { - halt(); - } + ; ssAllocateRequiredReg((resultReg = Arg1Reg)); } ssPush(2); @@ -16999,10 +16997,7 @@ if ((methodOrBlockNumArgs <= (numRegArgs())) && (methodOrBlockNumArgs > 0)) { regsSet = regsSet | (registerMaskFor(Arg0Reg)); - if (((numRegArgs()) > 1) - && (methodOrBlockNumArgs > 1)) { - regsSet = regsSet | (registerMaskFor(Arg1Reg)); - } + } } for (i = (((simSpillBase < 0) ? 0 : simSpillBase)); i <= simStackPtr; i += 1) { @@ -18066,19 +18061,10 @@ } else { if (numArgs > 0) { - if (((numRegArgs()) > 1) - && (numArgs > 1)) { - ssAllocateRequiredRegupThrough(Arg0Reg, simStackPtr - 2); - ssAllocateRequiredRegupThrough(Arg1Reg, simStackPtr - 1); - } - else { - ssAllocateRequiredRegupThrough(Arg0Reg, simStackPtr - 1); - } + ssAllocateRequiredRegupThrough(Arg0Reg, simStackPtr - 1); + } - if (((numRegArgs()) > 1) - && (numArgs > 1)) { - popToReg(simStackAt(simStackPtr), Arg1Reg); - } + if (numArgs > 0) { popToReg(simStackAt((simStackPtr - numArgs) + 1), Arg0Reg); } @@ -18130,19 +18116,10 @@ Also check for any arg registers in use by other args. */ if (numArgs > 0) { - if (((numRegArgs()) > 1) - && (numArgs > 1)) { - ssAllocateRequiredRegupThrough(Arg0Reg, simStackPtr - 2); - ssAllocateRequiredRegupThrough(Arg1Reg, simStackPtr - 1); - } - else { - ssAllocateRequiredRegupThrough(Arg0Reg, simStackPtr - 1); - } + ssAllocateRequiredRegupThrough(Arg0Reg, simStackPtr - 1); + } - if (((numRegArgs()) > 1) - && (numArgs > 1)) { - popToReg(simStackAt(simStackPtr), Arg1Reg); - } + if (numArgs > 0) { popToReg(simStackAt((simStackPtr - numArgs) + 1), Arg0Reg); } @@ -18972,6 +18949,23 @@ } void +printCogYoungReferrers(void) +{ + CogMethod *cogMethod; + sqInt pointer; + + pointer = youngReferrers; + while (pointer < limitAddress) { + cogMethod = ((CogMethod *) (longAt(pointer))); + if (!((cogMethod->cmRefersToYoung))) { + print("* "); + } + printCogMethod(cogMethod); + pointer += BytesPerWord; + } +} + +void printTrampolineTable(void) { sqInt i; @@ -21078,7 +21072,7 @@ } -/* Update a potential object reference form a closed PIC. +/* Update a potential object reference from a closed PIC. This may be an object reference, an inline cache tag or null. Answer if the updated literal is young. */ Modified: branches/Cog/nscogsrc/vm/cogit.h =================================================================== --- branches/Cog/nscogsrc/vm/cogit.h 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/nscogsrc/vm/cogit.h 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 + CCodeGenerator VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ @@ -60,6 +60,7 @@ void printCogMethodsWithMethod(sqInt methodOop); void printCogMethodsWithPrimitive(sqInt primIdx); void printCogMethodsWithSelector(sqInt selectorOop); +void printCogYoungReferrers(void); void printTrampolineTable(void); void recordCallOffsetInof(CogMethod *cogMethod, void *callLabelArg); sqInt recordPrimTraceFunc(void); Modified: branches/Cog/nscogsrc/vm/cogmethod.h =================================================================== --- branches/Cog/nscogsrc/vm/cogmethod.h 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/nscogsrc/vm/cogmethod.h 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 + CCodeGenerator VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ typedef struct { Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h ___________________________________________________________________ Modified: checkindate - Mon Jan 13 18:13:36 PST 2014 + Thu Jan 16 10:48:19 PST 2014 Modified: branches/Cog/spursrc/vm/cogit.c =================================================================== --- branches/Cog/spursrc/vm/cogit.c 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/spursrc/vm/cogit.c 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 + CCodeGenerator * VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa from - StackToRegisterMappingCogit VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 + StackToRegisterMappingCogit * VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit * VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa " __DATE__ ; char *__cogitBuildInfo = __buildInfo; @@ -550,6 +550,8 @@ CogBlockMethod * findMethodForStartBcpcinHomeMethod(sqInt startbcpc, CogMethod *cogMethod); void followForwardedLiteralsIn(CogMethod *cogMethod); void followForwardedMethods(void); +static sqInt followMaybeObjRefAt(sqInt mcpc); +static sqInt followMethodReferencesInClosedPIC(CogMethod *cPIC); static sqInt frameOffsetOfTemporary(sqInt index); static void freeMethod(CogMethod *cogMethod); static void freeOlderMethodsForCompaction(void); @@ -937,6 +939,7 @@ void printCogMethodsWithMethod(sqInt methodOop); void printCogMethodsWithPrimitive(sqInt primIdx); void printCogMethodsWithSelector(sqInt selectorOop); +void printCogYoungReferrers(void); void printTrampolineTable(void); static sqInt processorHasDivQuoRem(sqInt ignoredPrimIndex); static sqInt processorHasDoublePrecisionFloatingPointSupport(sqInt ignoredPrimIndex); @@ -3823,8 +3826,9 @@ /* Compile the abstract instructions for a full closed PIC used to initialize - closedPICSize - */ + closedPICSize. The loads into SendNumArgsReg are those for optional method + objects which may be + used in MNU cases. */ static sqInt compileClosedPICPrototype(void) @@ -9708,8 +9712,8 @@ cogMethod = ((CogMethod *) methodZoneBase); while (cogMethod < (limitZony())) { if (((cogMethod->cmType)) == CMMethod) { - if (shouldRemapOop((cogMethod->methodObject))) { - (cogMethod->methodObject = remapObj((cogMethod->methodObject))); + if (isForwarded((cogMethod->methodObject))) { + (cogMethod->methodObject = followForwarded((cogMethod->methodObject))); if ((!((cogMethod->cmRefersToYoung))) && (isYoungObject((cogMethod->methodObject)))) { addToYoungReferrers(cogMethod); @@ -9717,7 +9721,7 @@ } } if (((cogMethod->cmType)) == CMClosedPIC) { - if (mapObjectReferencesInClosedPIC(cogMethod)) { + if (followMethodReferencesInClosedPIC(cogMethod)) { freedPIC = 1; freeMethod(cogMethod); } @@ -9730,7 +9734,55 @@ } } + +/* Follow a potential object reference from a closed PIC. + This may be a method reference or null. + Answer if the followed literal is young. */ + static sqInt +followMaybeObjRefAt(sqInt mcpc) +{ + sqInt object; + sqInt subject; + + object = literalBeforeFollowingAddress(backEnd, mcpc); + if (!(couldBeObject(object))) { + return 0; + } + if (!(isForwarded(object))) { + return isYoungObject(object); + } + subject = followForwarded(object); + storeLiteralbeforeFollowingAddress(backEnd, subject, mcpc); + codeModified = 1; + return isYoungObject(subject); +} + + +/* Remap all object references in the closed PIC. Answer if any references + are young. + Set codeModified if any modifications are made. */ + +static sqInt +followMethodReferencesInClosedPIC(CogMethod *cPIC) +{ + sqInt i; + sqInt pc; + sqInt refersToYoung; + + pc = (((sqInt)cPIC)) + firstCPICCaseOffset; + refersToYoung = followMaybeObjRefAt(pc - (jumpLongByteSize(backEnd))); + pc += cPICCaseSize; + for (i = 2; i <= ((cPIC->cPICNumCases)); i += 1) { + if (followMaybeObjRefAt(pc - (jumpLongConditionalByteSize(backEnd)))) { + refersToYoung = 1; + } + pc += cPICCaseSize; + } + return refersToYoung; +} + +static sqInt frameOffsetOfTemporary(sqInt index) { return (index < methodOrBlockNumArgs @@ -18550,6 +18602,23 @@ } void +printCogYoungReferrers(void) +{ + CogMethod *cogMethod; + sqInt pointer; + + pointer = youngReferrers; + while (pointer < limitAddress) { + cogMethod = ((CogMethod *) (longAt(pointer))); + if (!((cogMethod->cmRefersToYoung))) { + print("* "); + } + printCogMethod(cogMethod); + pointer += BytesPerWord; + } +} + +void printTrampolineTable(void) { sqInt i; @@ -20464,7 +20533,7 @@ } -/* Update a potential object reference form a closed PIC. +/* Update a potential object reference from a closed PIC. This may be an object reference, an inline cache tag or null. Answer if the updated literal is young. */ Modified: branches/Cog/spursrc/vm/cogit.h =================================================================== --- branches/Cog/spursrc/vm/cogit.h 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/spursrc/vm/cogit.h 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 + CCodeGenerator * VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa */ @@ -61,6 +61,7 @@ void printCogMethodsWithMethod(sqInt methodOop); void printCogMethodsWithPrimitive(sqInt primIdx); void printCogMethodsWithSelector(sqInt selectorOop); +void printCogYoungReferrers(void); void printTrampolineTable(void); void recordCallOffsetInof(CogMethod *cogMethod, void *callLabelArg); sqInt recordPrimTraceFunc(void); Modified: branches/Cog/spursrc/vm/cointerp.c =================================================================== --- branches/Cog/spursrc/vm/cointerp.c 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/spursrc/vm/cointerp.c 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa + CCodeGeneratorGlobalStructure * VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa from - CoInterpreter VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa + CoInterpreter * VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa " __DATE__ ; +static char __buildInfo[] = "CoInterpreter * VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -614,7 +614,7 @@ static void followForwardedFrameContentsstackPointer(char *theFP, char *theSP); static sqInt followForwardedInObjStackatIndex(sqInt objStack, sqInt objStackRootIndex); static sqInt followForwardedObjectFieldstoDepth(sqInt objOop, sqInt depth); -static sqInt followForwarded(sqInt objOop); +sqInt followForwarded(sqInt objOop); static void followForwardingPointersInStackZone(sqInt theBecomeEffectsFlags); static void followNecessaryForwardingInMethod(sqInt methodObj); sqInt forceInterruptCheck(void); @@ -2164,7 +2164,7 @@ /* 575 */ (void (*)(void))0, 0 }; usqInt heapBase; -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.584]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter * VMMaker.oscog-eem.584]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace; @@ -6374,7 +6374,6 @@ /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), longAt((rcvr1 + (BaseHeaderSize)) + (byte3 << 2))); } - null; goto l4; } if (opType == 3) { @@ -6384,7 +6383,6 @@ assert(GIV(method) == (iframeMethod(localFP))); object = longAt((GIV(method) + (BaseHeaderSize)) + ((byte3 + LiteralStart) << 2)); longAtPointerput((localSP -= BytesPerOop), object); - null; goto l4; } if (opType == 4) { @@ -6412,7 +6410,6 @@ /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), longAt((litVar1 + (BaseHeaderSize)) + (ValueIndex << 2))); - null; goto l4; } top = longAtPointer(localSP); @@ -12665,8 +12662,9 @@ GIV(methodCache)[i + MethodCacheMethod] = m; } } + /* begin followForwardedMethodsInMethodZone */ + followForwardedMethods(); } - followForwardedMethods(); /* begin followForwardingPointersInScheduler */ /* the GC follows pointers in the special objects array for us. */ @@ -23057,7 +23055,7 @@ - when accessing array first one has to follow a forwarding chain: &a -> &b -> c */ -static sqInt +sqInt followForwarded(sqInt objOop) { sqInt referent; Modified: branches/Cog/spursrc/vm/cointerp.h =================================================================== --- branches/Cog/spursrc/vm/cointerp.h 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/spursrc/vm/cointerp.h 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa + CCodeGeneratorGlobalStructure * VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa */ @@ -85,6 +85,7 @@ sqInt fixedFieldsFieldWidth(void); sqInt fixedFieldsOfClassFormatMask(void); sqInt flushExternalPrimitiveOf(sqInt methodObj); +sqInt followForwarded(sqInt objOop); sqInt formatMask(void); sqInt formatOfClass(sqInt classPointer); sqInt formatShift(void); Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/spursrc/vm/gcc3x-cointerp.c 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/spursrc/vm/gcc3x-cointerp.c 2014-01-16 18:49:26 UTC (rev 2847) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa + CCodeGeneratorGlobalStructure * VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa from - CoInterpreter VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa + CoInterpreter * VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa " __DATE__ ; +static char __buildInfo[] = "CoInterpreter * VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -617,7 +617,7 @@ static void followForwardedFrameContentsstackPointer(char *theFP, char *theSP); static sqInt followForwardedInObjStackatIndex(sqInt objStack, sqInt objStackRootIndex); static sqInt followForwardedObjectFieldstoDepth(sqInt objOop, sqInt depth); -static sqInt followForwarded(sqInt objOop); +sqInt followForwarded(sqInt objOop); static void followForwardingPointersInStackZone(sqInt theBecomeEffectsFlags); static void followNecessaryForwardingInMethod(sqInt methodObj); sqInt forceInterruptCheck(void); @@ -2167,7 +2167,7 @@ /* 575 */ (void (*)(void))0, 0 }; usqInt heapBase; -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.584]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter * VMMaker.oscog-eem.584]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace; @@ -6383,7 +6383,6 @@ /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), longAt((rcvr1 + (BaseHeaderSize)) + (byte3 << 2))); } - null; goto l4; } if (opType == 3) { @@ -6393,7 +6392,6 @@ assert(GIV(method) == (iframeMethod(localFP))); object = longAt((GIV(method) + (BaseHeaderSize)) + ((byte3 + LiteralStart) << 2)); longAtPointerput((localSP -= BytesPerOop), object); - null; goto l4; } if (opType == 4) { @@ -6421,7 +6419,6 @@ /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), longAt((litVar1 + (BaseHeaderSize)) + (ValueIndex << 2))); - null; goto l4; } top = longAtPointer(localSP); @@ -12674,8 +12671,9 @@ GIV(methodCache)[i + MethodCacheMethod] = m; } } + /* begin followForwardedMethodsInMethodZone */ + followForwardedMethods(); } - followForwardedMethods(); /* begin followForwardingPointersInScheduler */ /* the GC follows pointers in the special objects array for us. */ @@ -23066,7 +23064,7 @@ - when accessing array first one has to follow a forwarding chain: &a -> &b -> c */ -static sqInt +sqInt followForwarded(sqInt objOop) { sqInt referent; Modified: branches/Cog/spurstacksrc/vm/gcc3x-interp.c =================================================================== --- branches/Cog/spurstacksrc/vm/gcc3x-interp.c 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/spurstacksrc/vm/gcc3x-interp.c 2014-01-16 18:49:26 UTC (rev 2847) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff from - StackInterpreter VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa + StackInterpreter VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -513,7 +513,7 @@ static void followForwardedFrameContentsstackPointer(char *theFP, char *theSP); static sqInt followForwardedInObjStackatIndex(sqInt objStack, sqInt objStackRootIndex); static sqInt followForwardedObjectFieldstoDepth(sqInt objOop, sqInt depth); -static sqInt followForwarded(sqInt objOop); +sqInt followForwarded(sqInt objOop); static void followForwardingPointersInStackZone(sqInt theBecomeEffectsFlags); static void followNecessaryForwardingInMethod(sqInt methodObj); sqInt forceInterruptCheck(void); @@ -1957,7 +1957,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.584]"; +const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.585]"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -12871,8 +12871,8 @@ GIV(methodCache)[i + MethodCacheMethod] = m; } } + /* begin followForwardedMethodsInMethodZone */ } - /* begin followForwardedMethods */ /* begin followForwardingPointersInScheduler */ /* the GC follows pointers in the special objects array for us. */ @@ -20890,7 +20890,7 @@ - when accessing array first one has to follow a forwarding chain: &a -> &b -> c */ -static sqInt +sqInt followForwarded(sqInt objOop) { sqInt referent; Modified: branches/Cog/spurstacksrc/vm/interp.c =================================================================== --- branches/Cog/spurstacksrc/vm/interp.c 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/spurstacksrc/vm/interp.c 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff from - StackInterpreter VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa + StackInterpreter VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -510,7 +510,7 @@ static void followForwardedFrameContentsstackPointer(char *theFP, char *theSP); static sqInt followForwardedInObjStackatIndex(sqInt objStack, sqInt objStackRootIndex); static sqInt followForwardedObjectFieldstoDepth(sqInt objOop, sqInt depth); -static sqInt followForwarded(sqInt objOop); +sqInt followForwarded(sqInt objOop); static void followForwardingPointersInStackZone(sqInt theBecomeEffectsFlags); static void followNecessaryForwardingInMethod(sqInt methodObj); sqInt forceInterruptCheck(void); @@ -1954,7 +1954,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.584]"; +const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.585]"; volatile int sendTrace; sqInt suppressHeartbeatFlag; @@ -12862,8 +12862,8 @@ GIV(methodCache)[i + MethodCacheMethod] = m; } } + /* begin followForwardedMethodsInMethodZone */ } - /* begin followForwardedMethods */ /* begin followForwardingPointersInScheduler */ /* the GC follows pointers in the special objects array for us. */ @@ -20881,7 +20881,7 @@ - when accessing array first one has to follow a forwarding chain: &a -> &b -> c */ -static sqInt +sqInt followForwarded(sqInt objOop) { sqInt referent; Modified: branches/Cog/spurstacksrc/vm/interp.h =================================================================== --- branches/Cog/spurstacksrc/vm/interp.h 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/spurstacksrc/vm/interp.h 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ #define VM_PROXY_MAJOR 1 Modified: branches/Cog/spurstacksrc/vm/vmCallback.h =================================================================== --- branches/Cog/spurstacksrc/vm/vmCallback.h 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/spurstacksrc/vm/vmCallback.h 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.584 uuid: f8e3994b-6462-4df0-bc8e-c71034adf6aa + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ #define VM_CALLBACK_INC 1 Modified: branches/Cog/src/vm/cogit.c =================================================================== --- branches/Cog/src/vm/cogit.c 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/src/vm/cogit.c 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 + CCodeGenerator VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff from - StackToRegisterMappingCogit VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 + StackToRegisterMappingCogit VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff " __DATE__ ; char *__cogitBuildInfo = __buildInfo; @@ -932,6 +932,7 @@ void printCogMethodsWithMethod(sqInt methodOop); void printCogMethodsWithPrimitive(sqInt primIdx); void printCogMethodsWithSelector(sqInt selectorOop); +void printCogYoungReferrers(void); void printTrampolineTable(void); static sqInt processorHasDivQuoRem(sqInt ignoredPrimIndex); static sqInt processorHasDoublePrecisionFloatingPointSupport(sqInt ignoredPrimIndex); @@ -3824,8 +3825,9 @@ /* Compile the abstract instructions for a full closed PIC used to initialize - closedPICSize - */ + closedPICSize. The loads into SendNumArgsReg are those for optional method + objects which may be + used in MNU cases. */ static sqInt compileClosedPICPrototype(void) @@ -14229,11 +14231,7 @@ ssPop(2); resultReg = availableRegisterOrNil(); if (!(resultReg)) { - if (((numRegArgs()) > 1) - && ((!needsFrame) - && (methodOrBlockNumArgs == 2))) { - halt(); - } + ; ssAllocateRequiredReg((resultReg = Arg1Reg)); } ssPush(2); @@ -15794,10 +15792,7 @@ if ((methodOrBlockNumArgs <= (numRegArgs())) && (methodOrBlockNumArgs > 0)) { regsSet = regsSet | (registerMaskFor(Arg0Reg)); - if (((numRegArgs()) > 1) - && (methodOrBlockNumArgs > 1)) { - regsSet = regsSet | (registerMaskFor(Arg1Reg)); - } + } } for (i = (((simSpillBase < 0) ? 0 : simSpillBase)); i <= simStackPtr; i += 1) { @@ -16699,19 +16694,10 @@ Also check for any arg registers in use by other args. */ if (numArgs > 0) { - if (((numRegArgs()) > 1) - && (numArgs > 1)) { - ssAllocateRequiredRegupThrough(Arg0Reg, simStackPtr - 2); - ssAllocateRequiredRegupThrough(Arg1Reg, simStackPtr - 1); - } - else { - ssAllocateRequiredRegupThrough(Arg0Reg, simStackPtr - 1); - } + ssAllocateRequiredRegupThrough(Arg0Reg, simStackPtr - 1); + } - if (((numRegArgs()) > 1) - && (numArgs > 1)) { - popToReg(simStackAt(simStackPtr), Arg1Reg); - } + if (numArgs > 0) { popToReg(simStackAt((simStackPtr - numArgs) + 1), Arg0Reg); } @@ -17541,6 +17527,23 @@ } void +printCogYoungReferrers(void) +{ + CogMethod *cogMethod; + sqInt pointer; + + pointer = youngReferrers; + while (pointer < limitAddress) { + cogMethod = ((CogMethod *) (longAt(pointer))); + if (!((cogMethod->cmRefersToYoung))) { + print("* "); + } + printCogMethod(cogMethod); + pointer += BytesPerWord; + } +} + +void printTrampolineTable(void) { sqInt i; @@ -19451,7 +19454,7 @@ } -/* Update a potential object reference form a closed PIC. +/* Update a potential object reference from a closed PIC. This may be an object reference, an inline cache tag or null. Answer if the updated literal is young. */ Modified: branches/Cog/src/vm/cogit.h =================================================================== --- branches/Cog/src/vm/cogit.h 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/src/vm/cogit.h 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 + CCodeGenerator VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ @@ -60,6 +60,7 @@ void printCogMethodsWithMethod(sqInt methodOop); void printCogMethodsWithPrimitive(sqInt primIdx); void printCogMethodsWithSelector(sqInt selectorOop); +void printCogYoungReferrers(void); void printTrampolineTable(void); void recordCallOffsetInof(CogMethod *cogMethod, void *callLabelArg); sqInt recordPrimTraceFunc(void); Modified: branches/Cog/src/vm/cogmethod.h =================================================================== --- branches/Cog/src/vm/cogmethod.h 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/src/vm/cogmethod.h 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.569 uuid: 84f8b41f-92bf-41d2-9927-6c7e3d3e4272 + CCodeGenerator VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ typedef struct { Modified: branches/Cog/src/vm/cointerpmt.c =================================================================== --- branches/Cog/src/vm/cointerpmt.c 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/src/vm/cointerpmt.c 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.581 uuid: 926531fd-20be-42b4-9332-015b90e6734f + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff from - CoInterpreterMT VMMaker.oscog-eem.581 uuid: 926531fd-20be-42b4-9332-015b90e6734f + CoInterpreterMT VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ -static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.581 uuid: 926531fd-20be-42b4-9332-015b90e6734f " __DATE__ ; +static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1201,7 +1201,7 @@ static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void)); static sqInt roomToPushNArgs(sqInt n); static void runLeakCheckerForFullGC(sqInt fullGCFlag); -static usqInt safeObjectAfter(sqInt oop); +static sqInt safeObjectAfter(sqInt oop); static sqInt safePrintStringOf(sqInt oop); usqInt scavengeThresholdAddress(void); EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext); @@ -2117,7 +2117,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.581]"; +const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.585]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace; sqInt willNotThreadWarnCount; @@ -19881,15 +19881,17 @@ sqInt header1; sqInt header2; sqInt header3; + sqInt header4; usqInt lastWord; sqInt newFreeChunk; sqInt newOop; - usqInt next; + sqInt next; sqInt oop; sqInt realHeader; sqInt sz; sqInt sz1; sqInt sz2; + sqInt sz3; sqInt target; usqInt w; @@ -19900,7 +19902,21 @@ /* begin objectAfterWhileForwarding: */ header2 = longAt(oop); if ((header2 & MarkBit) == 0) { - next = ((sqInt) (objectAfter(oop))); + /* begin objectAfter: */ + if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) { + error("no objects after the end of memory"); + } + if (((longAt(oop)) & TypeMask) == HeaderTypeFree) { + sz2 = (longAt(oop)) & AllButTypeMask; + } + else { + /* begin sizeBitsOf: */ + header3 = longAt(oop); + sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass + ? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask + : header3 & SizeMask); + } + next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]); goto l1; } fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1; @@ -19915,7 +19931,7 @@ else { sz1 = realHeader & SizeMask; } - next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]))); + next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]); l1: /* end objectAfterWhileForwarding: */; if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { @@ -19969,18 +19985,18 @@ } /* begin safeObjectAfter: */ if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) { - sz2 = (longAt(newFreeChunk)) & AllButTypeMask; + sz3 = (longAt(newFreeChunk)) & AllButTypeMask; } else { /* begin sizeBitsOf: */ - header3 = longAt(newFreeChunk); - sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass + header4 = longAt(newFreeChunk); + sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass ? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask - : header3 & SizeMask); + : header4 & SizeMask); } - next = ((newFreeChunk + sz2) >= GIV(freeStart) + next = ((newFreeChunk + sz3) >= GIV(freeStart) ? GIV(freeStart) - : (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask])); + : (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask])); assert((next == GIV(freeStart)) || (next == (oopFromChunk(GIV(compEnd))))); if (next == GIV(freeStart)) { @@ -46758,7 +46774,7 @@ given object or free chunk in memory. Return freeStart when enumeration is complete. This is for assertion checking only. */ -static usqInt +static sqInt safeObjectAfter(sqInt oop) { DECL_MAYBE_SQ_GLOBAL_STRUCT sqInt header; Modified: branches/Cog/src/vm/cointerpmt.h =================================================================== --- branches/Cog/src/vm/cointerpmt.h 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/src/vm/cointerpmt.h 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.581 uuid: 926531fd-20be-42b4-9332-015b90e6734f + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ Modified: branches/Cog/src/vm/gcc3x-cointerpmt.c =================================================================== --- branches/Cog/src/vm/gcc3x-cointerpmt.c 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/src/vm/gcc3x-cointerpmt.c 2014-01-16 18:49:26 UTC (rev 2847) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.581 uuid: 926531fd-20be-42b4-9332-015b90e6734f + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff from - CoInterpreterMT VMMaker.oscog-eem.581 uuid: 926531fd-20be-42b4-9332-015b90e6734f + CoInterpreterMT VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ -static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.581 uuid: 926531fd-20be-42b4-9332-015b90e6734f " __DATE__ ; +static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1204,7 +1204,7 @@ static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void)); static sqInt roomToPushNArgs(sqInt n); static void runLeakCheckerForFullGC(sqInt fullGCFlag); -static usqInt safeObjectAfter(sqInt oop); +static sqInt safeObjectAfter(sqInt oop); static sqInt safePrintStringOf(sqInt oop); usqInt scavengeThresholdAddress(void); EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext); @@ -2120,7 +2120,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.581]"; +const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.585]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace; sqInt willNotThreadWarnCount; @@ -19890,15 +19890,17 @@ sqInt header1; sqInt header2; sqInt header3; + sqInt header4; usqInt lastWord; sqInt newFreeChunk; sqInt newOop; - usqInt next; + sqInt next; sqInt oop; sqInt realHeader; sqInt sz; sqInt sz1; sqInt sz2; + sqInt sz3; sqInt target; usqInt w; @@ -19909,7 +19911,21 @@ /* begin objectAfterWhileForwarding: */ header2 = longAt(oop); if ((header2 & MarkBit) == 0) { - next = ((sqInt) (objectAfter(oop))); + /* begin objectAfter: */ + if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) { + error("no objects after the end of memory"); + } + if (((longAt(oop)) & TypeMask) == HeaderTypeFree) { + sz2 = (longAt(oop)) & AllButTypeMask; + } + else { + /* begin sizeBitsOf: */ + header3 = longAt(oop); + sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass + ? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask + : header3 & SizeMask); + } + next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]); goto l1; } fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1; @@ -19924,7 +19940,7 @@ else { sz1 = realHeader & SizeMask; } - next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]))); + next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]); l1: /* end objectAfterWhileForwarding: */; if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) { @@ -19978,18 +19994,18 @@ } /* begin safeObjectAfter: */ if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) { - sz2 = (longAt(newFreeChunk)) & AllButTypeMask; + sz3 = (longAt(newFreeChunk)) & AllButTypeMask; } else { /* begin sizeBitsOf: */ - header3 = longAt(newFreeChunk); - sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass + header4 = longAt(newFreeChunk); + sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass ? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask - : header3 & SizeMask); + : header4 & SizeMask); } - next = ((newFreeChunk + sz2) >= GIV(freeStart) + next = ((newFreeChunk + sz3) >= GIV(freeStart) ? GIV(freeStart) - : (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask])); + : (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask])); assert((next == GIV(freeStart)) || (next == (oopFromChunk(GIV(compEnd))))); if (next == GIV(freeStart)) { @@ -46767,7 +46783,7 @@ given object or free chunk in memory. Return freeStart when enumeration is complete. This is for assertion checking only. */ -static usqInt +static sqInt safeObjectAfter(sqInt oop) { DECL_MAYBE_SQ_GLOBAL_STRUCT sqInt header; Modified: branches/Cog/stacksrc/vm/gcc3x-interp.c =================================================================== --- branches/Cog/stacksrc/vm/gcc3x-interp.c 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/stacksrc/vm/gcc3x-interp.c 2014-01-16 18:49:26 UTC (rev 2847) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.577 uuid: 8788f091-6817-480e-9bda-13ae360eeeb7 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff from - StackInterpreter VMMaker.oscog-eem.577 uuid: 8788f091-6817-480e-9bda-13ae360eeeb7 + StackInterpreter VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.577 uuid: 8788f091-6817-480e-9bda-13ae360eeeb7 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1808,7 +1808,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.577]"; +const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.585]"; volatile int sendTrace; sqInt suppressHeartbeatFlag; Modified: branches/Cog/stacksrc/vm/interp.c =================================================================== --- branches/Cog/stacksrc/vm/interp.c 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/stacksrc/vm/interp.c 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.577 uuid: 8788f091-6817-480e-9bda-13ae360eeeb7 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff from - StackInterpreter VMMaker.oscog-eem.577 uuid: 8788f091-6817-480e-9bda-13ae360eeeb7 + StackInterpreter VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.577 uuid: 8788f091-6817-480e-9bda-13ae360eeeb7 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1805,7 +1805,7 @@ 0 }; char * breakSelector; sqInt breakSelectorLength = -1; -const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.577]"; +const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.585]"; volatile int sendTrace; sqInt suppressHeartbeatFlag; Modified: branches/Cog/stacksrc/vm/interp.h =================================================================== --- branches/Cog/stacksrc/vm/interp.h 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/stacksrc/vm/interp.h 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.577 uuid: 8788f091-6817-480e-9bda-13ae360eeeb7 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ #define VM_PROXY_MAJOR 1 Modified: branches/Cog/stacksrc/vm/vmCallback.h =================================================================== --- branches/Cog/stacksrc/vm/vmCallback.h 2014-01-14 02:14:07 UTC (rev 2846) +++ branches/Cog/stacksrc/vm/vmCallback.h 2014-01-16 18:49:26 UTC (rev 2847) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.577 uuid: 8788f091-6817-480e-9bda-13ae360eeeb7 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.585 uuid: ffc9c619-e2b4-4432-977e-aba381f975ff */ #define VM_CALLBACK_INC 1 |
Free forum by Nabble | Edit this page |