<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Hi Eliot,</div><br class=""><div><blockquote type="cite" class=""><div class="">On 12 Jun 2015, at 01:02, <a href="mailto:commits@squeakvm.org" class="">commits@squeakvm.org</a> wrote:</div><br class="Apple-interchange-newline"><div class=""><br class="">Revision: 3374<br class="">Author: &nbsp;&nbsp;eliot<br class="">Date: &nbsp;&nbsp;&nbsp;&nbsp;2015-06-11 16:02:50 -0700 (Thu, 11 Jun 2015)<br class="">Log Message:<br class="">-----------<br class="">CogVm source as per VMMaker.oscog-eem.1349<br class=""><br class="">Slang:<br class="">Modify prototype output so that non-static functions are declared as extern.<br class="">This to try and cure Cog crashes on compilers such as clang 3.4.<br class=""></div></blockquote><div><br class=""></div><div>this change is breaking generation, because it conflicts with:&nbsp;</div><div><br class=""></div><div>VMPluginCodeGenerator&gt;&gt;#preDeclareInterpreterProxyOn:</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>…</div><div><div><span class="Apple-tab-span" style="white-space:pre">        </span>aStream nextPutAll: '#else /* !defined(SQUEAK_BUILTIN_PLUGIN) */'.</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>pluginFuncs do:</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>[:tMethod|</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>self withOptionalVerbiageFor: tMethod selector</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>on: aStream</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>do: [aStream cr; nextPutAll: 'extern '.</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>tMethod static: false; export: false; emitCFunctionPrototype: aStream generator: self.</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>aStream nextPut: $;]</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>ifOptionalDo:</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>[aStream cr; nextPutAll: '# define '.</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span> (TSendNode new</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>setSelector: tMethod selector</div><div><span class="Apple-tab-span" style="white-space:pre">                                                </span>receiver: (TVariableNode new setName: 'interpreterProxy')</div><div><span class="Apple-tab-span" style="white-space:pre">                                                        </span>arguments: (tMethod args collect: [:a| TVariableNode new setName: a]))</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>emitCCodeAsArgumentOn: aStream</div><div><span class="Apple-tab-span" style="white-space:pre">                                                </span>level: 0</div><div><span class="Apple-tab-span" style="white-space:pre">                                                        </span>generator: self.</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span> aStream nextPutAll: ' 0']].</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>aStream cr; nextPutAll: 'extern'.</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>aStream cr; nextPutAll: '#endif'; cr</div><div><br class=""></div><div><br class=""></div><div>and it generates something like this (in ZipPlugin.c)</div><div><br class=""></div><div><pre style="word-wrap: break-word; white-space: pre-wrap;" class="">#else /* !defined(SQUEAK_BUILTIN_PLUGIN) */
extern extern sqInt byteSizeOf(sqInt oop);
extern extern sqInt failed(void);
extern extern sqInt fetchClassOf(sqInt oop);
extern extern sqInt fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
extern extern sqInt fetchPointerofObject(sqInt index, sqInt oop);
extern extern void * firstIndexableField(sqInt oop);
extern extern sqInt instanceSizeOf(sqInt classObj);
extern extern sqInt isBytes(sqInt oop);
extern extern sqInt isPointers(sqInt oop);
extern extern sqInt isWords(sqInt oop);
extern extern sqInt methodArgumentCount(void);
extern extern sqInt nilObject(void);
extern extern sqInt pop(sqInt nItems);
extern extern sqInt popthenPush(sqInt nItems, sqInt oop);
extern extern sqInt positive32BitIntegerFor(sqInt integerValue);
extern extern usqInt positive32BitValueOf(sqInt oop);
extern extern sqInt primitiveFail(void);
extern extern sqInt pushBool(sqInt trueOrFalse);
extern extern sqInt pushInteger(sqInt integerValue);
extern extern sqInt slotSizeOf(sqInt oop);
extern extern sqInt stackIntegerValue(sqInt offset);
extern extern sqInt stackObjectValue(sqInt offset);
extern extern sqInt stackValue(sqInt offset);
extern extern sqInt storeIntegerofObjectwithValue(sqInt index, sqInt oop, sqInt integer);
extern extern sqInt superclassOf(sqInt classPointer);
extern
#endif</pre><div class=""><br class=""></div></div></div><div>there is something I should take into account?</div><div><br class=""></div><div>cheers,&nbsp;</div><div>Esteban</div><div><br class=""></div><div>ps: btw, I’m using clang to compile in mac since a lot of time and I do not have problems, yes I needed to tweak a flag here and there, but not much more… of course, I use “Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)”, so is probably not the same...</div><br class=""><blockquote type="cite" class=""><div class=""><br class="">Spur:<br class="">Remember to count shrink requests<br class=""><br class="">Cogit:<br class="">Changes for in-progress CogOutOfLineLiteralsARMCompiler code generator.<br class=""><br class="">Move annotations into instructions, where they sit more naturally anyway.<br class="">But doing so makes it trivial to move annotations from the instructions<br class="">referencing out-of-line literals to the literals themselves. &nbsp;Hence nuke<br class="">CogInstructionAnnotation.<br class=""><br class="">Fix isAnInstruction for labels (methodLabel) and use it to guard<br class="">addressIsInCurrentCompilation: calls where a label is involved.<br class=""><br class="">Move the assignment of maxSize out of computeMaximumSize and into<br class="">computeMaximumSizes for concision.<br class=""><br class="">ARM Cogit:<br class="">Introduce some more abstractions for rotateable constants so that it is easier<br class="">to relate computeMaximumSize and dispatchConcetize in CogARMCompiler. &nbsp;Provide<br class="">more opcode names and use them, and use inverseOpcodeFor: to calculate the<br class="">inverse opcode when the inverse constant is used.<br class=""><br class="">Revise ARM getDefaultCogCodeSize given better estimates of relative code sizes.<br class="">Simplify isPICDependent to eliminate Calls, which are not pc-dependent (since<br class="">they always call out of the current compilaiton).<br class=""><br class="">Fix bugs in computeMaximumSize with AddCqR and<br class="">SubCqR, and a bad slip in concretizePushCq.<br class=""><br class="">Nuke the unused BICCqR opcode. &nbsp;Add class vars to<br class="">name all the opcodes passed to concretizeDataOperationCwR:.<br class=""><br class="">Make all the usages of flushICacheFrom:to: work with start-address to<br class="">byte-after-end-address. Irrelevant to x86, perfect for ARM, matches most of<br class="">the usage already in place.<br class=""><br class="">Sista Cogit:<br class="">Added support for jumpOrPopIfNotInstanceOf: in cogit's scanner.<br class=""><br class="">Unix: restore the SCCS revision after the version number in -version output.<br class=""><br class="">Modified Paths:<br class="">--------------<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/nsspursrc/vm/cogit.h<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/nsspursrc/vm/cogitARMv5.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/nsspursrc/vm/cogitIA32.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/nsspursrc/vm/cointerp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/nsspursrc/vm/cointerp.h<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/nsspursrc/vm/gcc3x-cointerp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/nsspurstack64src/vm/gcc3x-interp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/nsspurstack64src/vm/interp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/nsspurstacksrc/vm/interp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/platforms/unix/vm/sqUnixMain.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spursistasrc/vm/cogit.h<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spursistasrc/vm/cogitARMv5.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spursistasrc/vm/cogitIA32.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spursistasrc/vm/cointerp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spursistasrc/vm/cointerp.h<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spursistasrc/vm/gcc3x-cointerp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spursrc/vm/cogit.h<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spursrc/vm/cogitARMv5.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spursrc/vm/cogitIA32.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spursrc/vm/cointerp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spursrc/vm/cointerp.h<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spursrc/vm/gcc3x-cointerp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spurstack64src/vm/gcc3x-interp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spurstack64src/vm/interp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spurstacksrc/vm/gcc3x-interp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/spurstacksrc/vm/interp.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/src/vm/cogit.h<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/src/vm/cogitARMv5.c<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/src/vm/cogitIA32.c<br class=""><br class="">Property Changed:<br class="">----------------<br class=""> &nbsp;&nbsp;&nbsp;branches/Cog/platforms/Cross/vm/sqSCCSVersion.h<br class=""><br class="">Modified: branches/Cog/nsspursrc/vm/cogit.h<br class="">===================================================================<br class="">--- branches/Cog/nsspursrc/vm/cogit.h<span class="Apple-tab-span" style="white-space:pre">        </span>2015-06-06 17:07:13 UTC (rev 3373)<br class="">+++ branches/Cog/nsspursrc/vm/cogit.h<span class="Apple-tab-span" style="white-space:pre">        </span>2015-06-11 23:02:50 UTC (rev 3374)<br class="">@@ -1,5 +1,5 @@<br class=""> /* Automatically generated by<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span>CCodeGenerator VMMaker.oscog-eem.1339 uuid: 022ddfcc-a8f6-422b-8a81-edffae18ebe6<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span>CCodeGenerator VMMaker.oscog-eem.1349 uuid: c4bacc64-8f85-425f-b5b9-47504c99cabe<br class=""> &nbsp;*/<br class=""><br class=""><br class="">@@ -20,77 +20,77 @@<br class=""> # define NeverInline /*empty*/<br class=""> #endif<br class=""><br class="">-sqInt abortOffset(void);<br class="">-void addCogMethodsToHeapMap(void);<br class="">-sqInt bytecodePCForstartBcpcin(sqInt mcpc, sqInt startbcpc, CogBlockMethod *cogMethod);<br class="">-void callCogCodePopReceiver(void);<br class="">-void callCogCodePopReceiverAndClassRegs(void);<br class="">-sqInt ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver);<br class="">-sqInt ceSICMiss(sqInt receiver);<br class="">-void checkAssertsEnabledInCogit(void);<br class="">-sqInt checkIntegrityOfObjectReferencesInCode(sqInt gcModes);<br class="">-char * codeEntryFor(char *address);<br class="">-char * codeEntryNameFor(char *address);<br class="">-sqInt cogCodeBase(void);<br class="">-sqInt cogCodeConstituents(void);<br class="">-void cogitPostGCAction(sqInt gcMode);<br class="">-sqInt cogMethodDoesntLookKosher(CogMethod *cogMethod);<br class="">-CogMethod * cogMNUPICSelectorreceivermethodOperandnumArgs(sqInt selector, sqInt rcvr, sqInt methodOperand, sqInt numArgs);<br class="">-CogMethod * cogselector(sqInt aMethodObj, sqInt aSelectorOop);<br class="">-void compactCogCompiledCode(void);<br class="">-sqInt defaultCogCodeSize(void);<br class="">-void enterCogCodePopReceiver(void);<br class="">-CogBlockMethod * findMethodForStartBcpcinHomeMethod(sqInt startbcpc, CogMethod *cogMethod);<br class="">-void followForwardedLiteralsIn(CogMethod *cogMethod);<br class="">-void followForwardedMethods(void);<br class="">-void freeUnmarkedMachineCode(void);<br class="">-void initializeCodeZoneFromupTo(sqInt startAddress, sqInt endAddress);<br class="">-sqInt isPCWithinMethodZone(void *address);<br class="">-sqInt isSendReturnPC(sqInt retpc);<br class="">-void linkNSSendCacheclassTagenclosingObjecttargetcaller(NSSendCache *nsSendCache, sqInt classTag, sqInt enclosingObject, CogMethod *targetMethod, CogMethod *callingMethod);<br class="">-void linkSendAtintooffsetreceiver(sqInt callSiteReturnAddress, CogMethod *sendingMethod, CogMethod *targetMethod, sqInt theEntryOffset, sqInt receiver);<br class="">-void mapObjectReferencesInMachineCode(sqInt gcMode);<br class="">-void markAndTraceMachineCodeOfMarkedMethods(void);<br class="">-void markMethodAndReferents(CogBlockMethod *aCogMethod);<br class="">-usqInt maxCogMethodAddress(void);<br class="">-usqInt mcPCForBackwardBranchstartBcpcin(sqInt bcpc, sqInt startbcpc, CogBlockMethod *cogMethod);<br class="">-sqInt minCogMethodAddress(void);<br class="">-sqInt mnuOffset(void);<br class="">-sqInt patchToOpenPICFornumArgsreceiver(sqInt selector, sqInt numArgs, sqInt receiver);<br class="">-sqInt pcisWithinMethod(char *address, CogMethod *cogMethod);<br class="">-void printCogMethodFor(void *address);<br class="">-void printTrampolineTable(void);<br class="">-sqInt recordPrimTraceFunc(void);<br class="">-void setBreakMethod(sqInt anObj);<br class="">-void setPostCompileHook(void (*aFunction)(CogMethod *, void *));<br class="">-void setSelectorOfto(CogMethod *cogMethod, sqInt aSelectorOop);<br class="">-sqInt traceLinkedSendOffset(void);<br class="">-void unlinkAllSends(void);<br class="">-void unlinkSendsLinkedForInvalidClasses(void);<br class="">-void unlinkSendsOfisMNUSelector(sqInt selector, sqInt isMNUSelector);<br class="">-void unlinkSendsToFree(void);<br class="">-void unlinkSendsToandFreeIf(sqInt targetMethodObject, sqInt freeIfTrue);<br class="">-void addAllToYoungReferrers(void);<br class="">-void freeMethod(CogMethod *cogMethod);<br class="">-CogMethod * methodFor(void *address);<br class="">-sqInt numMethodsOfType(sqInt cogMethodType);<br class="">-void printCogMethods(void);<br class="">-void printCogMethodsOfType(sqInt cmType);<br class="">-void printCogMethodsWithMethod(sqInt methodOop);<br class="">-void printCogMethodsWithPrimitive(sqInt primIdx);<br class="">-void printCogMethodsWithSelector(sqInt selectorOop);<br class="">-void printCogYoungReferrers(void);<br class="">-void printOpenPICList(void);<br class="">-char * whereIsMaybeCodeThing(sqInt anOop);<br class="">-sqInt numRegArgs(void);<br class="">-sqInt genQuickReturnConst(void);<br class="">-sqInt genQuickReturnInstVar(void);<br class="">-sqInt genQuickReturnSelf(void);<br class="">-void recordCallOffsetInof(CogMethod *cogMethod, void *callLabelArg);<br class="">-void rewritePrimInvocationInto(CogMethod *cogMethod, void (*primFunctionPointer)(void));<br class="">-void voidCogCompiledCode(void);<br class="">-void callCogCodePopReceiverArg0Regs(void);<br class="">-void callCogCodePopReceiverArg1Arg0Regs(void);<br class="">+extern sqInt abortOffset(void);<br class="">+extern void addCogMethodsToHeapMap(void);<br class="">+extern sqInt bytecodePCForstartBcpcin(sqInt mcpc, sqInt startbcpc, CogBlockMethod *cogMethod);<br class="">+extern void callCogCodePopReceiver(void);<br class="">+extern void callCogCodePopReceiverAndClassRegs(void);<br class="">+extern sqInt ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver);<br class="">+extern sqInt ceSICMiss(sqInt receiver);<br class="">+extern void checkAssertsEnabledInCogit(void);<br class="">+extern sqInt checkIntegrityOfObjectReferencesInCode(sqInt gcModes);<br class="">+extern char * codeEntryFor(char *address);<br class="">+extern char * codeEntryNameFor(char *address);<br class="">+extern sqInt cogCodeBase(void);<br class="">+extern sqInt cogCodeConstituents(void);<br class="">+extern void cogitPostGCAction(sqInt gcMode);<br class="">+extern sqInt cogMethodDoesntLookKosher(CogMethod *cogMethod);<br class="">+extern CogMethod * cogMNUPICSelectorreceivermethodOperandnumArgs(sqInt selector, sqInt rcvr, sqInt methodOperand, sqInt numArgs);<br class="">+extern CogMethod * cogselector(sqInt aMethodObj, sqInt aSelectorOop);<br class="">+extern void compactCogCompiledCode(void);<br class="">+extern sqInt defaultCogCodeSize(void);<br class="">+extern void enterCogCodePopReceiver(void);<br class="">+extern CogBlockMethod * findMethodForStartBcpcinHomeMethod(sqInt startbcpc, CogMethod *cogMethod);<br class="">+extern void followForwardedLiteralsIn(CogMethod *cogMethod);<br class="">+extern void followForwardedMethods(void);<br class="">+extern void freeUnmarkedMachineCode(void);<br class="">+extern void initializeCodeZoneFromupTo(sqInt startAddress, sqInt endAddress);<br class="">+extern sqInt isPCWithinMethodZone(void *address);<br class="">+extern sqInt isSendReturnPC(sqInt retpc);<br class="">+extern void linkNSSendCacheclassTagenclosingObjecttargetcaller(NSSendCache *nsSendCache, sqInt classTag, sqInt enclosingObject, CogMethod *targetMethod, CogMethod *callingMethod);<br class="">+extern void linkSendAtintooffsetreceiver(sqInt callSiteReturnAddress, CogMethod *sendingMethod, CogMethod *targetMethod, sqInt theEntryOffset, sqInt receiver);<br class="">+extern void mapObjectReferencesInMachineCode(sqInt gcMode);<br class="">+extern void markAndTraceMachineCodeOfMarkedMethods(void);<br class="">+extern void markMethodAndReferents(CogBlockMethod *aCogMethod);<br class="">+extern usqInt maxCogMethodAddress(void);<br class="">+extern usqInt mcPCForBackwardBranchstartBcpcin(sqInt bcpc, sqInt startbcpc, CogBlockMethod *cogMethod);<br class="">+extern sqInt minCogMethodAddress(void);<br class="">+extern sqInt mnuOffset(void);<br class="">+extern sqInt patchToOpenPICFornumArgsreceiver(sqInt selector, sqInt numArgs, sqInt receiver);<br class="">+extern sqInt pcisWithinMethod(char *address, CogMethod *cogMethod);<br class="">+extern void printCogMethodFor(void *address);<br class="">+extern void printTrampolineTable(void);<br class="">+extern sqInt recordPrimTraceFunc(void);<br class="">+extern void setBreakMethod(sqInt anObj);<br class="">+extern void setPostCompileHook(void (*aFunction)(CogMethod *, void *));<br class="">+extern void setSelectorOfto(CogMethod *cogMethod, sqInt aSelectorOop);<br class="">+extern sqInt traceLinkedSendOffset(void);<br class="">+extern void unlinkAllSends(void);<br class="">+extern void unlinkSendsLinkedForInvalidClasses(void);<br class="">+extern void unlinkSendsOfisMNUSelector(sqInt selector, sqInt isMNUSelector);<br class="">+extern void unlinkSendsToFree(void);<br class="">+extern void unlinkSendsToandFreeIf(sqInt targetMethodObject, sqInt freeIfTrue);<br class="">+extern void addAllToYoungReferrers(void);<br class="">+extern void freeMethod(CogMethod *cogMethod);<br class="">+extern CogMethod * methodFor(void *address);<br class="">+extern sqInt numMethodsOfType(sqInt cogMethodType);<br class="">+extern void printCogMethods(void);<br class="">+extern void printCogMethodsOfType(sqInt cmType);<br class="">+extern void printCogMethodsWithMethod(sqInt methodOop);<br class="">+extern void printCogMethodsWithPrimitive(sqInt primIdx);<br class="">+extern void printCogMethodsWithSelector(sqInt selectorOop);<br class="">+extern void printCogYoungReferrers(void);<br class="">+extern void printOpenPICList(void);<br class="">+extern char * whereIsMaybeCodeThing(sqInt anOop);<br class="">+extern sqInt numRegArgs(void);<br class="">+extern sqInt genQuickReturnConst(void);<br class="">+extern sqInt genQuickReturnInstVar(void);<br class="">+extern sqInt genQuickReturnSelf(void);<br class="">+extern void recordCallOffsetInof(CogMethod *cogMethod, void *callLabelArg);<br class="">+extern void rewritePrimInvocationInto(CogMethod *cogMethod, void (*primFunctionPointer)(void));<br class="">+extern void voidCogCompiledCode(void);<br class="">+extern void callCogCodePopReceiverArg0Regs(void);<br class="">+extern void callCogCodePopReceiverArg1Arg0Regs(void);<br class=""><br class=""><br class=""> /*** Global Variables ***/<br class=""><br class="">Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c<br class="">===================================================================<br class="">--- branches/Cog/nsspursrc/vm/cogitARMv5.c<span class="Apple-tab-span" style="white-space:pre">        </span>2015-06-06 17:07:13 UTC (rev 3373)<br class="">+++ branches/Cog/nsspursrc/vm/cogitARMv5.c<span class="Apple-tab-span" style="white-space:pre">        </span>2015-06-11 23:02:50 UTC (rev 3374)<br class="">@@ -1,9 +1,9 @@<br class=""> /* Automatically generated by<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span>CCodeGenerator VMMaker.oscog-eem.1339 uuid: 022ddfcc-a8f6-422b-8a81-edffae18ebe6<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span>CCodeGenerator VMMaker.oscog-eem.1349 uuid: c4bacc64-8f85-425f-b5b9-47504c99cabe<br class=""> &nbsp;&nbsp;&nbsp;from<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span>StackToRegisterMappingCogit VMMaker.oscog-eem.1339 uuid: 022ddfcc-a8f6-422b-8a81-edffae18ebe6<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span>StackToRegisterMappingCogit VMMaker.oscog-eem.1349 uuid: c4bacc64-8f85-425f-b5b9-47504c99cabe<br class=""> &nbsp;*/<br class="">-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1339 uuid: 022ddfcc-a8f6-422b-8a81-edffae18ebe6 " __DATE__ ;<br class="">+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1349 uuid: c4bacc64-8f85-425f-b5b9-47504c99cabe " __DATE__ ;<br class=""> char *__cogitBuildInfo = __buildInfo;<br class=""><br class=""><br class="">@@ -25,6 +25,7 @@<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>unsigned char<span class="Apple-tab-span" style="white-space:pre">        </span>opcode;<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>unsigned char<span class="Apple-tab-span" style="white-space:pre">        </span>machineCodeSize;<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>unsigned char<span class="Apple-tab-span" style="white-space:pre">        </span>maxSize;<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span>unsigned char<span class="Apple-tab-span" style="white-space:pre">        </span>annotation;<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>unsigned char<span class="Apple-tab-span" style="white-space:pre">        </span>conditionOrNil;<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>unsigned long<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>operands [3];<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>unsigned long<span class="Apple-tab-span" style="white-space:pre">        </span>address;<br class="">@@ -73,14 +74,6 @@<br class=""><br class=""><br class=""> typedef struct {<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span>sqInt<span class="Apple-tab-span" style="white-space:pre">        </span>annotation;<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span>AbstractInstruction *instruction;<br class="">- } InstructionAnnotation;<br class="">-<br class="">-#define CogInstructionAnnotation InstructionAnnotation<br class="">-<br class="">-<br class="">-typedef struct {<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>sqInt (*primitiveGenerator )(void);<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>sqInt<span class="Apple-tab-span" style="white-space:pre">        </span>primNumArgs;<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>sqInt (*enabled )(sqInt);<br class="">@@ -117,27 +110,26 @@<br class=""><br class=""><br class=""> /*** Constants ***/<br class="">-#define AddCqR 95<br class="">-#define AddCwR 102<br class="">+#define AddCqR 96<br class="">+#define AddCwR 104<br class=""> #define AddOpcode 4<br class="">-#define AddRdRd 110<br class="">-#define AddRR 88<br class="">+#define AddRdRd 112<br class="">+#define AddRR 89<br class=""> #define AL 14<br class="">-#define AlignmentNops 2<br class="">+#define AlignmentNops 3<br class=""> #define AltBlockCreationBytecodeSize 3<br class=""> #define AltFirstSpecialSelector 80<br class="">-#define AndCqR 97<br class="">-#define AndCqRR 108<br class="">-#define AndCwR 104<br class="">+#define AndCqR 98<br class="">+#define AndCqRR 110<br class="">+#define AndCwR 106<br class=""> #define AndOpcode 0<br class="">-#define AndRR 90<br class="">+#define AndRR 91<br class=""> #define AnnotationShift 5<br class=""> #define Arg0Reg -7<br class=""> #define Arg1Reg -8<br class="">-#define ArithmeticShiftRightCqR 81<br class="">-#define ArithmeticShiftRightRR 82<br class="">+#define ArithmeticShiftRightCqR 82<br class="">+#define ArithmeticShiftRightRR 83<br class=""> #define BadRegisterSet 1<br class="">-#define BICCqR 122<br class=""> #define BicOpcode 14<br class=""> #define BlockCreationBytecodeSize 4<br class=""> #define BytecodeSetHasDirectedSuperSend 0<br class="">@@ -145,8 +137,8 @@<br class=""> #define CArg1Reg 1<br class=""> #define CArg2Reg 2<br class=""> #define CArg3Reg 3<br class="">-#define Call 9<br class="">-#define CallFull 10<br class="">+#define Call 10<br class="">+#define CallFull 11<br class=""> #define CC 3<br class=""> #define ClassArrayCompactIndex 51<br class=""> #define ClassBlockClosureCompactIndex 37<br class="">@@ -165,31 +157,32 @@<br class=""> #define CMMethod 2<br class=""> #define CMOpenPIC 5<br class=""> #define CMPSMULL 123<br class="">-#define CmpCqR 94<br class="">-#define CmpCwR 101<br class="">+#define CmpCqR 95<br class="">+#define CmpCwR 103<br class="">+#define CmpNotOpcode 11<br class=""> #define CmpOpcode 10<br class="">-#define CmpRdRd 109<br class="">-#define CmpRR 87<br class="">+#define CmpRdRd 111<br class="">+#define CmpRR 88<br class=""> #define ConcreteIPReg 12<br class=""> #define ConcreteVarBaseReg 10<br class=""> #define ConstZero 1<br class="">-#define ConvertRRd 116<br class="">+#define ConvertRRd 117<br class=""> #define CS 2<br class=""> #define Debug DEBUGVM<br class=""> #define DisplacementMask 0x1F<br class=""> #define DisplacementX2N 0<br class="">-#define DivRdRd 113<br class="">+#define DivRdRd 115<br class=""> #define DPFPReg0 -9<br class=""> #define DPFPReg1 -10<br class=""> #define DPFPReg2 -11<br class=""> #define EncounteredUnknownBytecode -6<br class=""> #define EQ 0<br class="">-#define Fill16 5<br class="">-#define Fill32 6<br class="">-#define FillFromWord 7<br class="">+#define Fill16 6<br class="">+#define Fill32 7<br class="">+#define FillFromWord 8<br class=""> #define FirstAnnotation 64<br class="">-#define FirstJump 14<br class="">-#define FirstShortJump 18<br class="">+#define FirstJump 15<br class="">+#define FirstShortJump 19<br class=""> #define FirstSpecialSelector 176<br class=""> #define FoxCallerSavedIP 4<br class=""> #define FoxMethod -4<br class="">@@ -221,46 +214,47 @@<br class=""> #define IsRelativeCall 5<br class=""> #define IsSendCall 7<br class=""> #define IsSuperSend 8<br class="">-#define Jump 18<br class="">-#define JumpAbove 33<br class="">-#define JumpAboveOrEqual 32<br class="">-#define JumpBelow 31<br class="">-#define JumpBelowOrEqual 34<br class="">-#define JumpCarry 25<br class="">-#define JumpFPEqual 35<br class="">-#define JumpFPGreater 39<br class="">-#define JumpFPGreaterOrEqual 40<br class="">-#define JumpFPLess 37<br class="">-#define JumpFPLessOrEqual 38<br class="">-#define JumpFPNotEqual 36<br class="">-#define JumpFPOrdered 41<br class="">-#define JumpFPUnordered 42<br class="">-#define JumpFull 14<br class="">-#define JumpGreater 29<br class="">-#define JumpGreaterOrEqual 28<br class="">-#define JumpLess 27<br class="">-#define JumpLessOrEqual 30<br class="">-#define JumpLong 15<br class="">-#define JumpLongNonZero 17<br class="">-#define JumpLongZero 16<br class="">-#define JumpNegative 21<br class="">-#define JumpNoCarry 26<br class="">-#define JumpNonNegative 22<br class="">-#define JumpNonZero 20<br class="">-#define JumpNoOverflow 24<br class="">-#define JumpOverflow 23<br class="">-#define JumpR 12<br class="">-#define JumpZero 19<br class="">+#define Jump 19<br class="">+#define JumpAbove 34<br class="">+#define JumpAboveOrEqual 33<br class="">+#define JumpBelow 32<br class="">+#define JumpBelowOrEqual 35<br class="">+#define JumpCarry 26<br class="">+#define JumpFPEqual 36<br class="">+#define JumpFPGreater 40<br class="">+#define JumpFPGreaterOrEqual 41<br class="">+#define JumpFPLess 38<br class="">+#define JumpFPLessOrEqual 39<br class="">+#define JumpFPNotEqual 37<br class="">+#define JumpFPOrdered 42<br class="">+#define JumpFPUnordered 43<br class="">+#define JumpFull 15<br class="">+#define JumpGreater 30<br class="">+#define JumpGreaterOrEqual 29<br class="">+#define JumpLess 28<br class="">+#define JumpLessOrEqual 31<br class="">+#define JumpLong 16<br class="">+#define JumpLongNonZero 18<br class="">+#define JumpLongZero 17<br class="">+#define JumpNegative 22<br class="">+#define JumpNoCarry 27<br class="">+#define JumpNonNegative 23<br class="">+#define JumpNonZero 21<br class="">+#define JumpNoOverflow 25<br class="">+#define JumpOverflow 24<br class="">+#define JumpR 13<br class="">+#define JumpZero 20<br class=""> #define Label 1<br class=""> #define LargeContextSlots 62<br class="">-#define LastJump 42<br class="">+#define LastJump 43<br class=""> #define LE 13<br class=""> #define LinkReg -17<br class="">-#define LoadEffectiveAddressMwrR 78<br class="">-#define LogicalShiftLeftCqR 85<br class="">-#define LogicalShiftLeftRR 86<br class="">-#define LogicalShiftRightCqR 83<br class="">-#define LogicalShiftRightRR 84<br class="">+#define Literal 2<br class="">+#define LoadEffectiveAddressMwrR 79<br class="">+#define LogicalShiftLeftCqR 86<br class="">+#define LogicalShiftLeftRR 87<br class="">+#define LogicalShiftRightCqR 84<br class="">+#define LogicalShiftRightRR 85<br class=""> #define LR 14<br class=""> #define LS 9<br class=""> #define LT 11<br class="">@@ -281,32 +275,32 @@<br class=""> #define MFMethodFlagHasContextFlag 1<br class=""> #define MFMethodFlagIsBlockFlag 2<br class=""> #define MI 4<br class="">-#define MoveAwR 44<br class="">-#define MoveCqR 66<br class="">-#define MoveCwR 67<br class="">-#define MoveM16rR 54<br class="">-#define MoveM64rRd 71<br class="">-#define MoveMbrR 62<br class="">-#define MoveMwrR 48<br class="">+#define MoveAwR 45<br class="">+#define MoveCqR 67<br class="">+#define MoveCwR 68<br class="">+#define MoveM16rR 55<br class="">+#define MoveM64rRd 72<br class="">+#define MoveMbrR 63<br class="">+#define MoveMwrR 49<br class=""> #define MoveNotOpcode 15<br class=""> #define MoveOpcode 13<br class="">-#define MoveRAw 45<br class="">-#define MoveRdM64r 72<br class="">-#define MoveRdRd 70<br class="">-#define MoveRMbr 63<br class="">-#define MoveRMwr 49<br class="">-#define MoveRR 43<br class="">-#define MoveRXbrR 65<br class="">-#define MoveRXwrR 51<br class="">-#define MoveXbrRR 64<br class="">-#define MoveXwrRR 50<br class="">-#define MSR 118<br class="">+#define MoveRAw 46<br class="">+#define MoveRdM64r 73<br class="">+#define MoveRdRd 71<br class="">+#define MoveRMbr 64<br class="">+#define MoveRMwr 50<br class="">+#define MoveRR 44<br class="">+#define MoveRXbrR 66<br class="">+#define MoveRXwrR 52<br class="">+#define MoveXbrRR 65<br class="">+#define MoveXwrRR 51<br class="">+#define MSR 119<br class=""> #define MULTIPLEBYTECODESETS 1<br class="">-#define MulRdRd 112<br class="">+#define MulRdRd 114<br class=""> #define NE 1<br class="">-#define NegateR 80<br class="">+#define NegateR 81<br class=""> #define NewspeakVM 1<br class="">-#define Nop 8<br class="">+#define Nop 9<br class=""> #define NotFullyInitialized -1<br class=""> #define NSCClassTagIndex 0<br class=""> #define NSCEnclosingObjectIndex 1<br class="">@@ -316,24 +310,24 @@<br class=""> #define NumOopsPerNSC 6<br class=""> #define NumSendTrampolines 4<br class=""> #define NumTrampolines 72<br class="">-#define OrCqR 98<br class="">-#define OrCwR 105<br class="">+#define OrCqR 99<br class="">+#define OrCwR 107<br class=""> #define OrOpcode 12<br class="">-#define OrRR 91<br class="">+#define OrRR 92<br class=""> #define PC 15<br class=""> #define PCReg -19<br class=""> #define PL 5<br class="">-#define PopR 73<br class="">-#define PrefetchAw 77<br class="">+#define PopR 74<br class="">+#define PrefetchAw 78<br class=""> #define PrimCallCollectsProfileSamples 8<br class=""> #define PrimCallDoNotJIT 32<br class=""> #define PrimCallMayCallBack 4<br class=""> #define PrimCallNeedsNewMethod 1<br class=""> #define PrimCallNeedsPrimitiveFunction 2<br class=""> #define PrimErrWritePastObject 17<br class="">-#define PushCq 75<br class="">-#define PushCw 76<br class="">-#define PushR 74<br class="">+#define PushCq 76<br class="">+#define PushCw 77<br class="">+#define PushR 75<br class=""> #define R0 0<br class=""> #define R11 11<br class=""> #define R4 4<br class="">@@ -343,7 +337,7 @@<br class=""> #define R8 8<br class=""> #define ReceiverIndex 5<br class=""> #define ReceiverResultReg -3<br class="">-#define RetN 11<br class="">+#define RetN 12<br class=""> #define RISCTempReg -18<br class=""> #define RsbOpcode 3<br class=""> #define SelectorCannotInterpret 34<br class="">@@ -352,34 +346,35 @@<br class=""> #define SendNumArgsReg -6<br class=""> #define ShouldNotJIT -8<br class=""> #define SistaVM 0<br class="">-#define SMULL 117<br class="">+#define SMULL 118<br class=""> #define SmallContextSlots 22<br class=""> #define SP 13<br class=""> #define SPReg -2<br class="">-#define SqrtRd 115<br class="">+#define SqrtRd 116<br class=""> #define SSBaseOffset 1<br class=""> #define SSConstant 2<br class=""> #define SSRegister 3<br class=""> #define SSSpill 4<br class=""> #define StackPointerIndex 2<br class="">-#define Stop 13<br class="">-#define SubCqR 96<br class="">-#define SubCwR 103<br class="">+#define Stop 14<br class="">+#define SubCqR 97<br class="">+#define SubCwR 105<br class=""> #define SubOpcode 2<br class="">-#define SubRdRd 111<br class="">-#define SubRR 89<br class="">+#define SubRdRd 113<br class="">+#define SubRR 90<br class=""> #define TempReg -4<br class="">-#define TstCqR 114<br class="">+#define TstCqR 100<br class="">+#define TstOpcode 8<br class=""> #define UnfailingPrimitive 3<br class=""> #define UnimplementedPrimitive -7<br class=""> #define ValueIndex 1<br class=""> #define VarBaseReg -20<br class=""> #define VC 7<br class=""> #define VS 6<br class="">-#define XorCqR 99<br class="">-#define XorCwR 106<br class="">+#define XorCqR 101<br class="">+#define XorCwR 108<br class=""> #define XorOpcode 1<br class="">-#define XorRR 92<br class="">+#define XorRR 93<br class=""> #define YoungSelectorInPIC -5<br class=""><br class=""><br class="">@@ -426,7 +421,6 @@<br class=""> static sqInt bl(AbstractInstruction * self_in_bl, sqInt offset) NoDbgRegParms;<br class=""> static sqInt b(AbstractInstruction * self_in_b, sqInt offset) NoDbgRegParms;<br class=""> static sqInt callerSavedRegisterMask(AbstractInstruction * self_in_callerSavedRegisterMask) NoDbgRegParms;<br class="">-static sqInt callFullTargetFromReturnAddress(AbstractInstruction * self_in_callFullTargetFromReturnAddress, sqInt callSiteReturnAddress) NoDbgRegParms;<br class=""> static sqInt callInstructionByteSize(AbstractInstruction * self_in_callInstructionByteSize) NoDbgRegParms;<br class=""> static sqInt callTargetFromReturnAddress(AbstractInstruction * self_in_callTargetFromReturnAddress, sqInt callSiteReturnAddress) NoDbgRegParms;<br class=""> static sqInt computeMaximumSize(AbstractInstruction * self_in_computeMaximumSize) NoDbgRegParms;<br class="">@@ -453,7 +447,6 @@<br class=""> static sqInt cResultRegister(AbstractInstruction * self_in_cResultRegister) NoDbgRegParms;<br class=""> static sqInt dataOpTyperdrnrmlsr(AbstractInstruction * self_in_dataOpTyperdrnrmlsr, sqInt armOpcode, sqInt destReg, sqInt srcReg, sqInt addReg, sqInt shft) NoDbgRegParms;<br class=""> static void dispatchConcretize(AbstractInstruction * self_in_dispatchConcretize) NoDbgRegParms;<br class="">-static sqInt extract32BitOperandFrom4InstructionsPreceeding(AbstractInstruction * self_in_extract32BitOperandFrom4InstructionsPreceeding, sqInt addr) NoDbgRegParms;<br class=""> static sqInt fullCallsAreRelative(AbstractInstruction * self_in_fullCallsAreRelative) NoDbgRegParms;<br class=""> static sqInt genAlignCStackSavingRegistersnumArgswordAlignment(AbstractInstruction * self_in_genAlignCStackSavingRegistersnumArgswordAlignment, sqInt saveRegs, sqInt numArgs, sqInt alignment) NoDbgRegParms;<br class=""> static AbstractInstruction * genDivRRQuoRem(AbstractInstruction * self_in_genDivRRQuoRem, sqInt abstractRegDivisor, sqInt abstractRegDividend, sqInt abstractRegQuotient, sqInt abstractRegRemainder) NoDbgRegParms;<br class="">@@ -475,8 +468,6 @@<br class=""> static sqInt hasLinkRegister(AbstractInstruction * self_in_hasLinkRegister) NoDbgRegParms;<br class=""> static sqInt hasPCDependentInstruction(AbstractInstruction * self_in_hasPCDependentInstruction) NoDbgRegParms;<br class=""> static sqInt hasPCRegister(AbstractInstruction * self_in_hasPCRegister) NoDbgRegParms;<br class="">-static sqInt inlineCacheTagAt(AbstractInstruction * self_in_inlineCacheTagAt, sqInt callSiteReturnAddress) NoDbgRegParms;<br class="">-static sqInt instructionBeforeAddress(AbstractInstruction * self_in_instructionBeforeAddress, sqInt followingAddress) NoDbgRegParms;<br class=""> static sqInt instructionIsBLX(AbstractInstruction * self_in_instructionIsBLX, sqInt instr) NoDbgRegParms;<br class=""> static sqInt instructionIsBL(AbstractInstruction * self_in_instructionIsBL, sqInt instr) NoDbgRegParms;<br class=""> static sqInt instructionIsBX(AbstractInstruction * self_in_instructionIsBX, sqInt instr) NoDbgRegParms;<br class="">@@ -484,11 +475,11 @@<br class=""> static sqInt instructionIsOR(AbstractInstruction * self_in_instructionIsOR, sqInt instr) NoDbgRegParms;<br class=""> static sqInt instructionIsPush(AbstractInstruction * self_in_instructionIsPush, sqInt instr) NoDbgRegParms;<br class=""> static sqInt instructionSizeAt(AbstractInstruction * self_in_instructionSizeAt, sqInt pc) NoDbgRegParms;<br class="">+static sqInt inverseOpcodeFor(AbstractInstruction * self_in_inverseOpcodeFor, sqInt armOpcode) NoDbgRegParms;<br class=""> static sqInt isAddressRelativeToVarBase(AbstractInstruction * self_in_isAddressRelativeToVarBase, usqInt varAddress) NoDbgRegParms;<br class=""> static sqInt isCallPreceedingReturnPC(AbstractInstruction * self_in_isCallPreceedingReturnPC, sqInt mcpc) NoDbgRegParms;<br class=""> static sqInt isInImmediateJumpRange(AbstractInstruction * self_in_isInImmediateJumpRange, unsigned long operand) NoDbgRegParms;<br class=""> static sqInt isJumpAt(AbstractInstruction * self_in_isJumpAt, sqInt pc) NoDbgRegParms;<br class="">-static sqInt isPCDependent(AbstractInstruction * self_in_isPCDependent) NoDbgRegParms;<br class=""> static sqInt isPCRelativeValueLoad(AbstractInstruction * self_in_isPCRelativeValueLoad, unsigned int instr) NoDbgRegParms;<br class=""> static sqInt jumpLongByteSize(AbstractInstruction * self_in_jumpLongByteSize) NoDbgRegParms;<br class=""> static sqInt jumpLongConditionalByteSize(AbstractInstruction * self_in_jumpLongConditionalByteSize) NoDbgRegParms;<br class="">@@ -502,7 +493,6 @@<br class=""> static sqInt ldrrnplusimm(AbstractInstruction * self_in_ldrrnplusimm, sqInt destReg, sqInt baseReg, sqInt u, sqInt immediate12bitValue) NoDbgRegParms;<br class=""> static sqInt ldrrnrm(AbstractInstruction * self_in_ldrrnrm, sqInt destReg, sqInt baseReg, sqInt offsetReg) NoDbgRegParms;<br class=""> static sqInt leafCallStackPointerDelta(AbstractInstruction * self_in_leafCallStackPointerDelta) NoDbgRegParms;<br class="">-static sqInt literalBeforeFollowingAddress(AbstractInstruction * self_in_literalBeforeFollowingAddress, sqInt followingAddress) NoDbgRegParms;<br class=""> static sqInt loadCwInto(AbstractInstruction * self_in_loadCwInto, sqInt destReg) NoDbgRegParms;<br class=""> static sqInt loadLiteralByteSize(AbstractInstruction * self_in_loadLiteralByteSize) NoDbgRegParms;<br class=""> static sqInt loadPICLiteralByteSize(AbstractInstruction * self_in_loadPICLiteralByteSize) NoDbgRegParms;<br class="">@@ -528,18 +518,12 @@<br class=""> static sqInt pushLinkRegisterByteSize(AbstractInstruction * self_in_pushLinkRegisterByteSize) NoDbgRegParms;<br class=""> static sqInt pushR(AbstractInstruction * self_in_pushR, sqInt srcReg) NoDbgRegParms;<br class=""> static AbstractInstruction * relocateCallBeforeReturnPCby(AbstractInstruction * self_in_relocateCallBeforeReturnPCby, sqInt retpc, sqInt delta) NoDbgRegParms;<br class="">-static AbstractInstruction * relocateMethodReferenceBeforeAddressby(AbstractInstruction * self_in_relocateMethodReferenceBeforeAddressby, sqInt pc, sqInt delta) NoDbgRegParms;<br class=""> static sqInt rewriteCallAttarget(AbstractInstruction * self_in_rewriteCallAttarget, usqInt callSiteReturnAddress, usqInt callTargetAddress) NoDbgRegParms;<br class=""> static sqInt rewriteCallFullAttarget(AbstractInstruction * self_in_rewriteCallFullAttarget, sqInt callSiteReturnAddress, sqInt callTargetAddress) NoDbgRegParms;<br class="">-static sqInt rewriteFullTransferAttargetexpectedInstruction(AbstractInstruction * self_in_rewriteFullTransferAttargetexpectedInstruction, usqInt callSiteReturnAddress, usqInt callTargetAddress, sqInt expectedInstruction) NoDbgRegParms;<br class="">-static sqInt rewriteInlineCacheAttagtarget(AbstractInstruction * self_in_rewriteInlineCacheAttagtarget, usqInt callSiteReturnAddress, sqInt cacheTag, usqInt callTargetAddress) NoDbgRegParms;<br class="">-static AbstractInstruction * rewriteInlineCacheTagat(AbstractInstruction * self_in_rewriteInlineCacheTagat, sqInt cacheTag, sqInt callSiteReturnAddress) NoDbgRegParms;<br class=""> static sqInt rewriteJumpFullAttarget(AbstractInstruction * self_in_rewriteJumpFullAttarget, sqInt callSiteReturnAddress, sqInt callTargetAddress) NoDbgRegParms;<br class=""> static sqInt setsConditionCodesFor(AbstractInstruction * self_in_setsConditionCodesFor, sqInt aConditionalJumpOpcode) NoDbgRegParms;<br class=""> static sqInt shiftSetsConditionCodesFor(AbstractInstruction * self_in_shiftSetsConditionCodesFor, sqInt aConditionalJumpOpcode) NoDbgRegParms;<br class="">-static usqInt sizePCDependentInstructionAt(AbstractInstruction * self_in_sizePCDependentInstructionAt, sqInt eventualAbsoluteAddress) NoDbgRegParms;<br class=""> static sqInt stackPageInterruptHeadroomBytes(AbstractInstruction * self_in_stackPageInterruptHeadroomBytes) NoDbgRegParms;<br class="">-static AbstractInstruction * storeLiteralbeforeFollowingAddress(AbstractInstruction * self_in_storeLiteralbeforeFollowingAddress, sqInt literal, sqInt followingAddress) NoDbgRegParms;<br class=""> static sqInt strbrnplusimm(AbstractInstruction * self_in_strbrnplusimm, sqInt destReg, sqInt baseReg, sqInt u, sqInt immediate12bitValue) NoDbgRegParms;<br class=""> static sqInt strbrnrm(AbstractInstruction * self_in_strbrnrm, sqInt srcReg, sqInt baseReg, sqInt offsetReg) NoDbgRegParms;<br class=""> static sqInt strrnplusImm(AbstractInstruction * self_in_strrnplusImm, sqInt srcReg, sqInt baseReg, sqInt immediate12bitValue) NoDbgRegParms;<br class="">@@ -550,11 +534,12 @@<br class=""> static sqInt tstrnimmror(AbstractInstruction * self_in_tstrnimmror, sqInt ignored, sqInt srcReg, sqInt immediate, sqInt rot) NoDbgRegParms;<br class=""> static CogMethod * cmHomeMethod(CogBlockMethod * self_in_cmHomeMethod) NoDbgRegParms;<br class=""> static sqInt isBranch(BytecodeDescriptor * self_in_isBranch) NoDbgRegParms;<br class="">+static sqInt isUnconditionalBranch(BytecodeDescriptor * self_in_isUnconditionalBranch) NoDbgRegParms;<br class=""> static AbstractInstruction * gAndCqR(sqInt quickConstant, sqInt reg) NoDbgRegParms;<br class=""> static AbstractInstruction * gArithmeticShiftRightRR(sqInt reg1, sqInt reg2) NoDbgRegParms;<br class="">-sqInt abortOffset(void);<br class="">+extern sqInt abortOffset(void);<br class=""> static void addCleanBlockStarts(void);<br class="">-void addCogMethodsToHeapMap(void);<br class="">+extern void addCogMethodsToHeapMap(void);<br class=""> static sqInt addressIsInCurrentCompilation(sqInt address) NoDbgRegParms;<br class=""> static sqInt addressIsInFixups(AbstractInstruction *address) NoDbgRegParms;<br class=""> static sqInt addressIsInInstructions(AbstractInstruction *address) NoDbgRegParms;<br class="">@@ -565,41 +550,40 @@<br class=""> static AbstractInstruction * annotateAbsolutePCRef(AbstractInstruction *abstractInstruction) NoDbgRegParms;<br class=""> static AbstractInstruction * annotateBytecode(AbstractInstruction *abstractInstruction) NoDbgRegParms;<br class=""> static AbstractInstruction * annotateobjRef(AbstractInstruction *abstractInstruction, sqInt anOop) NoDbgRegParms;<br class="">-static AbstractInstruction * annotatewith(AbstractInstruction *abstractInstruction, sqInt annotationFlag) NoDbgRegParms;<br class=""> static sqInt annotationForMcpcin(sqInt mcpc, CogMethod *cogHomeMethod) NoDbgRegParms;<br class=""> static void assertSaneJumpTarget(AbstractInstruction *jumpTarget) NoDbgRegParms;<br class=""> static sqInt blockCreationBytecodeSizeForHeader(sqInt methodHeader) NoDbgRegParms;<br class=""> static sqInt blockDispatchTargetsForperformarg(CogMethod *cogMethod, usqInt (*binaryFunction)(sqInt mcpc, sqInt arg), sqInt arg) NoDbgRegParms;<br class="">-sqInt bytecodePCForstartBcpcin(sqInt mcpc, sqInt startbcpc, CogBlockMethod *cogMethod);<br class="">+extern sqInt bytecodePCForstartBcpcin(sqInt mcpc, sqInt startbcpc, CogBlockMethod *cogMethod);<br class=""> static AbstractInstruction * CallNewspeakSend(sqInt callTarget) NoDbgRegParms;<br class=""> static AbstractInstruction * CallRTregistersToBeSavedMask(sqInt callTarget, sqInt registersToBeSaved) NoDbgRegParms;<br class=""> static AbstractInstruction * gCall(sqInt callTarget) NoDbgRegParms;<br class=""> static AbstractInstruction * gCmpCqR(sqInt quickConstant, sqInt reg) NoDbgRegParms;<br class=""> static AbstractInstruction * gCmpCwR(sqInt wordConstant, sqInt reg) NoDbgRegParms;<br class=""> static AbstractInstruction * gCmpRR(sqInt reg1, sqInt reg2) NoDbgRegParms;<br class="">-void callCogCodePopReceiver(void);<br class="">-void callCogCodePopReceiverAndClassRegs(void);<br class="">-sqInt ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver);<br class="">-sqInt ceSICMiss(sqInt receiver);<br class="">-void checkAssertsEnabledInCogit(void);<br class="">+extern void callCogCodePopReceiver(void);<br class="">+extern void callCogCodePopReceiverAndClassRegs(void);<br class="">+extern sqInt ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver);<br class="">+extern sqInt ceSICMiss(sqInt receiver);<br class="">+extern void checkAssertsEnabledInCogit(void);<br class=""> static sqInt checkIfValidOopRefAndTargetpccogMethod(sqInt annotation, char *mcpc, sqInt cogMethod) NoDbgRegParms;<br class=""> static sqInt checkIfValidOopRefpccogMethod(sqInt annotation, char *mcpc, sqInt cogMethod) NoDbgRegParms;<br class="">-sqInt checkIntegrityOfObjectReferencesInCode(sqInt gcModes);<br class="">+extern sqInt checkIntegrityOfObjectReferencesInCode(sqInt gcModes);<br class=""> static sqInt checkMaybeObjRefAt(sqInt mcpc) NoDbgRegParms;<br class=""> static sqInt checkValidObjectReferencesInClosedPIC(CogMethod *cPIC) NoDbgRegParms;<br class=""> static sqInt closedPICRefersToUnmarkedObject(CogMethod *cPIC) NoDbgRegParms;<br class="">-char * codeEntryFor(char *address);<br class="">-char * codeEntryNameFor(char *address);<br class="">-sqInt cogCodeBase(void);<br class="">-sqInt cogCodeConstituents(void);<br class="">+extern char * codeEntryFor(char *address);<br class="">+extern char * codeEntryNameFor(char *address);<br class="">+extern sqInt cogCodeBase(void);<br class="">+extern sqInt cogCodeConstituents(void);<br class=""> static sqInt cogExtendPICCaseNMethodtagisMNUCase(CogMethod *cPIC, sqInt caseNMethod, sqInt caseNTag, sqInt isMNUCase) NoDbgRegParms;<br class="">-void cogitPostGCAction(sqInt gcMode);<br class="">-sqInt cogMethodDoesntLookKosher(CogMethod *cogMethod);<br class="">-CogMethod * cogMNUPICSelectorreceivermethodOperandnumArgs(sqInt selector, sqInt rcvr, sqInt methodOperand, sqInt numArgs);<br class="">+extern void cogitPostGCAction(sqInt gcMode);<br class="">+extern sqInt cogMethodDoesntLookKosher(CogMethod *cogMethod);<br class="">+extern CogMethod * cogMNUPICSelectorreceivermethodOperandnumArgs(sqInt selector, sqInt rcvr, sqInt methodOperand, sqInt numArgs);<br class=""> static CogMethod * cogOpenPICSelectornumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;<br class=""> static CogMethod * cogPICSelectornumArgsCase0MethodCase1MethodtagisMNUCase(sqInt selector, sqInt numArgs, CogMethod *case0CogMethod, sqInt case1MethodOrNil, sqInt case1Tag, sqInt isMNUCase) NoDbgRegParms;<br class="">-CogMethod * cogselector(sqInt aMethodObj, sqInt aSelectorOop);<br class="">-void compactCogCompiledCode(void);<br class="">+extern CogMethod * cogselector(sqInt aMethodObj, sqInt aSelectorOop);<br class="">+extern void compactCogCompiledCode(void);<br class=""> static AbstractInstruction * compileAbort(void);<br class=""> static sqInt compileBlockDispatchFromto(sqInt lowBlockStartIndex, sqInt highBlockStartIndex) NoDbgRegParms;<br class=""> static void compileBlockEntry(BlockStart *blockStart) NoDbgRegParms;<br class="">@@ -618,23 +602,23 @@<br class=""> static sqInt cPICHasFreedTargets(CogMethod *cPIC) NoDbgRegParms;<br class=""> static sqInt cPICHasTarget(CogMethod *cPIC, CogMethod *targetMethod) NoDbgRegParms;<br class=""> static AbstractInstruction * gDivRRQuoRem(sqInt rDivisor, sqInt rDividend, sqInt rQuotient, sqInt rRemainder) NoDbgRegParms;<br class="">-sqInt defaultCogCodeSize(void);<br class="">+extern sqInt defaultCogCodeSize(void);<br class=""> static sqInt endPCOf(sqInt aMethod) NoDbgRegParms;<br class="">-void enterCogCodePopReceiver(void);<br class="">+extern void enterCogCodePopReceiver(void);<br class=""> static sqInt extABytecode(void);<br class=""> static sqInt extBBytecode(void);<br class=""> static sqInt fillInBlockHeadersAt(sqInt startAddress) NoDbgRegParms;<br class=""> static CogMethod * fillInMethodHeadersizeselector(CogMethod *method, sqInt size, sqInt selector) NoDbgRegParms;<br class=""> static usqInt findBlockMethodWithEntrystartBcpc(sqInt blockEntryMcpc, sqInt startBcpc) NoDbgRegParms;<br class=""> static sqInt findMapLocationForMcpcinMethod(sqInt targetMcpc, CogMethod *cogMethod) NoDbgRegParms;<br class="">-CogBlockMethod * findMethodForStartBcpcinHomeMethod(sqInt startbcpc, CogMethod *cogMethod);<br class="">+extern CogBlockMethod * findMethodForStartBcpcinHomeMethod(sqInt startbcpc, CogMethod *cogMethod);<br class=""> static sqInt findIsBackwardBranchMcpcBcpcMatchingMcpc(BytecodeDescriptor *descriptor, sqInt isBackwardBranch, char *mcpc, sqInt bcpc, void *targetMcpc) NoDbgRegParms;<br class="">-void followForwardedLiteralsIn(CogMethod *cogMethod);<br class="">-void followForwardedMethods(void);<br class="">+extern void followForwardedLiteralsIn(CogMethod *cogMethod);<br class="">+extern void followForwardedMethods(void);<br class=""> static sqInt followMaybeObjRefAt(sqInt mcpc) NoDbgRegParms;<br class=""> static sqInt followMethodReferencesInClosedPIC(CogMethod *cPIC) NoDbgRegParms;<br class=""> static void freePICsWithFreedTargets(void);<br class="">-void freeUnmarkedMachineCode(void);<br class="">+extern void freeUnmarkedMachineCode(void);<br class=""> static sqInt genCheckForInterruptsTrampoline(void);<br class=""> static void (*genEnilopmartForandandforCallcalled(sqInt regArg1, sqInt regArg2, sqInt regArg3, sqInt forCall, char *trampolineName))(void) &nbsp;NoDbgRegParms;<br class=""> static void genEnilopmartReturn(sqInt forCall) NoDbgRegParms;<br class="">@@ -672,14 +656,14 @@<br class=""> static sqInt incrementUsageOfTargetIfLinkedSendmcpcignored(sqInt annotation, char *mcpc, sqInt superfluity) NoDbgRegParms;<br class=""> static sqInt initialClosedPICUsageCount(void);<br class=""> static void initializeBackend(void);<br class="">-void initializeCodeZoneFromupTo(sqInt startAddress, sqInt endAddress);<br class="">+extern void initializeCodeZoneFromupTo(sqInt startAddress, sqInt endAddress);<br class=""> static sqInt initialMethodUsageCount(void);<br class=""> static sqInt initialOpenPICUsageCount(void);<br class=""> static sqInt inverseBranchFor(sqInt opcode) NoDbgRegParms;<br class=""> static sqInt isBackwardBranchatextsin(BytecodeDescriptor *descriptor, sqInt pc, sqInt nExts, sqInt aMethodObj) NoDbgRegParms;<br class=""> static sqInt isPCMappedAnnotation(sqInt annotation) NoDbgRegParms;<br class="">-sqInt isPCWithinMethodZone(void *address);<br class="">-sqInt isSendReturnPC(sqInt retpc);<br class="">+extern sqInt isPCWithinMethodZone(void *address);<br class="">+extern sqInt isSendReturnPC(sqInt retpc);<br class=""> static AbstractInstruction * gJumpFPEqual(void *jumpTarget) NoDbgRegParms;<br class=""> static AbstractInstruction * gJumpFPGreaterOrEqual(void *jumpTarget) NoDbgRegParms;<br class=""> static AbstractInstruction * gJumpFPGreater(void *jumpTarget) NoDbgRegParms;<br class="">@@ -689,8 +673,8 @@<br class=""> static AbstractInstruction * gLabel(void);<br class=""> static AbstractInstruction * gLogicalShiftLeftCqR(sqInt quickConstant, sqInt reg) NoDbgRegParms;<br class=""> static AbstractInstruction * lastOpcode(void);<br class="">-void linkNSSendCacheclassTagenclosingObjecttargetcaller(NSSendCache *nsSendCache, sqInt classTag, sqInt enclosingObject, CogMethod *targetMethod, CogMethod *callingMethod);<br class="">-void linkSendAtintooffsetreceiver(sqInt callSiteReturnAddress, CogMethod *sendingMethod, CogMethod *targetMethod, sqInt theEntryOffset, sqInt receiver);<br class="">+extern void linkNSSendCacheclassTagenclosingObjecttargetcaller(NSSendCache *nsSendCache, sqInt classTag, sqInt enclosingObject, CogMethod *targetMethod, CogMethod *callingMethod);<br class="">+extern void linkSendAtintooffsetreceiver(sqInt callSiteReturnAddress, CogMethod *sendingMethod, CogMethod *targetMethod, sqInt theEntryOffset, sqInt receiver);<br class=""> static void loadSubsequentBytesForDescriptorat(BytecodeDescriptor *descriptor, sqInt pc) NoDbgRegParms;<br class=""> static AbstractInstruction * gMoveAwR(sqInt address, sqInt reg) NoDbgRegParms;<br class=""> static AbstractInstruction * gMoveCwR(sqInt wordConstant, sqInt reg) NoDbgRegParms;<br class="">@@ -705,24 +689,24 @@<br class=""> static void mapObjectReferencesInMachineCodeForBecome(void);<br class=""> static void mapObjectReferencesInMachineCodeForFullGC(void);<br class=""> static void mapObjectReferencesInMachineCodeForYoungGC(void);<br class="">-void mapObjectReferencesInMachineCode(sqInt gcMode);<br class="">-void markAndTraceMachineCodeOfMarkedMethods(void);<br class="">+extern void mapObjectReferencesInMachineCode(sqInt gcMode);<br class="">+extern void markAndTraceMachineCodeOfMarkedMethods(void);<br class=""> static void markAndTraceObjectReferencesInGeneratedRuntime(void);<br class=""> static sqInt markAndTraceOrFreeCogMethodfirstVisit(CogMethod *cogMethod, sqInt firstVisit) NoDbgRegParms;<br class=""> static sqInt markLiteralsAndUnlinkIfUnmarkedSendpcmethod(sqInt annotation, char *mcpc, sqInt cogMethod) NoDbgRegParms;<br class=""> static sqInt markLiteralspcmethod(sqInt annotation, char *mcpc, sqInt cogMethod) NoDbgRegParms;<br class="">-void markMethodAndReferents(CogBlockMethod *aCogMethod);<br class="">-usqInt maxCogMethodAddress(void);<br class="">+extern void markMethodAndReferents(CogBlockMethod *aCogMethod);<br class="">+extern usqInt maxCogMethodAddress(void);<br class=""> static sqInt maybeAllocAndInitIRCs(void);<br class=""> static sqInt maybeFreeCogMethodDoesntLookKosher(CogMethod *cogMethod) NoDbgRegParms;<br class=""> static sqInt maybeGenerateCheckFeatures(void);<br class=""> static sqInt maybeGenerateICacheFlush(void);<br class=""> static void maybeMarkCountersIn(CogMethod *cogMethod) NoDbgRegParms;<br class=""> static sqInt mclassIsSmallInteger(sqInt ignoredPrimIndex) NoDbgRegParms;<br class="">-usqInt mcPCForBackwardBranchstartBcpcin(sqInt bcpc, sqInt startbcpc, CogBlockMethod *cogMethod);<br class="">+extern usqInt mcPCForBackwardBranchstartBcpcin(sqInt bcpc, sqInt startbcpc, CogBlockMethod *cogMethod);<br class=""> static sqInt methodhasSameCodeAscheckPenultimate(sqInt methodA, sqInt methodB, sqInt comparePenultimateLiteral) NoDbgRegParms;<br class="">-sqInt minCogMethodAddress(void);<br class="">-sqInt mnuOffset(void);<br class="">+extern sqInt minCogMethodAddress(void);<br class="">+extern sqInt mnuOffset(void);<br class=""> static AbstractInstruction * gNegateR(sqInt reg) NoDbgRegParms;<br class=""> static sqInt needsFrameIfInBlock(sqInt stackDelta) NoDbgRegParms;<br class=""> static sqInt needsFrameNever(sqInt stackDelta) NoDbgRegParms;<br class="">@@ -733,13 +717,13 @@<br class=""> static sqInt outputInstructionsForGeneratedRuntimeAt(sqInt startAddress) NoDbgRegParms;<br class=""> static AbstractInstruction * gPopR(sqInt reg) NoDbgRegParms;<br class=""> static AbstractInstruction * gPushCw(sqInt wordConstant) NoDbgRegParms;<br class="">-sqInt patchToOpenPICFornumArgsreceiver(sqInt selector, sqInt numArgs, sqInt receiver);<br class="">-sqInt pcisWithinMethod(char *address, CogMethod *cogMethod);<br class="">+extern sqInt patchToOpenPICFornumArgsreceiver(sqInt selector, sqInt numArgs, sqInt receiver);<br class="">+extern sqInt pcisWithinMethod(char *address, CogMethod *cogMethod);<br class=""> static sqInt picAbortDiscriminatorValue(void);<br class=""> static sqInt picInterpretAbortOffset(void);<br class=""> static PrimitiveDescriptor * primitiveGeneratorOrNil(void);<br class="">-void printCogMethodFor(void *address);<br class="">-void printTrampolineTable(void);<br class="">+extern void printCogMethodFor(void *address);<br class="">+extern void printTrampolineTable(void);<br class=""> static sqInt processorHasDivQuoRemAndMClassIsSmallInteger(sqInt ignoredPrimIndex) NoDbgRegParms;<br class=""> static sqInt processorHasDivQuoRem(sqInt ignoredPrimIndex) NoDbgRegParms;<br class=""> static sqInt processorHasDoublePrecisionFloatingPointSupport(sqInt ignoredPrimIndex) NoDbgRegParms;<br class="">@@ -747,7 +731,7 @@<br class=""> static sqInt processorHasMultiply(sqInt ignoredPrimIndex) NoDbgRegParms;<br class=""> static AbstractInstruction * gRetN(sqInt offset) NoDbgRegParms;<br class=""> static void recordGeneratedRunTimeaddress(char *aString, sqInt address) NoDbgRegParms;<br class="">-sqInt recordPrimTraceFunc(void);<br class="">+extern sqInt recordPrimTraceFunc(void);<br class=""> static void recordRunTimeObjectReferences(void);<br class=""> static sqInt registerMaskFor(sqInt reg) NoDbgRegParms;<br class=""> static sqInt registerMaskForand(sqInt reg1, sqInt reg2) NoDbgRegParms;<br class="">@@ -757,29 +741,29 @@<br class=""> static sqInt remapIfObjectRefpchasYoung(sqInt annotation, char *mcpc, sqInt hasYoungPtr) NoDbgRegParms;<br class=""> static AbstractInstruction * gSubCwR(sqInt wordConstant, sqInt reg) NoDbgRegParms;<br class=""> static sqInt scanForCleanBlocks(void);<br class="">-void setBreakMethod(sqInt anObj);<br class="">-void setPostCompileHook(void (*aFunction)(CogMethod *, void *));<br class="">-void setSelectorOfto(CogMethod *cogMethod, sqInt aSelectorOop);<br class="">+extern void setBreakMethod(sqInt anObj);<br class="">+extern void setPostCompileHook(void (*aFunction)(CogMethod *, void *));<br class="">+extern void setSelectorOfto(CogMethod *cogMethod, sqInt aSelectorOop);<br class=""> static sqInt spanForCleanBlockStartingAt(sqInt startPC) NoDbgRegParms;<br class="">-sqInt traceLinkedSendOffset(void);<br class="">-static char * trampolineNamenumArgs(sqInt routinePrefix, sqInt numArgs) NoDbgRegParms;<br class="">-static char * trampolineNamenumRegArgs(sqInt routinePrefix, sqInt numArgs) NoDbgRegParms;<br class="">+extern sqInt traceLinkedSendOffset(void);<br class="">+static char * trampolineNamenumArgs(char *routinePrefix, sqInt numArgs) NoDbgRegParms;<br class="">+static char * trampolineNamenumRegArgs(char *routinePrefix, sqInt numArgs) NoDbgRegParms;<br class=""> static sqInt unimplementedPrimitive(void);<br class=""> static sqInt unknownBytecode(void);<br class="">-void unlinkAllSends(void);<br class="">+extern void unlinkAllSends(void);<br class=""> static sqInt unlinkIfFreeOrLinkedSendpcof(sqInt annotation, char *mcpc, sqInt theSelector) NoDbgRegParms;<br class=""> static sqInt unlinkIfInvalidClassSendpcignored(sqInt annotation, char *mcpc, sqInt superfluity) NoDbgRegParms;<br class=""> static sqInt unlinkIfLinkedSendToFreepcignored(sqInt annotation, char *mcpc, sqInt superfluity) NoDbgRegParms;<br class=""> static sqInt unlinkIfLinkedSendpcignored(sqInt annotation, char *mcpc, sqInt superfluity) NoDbgRegParms;<br class=""> static sqInt unlinkIfLinkedSendpcto(sqInt annotation, char *mcpc, sqInt theCogMethod) NoDbgRegParms;<br class="">-void unlinkSendsLinkedForInvalidClasses(void);<br class="">-void unlinkSendsOfisMNUSelector(sqInt selector, sqInt isMNUSelector);<br class="">-void unlinkSendsToFree(void);<br class="">-void unlinkSendsToandFreeIf(sqInt targetMethodObject, sqInt freeIfTrue);<br class="">+extern void unlinkSendsLinkedForInvalidClasses(void);<br class="">+extern void unlinkSendsOfisMNUSelector(sqInt selector, sqInt isMNUSelector);<br class="">+extern void unlinkSendsToFree(void);<br class="">+extern void unlinkSendsToandFreeIf(sqInt targetMethodObject, sqInt freeIfTrue);<br class=""> static sqInt updateMaybeObjRefAt(sqInt mcpc) NoDbgRegParms;<br class=""> static AbstractInstruction * gXorCwR(sqInt wordConstant, sqInt reg) NoDbgRegParms;<br class=""> static void zeroOpcodeIndex(void);<br class="">-void addAllToYoungReferrers(void);<br class="">+extern void addAllToYoungReferrers(void);<br class=""> static void addToOpenPICList(CogMethod *anOpenPIC) NoDbgRegParms;<br class=""> static void addToUnpairedMethodList(CogMethod *aCogMethod) NoDbgRegParms;<br class=""> static void addToYoungReferrers(CogMethod *cogMethod) NoDbgRegParms;<br class="">@@ -788,30 +772,30 @@<br class=""> static void compactCompiledCode(void);<br class=""> static void ensureInYoungReferrers(CogMethod *cogMethod) NoDbgRegParms;<br class=""> static CogMethod * findPreviouslyCompiledVersionOfwith(sqInt aMethodObj, sqInt aSelectorOop) NoDbgRegParms;<br class="">-void freeMethod(CogMethod *cogMethod);<br class="">+extern void freeMethod(CogMethod *cogMethod);<br class=""> static void freeOlderMethodsForCompaction(void);<br class=""> static sqInt kosherYoungReferrers(void);<br class=""> static void manageFromto(sqInt theStartAddress, sqInt theLimitAddress) NoDbgRegParms;<br class="">-CogMethod * methodFor(void *address);<br class="">+extern CogMethod * methodFor(void *address);<br class=""> static sqInt numMethods(void);<br class="">-sqInt numMethodsOfType(sqInt cogMethodType);<br class="">+extern sqInt numMethodsOfType(sqInt cogMethodType);<br class=""> static sqInt occurrencesInYoungReferrers(CogMethod *cogMethod) NoDbgRegParms;<br class=""> static CogMethod * openPICWithSelector(sqInt aSelector) NoDbgRegParms;<br class=""> static void planCompaction(void);<br class="">-void printCogMethods(void);<br class="">-void printCogMethodsOfType(sqInt cmType);<br class="">-void printCogMethodsWithMethod(sqInt methodOop);<br class="">-void printCogMethodsWithPrimitive(sqInt primIdx);<br class="">-void printCogMethodsWithSelector(sqInt selectorOop);<br class="">-void printCogYoungReferrers(void);<br class="">-void printOpenPICList(void);<br class="">+extern void printCogMethods(void);<br class="">+extern void printCogMethodsOfType(sqInt cmType);<br class="">+extern void printCogMethodsWithMethod(sqInt methodOop);<br class="">+extern void printCogMethodsWithPrimitive(sqInt primIdx);<br class="">+extern void printCogMethodsWithSelector(sqInt selectorOop);<br class="">+extern void printCogYoungReferrers(void);<br class="">+extern void printOpenPICList(void);<br class=""> static sqInt pruneYoungReferrers(void);<br class=""> static sqInt relocateAndPruneYoungReferrers(void);<br class=""> static sqInt relocateMethodsPreCompaction(void);<br class=""> static sqInt removeFromOpenPICList(CogMethod *anOpenPIC) NoDbgRegParms;<br class=""> static sqInt removeFromUnpairedMethodList(CogMethod *aCogMethod) NoDbgRegParms;<br class=""> static void voidYoungReferrersPostTenureAll(void);<br class="">-char * whereIsMaybeCodeThing(sqInt anOop);<br class="">+extern char * whereIsMaybeCodeThing(sqInt anOop);<br class=""> static sqInt checkValidObjectReference(sqInt anOop) NoDbgRegParms;<br class=""> static AbstractInstruction * genCmpClassFloatCompactIndexR(sqInt reg) NoDbgRegParms;<br class=""> static AbstractInstruction * genCmpClassMethodContextCompactIndexR(sqInt reg) NoDbgRegParms;<br class="">@@ -905,7 +889,7 @@<br class=""> static void markAndTraceUpdatedLiteralin(sqInt objOop, CogMethod *cogMethodOrNil) NoDbgRegParms;<br class=""> static void markIfIRC(usqInt maybeIRCs) NoDbgRegParms;<br class=""> static sqInt maybeCompileRetryonPrimitiveFail(AbstractInstruction *retryInst, sqInt primIndex) NoDbgRegParms;<br class="">-sqInt numRegArgs(void);<br class="">+extern sqInt numRegArgs(void);<br class=""> static sqInt remapObject(sqInt objOop) NoDbgRegParms;<br class=""> static sqInt remapOop(sqInt objOop) NoDbgRegParms;<br class=""> static sqInt shouldAnnotateObjectReference(sqInt anOop) NoDbgRegParms;<br class="">@@ -991,9 +975,9 @@<br class=""> static sqInt genPushQuickIntegerConstantBytecode(void);<br class=""> static sqInt genPushReceiverVariableBytecode(void);<br class=""> static sqInt genPushTemporaryVariableBytecode(void);<br class="">-sqInt genQuickReturnConst(void);<br class="">-sqInt genQuickReturnInstVar(void);<br class="">-sqInt genQuickReturnSelf(void);<br class="">+extern sqInt genQuickReturnConst(void);<br class="">+extern sqInt genQuickReturnInstVar(void);<br class="">+extern sqInt genQuickReturnSelf(void);<br class=""> static sqInt genReturnFalse(void);<br class=""> static sqInt genReturnNil(void);<br class=""> static sqInt genReturnTrue(void);<br class="">@@ -1013,10 +997,10 @@<br class=""> static sqInt genStoreAndPopTemporaryVariableBytecode(void);<br class=""> static sqInt genStoreRemoteTempLongBytecode(void);<br class=""> static void maybeCompileAllocFillerCheck(void);<br class="">-void recordCallOffsetInof(CogMethod *cogMethod, void *callLabelArg);<br class="">+extern void recordCallOffsetInof(CogMethod *cogMethod, void *callLabelArg);<br class=""> static sqInt registerisInMask(sqInt reg, sqInt mask) NoDbgRegParms;<br class=""> static sqInt returnRegForStoreCheck(void);<br class="">-void rewritePrimInvocationInto(CogMethod *cogMethod, void (*primFunctionPointer)(void));<br class="">+extern void rewritePrimInvocationInto(CogMethod *cogMethod, void (*primFunctionPointer)(void));<br class=""> static sqInt v3BlockCodeSize(BytecodeDescriptor *descriptor, sqInt pc, sqInt nExts, sqInt aMethodObj) NoDbgRegParms;<br class=""> static sqInt v3LongForwardBranchDistance(BytecodeDescriptor *descriptor, sqInt pc, sqInt nExts, sqInt aMethodObj) NoDbgRegParms;<br class=""> static sqInt v3LongBranchDistance(BytecodeDescriptor *descriptor, sqInt pc, sqInt nExts, sqInt aMethodObj) NoDbgRegParms;<br class="">@@ -1024,14 +1008,14 @@<br class=""> static sqInt v4BlockCodeSize(BytecodeDescriptor *descriptor, sqInt pc, sqInt nExts, sqInt aMethodObj) NoDbgRegParms;<br class=""> static sqInt v4LongForwardBranchDistance(BytecodeDescriptor *descriptor, sqInt pc, sqInt nExts, sqInt aMethodObj) NoDbgRegParms;<br class=""> static sqInt v4LongBranchDistance(BytecodeDescriptor *descriptor, sqInt pc, sqInt nExts, sqInt aMethodObj) NoDbgRegParms;<br class="">-void voidCogCompiledCode(void);<br class="">+extern void voidCogCompiledCode(void);<br class=""> static BlockStart * addBlockStartAtnumArgsnumCopiedspan(sqInt bytecodepc, sqInt numArgs, sqInt numCopied, sqInt span) NoDbgRegParms;<br class=""> static sqInt allocateRegForStackEntryAtnotConflictingWith(sqInt index, sqInt regMask) NoDbgRegParms;<br class=""> static sqInt allocateRegNotConflictingWith(sqInt regMask) NoDbgRegParms;<br class=""> static void annotateBytecodeIfAnnotated(CogSimStackEntry *aSimStackEntry) NoDbgRegParms;<br class=""> static sqInt anyReferencesToRegisterinTopNItems(sqInt reg, sqInt n) NoDbgRegParms;<br class="">-void callCogCodePopReceiverArg0Regs(void);<br class="">-void callCogCodePopReceiverArg1Arg0Regs(void);<br class="">+extern void callCogCodePopReceiverArg0Regs(void);<br class="">+extern void callCogCodePopReceiverArg1Arg0Regs(void);<br class=""> static sqInt compileAbstractInstructionsFromthrough(sqInt start, sqInt end) NoDbgRegParms;<br class=""> static sqInt compileBlockBodies(void);<br class=""> static void compileBlockFrameBuild(BlockStart *blockStart) NoDbgRegParms;<br class="">@@ -1188,8 +1172,6 @@<br class=""> /*** Variables ***/<br class=""> static AbstractInstruction * abstractOpcodes;<br class=""> static AbstractInstruction aMethodLabel;<br class="">-static sqInt annotationIndex;<br class="">-static InstructionAnnotation * annotations;<br class=""> static AbstractInstruction * const backEnd = &amp;aMethodLabel;<br class=""> static usqInt baseAddress;<br class=""> static sqInt blockCount;<br class="">@@ -1859,7 +1841,7 @@<br class=""><br class=""><br class=""> /*** Macros ***/<br class="">-#define flushICacheFromto(me,startAddress,endAddress) __clear_cache((char*) startAddress, (char*) (endAddress + 4))<br class="">+#define flushICacheFromto(me,startAddress,endAddress) __clear_cache((char*) startAddress, (char*) (endAddress ))<br class=""> #define numberOfSaveableRegisters(self) 0<br class=""> #define cPICNumCases stackCheckOffset<br class=""> #define cPICNumCasesHack hack hack hack i.e. the getter macro does all the work<br class="">@@ -1870,24 +1852,20 @@<br class=""> #define allocateOpcodesbytecodes(numberOfAbstractOpcodes,numberOfBytecodes) do { \<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>int opcodeSize = sizeof(AbstractInstruction) * (numAbstractOpcodes = (numberOfAbstractOpcodes)); \<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>int fixupSize = sizeof(BytecodeFixup) * numAbstractOpcodes; \<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>int annotationSize = sizeof(InstructionAnnotation) * ((numAbstractOpcodes + 3) / 4); \<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>abstractOpcodes = alloca(opcodeSize + fixupSize + annotationSize); \<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>abstractOpcodes = alloca(opcodeSize + fixupSize); \<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>bzero(abstractOpcodes, opcodeSize + fixupSize); \<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>fixups = (void *)((char *)abstractOpcodes + opcodeSize); \<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>annotations = (void *)((char *)fixups + fixupSize); \<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>opcodeIndex = labelCounter = annotationIndex = 0; \<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>opcodeIndex = labelCounter = 0; \<br class=""> } while (0)<br class=""> #define allocateOpcodesbytecodesifFail(numberOfAbstractOpcodes,numberOfBytecodes,failBlock) do { \<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>int opcodeSize = sizeof(AbstractInstruction) * (numAbstractOpcodes = (numberOfAbstractOpcodes)); \<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>int fixupSize = sizeof(BytecodeFixup) * numAbstractOpcodes; \<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>int annotationSize = sizeof(InstructionAnnotation) * ((numAbstractOpcodes + 3) / 4); \<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>int allocSize = opcodeSize + fixupSize + annotationSize; \<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>int allocSize = opcodeSize + fixupSize; \<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>if (allocSize &gt; MaxStackAllocSize) failBlock; \<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>abstractOpcodes = alloca(allocSize); \<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>bzero(abstractOpcodes, opcodeSize + fixupSize); \<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>fixups = (void *)((char *)abstractOpcodes + opcodeSize); \<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>annotations = (void *)((char *)fixups + fixupSize); \<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>opcodeIndex = labelCounter = annotationIndex = 0; \<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>opcodeIndex = labelCounter = 0; \<br class=""> } while (0)<br class=""> #define backEnd() backEnd<br class=""> #define blockAlignment(self) 8<br class="">@@ -1906,6 +1884,7 @@<br class=""> #define generatorAt(index) (&amp;generatorTable[index])<br class=""> #define getCFramePointer() CFramePointer<br class=""> #define getCStackPointer() CStackPointer<br class="">+#define getIsObjectReference() IsObjectReference<br class=""> #define halt() warning("halt")<br class=""> #define haltmsg(msg) warning("halt: " msg)<br class=""> #define interpretOffset() missOffset<br class="">@@ -1926,7 +1905,7 @@<br class=""> #define reportError(n) warning("compilation error")<br class=""> #define setCFramePointer(theFP) (CFramePointer = (void *)(theFP))<br class=""> #define setCStackPointer(theSP) (CStackPointer = (void *)(theSP))<br class="">-#define traceMapbyteatfor(ig,no,re,d) 0<br class="">+#define traceMapinstructionbyteatfor(ig,no,r,e,d) 0<br class=""> #define tryLockVMOwner() (ceTryLockVMOwner() != 0)<br class=""> #define unlockVMOwner() ceUnlockVMOwner()<br class=""> #define nextOpenPIC methodObject<br class="">@@ -2039,7 +2018,8 @@<br class=""> static sqInt<br class=""> isAnInstruction(AbstractInstruction * self_in_isAnInstruction, AbstractInstruction *addressOrInstruction)<br class=""> {<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span>return addressIsInInstructions(addressOrInstruction);<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span>return (addressIsInInstructions(addressOrInstruction))<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span> || (addressOrInstruction == (methodLabel()));<br class=""> }<br class=""><br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>/* CogAbstractInstruction&gt;&gt;#isJump */<br class="">@@ -2070,10 +2050,10 @@<br class=""> }<br class=""><br class=""><br class="">-/*<span class="Apple-tab-span" style="white-space:pre">        </span>To arrange that the block method field pushed in a block entry has<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span>its MFMethodFlagIsBlockFlag bit set we provide labels with an offset.<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span>The offset for the fakeHeader reference is MFMethodFlagIsBlockFlag.<br class="">-<span class="Apple-tab-span" style="white-space:pre">        </span>See compileBlockFrameBuild: */<br class="">+/*<span class="Apple-tab-span" style="white-space:pre">        </span>Hack: To arrange that the block method field pushed in a block entry has<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span>its MFMethodFlagIsBlockFlag bit set we provide labels with an offset. The<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span>offset for the fakeHeader reference is MFMethodFlagIsBlockFlag. See<br class="">+<span class="Apple-tab-span" style="white-space:pre">        </span>compileBlockFrameBuild: */<br class=""><br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>/* CogAbstractInstruction&gt;&gt;#labelOffset */<br class=""> static unsigned long<br class="">@@ -2267,7 +2247,7 @@<br class=""> static sqInt<br class=""> bicsrnimmror(AbstractInstruction * self_in_bicsrnimmror, sqInt destReg, sqInt srcReg, sqInt immediate, sqInt rot)<br class=""> {<br class=""><br class="">@@ Diff output truncated at 50000 characters. @@<br class=""></div></blockquote></div><br class=""></body></html>