Author: eliot Date: 2011-04-26 17:58:52 -0700 (Tue, 26 Apr 2011) New Revision: 2380 Modified: branches/Cog/image/VMMaker-Squeak4.1.changes branches/Cog/image/VMMaker-Squeak4.1.image branches/Cog/src/vm/cointerp.c branches/Cog/src/vm/cointerp.h branches/Cog/src/vm/gcc3x-cointerp.c Log: Fix snafu in cloneContext:. Modified: branches/Cog/image/VMMaker-Squeak4.1.changes =================================================================== --- branches/Cog/image/VMMaker-Squeak4.1.changes 2011-04-26 19:24:15 UTC (rev 2379) +++ branches/Cog/image/VMMaker-Squeak4.1.changes 2011-04-27 00:58:52 UTC (rev 2380) @@ -178239,4 +178239,48 @@ "VMMaker"! -----QUIT----{26 April 2011 . 12:13:26 pm} VMMaker-Squeak4.1.image priorSource: 7348282! \ No newline at end of file +----QUIT----{26 April 2011 . 12:13:26 pm} VMMaker-Squeak4.1.image priorSource: 7348282! + +----STARTUP----{26 April 2011 . 5:47:26 pm} as /Users/eliot/Cog/oscogvm/image/VMMaker-Squeak4.1.image! + +!StackInterpreterPrimitives methodsFor: 'primitive support' stamp: 'eem 4/26/2011 17:45' prior: 40904700! +cloneContext: aContext + | cloned spouseFP sp | + <var: #spouseFP type: #'char *'> + cloned := objectMemory clone: aContext. + cloned ~= 0 ifTrue: + [0 to: StackPointerIndex do: + [:i| + objectMemory + storePointerUnchecked: i + ofObject: cloned + withValue: (self externalInstVar: i ofContext: aContext)]. + MethodIndex to: ReceiverIndex do: + [:i| + objectMemory + storePointerUnchecked: i + ofObject: cloned + withValue: (self fetchPointer: i ofObject: aContext)]. + (self isStillMarriedContext: aContext) + ifTrue: + [spouseFP := self frameOfMarriedContext: aContext. + sp := (self stackPointerIndexForFrame: spouseFP) - 1. + 0 to: sp do: + [:i| + objectMemory + storePointerUnchecked: i + CtxtTempFrameStart + ofObject: cloned + withValue: (self temporary: i in: spouseFP)]] + ifFalse: + [sp := (self fetchStackPointerOf: aContext) - 1. + 0 to: sp do: + [:i| + objectMemory + storePointerUnchecked: i + CtxtTempFrameStart + ofObject: cloned + withValue: (self fetchPointer: i + CtxtTempFrameStart ofObject: aContext)]]]. + ^cloned! ! + +"VMMaker"! + +----QUIT----{26 April 2011 . 5:54:49 pm} VMMaker-Squeak4.1.image priorSource: 7357300! \ No newline at end of file Modified: branches/Cog/image/VMMaker-Squeak4.1.image =================================================================== (Binary files differ) Modified: branches/Cog/src/vm/cointerp.c =================================================================== --- branches/Cog/src/vm/cointerp.c 2011-04-26 19:24:15 UTC (rev 2379) +++ branches/Cog/src/vm/cointerp.c 2011-04-27 00:58:52 UTC (rev 2380) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.55 uuid: 315353fc-7f75-4b5b-8a43-3a636cb1aa0b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.56 uuid: fbf17bd2-ddbc-488f-b70d-3b9ba8906430 from - CoInterpreter VMMaker.oscog-eem.55 uuid: 315353fc-7f75-4b5b-8a43-3a636cb1aa0b + CoInterpreter VMMaker.oscog-eem.56 uuid: fbf17bd2-ddbc-488f-b70d-3b9ba8906430 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.55 uuid: 315353fc-7f75-4b5b-8a43-3a636cb1aa0b " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.56 uuid: fbf17bd2-ddbc-488f-b70d-3b9ba8906430 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1865,7 +1865,7 @@ /* 575 */ (void (*)(void))0, 0 }; static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void); -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.55]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.56]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; static volatile int sendTrace; @@ -24286,12 +24286,9 @@ else { sp1 = (fetchStackPointerOf(receiver)) - 1; for (i = 0; i <= sp1; i += 1) { - longAtput((cloned + BaseHeaderSize) + ((i + CtxtTempFrameStart) << ShiftForWord), longAt((receiver + BaseHeaderSize) + (i << ShiftForWord))); + longAtput((cloned + BaseHeaderSize) + ((i + CtxtTempFrameStart) << ShiftForWord), longAt((receiver + BaseHeaderSize) + ((i + CtxtTempFrameStart) << ShiftForWord))); } } - for (i = ((sp1 + CtxtTempFrameStart) + 1); i <= ((lengthOf(receiver)) - 1); i += 1) { - longAtput((cloned + BaseHeaderSize) + (i << ShiftForWord), GIV(nilObj)); - } } newCopy = cloned; } Modified: branches/Cog/src/vm/cointerp.h =================================================================== --- branches/Cog/src/vm/cointerp.h 2011-04-26 19:24:15 UTC (rev 2379) +++ branches/Cog/src/vm/cointerp.h 2011-04-27 00:58:52 UTC (rev 2380) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.55 uuid: 315353fc-7f75-4b5b-8a43-3a636cb1aa0b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.56 uuid: fbf17bd2-ddbc-488f-b70d-3b9ba8906430 */ Modified: branches/Cog/src/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/src/vm/gcc3x-cointerp.c 2011-04-26 19:24:15 UTC (rev 2379) +++ branches/Cog/src/vm/gcc3x-cointerp.c 2011-04-27 00:58:52 UTC (rev 2380) @@ -2,11 +2,11 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.55 uuid: 315353fc-7f75-4b5b-8a43-3a636cb1aa0b + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.56 uuid: fbf17bd2-ddbc-488f-b70d-3b9ba8906430 from - CoInterpreter VMMaker.oscog-eem.55 uuid: 315353fc-7f75-4b5b-8a43-3a636cb1aa0b + CoInterpreter VMMaker.oscog-eem.56 uuid: fbf17bd2-ddbc-488f-b70d-3b9ba8906430 */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.55 uuid: 315353fc-7f75-4b5b-8a43-3a636cb1aa0b " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.56 uuid: fbf17bd2-ddbc-488f-b70d-3b9ba8906430 " __DATE__ ; char *__interpBuildInfo = __buildInfo; @@ -1868,7 +1868,7 @@ /* 575 */ (void (*)(void))0, 0 }; static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void); -const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.55]"; +const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.56]"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; static volatile int sendTrace; @@ -24290,12 +24290,9 @@ else { sp1 = (fetchStackPointerOf(receiver)) - 1; for (i = 0; i <= sp1; i += 1) { - longAtput((cloned + BaseHeaderSize) + ((i + CtxtTempFrameStart) << ShiftForWord), longAt((receiver + BaseHeaderSize) + (i << ShiftForWord))); + longAtput((cloned + BaseHeaderSize) + ((i + CtxtTempFrameStart) << ShiftForWord), longAt((receiver + BaseHeaderSize) + ((i + CtxtTempFrameStart) << ShiftForWord))); } } - for (i = ((sp1 + CtxtTempFrameStart) + 1); i <= ((lengthOf(receiver)) - 1); i += 1) { - longAtput((cloned + BaseHeaderSize) + (i << ShiftForWord), GIV(nilObj)); - } } newCopy = cloned; } |
Free forum by Nabble | Edit this page |