Revision: 3690 Author: eliot Date: 2016-04-30 10:58:20 -0700 (Sat, 30 Apr 2016) Log Message: ----------- CogVM source as per VMMaker.oscog-nice.1853 Fix missing comparison operation in genPrimitiveIdentical on V3. This should fix Character = problem encounterd in Cuis. Comment concretizePrefetchAw, and store machineCode in last statement so as to avoid a -Wunused-value warning. Correct slip in primitiveMethodXray, the flags were not set in each caseOf: branch (thanks to -Wunused-value). Remove assert in classTagForClass: because ensureBehaviorHash: already does it. 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/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-04-29 13:58:43 UTC (rev 3689) +++ branches/Cog/nsspur64src/vm/cogit.h 2016-04-30 17:58:20 UTC (rev 3690) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a + CCodeGenerator VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e */ Modified: branches/Cog/nsspur64src/vm/cogitX64.c =================================================================== --- branches/Cog/nsspur64src/vm/cogitX64.c 2016-04-29 13:58:43 UTC (rev 3689) +++ branches/Cog/nsspur64src/vm/cogitX64.c 2016-04-30 17:58:20 UTC (rev 3690) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a + CCodeGenerator VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e from - StackToRegisterMappingCogit VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a + StackToRegisterMappingCogit VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e " __DATE__ ; char *__cogitBuildInfo = __buildInfo; @@ -5236,9 +5236,9 @@ findMapLocationForMcpcinMethod(sqInt targetMcpc, CogMethod *cogMethod) { sqInt annotation; - usqInt map; + sqInt map; sqInt mapByte; - usqInt mcpc; + sqInt mcpc; mcpc = (0 ? (((usqInt)cogMethod)) + cbNoSwitchEntryOffset @@ -5322,7 +5322,7 @@ sqInt annotation; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; sqInt result; assert((((cogMethod->cmType)) != CMMethod) @@ -5914,12 +5914,12 @@ generateMapAtstart(sqInt addressOrNull, sqInt startAddress) { unsigned char annotation; - usqInt delta; + sqInt delta; sqInt i; AbstractInstruction *instruction; sqInt length; - usqInt location; - usqInt mapEntry; + sqInt location; + sqInt mapEntry; sqInt maxDelta; usqInt mcpc; @@ -7159,7 +7159,7 @@ sqInt annotation; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; sqInt result; mcpc = (0 @@ -7266,7 +7266,7 @@ sqInt hasYoungObjPtr; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; sqInt remappedMethod; sqInt result; sqInt val; @@ -7384,7 +7384,7 @@ CogMethod *cogMethod; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; sqInt result; codeModified = 0; @@ -7464,7 +7464,7 @@ sqInt hasYoungObjPtr; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; usqInt pointer; sqInt result; sqInt val; @@ -7586,8 +7586,8 @@ usqInt map1; sqInt mapByte; sqInt mapByte1; - sqInt mcpc; - sqInt mcpc1; + usqInt mcpc; + usqInt mcpc1; sqInt result; sqInt result1; sqInt val; @@ -7744,7 +7744,7 @@ sqInt annotation; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; sqInt result; sqInt val; @@ -8072,7 +8072,7 @@ CogMethod *cogMethod; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; sqInt result; assert((((aCogMethod->cmType)) == CMMethod) @@ -8641,9 +8641,9 @@ printPCMapPairsFor(CogMethod *cogMethod) { sqInt annotation; - usqInt map; + sqInt map; unsigned char mapByte; - usqInt mcpc; + sqInt mcpc; sqInt value; mcpc = (0 @@ -8822,7 +8822,7 @@ sqLong callDelta; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; sqLong refDelta; sqInt result; @@ -9396,7 +9396,7 @@ CogMethod *cogMethod; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; sqInt result; if (!(methodZoneBase)) { @@ -9839,7 +9839,7 @@ sqInt freedPIC; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; sqInt result; if (!(methodZoneBase)) { @@ -9916,7 +9916,7 @@ CogMethod *cogMethod; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; sqInt mustScanAndUnlink; sqInt result; @@ -10015,7 +10015,7 @@ CogMethod *cogMethod; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; sqInt result; if (!(methodZoneBase)) { @@ -10084,7 +10084,7 @@ sqInt freedPIC; usqInt map; sqInt mapByte; - sqInt mcpc; + usqInt mcpc; sqInt result; CogMethod *targetMethod; Modified: branches/Cog/nsspur64src/vm/cointerp.c =================================================================== --- branches/Cog/nsspur64src/vm/cointerp.c 2016-04-29 13:58:43 UTC (rev 3689) +++ branches/Cog/nsspur64src/vm/cointerp.c 2016-04-30 17:58:20 UTC (rev 3690) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a + CCodeGeneratorGlobalStructure VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e from - CoInterpreter VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a + CoInterpreter VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1657,9 +1657,9 @@ _iss sqInt profileProcess; _iss sqInt numClassTablePages; _iss sqInt profileSemaphore; -_iss sqInt classTableIndex; _iss SpurNewSpaceSpace futureSpace; _iss sqInt profileMethod; +_iss sqInt classTableIndex; _iss sqInt longRunningPrimitiveCheckSemaphore; _iss sqInt numRememberedEphemerons; _iss sqInt jmpDepth; @@ -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.1851"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-nice.1853"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -6782,8 +6782,6 @@ objOop = fixFollowedFieldofObjectwithInitialValue(SuperclassIndex, classPointer, objOop); } superclass = objOop; - /* begin classTagForClass: */ - assert(addressCouldBeClassObj(superclass)); /* begin ensureBehaviorHash: */ assert(addressCouldBeClassObj(superclass)); GIV(lkupClassTag) = (((hash = (long32At(superclass + 4)) & (identityHashHalfWordMask()))) != 0 @@ -7905,7 +7903,7 @@ /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); - goto l464; + goto l463; } if (bytecode == 172) { @@ -7914,7 +7912,7 @@ /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); - goto l464; + goto l463; } if (bytecode > 167) { @@ -7924,7 +7922,7 @@ localIP = (localIP + offset) + 1; currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector); - goto l464; + goto l463; } } currentBytecode = bytecode + GIV(bytecodeSetSelector); @@ -7932,7 +7930,7 @@ /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), GIV(trueObj)); } - l464: /* end case */; + l463: /* end case */; break; case 179: /* bytecodePrimGreaterThan */ @@ -8082,7 +8080,7 @@ localIP = (localIP + (bytecode - 151)) + 1; currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector); - goto l465; + goto l464; } if (bytecode == 172) { @@ -8092,14 +8090,14 @@ localIP = (localIP + offset) + 1; currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector); - goto l465; + goto l464; } currentBytecode = bytecode + GIV(bytecodeSetSelector); /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), GIV(falseObj)); } - l465: /* end case */; + l464: /* end case */; break; case 180: /* bytecodePrimLessOrEqual */ @@ -10255,7 +10253,7 @@ /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); - goto l466; + goto l465; } if (bytecode == 244) { @@ -10264,7 +10262,7 @@ /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); - goto l466; + goto l465; } if (bytecode == 243) { @@ -10274,7 +10272,7 @@ localIP = (localIP + offset) + 1; currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector); - goto l466; + goto l465; } } currentBytecode = bytecode + GIV(bytecodeSetSelector); @@ -10282,7 +10280,7 @@ /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), GIV(trueObj)); } - l466: /* end case */; + l465: /* end case */; break; case 339: /*83*/ /* bytecodePrimGreaterThanV4 */ @@ -10432,7 +10430,7 @@ localIP = (localIP + (bytecode - 207)) + 1; currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector); - goto l467; + goto l466; } if (bytecode == 244) { @@ -10442,14 +10440,14 @@ localIP = (localIP + offset) + 1; currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector); - goto l467; + goto l466; } currentBytecode = bytecode + GIV(bytecodeSetSelector); /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), GIV(falseObj)); } - l467: /* end case */; + l466: /* end case */; break; case 340: /*84*/ /* bytecodePrimLessOrEqualV4 */ @@ -13007,12 +13005,12 @@ classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)fieldIndex) << (shiftForWord()))); if (classTablePage == GIV(nilObj)) { GIV(lkupClass) = null; - goto l468; + goto l467; } /* begin fetchPointer:ofObject: */ fieldIndex1 = GIV(lkupClassTag) & ((1LL << (classTableMajorIndexShift())) - 1); GIV(lkupClass) = longAt((classTablePage + BaseHeaderSize) + (((long)fieldIndex1) << (shiftForWord()))); - l468: /* end classAtIndex: */; + l467: /* end classAtIndex: */; /* begin lookupImplicitReceiverSend */ GIV(messageSelector) = (((GIV(messageSelector) & (tagMask())) == 0) && (((longAt(GIV(messageSelector))) & (classIndexMask())) == (isForwardedObjectClassIndexPun())) @@ -13077,12 +13075,12 @@ } GIV(newMethod) = objOop2; found = 1; - goto l473; + goto l472; } index += 1; } found = 0; - goto l473; + goto l472; } /* It is assumed that there are some nils in this dictionary, and search will @@ -13106,7 +13104,7 @@ nextSelector = longAt((dictionary + BaseHeaderSize) + (((long)index) << (shiftForWord()))); if (nextSelector == GIV(nilObj)) { found = 0; - goto l473; + goto l472; } if (((nextSelector & (tagMask())) == 0) && (((longAt(nextSelector)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) { @@ -13128,24 +13126,24 @@ } GIV(newMethod) = objOop4; found = 1; - goto l473; + goto l472; } index += 1; if (index == length) { if (wrapAround) { found = 0; - goto l473; + goto l472; } wrapAround = 1; index = SelectorStart; } } found = 0; - l473: /* end lookupMethodInDictionary: */; + l472: /* end lookupMethodInDictionary: */; if (found) { GIV(localAbsentReceiver) = candidateReceiver; actualLookupRule = lookupLexicalfromrule(GIV(messageSelector), candidateMixin, LookupRuleImplicit); - goto l478; + goto l477; } /* begin followObjField:ofObject: */ objOop1 = longAt((candidateMixin + BaseHeaderSize) + (((long)EnclosingMixinIndex) << (shiftForWord()))); @@ -13166,7 +13164,7 @@ ? longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (((long)tagBits1) << (shiftForWord()))) : fetchClassOfNonImm(methodReceiver)); actualLookupRule = lookupProtectedstartingAtrule(GIV(messageSelector), GIV(lkupClass), LookupRuleImplicit); - l478: /* end lookupImplicitReceiverSend */; + l477: /* end lookupImplicitReceiverSend */; /* begin internalizeIPandSP */ assert(GIV(instructionPointer) != (ceReturnToInterpreterPC())); localIP = pointerForOop(GIV(instructionPointer)); @@ -13194,26 +13192,26 @@ if (localPrimIndex >= 264) { /* begin internalStackTopPut: */ longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + (((long)(localPrimIndex - 264)) << (shiftForWord())))); - goto l469; + goto l468; } if (localPrimIndex == 256) { - goto l469; + goto l468; } if (localPrimIndex == 257) { longAtPointerput(localSP, GIV(trueObj)); - goto l469; + goto l468; } if (localPrimIndex == 258) { longAtPointerput(localSP, GIV(falseObj)); - goto l469; + goto l468; } if (localPrimIndex == 259) { longAtPointerput(localSP, GIV(nilObj)); - goto l469; + goto l468; } longAtPointerput(localSP, (((localPrimIndex - 261) << 3) | 1)); - l469: /* end internalQuickPrimitiveResponse */; - goto l470; + l468: /* end internalQuickPrimitiveResponse */; + goto l469; } /* begin externalizeIPandSP */ assert((((usqInt)localIP)) != (ceReturnToInterpreterPC())); @@ -13275,7 +13273,7 @@ if (succeeded) { returntoExecutive(popStack(), 1); browserPluginReturnIfNeeded(); - goto l470; + goto l469; } } if (methodHasCogMethod(GIV(newMethod))) { @@ -13350,11 +13348,11 @@ table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)PrimErrTableIndex) << (shiftForWord()))); if (GIV(primFailCode) <= (numSlotsOf(table))) { errorCode = longAt((table + BaseHeaderSize) + (((long)(GIV(primFailCode) - 1)) << (shiftForWord()))); - goto l481; + goto l480; } } errorCode = ((GIV(primFailCode) << 3) | 1); - l481: /* end getErrorObjectFromPrimFailCode */; + l480: /* end getErrorObjectFromPrimFailCode */; longAtPointerput(localSP, errorCode); } GIV(primFailCode) = 0; @@ -13378,7 +13376,7 @@ localFP = pointerForOop(GIV(framePointer)); } } - l470: /* end internalExecuteNewMethod */; + l469: /* end internalExecuteNewMethod */; /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); @@ -13458,7 +13456,7 @@ GIV(newMethod) = GIV(nsMethodCache)[probe1 + NSMethodCacheTargetMethod]; primitiveFunctionPointer = ((void (*)()) (GIV(nsMethodCache)[probe1 + NSMethodCachePrimFunction])); GIV(localAbsentReceiverOrZero) = GIV(nsMethodCache)[probe1 + NSMethodCacheActualReceiver]; - goto l491; + goto l490; } /* second probe */ @@ -13470,7 +13468,7 @@ GIV(newMethod) = GIV(nsMethodCache)[probe1 + NSMethodCacheTargetMethod]; primitiveFunctionPointer = ((void (*)()) (GIV(nsMethodCache)[probe1 + NSMethodCachePrimFunction])); GIV(localAbsentReceiverOrZero) = GIV(nsMethodCache)[probe1 + NSMethodCacheActualReceiver]; - goto l491; + goto l490; } probe1 = (((usqInt) hash1) >> 2) & NSMethodCacheMask; if (((((GIV(nsMethodCache)[probe1 + NSMethodCacheSelector]) == GIV(messageSelector)) @@ -13480,7 +13478,7 @@ GIV(newMethod) = GIV(nsMethodCache)[probe1 + NSMethodCacheTargetMethod]; primitiveFunctionPointer = ((void (*)()) (GIV(nsMethodCache)[probe1 + NSMethodCachePrimFunction])); GIV(localAbsentReceiverOrZero) = GIV(nsMethodCache)[probe1 + NSMethodCacheActualReceiver]; - goto l491; + goto l490; } /* end inlineLookupInNSMethodCacheSel:classTag:method:lookupRule:; fall through */ /* begin externalizeIPandSP */ @@ -13507,12 +13505,12 @@ classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)fieldIndex) << (shiftForWord()))); if (classTablePage == GIV(nilObj)) { GIV(lkupClass) = null; - goto l485; + goto l484; } /* begin fetchPointer:ofObject: */ fieldIndex1 = GIV(lkupClassTag) & ((1LL << (classTableMajorIndexShift())) - 1); GIV(lkupClass) = longAt((classTablePage + BaseHeaderSize) + (((long)fieldIndex1) << (shiftForWord()))); - l485: /* end classAtIndex: */; + l484: /* end classAtIndex: */; /* begin lookupDynamicSuperSend */ GIV(localAbsentReceiver) = longAt(localFP + FoxIFReceiver); GIV(localAbsentReceiverOrZero) = 0; @@ -13534,7 +13532,7 @@ localSP = pointerForOop(GIV(stackPointer)); localFP = pointerForOop(GIV(framePointer)); addNewMethodToNSCache(actualLookupRule); - l491: ; + l490: ; /* begin shuffleArgumentsAndStoreAbsentReceiver: */ @@ -13556,26 +13554,26 @@ if (localPrimIndex >= 264) { /* begin internalStackTopPut: */ longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + (((long)(localPrimIndex - 264)) << (shiftForWord())))); - goto l486; + goto l485; } if (localPrimIndex == 256) { - goto l486; + goto l485; } if (localPrimIndex == 257) { longAtPointerput(localSP, GIV(trueObj)); - goto l486; + goto l485; } if (localPrimIndex == 258) { longAtPointerput(localSP, GIV(falseObj)); - goto l486; + goto l485; } if (localPrimIndex == 259) { longAtPointerput(localSP, GIV(nilObj)); - goto l486; + goto l485; } longAtPointerput(localSP, (((localPrimIndex - 261) << 3) | 1)); - l486: /* end internalQuickPrimitiveResponse */; - goto l487; + l485: /* end internalQuickPrimitiveResponse */; + goto l486; } /* begin externalizeIPandSP */ assert((((usqInt)localIP)) != (ceReturnToInterpreterPC())); @@ -13637,7 +13635,7 @@ if (succeeded) { returntoExecutive(popStack(), 1); browserPluginReturnIfNeeded(); - goto l487; + goto l486; } } if (methodHasCogMethod(GIV(newMethod))) { @@ -13712,11 +13710,11 @@ table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)PrimErrTableIndex) << (shiftForWord()))); if (GIV(primFailCode) <= (numSlotsOf(table))) { errorCode = longAt((table + BaseHeaderSize) + (((long)(GIV(primFailCode) - 1)) << (shiftForWord()))); - goto l493; + goto l492; } } errorCode = ((GIV(primFailCode) << 3) | 1); - l493: /* end getErrorObjectFromPrimFailCode */; + l492: /* end getErrorObjectFromPrimFailCode */; longAtPointerput(localSP, errorCode); } GIV(primFailCode) = 0; @@ -13740,7 +13738,7 @@ localFP = pointerForOop(GIV(framePointer)); } } - l487: /* end internalExecuteNewMethod */; + l486: /* end internalExecuteNewMethod */; /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); @@ -15212,7 +15210,7 @@ } /* drop low-order zeros from addresses (if classObj not classTag) */ - hash = GIV(messageSelector) ^ (classTagForClass(classObj)); + hash = GIV(messageSelector) ^ (ensureBehaviorHash(classObj)); if (((GIV(newMethod) & (tagMask())) == 0) && (((((usqInt) (longAt(GIV(newMethod)))) >> (formatShift())) & (formatMask())) >= (firstCompiledMethodFormat()))) { /* begin primitiveIndexOfMethod:header: */ @@ -15250,7 +15248,7 @@ /* Found an empty entry -- use it */ GIV(methodCache)[probe + MethodCacheSelector] = GIV(messageSelector); - GIV(methodCache)[probe + MethodCacheClass] = (classTagForClass(classObj)); + GIV(methodCache)[probe + MethodCacheClass] = (ensureBehaviorHash(classObj)); GIV(methodCache)[probe + MethodCacheMethod] = GIV(newMethod); GIV(methodCache)[probe + MethodCachePrimFunction] = (((long) primitiveFunctionPointer)); @@ -15263,7 +15261,7 @@ /* first probe */ probe = hash & MethodCacheMask; GIV(methodCache)[probe + MethodCacheSelector] = GIV(messageSelector); - GIV(methodCache)[probe + MethodCacheClass] = (classTagForClass(classObj)); + GIV(methodCache)[probe + MethodCacheClass] = (ensureBehaviorHash(classObj)); GIV(methodCache)[probe + MethodCacheMethod] = GIV(newMethod); GIV(methodCache)[probe + MethodCachePrimFunction] = (((long) primitiveFunctionPointer)); @@ -17507,7 +17505,6 @@ objOop = fixFollowedFieldofObjectwithInitialValue(SuperclassIndex, classPointer, objOop); } classObj1 = objOop; - assert(addressCouldBeClassObj(classObj1)); /* begin ensureBehaviorHash: */ assert(addressCouldBeClassObj(classObj1)); classTag = (((hash = (long32At(classObj1 + 4)) & (identityHashHalfWordMask()))) != 0 @@ -17757,7 +17754,7 @@ static sqInt checkForAndFollowForwardedPrimitiveState(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT - sqInt accessorDepth; + signed char accessorDepth; sqInt firstBytecode; sqInt found; sqInt found1; @@ -19354,7 +19351,7 @@ GIV(instructionPointer) = top; createActualMessageTo(classForMessage); GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)selectorIndex) << (shiftForWord()))); - if (lookupInMethodCacheSelclassTag(GIV(messageSelector), classTagForClass(GIV(lkupClass)))) { + if (lookupInMethodCacheSelclassTag(GIV(messageSelector), ensureBehaviorHash(GIV(lkupClass)))) { /* check for coggability because method is in the cache */ /* begin ifAppropriateCompileToNativeCode:selector: */ @@ -27090,7 +27087,7 @@ Bit 4 = method too big to be jitted (more than 64k of code, or needs more than 1.5Mb of stack space to compile) Bit 5 = method contains unknown/unjittable bytecode - Bit 7 = method should not be jitted because it contains a primitive not to + Bit 6 = method should not be jitted because it contains a primitive not to be called from machine code (unused) */ /* CoInterpreterPrimitives>>#primitiveMethodXray */ @@ -27121,10 +27118,10 @@ flags = 1 + 16; break; case EncounteredUnknownBytecode: - 1 + 32; + flags = 1 + 32; break; case ShouldNotJIT: - 1 + 64; + flags = 1 + 64; break; default: assert(!(((((((sqInt)cogMethod)) >= MaxNegativeErrorCode) && ((((sqInt)cogMethod)) <= NotFullyInitialized))))); @@ -37416,7 +37413,7 @@ if (!(((argumentArray & (tagMask())) == 0) && (((((usqInt) (longAt(argumentArray))) >> (formatShift())) & (formatMask())) == 2))) { GIV(primFailCode) = PrimErrBadArgument; - goto l8; + goto l7; } /* begin numSlotsOf: */ flag("endianness"); @@ -37427,7 +37424,7 @@ : numSlots); if (arraySize > (LargeContextSlots - CtxtTempFrameStart)) { GIV(primFailCode) = PrimErrBadNumArgs; - goto l8; + goto l7; } /* Push newMethod to save it in case of failure, @@ -37461,10 +37458,8 @@ ? (((tagBits1 = rcvr & (tagMask()))) != 0 ? tagBits1 : (longAt(rcvr)) & (classIndexMask())) - : (/* begin classTagForClass: */ + : (/* begin ensureBehaviorHash: */ assert(addressCouldBeClassObj(lookupClass)), - /* begin ensureBehaviorHash: */ - assert(addressCouldBeClassObj(lookupClass)), (((hash = (long32At(lookupClass + 4)) & (identityHashHalfWordMask()))) != 0 ? hash : (objCouldBeClassObj(lookupClass) @@ -37492,7 +37487,7 @@ GIV(stackPointer) += BytesPerWord; GIV(newMethod) = top; GIV(primFailCode) = PrimErrBadNumArgs; - goto l8; + goto l7; } /* +2 = receiver + saved newMethod */ @@ -37505,7 +37500,7 @@ executeNewMethod(); /* begin initPrimCall */ GIV(primFailCode) = 0; -l8: /* end primitiveObject:perform:withArguments:lookedUpIn: */; +l7: /* end primitiveObject:perform:withArguments:lookedUpIn: */; } /* InterpreterPrimitives>>#primitivePerformWithArgs */ @@ -37536,7 +37531,7 @@ if (!(((argumentArray & (tagMask())) == 0) && (((((usqInt) (longAt(argumentArray))) >> (formatShift())) & (formatMask())) == 2))) { GIV(primFailCode) = PrimErrBadArgument; - goto l7; + goto l6; } /* begin numSlotsOf: */ flag("endianness"); @@ -37547,7 +37542,7 @@ : numSlots); if (arraySize > (LargeContextSlots - CtxtTempFrameStart)) { GIV(primFailCode) = PrimErrBadNumArgs; - goto l7; + goto l6; } /* Push newMethod to save it in case of failure, @@ -37598,7 +37593,7 @@ GIV(stackPointer) += BytesPerWord; GIV(newMethod) = top; GIV(primFailCode) = PrimErrBadNumArgs; - goto l7; + goto l6; } /* +2 = receiver + saved newMethod */ @@ -37611,7 +37606,7 @@ executeNewMethod(); /* begin initPrimCall */ GIV(primFailCode) = 0; -l7: /* end primitiveObject:perform:withArguments:lookedUpIn: */; +l6: /* end primitiveObject:perform:withArguments:lookedUpIn: */; } @@ -43000,7 +42995,7 @@ sqInt fmt; usqInt instBytes; sqInt instFormat; - sqInt newFormat; + usqInt newFormat; sqInt normalizedInstFormat; usqInt numBytes; usqInt numSlots; @@ -49038,7 +49033,6 @@ sqInt err; sqInt hash; - assert(addressCouldBeClassObj(classObj)); /* begin ensureBehaviorHash: */ assert(addressCouldBeClassObj(classObj)); return (((hash = (long32At(classObj + 4)) & (identityHashHalfWordMask()))) != 0 @@ -50546,6 +50540,7 @@ enterIntoClassTable(sqInt aBehavior) { DECL_MAYBE_SQ_GLOBAL_STRUCT sqInt classIndex; + sqInt hash; sqInt i; sqInt iLimiT; sqInt initialMajorIndex; @@ -50618,9 +50613,10 @@ } longAtput((page + BaseHeaderSize) + (((long)i) << (shiftForWord())), aBehavior); /* begin setHashBitsOf:to: */ + hash = GIV(classTableIndex); flag("endianness"); - assert(((GIV(classTableIndex) >= 0) && (GIV(classTableIndex) <= (identityHashHalfWordMask())))); - long32Atput(aBehavior + 4, ((((long32At(aBehavior + 4)) | (identityHashHalfWordMask())) - (identityHashHalfWordMask()))) + GIV(classTableIndex)); + assert(((hash >= 0) && (hash <= (identityHashHalfWordMask())))); + long32Atput(aBehavior + 4, ((((long32At(aBehavior + 4)) | (identityHashHalfWordMask())) - (identityHashHalfWordMask()))) + hash); assert((classAtIndex(rawHashBitsOf(aBehavior))) == aBehavior); return 0; } @@ -61370,7 +61366,7 @@ usqInt prevFree; usqInt prevFreeChunk; usqInt prevPrevFree; - usqInt prevPrevFreeChunk; + sqInt prevPrevFreeChunk; sqInt slotBytes; sqInt slotBytes1; usqInt there; Modified: branches/Cog/nsspur64src/vm/cointerp.h =================================================================== --- branches/Cog/nsspur64src/vm/cointerp.h 2016-04-29 13:58:43 UTC (rev 3689) +++ branches/Cog/nsspur64src/vm/cointerp.h 2016-04-30 17:58:20 UTC (rev 3690) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a + CCodeGeneratorGlobalStructure VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e */ Modified: branches/Cog/nsspur64src/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nsspur64src/vm/gcc3x-cointerp.c 2016-04-29 13:58:43 UTC (rev 3689) +++ branches/Cog/nsspur64src/vm/gcc3x-cointerp.c 2016-04-30 17:58:20 UTC (rev 3690) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a + CCodeGeneratorGlobalStructure VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e from - CoInterpreter VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a + CoInterpreter VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1660,9 +1660,9 @@ _iss sqInt profileProcess; _iss sqInt numClassTablePages; _iss sqInt profileSemaphore; -_iss sqInt classTableIndex; _iss SpurNewSpaceSpace futureSpace; _iss sqInt profileMethod; +_iss sqInt classTableIndex; _iss sqInt longRunningPrimitiveCheckSemaphore; _iss sqInt numRememberedEphemerons; _iss sqInt jmpDepth; @@ -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.1851"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-nice.1853"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */; volatile int sendTrace; @@ -6791,8 +6791,6 @@ objOop = fixFollowedFieldofObjectwithInitialValue(SuperclassIndex, classPointer, objOop); } superclass = objOop; - /* begin classTagForClass: */ - assert(addressCouldBeClassObj(superclass)); /* begin ensureBehaviorHash: */ assert(addressCouldBeClassObj(superclass)); GIV(lkupClassTag) = (((hash = (long32At(superclass + 4)) & (identityHashHalfWordMask()))) != 0 @@ -7914,7 +7912,7 @@ /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); - goto l464; + goto l463; } if (bytecode == 172) { @@ -7923,7 +7921,7 @@ /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); - goto l464; + goto l463; } if (bytecode > 167) { @@ -7933,7 +7931,7 @@ localIP = (localIP + offset) + 1; currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector); - goto l464; + goto l463; } } currentBytecode = bytecode + GIV(bytecodeSetSelector); @@ -7941,7 +7939,7 @@ /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), GIV(trueObj)); } - l464: /* end case */; + l463: /* end case */; BREAK; CASE(179) /* bytecodePrimGreaterThan */ @@ -8091,7 +8089,7 @@ localIP = (localIP + (bytecode - 151)) + 1; currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector); - goto l465; + goto l464; } if (bytecode == 172) { @@ -8101,14 +8099,14 @@ localIP = (localIP + offset) + 1; currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector); - goto l465; + goto l464; } currentBytecode = bytecode + GIV(bytecodeSetSelector); /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), GIV(falseObj)); } - l465: /* end case */; + l464: /* end case */; BREAK; CASE(180) /* bytecodePrimLessOrEqual */ @@ -10264,7 +10262,7 @@ /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); - goto l466; + goto l465; } if (bytecode == 244) { @@ -10273,7 +10271,7 @@ /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); - goto l466; + goto l465; } if (bytecode == 243) { @@ -10283,7 +10281,7 @@ localIP = (localIP + offset) + 1; currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector); - goto l466; + goto l465; } } currentBytecode = bytecode + GIV(bytecodeSetSelector); @@ -10291,7 +10289,7 @@ /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), GIV(trueObj)); } - l466: /* end case */; + l465: /* end case */; BREAK; CASE(339) /*83*/ /* bytecodePrimGreaterThanV4 */ @@ -10441,7 +10439,7 @@ localIP = (localIP + (bytecode - 207)) + 1; currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector); - goto l467; + goto l466; } if (bytecode == 244) { @@ -10451,14 +10449,14 @@ localIP = (localIP + offset) + 1; currentBytecode = (byteAtPointer(localIP)) + GIV(bytecodeSetSelector); - goto l467; + goto l466; } currentBytecode = bytecode + GIV(bytecodeSetSelector); /* begin internalPush: */ longAtPointerput((localSP -= BytesPerOop), GIV(falseObj)); } - l467: /* end case */; + l466: /* end case */; BREAK; CASE(340) /*84*/ /* bytecodePrimLessOrEqualV4 */ @@ -13016,12 +13014,12 @@ classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)fieldIndex) << (shiftForWord()))); if (classTablePage == GIV(nilObj)) { GIV(lkupClass) = null; - goto l468; + goto l467; } /* begin fetchPointer:ofObject: */ fieldIndex1 = GIV(lkupClassTag) & ((1LL << (classTableMajorIndexShift())) - 1); GIV(lkupClass) = longAt((classTablePage + BaseHeaderSize) + (((long)fieldIndex1) << (shiftForWord()))); - l468: /* end classAtIndex: */; + l467: /* end classAtIndex: */; /* begin lookupImplicitReceiverSend */ GIV(messageSelector) = (((GIV(messageSelector) & (tagMask())) == 0) && (((longAt(GIV(messageSelector))) & (classIndexMask())) == (isForwardedObjectClassIndexPun())) @@ -13086,12 +13084,12 @@ } GIV(newMethod) = objOop2; found = 1; - goto l473; + goto l472; } index += 1; } found = 0; - goto l473; + goto l472; } /* It is assumed that there are some nils in this dictionary, and search will @@ -13115,7 +13113,7 @@ nextSelector = longAt((dictionary + BaseHeaderSize) + (((long)index) << (shiftForWord()))); if (nextSelector == GIV(nilObj)) { found = 0; - goto l473; + goto l472; } if (((nextSelector & (tagMask())) == 0) && (((longAt(nextSelector)) & (classIndexMask())) == (isForwardedObjectClassIndexPun()))) { @@ -13137,24 +13135,24 @@ } GIV(newMethod) = objOop4; found = 1; - goto l473; + goto l472; } index += 1; if (index == length) { if (wrapAround) { found = 0; - goto l473; + goto l472; } wrapAround = 1; index = SelectorStart; } } found = 0; - l473: /* end lookupMethodInDictionary: */; + l472: /* end lookupMethodInDictionary: */; if (found) { GIV(localAbsentReceiver) = candidateReceiver; actualLookupRule = lookupLexicalfromrule(GIV(messageSelector), candidateMixin, LookupRuleImplicit); - goto l478; + goto l477; } /* begin followObjField:ofObject: */ objOop1 = longAt((candidateMixin + BaseHeaderSize) + (((long)EnclosingMixinIndex) << (shiftForWord()))); @@ -13175,7 +13173,7 @@ ? longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (((long)tagBits1) << (shiftForWord()))) : fetchClassOfNonImm(methodReceiver)); actualLookupRule = lookupProtectedstartingAtrule(GIV(messageSelector), GIV(lkupClass), LookupRuleImplicit); - l478: /* end lookupImplicitReceiverSend */; + l477: /* end lookupImplicitReceiverSend */; /* begin internalizeIPandSP */ assert(GIV(instructionPointer) != (ceReturnToInterpreterPC())); localIP = pointerForOop(GIV(instructionPointer)); @@ -13203,26 +13201,26 @@ if (localPrimIndex >= 264) { /* begin internalStackTopPut: */ longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + (((long)(localPrimIndex - 264)) << (shiftForWord())))); - goto l469; + goto l468; } if (localPrimIndex == 256) { - goto l469; + goto l468; } if (localPrimIndex == 257) { longAtPointerput(localSP, GIV(trueObj)); - goto l469; + goto l468; } if (localPrimIndex == 258) { longAtPointerput(localSP, GIV(falseObj)); - goto l469; + goto l468; } if (localPrimIndex == 259) { longAtPointerput(localSP, GIV(nilObj)); - goto l469; + goto l468; } longAtPointerput(localSP, (((localPrimIndex - 261) << 3) | 1)); - l469: /* end internalQuickPrimitiveResponse */; - goto l470; + l468: /* end internalQuickPrimitiveResponse */; + goto l469; } /* begin externalizeIPandSP */ assert((((usqInt)localIP)) != (ceReturnToInterpreterPC())); @@ -13284,7 +13282,7 @@ if (succeeded) { returntoExecutive(popStack(), 1); browserPluginReturnIfNeeded(); - goto l470; + goto l469; } } if (methodHasCogMethod(GIV(newMethod))) { @@ -13359,11 +13357,11 @@ table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)PrimErrTableIndex) << (shiftForWord()))); if (GIV(primFailCode) <= (numSlotsOf(table))) { errorCode = longAt((table + BaseHeaderSize) + (((long)(GIV(primFailCode) - 1)) << (shiftForWord()))); - goto l481; + goto l480; } } errorCode = ((GIV(primFailCode) << 3) | 1); - l481: /* end getErrorObjectFromPrimFailCode */; + l480: /* end getErrorObjectFromPrimFailCode */; longAtPointerput(localSP, errorCode); } GIV(primFailCode) = 0; @@ -13387,7 +13385,7 @@ localFP = pointerForOop(GIV(framePointer)); } } - l470: /* end internalExecuteNewMethod */; + l469: /* end internalExecuteNewMethod */; /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); @@ -13467,7 +13465,7 @@ GIV(newMethod) = GIV(nsMethodCache)[probe1 + NSMethodCacheTargetMethod]; primitiveFunctionPointer = ((void (*)()) (GIV(nsMethodCache)[probe1 + NSMethodCachePrimFunction])); GIV(localAbsentReceiverOrZero) = GIV(nsMethodCache)[probe1 + NSMethodCacheActualReceiver]; - goto l491; + goto l490; } /* second probe */ @@ -13479,7 +13477,7 @@ GIV(newMethod) = GIV(nsMethodCache)[probe1 + NSMethodCacheTargetMethod]; primitiveFunctionPointer = ((void (*)()) (GIV(nsMethodCache)[probe1 + NSMethodCachePrimFunction])); GIV(localAbsentReceiverOrZero) = GIV(nsMethodCache)[probe1 + NSMethodCacheActualReceiver]; - goto l491; + goto l490; } probe1 = (((usqInt) hash1) >> 2) & NSMethodCacheMask; if (((((GIV(nsMethodCache)[probe1 + NSMethodCacheSelector]) == GIV(messageSelector)) @@ -13489,7 +13487,7 @@ GIV(newMethod) = GIV(nsMethodCache)[probe1 + NSMethodCacheTargetMethod]; primitiveFunctionPointer = ((void (*)()) (GIV(nsMethodCache)[probe1 + NSMethodCachePrimFunction])); GIV(localAbsentReceiverOrZero) = GIV(nsMethodCache)[probe1 + NSMethodCacheActualReceiver]; - goto l491; + goto l490; } /* end inlineLookupInNSMethodCacheSel:classTag:method:lookupRule:; fall through */ /* begin externalizeIPandSP */ @@ -13516,12 +13514,12 @@ classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)fieldIndex) << (shiftForWord()))); if (classTablePage == GIV(nilObj)) { GIV(lkupClass) = null; - goto l485; + goto l484; } /* begin fetchPointer:ofObject: */ fieldIndex1 = GIV(lkupClassTag) & ((1LL << (classTableMajorIndexShift())) - 1); GIV(lkupClass) = longAt((classTablePage + BaseHeaderSize) + (((long)fieldIndex1) << (shiftForWord()))); - l485: /* end classAtIndex: */; + l484: /* end classAtIndex: */; /* begin lookupDynamicSuperSend */ GIV(localAbsentReceiver) = longAt(localFP + FoxIFReceiver); GIV(localAbsentReceiverOrZero) = 0; @@ -13543,7 +13541,7 @@ localSP = pointerForOop(GIV(stackPointer)); localFP = pointerForOop(GIV(framePointer)); addNewMethodToNSCache(actualLookupRule); - l491: ; + l490: ; /* begin shuffleArgumentsAndStoreAbsentReceiver: */ @@ -13565,26 +13563,26 @@ if (localPrimIndex >= 264) { /* begin internalStackTopPut: */ longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + (((long)(localPrimIndex - 264)) << (shiftForWord())))); - goto l486; + goto l485; } if (localPrimIndex == 256) { - goto l486; + goto l485; } if (localPrimIndex == 257) { longAtPointerput(localSP, GIV(trueObj)); - goto l486; + goto l485; } if (localPrimIndex == 258) { longAtPointerput(localSP, GIV(falseObj)); - goto l486; + goto l485; } if (localPrimIndex == 259) { longAtPointerput(localSP, GIV(nilObj)); - goto l486; + goto l485; } longAtPointerput(localSP, (((localPrimIndex - 261) << 3) | 1)); - l486: /* end internalQuickPrimitiveResponse */; - goto l487; + l485: /* end internalQuickPrimitiveResponse */; + goto l486; } /* begin externalizeIPandSP */ assert((((usqInt)localIP)) != (ceReturnToInterpreterPC())); @@ -13646,7 +13644,7 @@ if (succeeded) { returntoExecutive(popStack(), 1); browserPluginReturnIfNeeded(); - goto l487; + goto l486; } } if (methodHasCogMethod(GIV(newMethod))) { @@ -13721,11 +13719,11 @@ table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)PrimErrTableIndex) << (shiftForWord()))); if (GIV(primFailCode) <= (numSlotsOf(table))) { errorCode = longAt((table + BaseHeaderSize) + (((long)(GIV(primFailCode) - 1)) << (shiftForWord()))); - goto l493; + goto l492; } } errorCode = ((GIV(primFailCode) << 3) | 1); - l493: /* end getErrorObjectFromPrimFailCode */; + l492: /* end getErrorObjectFromPrimFailCode */; longAtPointerput(localSP, errorCode); } GIV(primFailCode) = 0; @@ -13749,7 +13747,7 @@ localFP = pointerForOop(GIV(framePointer)); } } - l487: /* end internalExecuteNewMethod */; + l486: /* end internalExecuteNewMethod */; /* begin fetchNextBytecode */ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector); @@ -15221,7 +15219,7 @@ } /* drop low-order zeros from addresses (if classObj not classTag) */ - hash = GIV(messageSelector) ^ (classTagForClass(classObj)); + hash = GIV(messageSelector) ^ (ensureBehaviorHash(classObj)); if (((GIV(newMethod) & (tagMask())) == 0) && (((((usqInt) (longAt(GIV(newMethod)))) >> (formatShift())) & (formatMask())) >= (firstCompiledMethodFormat()))) { /* begin primitiveIndexOfMethod:header: */ @@ -15259,7 +15257,7 @@ /* Found an empty entry -- use it */ GIV(methodCache)[probe + MethodCacheSelector] = GIV(messageSelector); - GIV(methodCache)[probe + MethodCacheClass] = (classTagForClass(classObj)); + GIV(methodCache)[probe + MethodCacheClass] = (ensureBehaviorHash(classObj)); GIV(methodCache)[probe + MethodCacheMethod] = GIV(newMethod); GIV(methodCache)[probe + MethodCachePrimFunction] = (((long) primitiveFunctionPointer)); @@ -15272,7 +15270,7 @@ /* first probe */ probe = hash & MethodCacheMask; GIV(methodCache)[probe + MethodCacheSelector] = GIV(messageSelector); - GIV(methodCache)[probe + MethodCacheClass] = (classTagForClass(classObj)); + GIV(methodCache)[probe + MethodCacheClass] = (ensureBehaviorHash(classObj)); GIV(methodCache)[probe + MethodCacheMethod] = GIV(newMethod); GIV(methodCache)[probe + MethodCachePrimFunction] = (((long) primitiveFunctionPointer)); @@ -17516,7 +17514,6 @@ objOop = fixFollowedFieldofObjectwithInitialValue(SuperclassIndex, classPointer, objOop); } classObj1 = objOop; - assert(addressCouldBeClassObj(classObj1)); /* begin ensureBehaviorHash: */ assert(addressCouldBeClassObj(classObj1)); classTag = (((hash = (long32At(classObj1 + 4)) & (identityHashHalfWordMask()))) != 0 @@ -17766,7 +17763,7 @@ static sqInt checkForAndFollowForwardedPrimitiveState(void) { DECL_MAYBE_SQ_GLOBAL_STRUCT - sqInt accessorDepth; + signed char accessorDepth; sqInt firstBytecode; sqInt found; sqInt found1; @@ -19363,7 +19360,7 @@ GIV(instructionPointer) = top; createActualMessageTo(classForMessage); GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)selectorIndex) << (shiftForWord()))); - if (lookupInMethodCacheSelclassTag(GIV(messageSelector), classTagForClass(GIV(lkupClass)))) { + if (lookupInMethodCacheSelclassTag(GIV(messageSelector), ensureBehaviorHash(GIV(lkupClass)))) { /* check for coggability because method is in the cache */ /* begin ifAppropriateCompileToNativeCode:selector: */ @@ -27099,7 +27096,7 @@ Bit 4 = method too big to be jitted (more than 64k of code, or needs more than 1.5Mb of stack space to compile) Bit 5 = method contains unknown/unjittable bytecode - Bit 7 = method should not be jitted because it contains a primitive not to + Bit 6 = method should not be jitted because it contains a primitive not to be called from machine code (unused) */ /* CoInterpreterPrimitives>>#primitiveMethodXray */ @@ -27130,10 +27127,10 @@ flags = 1 + 16; break; case EncounteredUnknownBytecode: - 1 + 32; + flags = 1 + 32; break; case ShouldNotJIT: - 1 + 64; + flags = 1 + 64; break; default: assert(!(((((((sqInt)cogMethod)) >= MaxNegativeErrorCode) && ((((sqInt)cogMethod)) <= NotFullyInitialized))))); @@ -37425,7 +37422,7 @@ if (!(((argumentArray & (tagMask())) == 0) && (((((usqInt) (longAt(argumentArray))) >> (formatShift())) & (formatMask())) == 2))) { GIV(primFailCode) = PrimErrBadArgument; - goto l8; + goto l7; } /* begin numSlotsOf: */ flag("endianness"); @@ -37436,7 +37433,7 @@ : numSlots); if (arraySize > (LargeContextSlots - CtxtTempFrameStart)) { GIV(primFailCode) = PrimErrBadNumArgs; - goto l8; + goto l7; } /* Push newMethod to save it in case of failure, @@ -37470,10 +37467,8 @@ ? (((tagBits1 = rcvr & (tagMask()))) != 0 ? tagBits1 : (longAt(rcvr)) & (classIndexMask())) - : (/* begin classTagForClass: */ + : (/* begin ensureBehaviorHash: */ assert(addressCouldBeClassObj(lookupClass)), - /* begin ensureBehaviorHash: */ - assert(addressCouldBeClassObj(lookupClass)), (((hash = (long32At(lookupClass + 4)) & (identityHashHalfWordMask()))) != 0 ? hash : (objCouldBeClassObj(lookupClass) @@ -37501,7 +37496,7 @@ GIV(stackPointer) += BytesPerWord; GIV(newMethod) = top; GIV(primFailCode) = PrimErrBadNumArgs; - goto l8; + goto l7; } /* +2 = receiver + saved newMethod */ @@ -37514,7 +37509,7 @@ executeNewMethod(); /* begin initPrimCall */ GIV(primFailCode) = 0; -l8: /* end primitiveObject:perform:withArguments:lookedUpIn: */; +l7: /* end primitiveObject:perform:withArguments:lookedUpIn: */; } /* InterpreterPrimitives>>#primitivePerformWithArgs */ @@ -37545,7 +37540,7 @@ if (!(((argumentArray & (tagMask())) == 0) && (((((usqInt) (longAt(argumentArray))) >> (formatShift())) & (formatMask())) == 2))) { GIV(primFailCode) = PrimErrBadArgument; - goto l7; + goto l6; } /* begin numSlotsOf: */ flag("endianness"); @@ -37556,7 +37551,7 @@ : numSlots); if (arraySize > (LargeContextSlots - CtxtTempFrameStart)) { GIV(primFailCode) = PrimErrBadNumArgs; - goto l7; + goto l6; } /* Push newMethod to save it in case of failure, @@ -37607,7 +37602,7 @@ GIV(stackPointer) += BytesPerWord; GIV(newMethod) = top; GIV(primFailCode) = PrimErrBadNumArgs; - goto l7; + goto l6; } /* +2 = receiver + saved newMethod */ @@ -37620,7 +37615,7 @@ executeNewMethod(); /* begin initPrimCall */ GIV(primFailCode) = 0; -l7: /* end primitiveObject:perform:withArguments:lookedUpIn: */; +l6: /* end primitiveObject:perform:withArguments:lookedUpIn: */; } @@ -43009,7 +43004,7 @@ sqInt fmt; usqInt instBytes; sqInt instFormat; - sqInt newFormat; + usqInt newFormat; sqInt normalizedInstFormat; usqInt numBytes; usqInt numSlots; @@ -49047,7 +49042,6 @@ sqInt err; sqInt hash; - assert(addressCouldBeClassObj(classObj)); /* begin ensureBehaviorHash: */ assert(addressCouldBeClassObj(classObj)); return (((hash = (long32At(classObj + 4)) & (identityHashHalfWordMask()))) != 0 @@ -50555,6 +50549,7 @@ enterIntoClassTable(sqInt aBehavior) { DECL_MAYBE_SQ_GLOBAL_STRUCT sqInt classIndex; + sqInt hash; sqInt i; sqInt iLimiT; sqInt initialMajorIndex; @@ -50627,9 +50622,10 @@ } longAtput((page + BaseHeaderSize) + (((long)i) << (shiftForWord())), aBehavior); /* begin setHashBitsOf:to: */ + hash = GIV(classTableIndex); flag("endianness"); - assert(((GIV(classTableIndex) >= 0) && (GIV(classTableIndex) <= (identityHashHalfWordMask())))); - long32Atput(aBehavior + 4, ((((long32At(aBehavior + 4)) | (identityHashHalfWordMask())) - (identityHashHalfWordMask()))) + GIV(classTableIndex)); + assert(((hash >= 0) && (hash <= (identityHashHalfWordMask())))); + long32Atput(aBehavior + 4, ((((long32At(aBehavior + 4)) | (identityHashHalfWordMask())) - (identityHashHalfWordMask()))) + hash); assert((classAtIndex(rawHashBitsOf(aBehavior))) == aBehavior); return 0; } @@ -61379,7 +61375,7 @@ usqInt prevFree; usqInt prevFreeChunk; usqInt prevPrevFree; - usqInt prevPrevFreeChunk; + sqInt prevPrevFreeChunk; sqInt slotBytes; sqInt slotBytes1; usqInt there; Modified: branches/Cog/nsspursrc/vm/cogit.h =================================================================== --- branches/Cog/nsspursrc/vm/cogit.h 2016-04-29 13:58:43 UTC (rev 3689) +++ branches/Cog/nsspursrc/vm/cogit.h 2016-04-30 17:58:20 UTC (rev 3690) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a + CCodeGenerator VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e */ Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c =================================================================== --- branches/Cog/nsspursrc/vm/cogitARMv5.c 2016-04-29 13:58:43 UTC (rev 3689) +++ branches/Cog/nsspursrc/vm/cogitARMv5.c 2016-04-30 17:58:20 UTC (rev 3690) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a + CCodeGenerator VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e from - StackToRegisterMappingCogit VMMaker.oscog-eem.1851 uuid: a2b37448-8ea6-480e-aa07-e99d6de1744a + StackToRegisterMappingCogit VMMaker.oscog-nice.1853 uuid: 3ff63b2d-9dc9-4d6a-b3ff-fb6d37f1085e */ @@ Diff output truncated at 50000 characters. @@ |
Free forum by Nabble | Edit this page |