Revision: 3261 Author: eliot Date: 2015-02-22 15:10:08 -0800 (Sun, 22 Feb 2015) Log Message: ----------- CogVM source as per VMMaker.oscog-eem.1073
General: Add an option to control FailUnbalancedPrimitives and no longer burden the Stack VMs with the responsibility.
Newspeak VM: Add an optional CheckPrivacyViolations option and obey it (thanks, Ryan).
Modified Paths: -------------- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c branches/Cog/nsspurstacksrc/vm/interp.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/stacksrc/vm/gcc3x-interp.c branches/Cog/stacksrc/vm/interp.c
Property Changed: ---------------- branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c =================================================================== --- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2015-02-21 06:09:27 UTC (rev 3260) +++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2015-02-22 23:10:08 UTC (rev 3261) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 from - StackInterpreter VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 + StackInterpreter VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -150,6 +150,7 @@ #define CacheProbeMax 3 #define CharacterTable null #define CharacterValueIndex 0 +#define CheckPrivacyViolations 1 #define ClassAlien 52 #define ClassArray 7 #define ClassArrayCompactIndex 51 @@ -202,7 +203,7 @@ #define ExcessSignalsIndex 2 #define ExternalObjectsArray 38 #define ExtraRootsSize 2048 -#define FailImbalancedPrimitives 1 +#define FailImbalancedPrimitives 0 #define FalseObject 1 #define FirstLinkIndex 0 #define FoxCallerContext 4 @@ -248,6 +249,7 @@ #define MethodCacheSize 4096 #define MethodDictionaryIndex 1 #define MethodHeaderArgCountShift 25 +#define MethodHeaderFlagBitPosition 29 #define MethodHeaderTempCountShift 19 #define MethodIndex 3 #define MillisecondClockMask 0x1FFFFFFF @@ -961,6 +963,7 @@ static usqInt totalBytesInSegments(void); static sqInt writeImageSegmentsToFile(sqImageFile aBinaryStream) NoDbgRegParms; static sqInt writeSegmentnextSegmenttoFile(SpurSegmentInfo *segment, SpurSegmentInfo *nextSegment, sqImageFile aBinaryStream) NoDbgRegParms; +static sqInt accessModifierOfMethod(sqInt methodObj) NoDbgRegParms; sqInt activeProcess(void); static void addLastLinktoList(sqInt proc, sqInt aList) NoDbgRegParms; static void addNewMethodToCache(sqInt classObj) NoDbgRegParms; @@ -1455,6 +1458,7 @@ _iss sqInt gcSemaphoreIndex; _iss sqInt globalSessionID; _iss sqInt imageFloatsBigEndian; +_iss sqInt isPrivateSend; _iss sqInt longRunningPrimitiveSignalUndelivered; _iss sqInt maxExtSemTabSizeSet; _iss sqInt rememberedSetRedZone; @@ -2110,7 +2114,7 @@ /* 575 */ (void (*)(void))0, 0 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1072"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1073"; volatile int sendTrace; sqInt suppressHeartbeatFlag;
@@ -5671,7 +5675,7 @@ sendBreakpointreceiver(firstFixedFieldOfMaybeImmediate(GIV(messageSelector)), lengthOfMaybeImmediate(GIV(messageSelector)), longAtPointer(localSP + (GIV(argumentCount) * BytesPerOop))); /* begin internalFindNewMethod */ - + /* shift drops two low-order zeros from addresses */
hash1 = GIV(messageSelector) ^ lkupClassTag; @@ -5741,6 +5745,9 @@ localFP = pointerForOop(GIV(framePointer)); addNewMethodToCache(GIV(lkupClass)); l239: ; + + GIV(isPrivateSend) = 0; + l238: /* end internalFindNewMethod */; /* begin internalExecuteNewMethod */ if (primitiveFunctionPointer != 0) { @@ -5787,10 +5794,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -5808,18 +5812,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -13177,6 +13170,8 @@ : tagBits) : (longAt(localAbsentReceiver)) & 0x3FFFFF); assert((classForClassTag(lkupClassTag)) != (nilObject())); + GIV(isPrivateSend) = 1; + goto commonSend; } } @@ -19951,10 +19946,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -19972,18 +19964,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -22411,10 +22392,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -22432,18 +22410,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -22663,10 +22630,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -22684,18 +22648,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -48396,7 +48349,19 @@ return nWritten; }
+static sqInt +accessModifierOfMethod(sqInt methodObj) +{ + sqInt header;
+ /* begin accessModifierOfMethodHeader: */ + /* begin methodHeaderOf: */ + assert(isCompiledMethod(methodObj)); + header = longAt((methodObj + BaseHeaderSize) + (HeaderIndex << (shiftForWord()))); + return (((usqInt) header) >> MethodHeaderFlagBitPosition) & 3; +} + + /* Answer the current activeProcess. */ /* useful for VM debugging */
@@ -53867,6 +53832,19 @@ } found = 0; l1: /* end lookupMethodInDictionary: */; + if ((!GIV(isPrivateSend)) + && ((GIV(messageSelector) != (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SelectorDoesNotUnderstand << (shiftForWord()))))) + && ((accessModifierOfMethod(GIV(newMethod))) != 0))) { + print(nameOfClass(currentClass)); + /* begin space */ + /* begin printChar: */ + putchar(' '); + printStringOf(GIV(messageSelector)); + print(" from "); + printStringOf(fetchPointerofObject(0, methodClassOf(GIV(method)))); + /* begin cr */ + printf("\n"); + } if (found) { return currentClass; } @@ -65759,10 +65737,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -65780,18 +65755,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -65897,10 +65861,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -65918,18 +65879,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -66128,10 +66078,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -66149,18 +66096,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -67437,10 +67373,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -67458,18 +67391,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); }
Modified: branches/Cog/nsspurstacksrc/vm/interp.c =================================================================== --- branches/Cog/nsspurstacksrc/vm/interp.c 2015-02-21 06:09:27 UTC (rev 3260) +++ branches/Cog/nsspurstacksrc/vm/interp.c 2015-02-22 23:10:08 UTC (rev 3261) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 from - StackInterpreter VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 + StackInterpreter VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -147,6 +147,7 @@ #define CacheProbeMax 3 #define CharacterTable null #define CharacterValueIndex 0 +#define CheckPrivacyViolations 1 #define ClassAlien 52 #define ClassArray 7 #define ClassArrayCompactIndex 51 @@ -199,7 +200,7 @@ #define ExcessSignalsIndex 2 #define ExternalObjectsArray 38 #define ExtraRootsSize 2048 -#define FailImbalancedPrimitives 1 +#define FailImbalancedPrimitives 0 #define FalseObject 1 #define FirstLinkIndex 0 #define FoxCallerContext 4 @@ -245,6 +246,7 @@ #define MethodCacheSize 4096 #define MethodDictionaryIndex 1 #define MethodHeaderArgCountShift 25 +#define MethodHeaderFlagBitPosition 29 #define MethodHeaderTempCountShift 19 #define MethodIndex 3 #define MillisecondClockMask 0x1FFFFFFF @@ -958,6 +960,7 @@ static usqInt totalBytesInSegments(void); static sqInt writeImageSegmentsToFile(sqImageFile aBinaryStream) NoDbgRegParms; static sqInt writeSegmentnextSegmenttoFile(SpurSegmentInfo *segment, SpurSegmentInfo *nextSegment, sqImageFile aBinaryStream) NoDbgRegParms; +static sqInt accessModifierOfMethod(sqInt methodObj) NoDbgRegParms; sqInt activeProcess(void); static void addLastLinktoList(sqInt proc, sqInt aList) NoDbgRegParms; static void addNewMethodToCache(sqInt classObj) NoDbgRegParms; @@ -1452,6 +1455,7 @@ _iss sqInt gcSemaphoreIndex; _iss sqInt globalSessionID; _iss sqInt imageFloatsBigEndian; +_iss sqInt isPrivateSend; _iss sqInt longRunningPrimitiveSignalUndelivered; _iss sqInt maxExtSemTabSizeSet; _iss sqInt rememberedSetRedZone; @@ -2107,7 +2111,7 @@ /* 575 */ (void (*)(void))0, 0 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1072"; +const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1073"; volatile int sendTrace; sqInt suppressHeartbeatFlag;
@@ -5662,7 +5666,7 @@ sendBreakpointreceiver(firstFixedFieldOfMaybeImmediate(GIV(messageSelector)), lengthOfMaybeImmediate(GIV(messageSelector)), longAtPointer(localSP + (GIV(argumentCount) * BytesPerOop))); /* begin internalFindNewMethod */ - + /* shift drops two low-order zeros from addresses */
hash1 = GIV(messageSelector) ^ lkupClassTag; @@ -5732,6 +5736,9 @@ localFP = pointerForOop(GIV(framePointer)); addNewMethodToCache(GIV(lkupClass)); l239: ; + + GIV(isPrivateSend) = 0; + l238: /* end internalFindNewMethod */; /* begin internalExecuteNewMethod */ if (primitiveFunctionPointer != 0) { @@ -5778,10 +5785,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -5799,18 +5803,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -13168,6 +13161,8 @@ : tagBits) : (longAt(localAbsentReceiver)) & 0x3FFFFF); assert((classForClassTag(lkupClassTag)) != (nilObject())); + GIV(isPrivateSend) = 1; + goto commonSend; } } @@ -19942,10 +19937,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -19963,18 +19955,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -22402,10 +22383,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -22423,18 +22401,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -22654,10 +22621,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -22675,18 +22639,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -48387,7 +48340,19 @@ return nWritten; }
+static sqInt +accessModifierOfMethod(sqInt methodObj) +{ + sqInt header;
+ /* begin accessModifierOfMethodHeader: */ + /* begin methodHeaderOf: */ + assert(isCompiledMethod(methodObj)); + header = longAt((methodObj + BaseHeaderSize) + (HeaderIndex << (shiftForWord()))); + return (((usqInt) header) >> MethodHeaderFlagBitPosition) & 3; +} + + /* Answer the current activeProcess. */ /* useful for VM debugging */
@@ -53858,6 +53823,19 @@ } found = 0; l1: /* end lookupMethodInDictionary: */; + if ((!GIV(isPrivateSend)) + && ((GIV(messageSelector) != (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SelectorDoesNotUnderstand << (shiftForWord()))))) + && ((accessModifierOfMethod(GIV(newMethod))) != 0))) { + print(nameOfClass(currentClass)); + /* begin space */ + /* begin printChar: */ + putchar(' '); + printStringOf(GIV(messageSelector)); + print(" from "); + printStringOf(fetchPointerofObject(0, methodClassOf(GIV(method)))); + /* begin cr */ + printf("\n"); + } if (found) { return currentClass; } @@ -65750,10 +65728,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -65771,18 +65746,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -65888,10 +65852,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -65909,18 +65870,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -66119,10 +66069,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -66140,18 +66087,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -67428,10 +67364,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -67449,18 +67382,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); }
Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h ___________________________________________________________________ Modified: checkindate - Fri Feb 20 22:04:44 PST 2015 + Sun Feb 22 15:09:48 PST 2015
Modified: branches/Cog/spurstack64src/vm/gcc3x-interp.c =================================================================== --- branches/Cog/spurstack64src/vm/gcc3x-interp.c 2015-02-21 06:09:27 UTC (rev 3260) +++ branches/Cog/spurstack64src/vm/gcc3x-interp.c 2015-02-22 23:10:08 UTC (rev 3261) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 from - StackInterpreter VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 + StackInterpreter VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -128,7 +128,7 @@ #define ActiveProcessIndex 1 #define AlternateHeaderHasPrimFlag 0x80000 #define AlternateHeaderNumLiteralsMask 0x7FFF -#define AltLongStoreBytecode 129 +#define AltLongStoreBytecode 234 #define AtCacheFixedFields 4 #define AtCacheFmt 3 #define AtCacheMask 0x1C @@ -158,6 +158,7 @@ #define CacheProbeMax 3 #define CharacterTable null #define CharacterValueIndex 0 +#define CheckPrivacyViolations 0 #define ClassAlien 52 #define ClassArray 7 #define ClassArrayCompactIndex 51 @@ -208,7 +209,7 @@ #define ExcessSignalsIndex 2 #define ExternalObjectsArray 38 #define ExtraRootsSize 2048 -#define FailImbalancedPrimitives 1 +#define FailImbalancedPrimitives 0 #define FalseObject 1 #define FirstLinkIndex 0 #define FoxCallerContext 8 @@ -2131,7 +2132,7 @@ /* 575 */ (void (*)(void))0, 0 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.1072]"; +const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.1073]"; volatile int sendTrace; sqInt suppressHeartbeatFlag;
@@ -5581,7 +5582,7 @@ sendBreakpointreceiver(firstFixedFieldOfMaybeImmediate(GIV(messageSelector)), lengthOfMaybeImmediate(GIV(messageSelector)), longAtPointer(localSP + (GIV(argumentCount) * BytesPerOop))); /* begin internalFindNewMethod */ - + /* shift drops two low-order zeros from addresses */
hash1 = GIV(messageSelector) ^ lkupClassTag; @@ -5651,6 +5652,8 @@ localFP = pointerForOop(GIV(framePointer)); addNewMethodToCache(GIV(lkupClass)); l105: ; + + l104: /* end internalFindNewMethod */; /* begin internalExecuteNewMethod */ if (primitiveFunctionPointer != 0) { @@ -5697,10 +5700,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -5718,18 +5718,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -16352,10 +16341,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -16373,18 +16359,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -18870,10 +18845,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -18891,18 +18863,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -19115,10 +19076,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -19136,18 +19094,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -54094,6 +54041,7 @@ } found = 0; l1: /* end lookupMethodInDictionary: */; + if (found) { return currentClass; } @@ -65546,10 +65494,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -65567,18 +65512,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -65684,10 +65618,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -65705,18 +65636,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -65910,10 +65830,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -65931,18 +65848,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -67168,10 +67074,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -67189,18 +67092,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); }
Modified: branches/Cog/spurstack64src/vm/interp.c =================================================================== --- branches/Cog/spurstack64src/vm/interp.c 2015-02-21 06:09:27 UTC (rev 3260) +++ branches/Cog/spurstack64src/vm/interp.c 2015-02-22 23:10:08 UTC (rev 3261) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 from - StackInterpreter VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 + StackInterpreter VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -125,7 +125,7 @@ #define ActiveProcessIndex 1 #define AlternateHeaderHasPrimFlag 0x80000 #define AlternateHeaderNumLiteralsMask 0x7FFF -#define AltLongStoreBytecode 129 +#define AltLongStoreBytecode 234 #define AtCacheFixedFields 4 #define AtCacheFmt 3 #define AtCacheMask 0x1C @@ -155,6 +155,7 @@ #define CacheProbeMax 3 #define CharacterTable null #define CharacterValueIndex 0 +#define CheckPrivacyViolations 0 #define ClassAlien 52 #define ClassArray 7 #define ClassArrayCompactIndex 51 @@ -205,7 +206,7 @@ #define ExcessSignalsIndex 2 #define ExternalObjectsArray 38 #define ExtraRootsSize 2048 -#define FailImbalancedPrimitives 1 +#define FailImbalancedPrimitives 0 #define FalseObject 1 #define FirstLinkIndex 0 #define FoxCallerContext 8 @@ -2128,7 +2129,7 @@ /* 575 */ (void (*)(void))0, 0 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.1072]"; +const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.1073]"; volatile int sendTrace; sqInt suppressHeartbeatFlag;
@@ -5572,7 +5573,7 @@ sendBreakpointreceiver(firstFixedFieldOfMaybeImmediate(GIV(messageSelector)), lengthOfMaybeImmediate(GIV(messageSelector)), longAtPointer(localSP + (GIV(argumentCount) * BytesPerOop))); /* begin internalFindNewMethod */ - + /* shift drops two low-order zeros from addresses */
hash1 = GIV(messageSelector) ^ lkupClassTag; @@ -5642,6 +5643,8 @@ localFP = pointerForOop(GIV(framePointer)); addNewMethodToCache(GIV(lkupClass)); l105: ; + + l104: /* end internalFindNewMethod */; /* begin internalExecuteNewMethod */ if (primitiveFunctionPointer != 0) { @@ -5688,10 +5691,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -5709,18 +5709,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -16343,10 +16332,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -16364,18 +16350,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -18861,10 +18836,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -18882,18 +18854,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -19106,10 +19067,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -19127,18 +19085,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -54085,6 +54032,7 @@ } found = 0; l1: /* end lookupMethodInDictionary: */; + if (found) { return currentClass; } @@ -65537,10 +65485,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -65558,18 +65503,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -65675,10 +65609,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -65696,18 +65627,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -65901,10 +65821,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -65922,18 +65839,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); } @@ -67159,10 +67065,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */ GIV(primFailCode) = 0; dispatchFunctionPointer(primitiveFunctionPointer); @@ -67180,18 +67083,7 @@ GIV(primFailCode) = PrimErrWritePastObject; } } - if ((!GIV(primFailCode)) - && ((GIV(framePointer) == savedFramePointer) - && (!0))) { - - /* Don't fail if primitive has done something radical, e.g. perform: */ - - if (GIV(stackPointer) != (savedStackPointer + (nArgs * BytesPerWord))) { - flag("Would be nice to make this a message send of e.g. unbalancedPrimitive to the current process or context"); - GIV(stackPointer) = savedStackPointer; - failUnbalancedPrimitive(); - } - } + if (GIV(nextProfileTick) > 0) { checkProfileTick(GIV(newMethod)); }
Modified: branches/Cog/spurstacksrc/vm/gcc3x-interp.c =================================================================== --- branches/Cog/spurstacksrc/vm/gcc3x-interp.c 2015-02-21 06:09:27 UTC (rev 3260) +++ branches/Cog/spurstacksrc/vm/gcc3x-interp.c 2015-02-22 23:10:08 UTC (rev 3261) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 from - StackInterpreter VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 + StackInterpreter VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 */ -static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1072 uuid: bd9d8dd5-dea0-49da-8be7-cb246f49f554 " __DATE__ ; +static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1073 uuid: f5e526a5-587e-4182-856d-519220e8efa9 " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -150,6 +150,7 @@ #define CacheProbeMax 3 #define CharacterTable null #define CharacterValueIndex 0 +#define CheckPrivacyViolations 0 #define ClassAlien 52 #define ClassArray 7 #define ClassArrayCompactIndex 51 @@ -200,7 +201,7 @@ #define ExcessSignalsIndex 2 #define ExternalObjectsArray 38 #define ExtraRootsSize 2048 -#define FailImbalancedPrimitives 1 +#define FailImbalancedPrimitives 0 #define FalseObject 1 #define FirstLinkIndex 0 #define FoxCallerContext 4 @@ -2103,7 +2104,7 @@ /* 575 */ (void (*)(void))0, 0 }; char expensiveAsserts = 0; -const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.1072]"; +const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.1073]"; volatile int sendTrace; sqInt suppressHeartbeatFlag;
@@ -5555,7 +5556,7 @@ sendBreakpointreceiver(firstFixedFieldOfMaybeImmediate(GIV(messageSelector)), lengthOfMaybeImmediate(GIV(messageSelector)), longAtPointer(localSP + (GIV(argumentCount) * BytesPerOop))); /* begin internalFindNewMethod */ - + /* shift drops two low-order zeros from addresses */
hash1 = GIV(messageSelector) ^ lkupClassTag; @@ -5625,6 +5626,8 @@ localFP = pointerForOop(GIV(framePointer)); addNewMethodToCache(GIV(lkupClass)); l128: ; + + l127: /* end internalFindNewMethod */; /* begin internalExecuteNewMethod */ if (primitiveFunctionPointer != 0) { @@ -5671,10 +5674,7 @@ /* begin slowPrimitiveResponse */ assert(!(isOopForwarded(stackValue(GIV(argumentCount))))); assert((remapBufferCount()) == 0); - nArgs = GIV(argumentCount); - savedStackPointer = GIV(stackPointer); - savedFramePointer = GIV(framePointer); - + /* begin initPrimCall */
@@ Diff output truncated at 50000 characters. @@
vm-dev@lists.squeakfoundation.org