Author: eliot Date: 2011-07-13 13:45:23 -0700 (Wed, 13 Jul 2011) New Revision: 2459 Modified: branches/Cog/nscogsrc/vm/cogit.c branches/Cog/nscogsrc/vm/cogit.h branches/Cog/nscogsrc/vm/cogmethod.h branches/Cog/scripts/mkvmarchives branches/Cog/src/vm/cogit.c branches/Cog/src/vm/cogit.h branches/Cog/src/vm/cogmethod.h Log: CogVM source as per VMMaker.oscog-eem.101. A couple more option: NewspeakVM. Modified: branches/Cog/nscogsrc/vm/cogit.c =================================================================== --- branches/Cog/nscogsrc/vm/cogit.c 2011-07-13 19:44:06 UTC (rev 2458) +++ branches/Cog/nscogsrc/vm/cogit.c 2011-07-13 20:45:23 UTC (rev 2459) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.100 uuid: 0f2efd1e-0fd4-4544-b32b-91a0b38c6354 + CCodeGenerator VMMaker.oscog-eem.101 uuid: dd839613-bebe-47f7-94a8-1bf3667f253f from - SimpleStackBasedCogit VMMaker.oscog-eem.100 uuid: 0f2efd1e-0fd4-4544-b32b-91a0b38c6354 + SimpleStackBasedCogit VMMaker.oscog-eem.101 uuid: dd839613-bebe-47f7-94a8-1bf3667f253f */ -static char __buildInfo[] = "SimpleStackBasedCogit VMMaker.oscog-eem.100 uuid: 0f2efd1e-0fd4-4544-b32b-91a0b38c6354 " __DATE__ ; +static char __buildInfo[] = "SimpleStackBasedCogit VMMaker.oscog-eem.101 uuid: dd839613-bebe-47f7-94a8-1bf3667f253f " __DATE__ ; char *__cogitBuildInfo = __buildInfo; Modified: branches/Cog/nscogsrc/vm/cogit.h =================================================================== --- branches/Cog/nscogsrc/vm/cogit.h 2011-07-13 19:44:06 UTC (rev 2458) +++ branches/Cog/nscogsrc/vm/cogit.h 2011-07-13 20:45:23 UTC (rev 2459) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.100 uuid: 0f2efd1e-0fd4-4544-b32b-91a0b38c6354 + CCodeGenerator VMMaker.oscog-eem.101 uuid: dd839613-bebe-47f7-94a8-1bf3667f253f */ Modified: branches/Cog/nscogsrc/vm/cogmethod.h =================================================================== --- branches/Cog/nscogsrc/vm/cogmethod.h 2011-07-13 19:44:06 UTC (rev 2458) +++ branches/Cog/nscogsrc/vm/cogmethod.h 2011-07-13 20:45:23 UTC (rev 2459) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.100 uuid: 0f2efd1e-0fd4-4544-b32b-91a0b38c6354 + CCodeGenerator VMMaker.oscog-eem.101 uuid: dd839613-bebe-47f7-94a8-1bf3667f253f */ typedef struct { Modified: branches/Cog/scripts/mkvmarchives =================================================================== --- branches/Cog/scripts/mkvmarchives 2011-07-13 19:44:06 UTC (rev 2458) +++ branches/Cog/scripts/mkvmarchives 2011-07-13 20:45:23 UTC (rev 2459) @@ -79,7 +79,7 @@ do echo echo checking $vm version - strings - $vm | egrep "Interp.*VMMaker|Cogit.*VMMaker| built on " | grep -v 'Unix built on "__DATE__ " "__TIME__" Compiler: "__VERSION__' + strings - $vm | egrep "Interp.*VMMaker|Cogit.*VMMaker| built on " | grep -v 'Unix built on "__DATE__ " "__TIME__" Compiler: "__VERSION__' | sed 's/ uuid:.*//' echo checking $vm for asserts strings - $vm | grep "assert[^0-9]*[0-9][0-9][0-9]" done Modified: branches/Cog/src/vm/cogit.c =================================================================== --- branches/Cog/src/vm/cogit.c 2011-07-13 19:44:06 UTC (rev 2458) +++ branches/Cog/src/vm/cogit.c 2011-07-13 20:45:23 UTC (rev 2459) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.100 uuid: 0f2efd1e-0fd4-4544-b32b-91a0b38c6354 + CCodeGenerator VMMaker.oscog-eem.101 uuid: dd839613-bebe-47f7-94a8-1bf3667f253f from - StackToRegisterMappingCogit VMMaker.oscog-eem.100 uuid: 0f2efd1e-0fd4-4544-b32b-91a0b38c6354 + StackToRegisterMappingCogit VMMaker.oscog-eem.101 uuid: dd839613-bebe-47f7-94a8-1bf3667f253f */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.100 uuid: 0f2efd1e-0fd4-4544-b32b-91a0b38c6354 " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.101 uuid: dd839613-bebe-47f7-94a8-1bf3667f253f " __DATE__ ; char *__cogitBuildInfo = __buildInfo; @@ -831,7 +831,6 @@ void markAndTraceObjectsOrFreeMachineCode(sqInt inFullGC); static sqInt markAndTraceOrFreeCogMethodfirstVisit(CogMethod *cogMethod, sqInt firstVisit); static void markAndTraceOrFreeMachineCodeForFullGC(void); -static sqInt markLiteralsAndUnlinkIfUnmarkedSendOrPushImplicitpcmethod(sqInt annotation, char *mcpc, sqInt cogMethod); static sqInt markLiteralsAndUnlinkIfUnmarkedSendpcmethod(sqInt annotation, char *mcpc, sqInt cogMethod); void markMethodAndReferents(CogBlockMethod *aCogMethod); static sqInt markYoungObjectspcmethod(sqInt annotation, char *mcpc, sqInt cogMethod); @@ -899,7 +898,6 @@ static void relocateMethodReferenceBeforeAddressby(AbstractInstruction * self_in_relocateMethodReferenceBeforeAddressby, sqInt pc, sqInt delta); static sqInt relocateMethodsPreCompaction(void); static sqInt remapIfObjectRefpchasYoung(sqInt annotation, char *mcpc, sqInt hasYoungPtr); -static sqInt remapNSIfObjectRefpchasYoung(sqInt annotation, char *mcpc, sqInt hasYoungPtr); static sqInt remapOop(sqInt oop); static void removeFromOpenPICList(CogMethod *anOpenPIC); static void resolveJumpTarget(AbstractInstruction * self_in_resolveJumpTarget); @@ -13466,137 +13464,6 @@ */ static sqInt -markLiteralsAndUnlinkIfUnmarkedSendOrPushImplicitpcmethod(sqInt annotation, char *mcpc, sqInt cogMethod) -{ - sqInt cacheTag; - sqInt cacheTagMarked; - sqInt class; - sqInt classpc; - sqInt entryPoint; - sqInt literal; - sqInt mixin; - sqInt mixinpc; - sqInt off; - sqInt offset; - sqInt *sendTable; - sqInt table; - CogMethod *targetMethod; - sqInt unlinkedRoutine; - - if (annotation == IsObjectReference) { - literal = literalBeforeFollowingAddress(backEnd, ((sqInt)mcpc)); - markAndTraceLiteral(literal); - } - if ( -# if NewspeakVM - ((annotation == IsSendCall) - || (annotation == IsNSSendCall)) -# else /* NewspeakVM */ - (annotation == IsSendCall) -# endif /* NewspeakVM */ - ) { - entryPoint = callTargetFromReturnAddress(backEnd, ((sqInt)mcpc)); - cacheTag = inlineCacheTagAt(backEnd, ((sqInt)mcpc)); - cacheTagMarked = cacheTagIsMarked(cacheTag); - markAndTraceLiteral(cacheTag); - if (entryPoint == ceImplicitReceiverTrampoline) { - assert(cacheTagMarked); - classpc = (((sqInt)mcpc)) + (jumpShortByteSize(backEnd)); - mixinpc = ((((sqInt)mcpc)) + (jumpShortByteSize(backEnd))) + BytesPerOop; - class = unalignedLongAt(backEnd, classpc); - assert((class == 0) - || (addressCouldBeObj(class))); - if (cacheTagIsMarked(class)) { - if (((mixin = unalignedLongAt(backEnd, mixinpc))) != 0) { - markAndTraceLiteral(mixin); - } - } - else { - unalignedLongAtput(backEnd, classpc, 0); - unalignedLongAtput(backEnd, mixinpc, 0); - codeModified = 1; - } - } - else { - if (entryPoint > methodZoneBase) { - /* begin offsetAndSendTableFor:annotation:into: */ - VM_LABEL(1offsetAndSendTableForannotationinto); - -# if NewspeakVM - if ((entryPoint & entryPointMask) == checkedEntryAlignment) { - assert(annotation == IsSendCall); - - /* It's a linked send. */ - - offset = cmEntryOffset; - sendTable = sendTrampolines; - - } - else { - if ((entryPoint & entryPointMask) == dynSuperEntryAlignment) { - assert(annotation == IsNSSendCall); - - /* It's a linked send. */ - - offset = cmDynSuperEntryOffset; - sendTable = dynamicSuperSendTrampolines; - - } - else { - assert(annotation == IsSendCall); - - /* It's a linked send. */ - - offset = cmNoCheckEntryOffset; - sendTable = superSendTrampolines; - - } - } - -# else /* NewspeakVM */ - if ((entryPoint & entryPointMask) == checkedEntryAlignment) { - - /* It's a linked send. */ - - offset = cmEntryOffset; - sendTable = sendTrampolines; - - } - else { - - /* It's a linked send. */ - - offset = cmNoCheckEntryOffset; - sendTable = superSendTrampolines; - - } - -# endif /* NewspeakVM */ - - targetMethod = ((CogMethod *) (entryPoint - offset)); - if ((!cacheTagMarked) - || (markAndTraceOrFreeCogMethodfirstVisit(targetMethod, (((usqInt)targetMethod)) > (((usqInt)mcpc))))) { - - /* Either the cacheTag is unmarked (e.g. new class) or the target - has been freed (because it is unmarked) so unlink the send. */ - - unlinkedRoutine = sendTable[((((targetMethod->cmNumArgs)) < (NumSendTrampolines - 1)) ? ((targetMethod->cmNumArgs)) : (NumSendTrampolines - 1))]; - rewriteInlineCacheAttagtarget(backEnd, ((sqInt)mcpc), (targetMethod->selector), unlinkedRoutine); - codeModified = 1; - markAndTraceLiteral((targetMethod->selector)); - } - } - } - } - return 0; -} - - -/* Mark and trace literals. Unlink sends that have unmarked cache tags or - targets. - */ - -static sqInt markLiteralsAndUnlinkIfUnmarkedSendpcmethod(sqInt annotation, char *mcpc, sqInt cogMethod) { sqInt cacheTag; @@ -13628,7 +13495,7 @@ entryPoint = callTargetFromReturnAddress(backEnd, ((sqInt)mcpc)); if (entryPoint > methodZoneBase) { /* begin offsetAndSendTableFor:annotation:into: */ - VM_LABEL(2offsetAndSendTableForannotationinto); + VM_LABEL(1offsetAndSendTableForannotationinto); # if NewspeakVM if ((entryPoint & entryPointMask) == checkedEntryAlignment) { @@ -14730,7 +14597,7 @@ return 0; } /* begin offsetAndSendTableFor:annotation:into: */ - VM_LABEL(3offsetAndSendTableForannotationinto); + VM_LABEL(2offsetAndSendTableForannotationinto); # if NewspeakVM if ((entryPoint & entryPointMask) == checkedEntryAlignment) { @@ -14894,86 +14761,6 @@ } static sqInt -remapNSIfObjectRefpchasYoung(sqInt annotation, char *mcpc, sqInt hasYoungPtr) -{ - sqInt cacheTag; - sqInt entryPoint; - sqInt literal; - sqInt mappedCacheTag; - sqInt mappedLiteral; - sqInt mappedOop; - sqInt offset; - sqInt oop; - sqInt pc; - CogMethod *targetMethod; - - if (annotation == IsObjectReference) { - literal = literalBeforeFollowingAddress(backEnd, ((sqInt)mcpc)); - if (couldBeObject(literal)) { - mappedLiteral = remap(literal); - if (literal != mappedLiteral) { - storeLiteralbeforeFollowingAddress(backEnd, mappedLiteral, ((sqInt)mcpc)); - codeModified = 1; - } - if ((hasYoungPtr != 0) - && (isYoung(mappedLiteral))) { - (((sqInt *) hasYoungPtr))[0] = 1; - } - } - } - if ( -# if NewspeakVM - ((annotation == IsSendCall) - || (annotation == IsNSSendCall)) -# else /* NewspeakVM */ - (annotation == IsSendCall) -# endif /* NewspeakVM */ - ) { - cacheTag = inlineCacheTagAt(backEnd, ((sqInt)mcpc)); - if (couldBeObject(cacheTag)) { - mappedCacheTag = remap(cacheTag); - if (cacheTag != mappedCacheTag) { - rewriteInlineCacheTagat(backEnd, mappedCacheTag, ((sqInt)mcpc)); - codeModified = 1; - } - if ((hasYoungPtr != 0) - && (isYoung(mappedCacheTag))) { - (((sqInt *) hasYoungPtr))[0] = 1; - } - } - entryPoint = callTargetFromReturnAddress(backEnd, ((sqInt)mcpc)); - if (entryPoint == ceImplicitReceiverTrampoline) { - pc = (((sqInt)mcpc)) + (jumpShortByteSize(backEnd)); - if (((oop = unalignedLongAt(backEnd, pc))) != 0) { - mappedOop = remap(oop); - if (mappedOop != oop) { - unalignedLongAtput(backEnd, pc, mappedOop); - } - pc = ((((sqInt)mcpc)) + (jumpShortByteSize(backEnd))) + BytesPerOop; - if (((oop = unalignedLongAt(backEnd, pc))) != 0) { - mappedOop = remap(oop); - if (mappedOop != oop) { - unalignedLongAtput(backEnd, pc, mappedOop); - } - } - } - } - if (hasYoungPtr != 0) { - if (entryPoint > methodZoneBase) { - offset = ((entryPoint & entryPointMask) == checkedEntryAlignment - ? (cmEntryOffset) - : (cmNoCheckEntryOffset)); - targetMethod = ((CogMethod *) (entryPoint - offset)); - if (isYoung((targetMethod->selector))) { - (((sqInt *) hasYoungPtr))[0] = 1; - } - } - } - } - return 0; -} - -static sqInt remapOop(sqInt oop) { return ((oop & 1) @@ -16017,7 +15804,7 @@ entryPoint = callTargetFromReturnAddress(backEnd, ((sqInt)mcpc)); if (entryPoint > methodZoneBase) { /* begin offsetAndSendTableFor:annotation:into: */ - VM_LABEL(4offsetAndSendTableForannotationinto); + VM_LABEL(3offsetAndSendTableForannotationinto); # if NewspeakVM if ((entryPoint & entryPointMask) == checkedEntryAlignment) { @@ -16103,7 +15890,7 @@ entryPoint = callTargetFromReturnAddress(backEnd, ((sqInt)mcpc)); if (entryPoint > methodZoneBase) { /* begin offsetAndSendTableFor:annotation:into: */ - VM_LABEL(5offsetAndSendTableForannotationinto); + VM_LABEL(4offsetAndSendTableForannotationinto); # if NewspeakVM if ((entryPoint & entryPointMask) == checkedEntryAlignment) { @@ -16197,7 +15984,7 @@ if (entryPoint > methodZoneBase) { /* begin offsetAndSendTableFor:annotation:into: */ - VM_LABEL(6offsetAndSendTableForannotationinto); + VM_LABEL(5offsetAndSendTableForannotationinto); # if NewspeakVM if ((entryPoint & entryPointMask) == checkedEntryAlignment) { @@ -16283,7 +16070,7 @@ entryPoint = callTargetFromReturnAddress(backEnd, ((sqInt)mcpc)); if (entryPoint > methodZoneBase) { /* begin offsetAndSendTableFor:annotation:into: */ - VM_LABEL(7offsetAndSendTableForannotationinto); + VM_LABEL(6offsetAndSendTableForannotationinto); # if NewspeakVM if ((entryPoint & entryPointMask) == checkedEntryAlignment) { Modified: branches/Cog/src/vm/cogit.h =================================================================== --- branches/Cog/src/vm/cogit.h 2011-07-13 19:44:06 UTC (rev 2458) +++ branches/Cog/src/vm/cogit.h 2011-07-13 20:45:23 UTC (rev 2459) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.100 uuid: 0f2efd1e-0fd4-4544-b32b-91a0b38c6354 + CCodeGenerator VMMaker.oscog-eem.101 uuid: dd839613-bebe-47f7-94a8-1bf3667f253f */ Modified: branches/Cog/src/vm/cogmethod.h =================================================================== --- branches/Cog/src/vm/cogmethod.h 2011-07-13 19:44:06 UTC (rev 2458) +++ branches/Cog/src/vm/cogmethod.h 2011-07-13 20:45:23 UTC (rev 2459) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.100 uuid: 0f2efd1e-0fd4-4544-b32b-91a0b38c6354 + CCodeGenerator VMMaker.oscog-eem.101 uuid: dd839613-bebe-47f7-94a8-1bf3667f253f */ typedef struct { |
Free forum by Nabble | Edit this page |