[Vm-dev] [commit][3690] CogVM source as per VMMaker.oscog-nice.1853
commits at squeakvm.org
commits at squeakvm.org
Sat Apr 30 17:58:22 UTC 2016
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. @@
More information about the Vm-dev
mailing list