[Vm-dev] [commit][3031] CogVM source as per VMMaker.oscog-eem.800

commits at squeakvm.org commits at squeakvm.org
Thu Jul 3 13:50:04 UTC 2014


Revision: 3031
Author:   eliot
Date:     2014-07-03 06:49:59 -0700 (Thu, 03 Jul 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.800

Sort VM methods by class first, selector second, to group by coarse
functionality (e.g. scavenger methods) for the benefit of the VMProfiler.

Access missOffset via a macro (very minor speedup).

Modified Paths:
--------------
    branches/Cog/nscogsrc/vm/cogit.c
    branches/Cog/nscogsrc/vm/cogit.h
    branches/Cog/nscogsrc/vm/cogmethod.h
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/nscogsrc/vm/interp.h
    branches/Cog/nscogsrc/vm/vmCallback.h
    branches/Cog/nsspursrc/vm/cogit.c
    branches/Cog/nsspursrc/vm/cogit.h
    branches/Cog/nsspursrc/vm/cogmethod.h
    branches/Cog/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/vm/interp.h
    branches/Cog/nsspursrc/vm/vmCallback.h
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/nsspurstacksrc/vm/interp.h
    branches/Cog/nsspurstacksrc/vm/vmCallback.h
    branches/Cog/sistasrc/vm/cogit.c
    branches/Cog/sistasrc/vm/cogit.h
    branches/Cog/sistasrc/vm/cogmethod.h
    branches/Cog/sistasrc/vm/cointerp.c
    branches/Cog/sistasrc/vm/cointerp.h
    branches/Cog/sistasrc/vm/gcc3x-cointerp.c
    branches/Cog/sistasrc/vm/interp.h
    branches/Cog/sistasrc/vm/vmCallback.h
    branches/Cog/spursistasrc/vm/cogit.c
    branches/Cog/spursistasrc/vm/cogit.h
    branches/Cog/spursistasrc/vm/cogmethod.h
    branches/Cog/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursistasrc/vm/interp.h
    branches/Cog/spursistasrc/vm/vmCallback.h
    branches/Cog/spursrc/vm/cogit.c
    branches/Cog/spursrc/vm/cogit.h
    branches/Cog/spursrc/vm/cogmethod.h
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/interp.h
    branches/Cog/spursrc/vm/vmCallback.h
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/spurstacksrc/vm/interp.h
    branches/Cog/spurstacksrc/vm/vmCallback.h
    branches/Cog/src/vm/cogit.c
    branches/Cog/src/vm/cogit.h
    branches/Cog/src/vm/cogmethod.h
    branches/Cog/src/vm/cointerp.c
    branches/Cog/src/vm/cointerp.h
    branches/Cog/src/vm/cointerpmt.c
    branches/Cog/src/vm/cointerpmt.h
    branches/Cog/src/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/gcc3x-cointerpmt.c
    branches/Cog/src/vm/interp.h
    branches/Cog/src/vm/vmCallback.h
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c
    branches/Cog/stacksrc/vm/interp.h
    branches/Cog/stacksrc/vm/vmCallback.h

Property Changed:
----------------
    branches/Cog/platforms/Cross/vm/sqSCCSVersion.h

Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c	2014-07-03 12:46:14 UTC (rev 3030)
+++ branches/Cog/nscogsrc/vm/cogit.c	2014-07-03 13:49:59 UTC (rev 3031)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.795 uuid: d77a504d-28ea-407a-9df0-097e6dbaaf06
+	CCodeGenerator VMMaker.oscog-eem.798 uuid: f47e2c22-fea0-4762-b689-8b295a59d8ac
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.795 uuid: d77a504d-28ea-407a-9df0-097e6dbaaf06
+	StackToRegisterMappingCogit VMMaker.oscog-eem.798 uuid: f47e2c22-fea0-4762-b689-8b295a59d8ac
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.795 uuid: d77a504d-28ea-407a-9df0-097e6dbaaf06 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.798 uuid: f47e2c22-fea0-4762-b689-8b295a59d8ac " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -368,111 +368,39 @@
 # define NoDbgRegParms /*empty*/
 #endif
 
-static AbstractInstruction * gAndCqR(sqInt quickConstant, sqInt reg) NoDbgRegParms;
-static AbstractInstruction * gArithmeticShiftRightRR(sqInt reg1, sqInt reg2) NoDbgRegParms;
-sqInt abortOffset(void);
-static sqInt abstractInstructionfollows(AbstractInstruction *theAbstractInstruction, AbstractInstruction *anAbstractInstruction) NoDbgRegParms;
 static sqInt abstractRegisterForConcreteRegister(AbstractInstruction * self_in_abstractRegisterForConcreteRegister, sqInt reg) NoDbgRegParms;
-static BlockStart * addBlockStartAtnumArgsnumCopiedspan(sqInt bytecodepc, sqInt numArgs, sqInt numCopied, sqInt span) NoDbgRegParms;
-static void addCleanBlockStarts(void);
-void addCogMethodsToHeapMap(void);
 static AbstractInstruction * addDependent(AbstractInstruction * self_in_addDependent, AbstractInstruction *anInstruction) NoDbgRegParms;
-static sqInt addressIsInFixups(AbstractInstruction *address) NoDbgRegParms;
-static sqInt addressIsInInstructions(AbstractInstruction *address) NoDbgRegParms;
-static sqInt addressOfEndOfCaseinCPIC(sqInt n, CogMethod *cPIC) NoDbgRegParms;
-static void addToOpenPICList(CogMethod *anOpenPIC) NoDbgRegParms;
-static void addToUnpairedMethodList(CogMethod *aCogMethod) NoDbgRegParms;
-static void addToYoungReferrers(CogMethod *cogMethod) NoDbgRegParms;
-static sqInt alignUptoRoutineBoundary(sqInt anAddress) NoDbgRegParms;
-static sqInt allMachineCodeObjectReferencesValid(void);
-static sqInt allMethodsHaveCorrectHeader(void);
-static sqInt allocate(sqInt numBytes) NoDbgRegParms;
-static sqInt allYoungObjectsAgeInFullGC(void);
-static AbstractInstruction * annotateAbsolutePCRef(AbstractInstruction *abstractInstruction) NoDbgRegParms;
-static void annotateBytecodeIfAnnotated(CogSimStackEntry *aSimStackEntry) NoDbgRegParms;
-static AbstractInstruction * annotateBytecode(AbstractInstruction *abstractInstruction) NoDbgRegParms;
-static AbstractInstruction * annotateobjRef(AbstractInstruction *abstractInstruction, sqInt anOop) NoDbgRegParms;
-static AbstractInstruction * annotatewith(AbstractInstruction *abstractInstruction, sqInt annotationFlag) NoDbgRegParms;
-static sqInt anyReferencesToRegisterinTopNItems(sqInt reg, sqInt n) NoDbgRegParms;
-static void assertSaneJumpTarget(AbstractInstruction *jumpTarget) NoDbgRegParms;
-static sqInt blockCreationBytecodeSizeForHeader(sqInt methodHeader) NoDbgRegParms;
-static sqInt blockDispatchTargetsForperformarg(CogMethod *cogMethod, usqInt (*binaryFunction)(sqInt mcpc, sqInt arg), sqInt arg) NoDbgRegParms;
-sqInt bytecodePCForstartBcpcin(sqInt mcpc, sqInt startbcpc, CogBlockMethod *cogMethod);
-static AbstractInstruction * CallNewspeakSend(sqInt callTarget) NoDbgRegParms;
-static AbstractInstruction * CallRT(sqInt callTarget) NoDbgRegParms;
-static AbstractInstruction * CallRTregistersToBeSavedMask(sqInt callTarget, sqInt registersToBeSaved) NoDbgRegParms;
-static AbstractInstruction * CallSend(sqInt callTarget) NoDbgRegParms;
-static AbstractInstruction * gCall(sqInt callTarget) NoDbgRegParms;
-static AbstractInstruction * gCmpCqR(sqInt quickConstant, sqInt reg) NoDbgRegParms;
-static AbstractInstruction * gCmpCwR(sqInt wordConstant, sqInt reg) NoDbgRegParms;
-static sqInt cacheTagIsMarked(sqInt cacheTag) NoDbgRegParms;
+static sqInt computeJumpTargetOffsetPlus(AbstractInstruction * self_in_computeJumpTargetOffsetPlus, sqInt anPCOffset) NoDbgRegParms;
+static sqInt concretizeLabel(AbstractInstruction * self_in_concretizeLabel) NoDbgRegParms;
+static sqInt genAlignCStackSavingRegistersnumArgswordAlignment(AbstractInstruction * self_in_genAlignCStackSavingRegistersnumArgswordAlignment, sqInt saveRegs, sqInt numArgs, sqInt alignment) NoDbgRegParms;
+static AbstractInstruction * generateICacheFlush(AbstractInstruction * self_in_generateICacheFlush) NoDbgRegParms;
+static AbstractInstruction * genJumpFPGreaterOrEqual(AbstractInstruction * self_in_genJumpFPGreaterOrEqual, void *jumpTarget) NoDbgRegParms;
+static AbstractInstruction * genJumpFPGreater(AbstractInstruction * self_in_genJumpFPGreater, void *jumpTarget) NoDbgRegParms;
+static AbstractInstruction * genJumpFPLessOrEqual(AbstractInstruction * self_in_genJumpFPLessOrEqual, void *jumpTarget) NoDbgRegParms;
+static AbstractInstruction * genJumpFPLess(AbstractInstruction * self_in_genJumpFPLess, void *jumpTarget) NoDbgRegParms;
+static AbstractInstruction * genWriteCResultIntoReg(AbstractInstruction * self_in_genWriteCResultIntoReg, sqInt abstractRegister) NoDbgRegParms;
+static AbstractInstruction * getJmpTarget(AbstractInstruction * self_in_getJmpTarget) NoDbgRegParms;
+static sqInt isAFixup(AbstractInstruction * self_in_isAFixup, void *fixupOrAddress) NoDbgRegParms;
+static sqInt isAnInstruction(AbstractInstruction * self_in_isAnInstruction, AbstractInstruction *addressOrInstruction) NoDbgRegParms;
+static sqInt isJump(AbstractInstruction * self_in_isJump) NoDbgRegParms;
+static sqInt isLongJump(AbstractInstruction * self_in_isLongJump) NoDbgRegParms;
+static AbstractInstruction * jumpTargetAddress(AbstractInstruction * self_in_jumpTargetAddress) NoDbgRegParms;
+static sqInt labelOffset(AbstractInstruction * self_in_labelOffset) NoDbgRegParms;
+static AbstractInstruction * longJumpTargetAddress(AbstractInstruction * self_in_longJumpTargetAddress) NoDbgRegParms;
+static sqInt numICacheFlushOpcodes(AbstractInstruction * self_in_numICacheFlushOpcodes) NoDbgRegParms;
+static AbstractInstruction * resolveJumpTarget(AbstractInstruction * self_in_resolveJumpTarget) NoDbgRegParms;
+static sqInt setLabelOffset(AbstractInstruction * self_in_setLabelOffset, sqInt aValue) NoDbgRegParms;
+static AbstractInstruction * updateLabel(AbstractInstruction * self_in_updateLabel, AbstractInstruction *labelInstruction) NoDbgRegParms;
+static CogMethod * cmHomeMethod(CogBlockMethod * self_in_cmHomeMethod) NoDbgRegParms;
+static sqInt isBranch(BytecodeDescriptor * self_in_isBranch) NoDbgRegParms;
+static sqInt isUnconditionalBranch(BytecodeDescriptor * self_in_isUnconditionalBranch) NoDbgRegParms;
 static sqInt callerSavedRegisterMask(AbstractInstruction * self_in_callerSavedRegisterMask) NoDbgRegParms;
 static sqInt callInstructionByteSize(AbstractInstruction * self_in_callInstructionByteSize) NoDbgRegParms;
-static sqInt callPrimitiveBytecode(void);
 static sqInt callsAreRelative(AbstractInstruction * self_in_callsAreRelative) NoDbgRegParms;
 static sqInt callTargetFromReturnAddress(AbstractInstruction * self_in_callTargetFromReturnAddress, sqInt callSiteReturnAddress) NoDbgRegParms;
 static sqInt canDivQuoRem(AbstractInstruction * self_in_canDivQuoRem) NoDbgRegParms;
-sqInt canLinkToYoungClasses(void);
 static sqInt canMulRR(AbstractInstruction * self_in_canMulRR) NoDbgRegParms;
-static sqInt ceClosureCopyDescriptor(sqInt descriptor) NoDbgRegParms;
-sqInt ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver);
-static sqInt ceImplicitReceiverForreceiverclass(sqInt selector, sqInt receiver, sqInt rcvrClass) NoDbgRegParms;
-sqInt ceSICMiss(sqInt receiver);
-void checkAssertsEnabledInCogit(void);
-static sqInt checkIfValidOopRefAndTargetpccogMethod(sqInt annotation, char *mcpc, sqInt cogMethod) NoDbgRegParms;
-static sqInt checkIfValidOopRefpccogMethod(sqInt annotation, char *mcpc, sqInt cogMethod) NoDbgRegParms;
-sqInt checkIntegrityOfObjectReferencesInCode(sqInt fullGCFlag);
-static sqInt checkMaybeObjRefAt(sqInt mcpc) NoDbgRegParms;
-static void checkPrimitiveTableEnablers(void);
-static sqInt checkValidInlineCacheTag(sqInt cacheTag) NoDbgRegParms;
-static sqInt checkValidObjectReferencesInClosedPIC(CogMethod *cPIC) NoDbgRegParms;
-static sqInt checkValidObjectReference(sqInt anOop) NoDbgRegParms;
-static sqInt checkValidOopReference(sqInt anOop) NoDbgRegParms;
-static void clearCogCompiledCode(void);
-static sqInt closedPICRefersToUnmarkedObject(CogMethod *cPIC) NoDbgRegParms;
-static CogMethod * cmHomeMethod(CogBlockMethod * self_in_cmHomeMethod) NoDbgRegParms;
-char * codeEntryFor(char *address);
-char * codeEntryNameFor(char *address);
-sqInt cogCodeBase(void);
-sqInt cogCodeConstituents(void);
-static sqInt cogExtendPICCaseNMethodtagisMNUCase(CogMethod *cPIC, sqInt caseNMethod, sqInt caseNTag, sqInt isMNUCase) NoDbgRegParms;
-void cogitPostGCAction(sqInt gcMode);
-sqInt cogMethodDoesntLookKosher(CogMethod *cogMethod);
-CogMethod * cogMNUPICSelectormethodOperandnumArgs(sqInt selector, sqInt methodOperand, sqInt numArgs);
-static CogMethod * cogOpenPICSelectornumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
-static CogMethod * cogPICSelectornumArgsCase0MethodCase1MethodtagisMNUCase(sqInt selector, sqInt numArgs, CogMethod *case0CogMethod, sqInt case1MethodOrNil, sqInt case1Tag, sqInt isMNUCase) NoDbgRegParms;
-CogMethod * cogselector(sqInt aMethodObj, sqInt aSelectorOop);
-void compactCogCompiledCode(void);
-static void compactCompiledCode(void);
-static void compileAbort(void);
-static sqInt compileAbstractInstructionsFromthrough(sqInt start, sqInt end) NoDbgRegParms;
-static sqInt compileBlockBodies(void);
-static sqInt compileBlockDispatch(void);
-static sqInt compileBlockDispatchFromto(sqInt lowBlockStartIndex, sqInt highBlockStartIndex) NoDbgRegParms;
-static void compileBlockEntry(BlockStart *blockStart) NoDbgRegParms;
-static void compileBlockFrameBuild(BlockStart *blockStart) NoDbgRegParms;
-static void compileBlockFramelessEntry(BlockStart *blockStart) NoDbgRegParms;
-static void compileCallFornumArgsargargargargresultRegsaveRegs(void *aRoutine, sqInt numArgs, sqInt regOrConst0, sqInt regOrConst1, sqInt regOrConst2, sqInt regOrConst3, sqInt resultRegOrNil, sqInt saveRegs) NoDbgRegParms;
-static sqInt compileClosedPICPrototype(void);
-static CogMethod * compileCogMethod(sqInt selector) NoDbgRegParms;
-static AbstractInstruction * compileCPICEntry(void);
-static sqInt compileCPICCase0Case1MethodtagisMNUCasenumArgs(CogMethod *cPIC, CogMethod *case0CogMethod, sqInt case1Method, sqInt case1Tag, sqInt isMNUCase, sqInt numArgs) NoDbgRegParms;
-static sqInt compileEntireMethod(void);
-static void compileEntry(void);
-static sqInt compileFallbackToInterpreterPrimitive(void);
-static sqInt compileFrameBuild(void);
-static void compileGetErrorCode(void);
-static sqInt compileInterpreterPrimitive(void (*primitiveRoutine)(void)) NoDbgRegParms;
-static sqInt compileMethodBody(void);
-static sqInt compileMNUCPICmethodOperandnumArgs(CogMethod *cPIC, sqInt methodOperand, sqInt numArgs) NoDbgRegParms;
-static void compileOpenPICnumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
-static sqInt compilePICProlog(sqInt numArgs) NoDbgRegParms;
-static sqInt compilePrimitive(void);
-static void compileTrampolineFornumArgsargargargargsaveRegspushLinkRegresultReg(void *aRoutine, sqInt numArgs, sqInt regOrConst0, sqInt regOrConst1, sqInt regOrConst2, sqInt regOrConst3, sqInt saveRegs, sqInt pushLinkReg, sqInt resultRegOrNil) NoDbgRegParms;
-static void computeEntryOffsets(void);
-static sqInt computeJumpTargetOffsetPlus(AbstractInstruction * self_in_computeJumpTargetOffsetPlus, sqInt anPCOffset) NoDbgRegParms;
 static sqInt computeMaximumSize(AbstractInstruction * self_in_computeMaximumSize) NoDbgRegParms;
-static void computeMaximumSizes(void);
 static sqInt computeShiftRRSize(AbstractInstruction * self_in_computeShiftRRSize) NoDbgRegParms;
 static sqInt concreteDPFPRegister(AbstractInstruction * self_in_concreteDPFPRegister, sqInt registerIndex) NoDbgRegParms;
 static sqInt concreteRegister(AbstractInstruction * self_in_concreteRegister, sqInt registerIndex) NoDbgRegParms;
@@ -506,7 +434,6 @@
 static sqInt concretizeJump(AbstractInstruction * self_in_concretizeJump) NoDbgRegParms;
 static sqInt concretizeJumpLong(AbstractInstruction * self_in_concretizeJumpLong) NoDbgRegParms;
 static sqInt concretizeJumpR(AbstractInstruction * self_in_concretizeJumpR) NoDbgRegParms;
-static sqInt concretizeLabel(AbstractInstruction * self_in_concretizeLabel) NoDbgRegParms;
 static sqInt concretizeLOCK(AbstractInstruction * self_in_concretizeLOCK) NoDbgRegParms;
 static sqInt concretizeLoadEffectiveAddressMwrR(AbstractInstruction * self_in_concretizeLoadEffectiveAddressMwrR) NoDbgRegParms;
 static sqInt concretizeLogicalShiftLeftCqR(AbstractInstruction * self_in_concretizeLogicalShiftLeftCqR) NoDbgRegParms;
@@ -549,32 +476,148 @@
 static sqInt concretizeXCHGRR(AbstractInstruction * self_in_concretizeXCHGRR) NoDbgRegParms;
 static sqInt concretizeXorCwR(AbstractInstruction * self_in_concretizeXorCwR) NoDbgRegParms;
 static sqInt concretizeXorRR(AbstractInstruction * self_in_concretizeXorRR) NoDbgRegParms;
-static sqInt couldBeObject(sqInt oop) NoDbgRegParms;
 static sqInt counterTargetFromFollowingAddress(AbstractInstruction * self_in_counterTargetFromFollowingAddress, sqInt nextInstructionAddress) NoDbgRegParms;
+static sqInt cResultRegister(AbstractInstruction * self_in_cResultRegister) NoDbgRegParms;
+static void dispatchConcretize(AbstractInstruction * self_in_dispatchConcretize) NoDbgRegParms;
+static AbstractInstruction * genDivRRQuoRem(AbstractInstruction * self_in_genDivRRQuoRem, sqInt abstractRegDivisor, sqInt abstractRegDividend, sqInt abstractRegQuotient, sqInt abstractRegRemainder) NoDbgRegParms;
+static AbstractInstruction * generateCheckFeatures(AbstractInstruction * self_in_generateCheckFeatures) NoDbgRegParms;
+static AbstractInstruction * generateLowLevelTryLock(AbstractInstruction * self_in_generateLowLevelTryLock, sqInt vmOwnerLockAddress) NoDbgRegParms;
+static AbstractInstruction * generateLowLevelUnlock(AbstractInstruction * self_in_generateLowLevelUnlock, sqInt vmOwnerLockAddress) NoDbgRegParms;
+static AbstractInstruction * genGetLeafCallStackPointerFunction(AbstractInstruction * self_in_genGetLeafCallStackPointerFunction) NoDbgRegParms;
+static AbstractInstruction * genJumpFPEqual(AbstractInstruction * self_in_genJumpFPEqual, void *jumpTarget) NoDbgRegParms;
+static AbstractInstruction * genJumpFPNotEqual(AbstractInstruction * self_in_genJumpFPNotEqual, void *jumpTarget) NoDbgRegParms;
+static sqInt genLoadCStackPointer(AbstractInstruction * self_in_genLoadCStackPointer) NoDbgRegParms;
+static sqInt genLoadCStackPointers(AbstractInstruction * self_in_genLoadCStackPointers) NoDbgRegParms;
+static sqInt genLoadStackPointers(AbstractInstruction * self_in_genLoadStackPointers) NoDbgRegParms;
+static AbstractInstruction * genMulRR(AbstractInstruction * self_in_genMulRR, sqInt regSource, sqInt regDest) NoDbgRegParms;
+static sqInt genPassConstasArgument(AbstractInstruction * self_in_genPassConstasArgument, sqInt constant, sqInt zeroRelativeArgIndex) NoDbgRegParms;
+static sqInt genPassRegasArgument(AbstractInstruction * self_in_genPassRegasArgument, sqInt abstractRegister, sqInt zeroRelativeArgIndex) NoDbgRegParms;
+static AbstractInstruction * genPushRegisterArgsForAbortMissNumArgs(AbstractInstruction * self_in_genPushRegisterArgsForAbortMissNumArgs, sqInt numArgs) NoDbgRegParms;
+static AbstractInstruction * genPushRegisterArgsForNumArgs(AbstractInstruction * self_in_genPushRegisterArgsForNumArgs, sqInt numArgs) NoDbgRegParms;
+static sqInt genRemoveNArgsFromStack(AbstractInstruction * self_in_genRemoveNArgsFromStack, sqInt n) NoDbgRegParms;
+static sqInt genRestoreRegs(AbstractInstruction * self_in_genRestoreRegs) NoDbgRegParms;
+static sqInt genRestoreRegsExcept(AbstractInstruction * self_in_genRestoreRegsExcept, sqInt abstractReg) NoDbgRegParms;
+static sqInt genSaveRegisters(AbstractInstruction * self_in_genSaveRegisters) NoDbgRegParms;
+static sqInt genSaveStackPointers(AbstractInstruction * self_in_genSaveStackPointers) NoDbgRegParms;
+static AbstractInstruction * genSubstituteReturnAddress(AbstractInstruction * self_in_genSubstituteReturnAddress, sqInt retpc) NoDbgRegParms;
+static sqInt hasDoublePrecisionFloatingPointSupport(AbstractInstruction * self_in_hasDoublePrecisionFloatingPointSupport) NoDbgRegParms;
+static sqInt hasLinkRegister(AbstractInstruction * self_in_hasLinkRegister) NoDbgRegParms;
+static sqInt hasPCDependentInstructions(AbstractInstruction * self_in_hasPCDependentInstructions) NoDbgRegParms;
+static sqInt hasSSE2Instructions(AbstractInstruction * self_in_hasSSE2Instructions) NoDbgRegParms;
+static sqInt hasSSEInstructions(AbstractInstruction * self_in_hasSSEInstructions) NoDbgRegParms;
+static sqInt inlineCacheTagAt(AbstractInstruction * self_in_inlineCacheTagAt, sqInt callSiteReturnAddress) NoDbgRegParms;
+static sqInt instructionSizeAt(AbstractInstruction * self_in_instructionSizeAt, sqInt pc) NoDbgRegParms;
+static sqInt isBigEndian(AbstractInstruction * self_in_isBigEndian) NoDbgRegParms;
+static sqInt isCallPreceedingReturnPC(AbstractInstruction * self_in_isCallPreceedingReturnPC, sqInt mcpc) NoDbgRegParms;
+static sqInt isJumpAt(AbstractInstruction * self_in_isJumpAt, sqInt pc) NoDbgRegParms;
+static sqInt isPCDependent(AbstractInstruction * self_in_isPCDependent) NoDbgRegParms;
+static sqInt isQuick(AbstractInstruction * self_in_isQuick, unsigned long operand) NoDbgRegParms;
+static AbstractInstruction * jmpTarget(AbstractInstruction * self_in_jmpTarget, AbstractInstruction *anAbstractInstruction) NoDbgRegParms;
+static sqInt jumpLongByteSize(AbstractInstruction * self_in_jumpLongByteSize) NoDbgRegParms;
+static sqInt jumpLongConditionalByteSize(AbstractInstruction * self_in_jumpLongConditionalByteSize) NoDbgRegParms;
+static sqInt jumpLongTargetBeforeFollowingAddress(AbstractInstruction * self_in_jumpLongTargetBeforeFollowingAddress, sqInt mcpc) NoDbgRegParms;
+static sqInt jumpShortByteSize(AbstractInstruction * self_in_jumpShortByteSize) NoDbgRegParms;
+static sqInt jumpTargetPCAt(AbstractInstruction * self_in_jumpTargetPCAt, sqInt pc) NoDbgRegParms;
+static sqInt leafCallStackPointerDelta(AbstractInstruction * self_in_leafCallStackPointerDelta) NoDbgRegParms;
+static sqInt literalBeforeFollowingAddress(AbstractInstruction * self_in_literalBeforeFollowingAddress, sqInt followingAddress) NoDbgRegParms;
+static sqInt loadLiteralByteSize(AbstractInstruction * self_in_loadLiteralByteSize) NoDbgRegParms;
+static sqInt machineCodeBytes(AbstractInstruction * self_in_machineCodeBytes) NoDbgRegParms;
+static sqInt modRMRO(AbstractInstruction * self_in_modRMRO, sqInt mod, sqInt regMode, sqInt regOpcode) NoDbgRegParms;
+static AbstractInstruction * nopsFromto(AbstractInstruction * self_in_nopsFromto, sqInt startAddr, sqInt endAddr) NoDbgRegParms;
+static sqInt numCheckFeaturesOpcodes(AbstractInstruction * self_in_numCheckFeaturesOpcodes) NoDbgRegParms;
+static sqInt numLowLevelLockOpcodes(AbstractInstruction * self_in_numLowLevelLockOpcodes) NoDbgRegParms;
+static AbstractInstruction * padIfPossibleWithNopsFromto(AbstractInstruction * self_in_padIfPossibleWithNopsFromto, sqInt startAddr, sqInt endAddr) NoDbgRegParms;
+static AbstractInstruction * relocateCallBeforeReturnPCby(AbstractInstruction * self_in_relocateCallBeforeReturnPCby, sqInt retpc, sqInt delta) NoDbgRegParms;
+static AbstractInstruction * relocateJumpBeforeFollowingAddressby(AbstractInstruction * self_in_relocateJumpBeforeFollowingAddressby, sqInt pc, sqInt delta) NoDbgRegParms;
+static AbstractInstruction * relocateMethodReferenceBeforeAddressby(AbstractInstruction * self_in_relocateMethodReferenceBeforeAddressby, sqInt pc, sqInt delta) NoDbgRegParms;
+static sqInt rewriteCallAttarget(AbstractInstruction * self_in_rewriteCallAttarget, usqInt callSiteReturnAddress, usqInt callTargetAddress) NoDbgRegParms;
+static sqInt rewriteInlineCacheAttagtarget(AbstractInstruction * self_in_rewriteInlineCacheAttagtarget, usqInt callSiteReturnAddress, sqInt cacheTag, usqInt callTargetAddress) NoDbgRegParms;
+static AbstractInstruction * rewriteInlineCacheTagat(AbstractInstruction * self_in_rewriteInlineCacheTagat, sqInt cacheTag, sqInt callSiteReturnAddress) NoDbgRegParms;
+static sqInt rewriteJumpLongAttarget(AbstractInstruction * self_in_rewriteJumpLongAttarget, sqInt callSiteReturnAddress, sqInt callTargetAddress) NoDbgRegParms;
+static sqInt setsConditionCodesFor(AbstractInstruction * self_in_setsConditionCodesFor, sqInt aConditionalJumpOpcode) NoDbgRegParms;
+static sqInt shiftSetsConditionCodesFor(AbstractInstruction * self_in_shiftSetsConditionCodesFor, sqInt aConditionalJumpOpcode) NoDbgRegParms;
+static sqInt sizeHasModrmat(AbstractInstruction * self_in_sizeHasModrmat, sqInt op, sqInt pc) NoDbgRegParms;
+static sqInt sizeImmediateGroup1at(AbstractInstruction * self_in_sizeImmediateGroup1at, sqInt op, sqInt pc) NoDbgRegParms;
+static sqInt sizePCDependentInstructionAt(AbstractInstruction * self_in_sizePCDependentInstructionAt, sqInt eventualAbsoluteAddress) NoDbgRegParms;
+static sqInt stackBytesForNumArgs(AbstractInstruction * self_in_stackBytesForNumArgs, sqInt numArgs) NoDbgRegParms;
+static sqInt stackPageInterruptHeadroomBytes(AbstractInstruction * self_in_stackPageInterruptHeadroomBytes) NoDbgRegParms;
+static AbstractInstruction * storeLiteralbeforeFollowingAddress(AbstractInstruction * self_in_storeLiteralbeforeFollowingAddress, sqInt literal, sqInt followingAddress) NoDbgRegParms;
+static sqInt sib(AbstractInstruction * self_in_sib, sqInt scale, sqInt indexReg, sqInt baseReg) NoDbgRegParms;
+static sqInt twoByteInstructionSizeAt(AbstractInstruction * self_in_twoByteInstructionSizeAt, sqInt pc) NoDbgRegParms;
+static sqInt unsignedShortAt(AbstractInstruction * self_in_unsignedShortAt, sqInt byteAddress) NoDbgRegParms;
+static AbstractInstruction * gAndCqR(sqInt quickConstant, sqInt reg) NoDbgRegParms;
+static AbstractInstruction * gArithmeticShiftRightRR(sqInt reg1, sqInt reg2) NoDbgRegParms;
+sqInt abortOffset(void);
+static sqInt abstractInstructionfollows(AbstractInstruction *theAbstractInstruction, AbstractInstruction *anAbstractInstruction) NoDbgRegParms;
+static void addCleanBlockStarts(void);
+void addCogMethodsToHeapMap(void);
+static sqInt addressIsInFixups(AbstractInstruction *address) NoDbgRegParms;
+static sqInt addressIsInInstructions(AbstractInstruction *address) NoDbgRegParms;
+static sqInt addressOfEndOfCaseinCPIC(sqInt n, CogMethod *cPIC) NoDbgRegParms;
+static sqInt alignUptoRoutineBoundary(sqInt anAddress) NoDbgRegParms;
+static sqInt allMachineCodeObjectReferencesValid(void);
+static sqInt allMethodsHaveCorrectHeader(void);
+static AbstractInstruction * annotateAbsolutePCRef(AbstractInstruction *abstractInstruction) NoDbgRegParms;
+static AbstractInstruction * annotateBytecode(AbstractInstruction *abstractInstruction) NoDbgRegParms;
+static AbstractInstruction * annotateobjRef(AbstractInstruction *abstractInstruction, sqInt anOop) NoDbgRegParms;
+static AbstractInstruction * annotatewith(AbstractInstruction *abstractInstruction, sqInt annotationFlag) NoDbgRegParms;
+static void assertSaneJumpTarget(AbstractInstruction *jumpTarget) NoDbgRegParms;
+static sqInt blockCreationBytecodeSizeForHeader(sqInt methodHeader) NoDbgRegParms;
+static sqInt blockDispatchTargetsForperformarg(CogMethod *cogMethod, usqInt (*binaryFunction)(sqInt mcpc, sqInt arg), sqInt arg) NoDbgRegParms;
+sqInt bytecodePCForstartBcpcin(sqInt mcpc, sqInt startbcpc, CogBlockMethod *cogMethod);
+static AbstractInstruction * CallNewspeakSend(sqInt callTarget) NoDbgRegParms;
+static AbstractInstruction * CallRT(sqInt callTarget) NoDbgRegParms;
+static AbstractInstruction * CallRTregistersToBeSavedMask(sqInt callTarget, sqInt registersToBeSaved) NoDbgRegParms;
+static AbstractInstruction * CallSend(sqInt callTarget) NoDbgRegParms;
+static AbstractInstruction * gCall(sqInt callTarget) NoDbgRegParms;
+static AbstractInstruction * gCmpCqR(sqInt quickConstant, sqInt reg) NoDbgRegParms;
+static AbstractInstruction * gCmpCwR(sqInt wordConstant, sqInt reg) NoDbgRegParms;
+sqInt ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver);
+static sqInt ceImplicitReceiverForreceiverclass(sqInt selector, sqInt receiver, sqInt rcvrClass) NoDbgRegParms;
+sqInt ceSICMiss(sqInt receiver);
+void checkAssertsEnabledInCogit(void);
+static sqInt checkIfValidOopRefAndTargetpccogMethod(sqInt annotation, char *mcpc, sqInt cogMethod) NoDbgRegParms;
+static sqInt checkIfValidOopRefpccogMethod(sqInt annotation, char *mcpc, sqInt cogMethod) NoDbgRegParms;
+sqInt checkIntegrityOfObjectReferencesInCode(sqInt fullGCFlag);
+static sqInt checkMaybeObjRefAt(sqInt mcpc) NoDbgRegParms;
+static void checkPrimitiveTableEnablers(void);
+static sqInt checkValidObjectReferencesInClosedPIC(CogMethod *cPIC) NoDbgRegParms;
+static sqInt closedPICRefersToUnmarkedObject(CogMethod *cPIC) NoDbgRegParms;
+char * codeEntryFor(char *address);
+char * codeEntryNameFor(char *address);
+sqInt cogCodeBase(void);
+sqInt cogCodeConstituents(void);
+static sqInt cogExtendPICCaseNMethodtagisMNUCase(CogMethod *cPIC, sqInt caseNMethod, sqInt caseNTag, sqInt isMNUCase) NoDbgRegParms;
+void cogitPostGCAction(sqInt gcMode);
+sqInt cogMethodDoesntLookKosher(CogMethod *cogMethod);
+CogMethod * cogMNUPICSelectormethodOperandnumArgs(sqInt selector, sqInt methodOperand, sqInt numArgs);
+static CogMethod * cogOpenPICSelectornumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
+static CogMethod * cogPICSelectornumArgsCase0MethodCase1MethodtagisMNUCase(sqInt selector, sqInt numArgs, CogMethod *case0CogMethod, sqInt case1MethodOrNil, sqInt case1Tag, sqInt isMNUCase) NoDbgRegParms;
+CogMethod * cogselector(sqInt aMethodObj, sqInt aSelectorOop);
+void compactCogCompiledCode(void);
+static void compileAbort(void);
+static sqInt compileBlockDispatchFromto(sqInt lowBlockStartIndex, sqInt highBlockStartIndex) NoDbgRegParms;
+static void compileBlockEntry(BlockStart *blockStart) NoDbgRegParms;
+static void compileCallFornumArgsargargargargresultRegsaveRegs(void *aRoutine, sqInt numArgs, sqInt regOrConst0, sqInt regOrConst1, sqInt regOrConst2, sqInt regOrConst3, sqInt resultRegOrNil, sqInt saveRegs) NoDbgRegParms;
+static sqInt compileClosedPICPrototype(void);
+static AbstractInstruction * compileCPICEntry(void);
+static sqInt compileCPICCase0Case1MethodtagisMNUCasenumArgs(CogMethod *cPIC, CogMethod *case0CogMethod, sqInt case1Method, sqInt case1Tag, sqInt isMNUCase, sqInt numArgs) NoDbgRegParms;
+static void compileEntry(void);
+static sqInt compileMethodBody(void);
+static sqInt compileMNUCPICmethodOperandnumArgs(CogMethod *cPIC, sqInt methodOperand, sqInt numArgs) NoDbgRegParms;
+static sqInt compilePICProlog(sqInt numArgs) NoDbgRegParms;
+static sqInt compilePrimitive(void);
+static void compileTrampolineFornumArgsargargargargsaveRegspushLinkRegresultReg(void *aRoutine, sqInt numArgs, sqInt regOrConst0, sqInt regOrConst1, sqInt regOrConst2, sqInt regOrConst3, sqInt saveRegs, sqInt pushLinkReg, sqInt resultRegOrNil) NoDbgRegParms;
+static void computeEntryOffsets(void);
+static void computeMaximumSizes(void);
 static sqInt cPICHasFreedTargets(CogMethod *cPIC) NoDbgRegParms;
-static sqInt cPICMissTrampolineFor(sqInt numArgs) NoDbgRegParms;
 static sqInt cPICHasTarget(CogMethod *cPIC, CogMethod *targetMethod) NoDbgRegParms;
-static sqInt cResultRegister(AbstractInstruction * self_in_cResultRegister) NoDbgRegParms;
-static sqInt createsClosuresInline(void);
 static AbstractInstruction * gDivRRQuoRem(sqInt rDivisor, sqInt rDividend, sqInt rQuotient, sqInt rRemainder) NoDbgRegParms;
-static void dispatchConcretize(AbstractInstruction * self_in_dispatchConcretize) NoDbgRegParms;
-static sqInt doubleExtendedDoAnythingBytecode(void);
-static sqInt duplicateTopBytecode(void);
 static sqInt endPCOf(sqInt aMethod) NoDbgRegParms;
-static BytecodeFixup * ensureFixupAt(sqInt targetIndex) NoDbgRegParms;
-static BytecodeFixup * ensureNonMergeFixupAt(sqInt targetIndex) NoDbgRegParms;
-static void ensureReceiverResultRegContainsSelf(void);
-static CogSimStackEntry * ensureSpilledAtfrom(CogSimStackEntry * self_in_ensureSpilledAtfrom, sqInt baseOffset, sqInt baseRegister) NoDbgRegParms;
 void enterCogCodePopReceiver(void);
 void enterCogCodePopReceiverAndClassRegs(void);
-void enterCogCodePopReceiverArg0Regs(void);
-void enterCogCodePopReceiverArg1Arg0Regs(void);
-static void evaluateat(BytecodeDescriptor *descriptor, sqInt pc) NoDbgRegParms;
 static sqInt extABytecode(void);
 static sqInt extBBytecode(void);
-static sqInt extendedPushBytecode(void);
-static sqInt extendedStoreAndPopBytecode(void);
-static sqInt extendedStoreBytecode(void);
 static sqInt fillInBlockHeadersAt(sqInt startAddress) NoDbgRegParms;
 static CogMethod * fillInCPICHeadersizenumArgsnumCaseshasMNUCaseselector(CogMethod *pic, sqInt size, sqInt numArgs, sqInt numCases, sqInt hasMNUCase, sqInt selector) NoDbgRegParms;
 static CogMethod * fillInMethodHeadersizeselector(CogMethod *method, sqInt size, sqInt selector) NoDbgRegParms;
@@ -582,323 +625,53 @@
 static usqInt findBlockMethodWithEntrystartBcpc(sqInt blockEntryMcpc, sqInt startBcpc) NoDbgRegParms;
 static sqInt findMapLocationForMcpcinMethod(sqInt targetMcpc, CogMethod *cogMethod) NoDbgRegParms;
 CogBlockMethod * findMethodForStartBcpcinHomeMethod(sqInt startbcpc, CogMethod *cogMethod);
-static CogMethod * findPreviouslyCompiledVersionOfwith(sqInt aMethodObj, sqInt aSelectorOop) NoDbgRegParms;
 static sqInt findIsBackwardBranchMcpcBcpcMatchingMcpc(BytecodeDescriptor *descriptor, sqInt isBackwardBranch, char *mcpc, sqInt bcpc, void *targetMcpc) NoDbgRegParms;
-static sqInt frameOffsetOfTemporary(sqInt index) NoDbgRegParms;
-static void freeMethod(CogMethod *cogMethod) NoDbgRegParms;
-static void freeOlderMethodsForCompaction(void);
 static void freePICsWithFreedTargets(void);
 void freeUnmarkedMachineCode(void);
-static sqInt genActiveContextTrampoline(void);
-static sqInt genAddSmallIntegerTagsTo(sqInt aRegister) NoDbgRegParms;
-static sqInt genAlignCStackSavingRegistersnumArgswordAlignment(AbstractInstruction * self_in_genAlignCStackSavingRegistersnumArgswordAlignment, sqInt saveRegs, sqInt numArgs, sqInt alignment) NoDbgRegParms;
-static AbstractInstruction * genAllocFloatValueintoscratchRegscratchReg(sqInt dpreg, sqInt resultReg, sqInt scratch1, sqInt scratch2) NoDbgRegParms;
 static sqInt genCheckForInterruptsTrampoline(void);
-static sqInt genConvertIntegerToSmallIntegerInReg(sqInt reg) NoDbgRegParms;
-static sqInt genConvertIntegerToSmallIntegerInScratchReg(sqInt scratchReg) NoDbgRegParms;
-static sqInt genConvertSmallIntegerToIntegerInReg(sqInt reg) NoDbgRegParms;
-static sqInt genCreateClosureAtnumArgsnumCopiedcontextNumArgslargeinBlock(sqInt bcpc, sqInt numArgs, sqInt numCopied, sqInt ctxtNumArgs, sqInt isLargeCtxt, sqInt isInBlock) NoDbgRegParms;
-static AbstractInstruction * genDivRRQuoRem(AbstractInstruction * self_in_genDivRRQuoRem, sqInt abstractRegDivisor, sqInt abstractRegDividend, sqInt abstractRegQuotient, sqInt abstractRegRemainder) NoDbgRegParms;
-static sqInt genDoubleArithmeticpreOpCheck(sqInt arithmeticOperator, AbstractInstruction *(*preOpCheckOrNil)(int rcvrReg, int argReg)) NoDbgRegParms;
-static sqInt genDoubleComparisoninvert(AbstractInstruction *(*jumpOpcodeGenerator)(void *), sqInt invertComparison) NoDbgRegParms;
-static AbstractInstruction * genDoubleFailIfZeroArgRcvrarg(sqInt rcvrReg, sqInt argReg) NoDbgRegParms;
-static sqInt genDynamicSuperSendBytecode(void);
 static void (*genEnilopmartForandandcalled(sqInt regArg1, sqInt regArg2, sqInt regArg3, char *trampolineName))(void)  NoDbgRegParms;
 static void (*genEnilopmartForandcalled(sqInt regArg1, sqInt regArg2, char *trampolineName))(void)  NoDbgRegParms;
 static void (*genEnilopmartForcalled(sqInt regArg, char *trampolineName))(void)  NoDbgRegParms;
-static sqInt genEnsureObjInRegNotForwardedscratchReg(sqInt reg, sqInt scratch) NoDbgRegParms;
-static sqInt genEnsureOopInRegNotForwardedscratchReg(sqInt reg, sqInt scratch) NoDbgRegParms;
-static void (*genEnterPICEnilopmartNumArgs(sqInt numArgs))(void)  NoDbgRegParms;
-static sqInt genExtendedSendBytecode(void);
-static sqInt genExtendedSuperBytecode(void);
-static sqInt genExternalizePointersForPrimitiveCall(void);
-static sqInt genExtJumpIfFalse(void);
-static sqInt genExtJumpIfTrue(void);
-static sqInt genExtNopBytecode(void);
-static sqInt genExtPushClosureBytecode(void);
-static sqInt genExtPushIntegerBytecode(void);
-static sqInt genExtPushLiteralBytecode(void);
-static sqInt genExtPushLiteralVariableBytecode(void);
-static sqInt genExtPushPseudoVariableOrOuterBytecode(void);
-static sqInt genExtPushReceiverVariableBytecode(void);
-static sqInt genExtReturnTopFromBlock(void);
-static sqInt genExtSendAbsentDynamicSuperBytecode(void);
-static sqInt genExtSendAbsentImplicitBytecode(void);
-static sqInt genExtSendBytecode(void);
-static sqInt genExtSendSuperBytecode(void);
-static sqInt genExtStoreAndPopLiteralVariableBytecode(void);
-static sqInt genExtStoreAndPopReceiverVariableBytecode(void);
-static sqInt genExtStoreLiteralVariableBytecode(void);
-static sqInt genExtStoreReceiverVariableBytecode(void);
-static sqInt genExtUnconditionalJump(void);
 static void generateCaptureCStackPointers(sqInt captureFramePointer) NoDbgRegParms;
-static AbstractInstruction * generateCheckFeatures(AbstractInstruction * self_in_generateCheckFeatures) NoDbgRegParms;
 static void generateClosedPICPrototype(void);
 static CogMethod * generateCogMethod(sqInt selector) NoDbgRegParms;
-static void generateEnilopmarts(void);
-static AbstractInstruction * generateICacheFlush(AbstractInstruction * self_in_generateICacheFlush) NoDbgRegParms;
 static sqInt generateInstructionsAt(sqInt eventualAbsoluteAddress) NoDbgRegParms;
-static AbstractInstruction * generateLowLevelTryLock(AbstractInstruction * self_in_generateLowLevelTryLock, sqInt vmOwnerLockAddress) NoDbgRegParms;
-static AbstractInstruction * generateLowLevelUnlock(AbstractInstruction * self_in_generateLowLevelUnlock, sqInt vmOwnerLockAddress) NoDbgRegParms;
 static sqInt generateMapAtstart(sqInt addressOrNull, sqInt startAddress) NoDbgRegParms;
-static void generateMissAbortTrampolines(void);
 static void generateNewspeakRuntime(void);
-static void generateObjectRepresentationTrampolines(void);
 static void generateOpenPICPrototype(void);
 static void generateRunTimeTrampolines(void);
-static void generateSendTrampolines(void);
 static void generateStackPointerCapture(void);
-static void generateTracingTrampolines(void);
 static void generateTrampolines(void);
 static void generateVMOwnerLockFunctions(void);
-static sqInt genFastPrimFail(void);
-static void genFastPrimTraceUsingand(sqInt r1, sqInt r2) NoDbgRegParms;
-static sqInt genFetchIndexRegisterfrominto(sqInt indexReg, sqInt tableObj, sqInt destReg) NoDbgRegParms;
-static sqInt genFramelessStorePopReceiverVariable(sqInt popBoolean, sqInt slotIndex) NoDbgRegParms;
-static void genGetActiveContextNumArgslargeinBlock(sqInt numArgs, sqInt isLargeContext, sqInt isInBlock) NoDbgRegParms;
-static sqInt genGetClassFormatOfNonIntintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg) NoDbgRegParms;
-static sqInt genGetClassObjectOfintoscratchReginstRegIsReceiver(sqInt instReg, sqInt destReg, sqInt scratchReg, sqInt instRegIsReceiver) NoDbgRegParms;
-static AbstractInstruction * genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg) NoDbgRegParms;
-static sqInt genGetCompactClassIndexNonImmOfinto(sqInt instReg, sqInt destReg) NoDbgRegParms;
-static sqInt genGetDoubleValueOfinto(sqInt srcReg, sqInt destFPReg) NoDbgRegParms;
-static sqInt genGetFixedFieldsOfPointerNonIntintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg) NoDbgRegParms;
-static sqInt genGetHashFieldNonImmOfasSmallIntegerInto(sqInt instReg, sqInt destReg) NoDbgRegParms;
-static sqInt genGetImplicitReceiverForforPush(sqInt selector, sqInt forPushSendBar) NoDbgRegParms;
 static sqInt genGetLeafCallStackPointer(void);
-static AbstractInstruction * genGetLeafCallStackPointerFunction(AbstractInstruction * self_in_genGetLeafCallStackPointerFunction) NoDbgRegParms;
 static sqInt genInnerPICAbortTrampoline(char *name) NoDbgRegParms;
-static sqInt genInnerPrimitiveAsCharacterinReg(sqInt retNOffset, sqInt reg) NoDbgRegParms;
-static sqInt genInnerPrimitiveAtPut(sqInt retNoffset) NoDbgRegParms;
-static sqInt genInnerPrimitiveAt(sqInt retNoffset) NoDbgRegParms;
-static sqInt genInnerPrimitiveCharacterValue(sqInt retNOffset) NoDbgRegParms;
-static sqInt genInnerPrimitiveIdenticalorNotIf(sqInt retNoffset, sqInt orNot) NoDbgRegParms;
-static sqInt genInnerPrimitiveIdentityHash(sqInt retNOffset) NoDbgRegParms;
-static sqInt genInnerPrimitiveMirrorNewWithArg(sqInt retNoffset) NoDbgRegParms;
-static sqInt genInnerPrimitiveMirrorNew(sqInt retNoffset) NoDbgRegParms;
-static sqInt genInnerPrimitiveNewMethod(sqInt retNoffset) NoDbgRegParms;
-static sqInt genInnerPrimitiveNewWithArg(sqInt retNoffset) NoDbgRegParms;
-static sqInt genInnerPrimitiveNew(sqInt retNoffset) NoDbgRegParms;
-static sqInt genInnerPrimitiveSize(sqInt retNoffset) NoDbgRegParms;
-static sqInt genInnerPrimitiveStringAtPut(sqInt retNoffset) NoDbgRegParms;
-static sqInt genInnerPrimitiveStringAt(sqInt retNOffset) NoDbgRegParms;
-static sqInt genJumpBackTo(sqInt targetBytecodePC) NoDbgRegParms;
-static AbstractInstruction * genJumpFPEqual(AbstractInstruction * self_in_genJumpFPEqual, void *jumpTarget) NoDbgRegParms;
-static AbstractInstruction * genJumpFPGreaterOrEqual(AbstractInstruction * self_in_genJumpFPGreaterOrEqual, void *jumpTarget) NoDbgRegParms;
-static AbstractInstruction * genJumpFPGreater(AbstractInstruction * self_in_genJumpFPGreater, void *jumpTarget) NoDbgRegParms;
-static AbstractInstruction * genJumpFPLessOrEqual(AbstractInstruction * self_in_genJumpFPLessOrEqual, void *jumpTarget) NoDbgRegParms;
-static AbstractInstruction * genJumpFPLess(AbstractInstruction * self_in_genJumpFPLess, void *jumpTarget) NoDbgRegParms;
-static AbstractInstruction * genJumpFPNotEqual(AbstractInstruction * self_in_genJumpFPNotEqual, void *jumpTarget) NoDbgRegParms;
-static sqInt genJumpIfto(sqInt boolean, sqInt targetBytecodePC) NoDbgRegParms;
-static AbstractInstruction * genJumpImmediateInScratchReg(sqInt aRegister) NoDbgRegParms;
-static AbstractInstruction * genJumpNotSmallIntegerInScratchReg(sqInt aRegister) NoDbgRegParms;
-static AbstractInstruction * genJumpSmallIntegerInScratchReg(sqInt aRegister) NoDbgRegParms;
-static sqInt genJumpTo(sqInt targetBytecodePC) NoDbgRegParms;
-static sqInt genLoadCStackPointer(AbstractInstruction * self_in_genLoadCStackPointer) NoDbgRegParms;
-static sqInt genLoadCStackPointers(AbstractInstruction * self_in_genLoadCStackPointers) NoDbgRegParms;
 static sqInt genLoadCStackPointersForPrimCall(void);
-static sqInt genLoadSlotsourceRegdestReg(sqInt index, sqInt sourceReg, sqInt destReg) NoDbgRegParms;
-static sqInt genLoadStackPointers(AbstractInstruction * self_in_genLoadStackPointers) NoDbgRegParms;
-static sqInt genLongJumpIfFalse(void);
-static sqInt genLongJumpIfTrue(void);
-static sqInt genLongPushTemporaryVariableBytecode(void);
-static sqInt genLongStoreAndPopTemporaryVariableBytecode(void);
-static sqInt genLongStoreTemporaryVariableBytecode(void);
-static sqInt genLongUnconditionalBackwardJump(void);
-static sqInt genLongUnconditionalForwardJump(void);
-static sqInt genMarshalledSendDynamicSupernumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
-static sqInt genMarshalledSendSupernumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
-static sqInt genMarshalledSendnumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
-static sqInt genMethodAbortTrampolineFor(sqInt numArgs) NoDbgRegParms;
-static AbstractInstruction * genMulRR(AbstractInstruction * self_in_genMulRR, sqInt regSource, sqInt regDest) NoDbgRegParms;
-static sqInt genMustBeBooleanTrampolineForcalled(sqInt boolean, char *trampolineName) NoDbgRegParms;
-static void genNewArrayOfSizeinitialized(sqInt size, sqInt initialized) NoDbgRegParms;
 static sqInt genNonLocalReturnTrampoline(void);
-static sqInt genPassConstasArgument(AbstractInstruction * self_in_genPassConstasArgument, sqInt constant, sqInt zeroRelativeArgIndex) NoDbgRegParms;
-static sqInt genPassRegasArgument(AbstractInstruction * self_in_genPassRegasArgument, sqInt abstractRegister, sqInt zeroRelativeArgIndex) NoDbgRegParms;
-static sqInt genPICAbortTrampolineFor(sqInt numArgs) NoDbgRegParms;
-static sqInt genPICMissTrampolineFor(sqInt numArgs) NoDbgRegParms;
-static sqInt genPopStackBytecode(void);
-static sqInt genPrimitiveAdd(void);
-static sqInt genPrimitiveAsCharacter(void);
-static sqInt genPrimitiveAsFloat(void);
-static sqInt genPrimitiveAt(void);
-static sqInt genPrimitiveAtPut(void);
-static sqInt genPrimitiveBitAnd(void);
-static sqInt genPrimitiveBitOr(void);
-static sqInt genPrimitiveBitShift(void);
-static sqInt genPrimitiveBitXor(void);
-static sqInt genPrimitiveCharacterValue(void);
-static sqInt genPrimitiveClass(void);
-static sqInt genPrimitiveClosureValue(void);
-static sqInt genPrimitiveDiv(void);
-static sqInt genPrimitiveDivide(void);
-static sqInt genPrimitiveEqual(void);
-static sqInt genPrimitiveFloatAdd(void);
-static sqInt genPrimitiveFloatDivide(void);
-static sqInt genPrimitiveFloatEqual(void);
-static sqInt genPrimitiveFloatGreaterOrEqual(void);
-static sqInt genPrimitiveFloatGreaterThan(void);
-static sqInt genPrimitiveFloatLessOrEqual(void);
-static sqInt genPrimitiveFloatLessThan(void);
-static sqInt genPrimitiveFloatMultiply(void);
-static sqInt genPrimitiveFloatNotEqual(void);
-static sqInt genPrimitiveFloatSquareRoot(void);
-static sqInt genPrimitiveFloatSubtract(void);
-static sqInt genPrimitiveGreaterOrEqual(void);
-static sqInt genPrimitiveGreaterThan(void);
-static sqInt genPrimitiveIdentical(void);
-static sqInt genPrimitiveIdentityHash(void);
-static sqInt genPrimitiveLessOrEqual(void);
-static sqInt genPrimitiveLessThan(void);
-static sqInt genPrimitiveMod(void);
-static sqInt genPrimitiveMultiply(void);
-static sqInt genPrimitiveNew(void);
-static sqInt genPrimitiveNewMethod(void);
-static sqInt genPrimitiveNewWithArg(void);
-static sqInt genPrimitiveNotEqual(void);
-static sqInt genPrimitiveNotIdentical(void);
-static sqInt genPrimitiveQuo(void);
-static sqInt genPrimitiveSize(void);
-static sqInt genPrimitiveStringAt(void);
-static sqInt genPrimitiveStringAtPut(void);
-static sqInt genPrimitiveSubtract(void);
-static void genPrimReturnEnterCogCodeEnilopmart(sqInt profiling) NoDbgRegParms;
-static sqInt genPushActiveContextBytecode(void);
-static sqInt genPushClosureCopyCopiedValuesBytecode(void);
-static sqInt genPushConstantFalseBytecode(void);
-static sqInt genPushConstantNilBytecode(void);
-static sqInt genPushConstantOneBytecode(void);
-static sqInt genPushConstantTrueBytecode(void);
-static sqInt genPushConstantZeroBytecode(void);
-static sqInt genPushExplicitOuterReceiverBytecode(void);
-static sqInt genPushExplicitOuterReceiver(sqInt level) NoDbgRegParms;
-static sqInt genPushImplicitReceiverBytecode(void);
-static sqInt genPushLiteralConstantBytecode(void);
-static sqInt genPushLiteralIndex(sqInt literalIndex) NoDbgRegParms;
-static sqInt genPushLiteralVariable16CasesBytecode(void);
-static sqInt genPushLiteralVariableBytecode(void);
-static sqInt genPushLiteralVariable(sqInt literalIndex) NoDbgRegParms;
-static sqInt genPushLiteral(sqInt literal) NoDbgRegParms;
-static sqInt genPushMaybeContextReceiverVariable(sqInt slotIndex) NoDbgRegParms;
-static sqInt genPushNewArrayBytecode(void);
-static sqInt genPushQuickIntegerConstantBytecode(void);
-static sqInt genPushReceiverBytecode(void);
-static sqInt genPushReceiverVariableBytecode(void);
-static sqInt genPushReceiverVariable(sqInt index) NoDbgRegParms;
-static void genPushRegisterArgs(void);
-static AbstractInstruction * genPushRegisterArgsForAbortMissNumArgs(AbstractInstruction * self_in_genPushRegisterArgsForAbortMissNumArgs, sqInt numArgs) NoDbgRegParms;
-static AbstractInstruction * genPushRegisterArgsForNumArgs(AbstractInstruction * self_in_genPushRegisterArgsForNumArgs, sqInt numArgs) NoDbgRegParms;
-static sqInt genPushRemoteTempLongBytecode(void);
-static sqInt genPushTemporaryVariableBytecode(void);
-static sqInt genPushTemporaryVariable(sqInt index) NoDbgRegParms;
-sqInt genQuickReturnConst(void);
-sqInt genQuickReturnInstVar(void);
-sqInt genQuickReturnSelf(void);
-static sqInt genRemoveNArgsFromStack(AbstractInstruction * self_in_genRemoveNArgsFromStack, sqInt n) NoDbgRegParms;
-static sqInt genRemoveSmallIntegerTagsInScratchReg(sqInt scratchReg) NoDbgRegParms;
-static sqInt genRestoreRegs(AbstractInstruction * self_in_genRestoreRegs) NoDbgRegParms;
-static sqInt genRestoreRegsExcept(AbstractInstruction * self_in_genRestoreRegsExcept, sqInt abstractReg) NoDbgRegParms;
-static sqInt genReturnFalse(void);
-static sqInt genReturnNil(void);
-static sqInt genReturnReceiver(void);
-static sqInt genReturnTopFromBlock(void);
-static sqInt genReturnTopFromMethod(void);
-static sqInt genReturnTrue(void);
 static sqInt genSafeTrampolineForcalledarg(void *aRoutine, char *aString, sqInt regOrConst0) NoDbgRegParms;
 static sqInt genSafeTrampolineForcalledargarg(void *aRoutine, char *aString, sqInt regOrConst0, sqInt regOrConst1) NoDbgRegParms;
-static sqInt genSaveRegisters(AbstractInstruction * self_in_genSaveRegisters) NoDbgRegParms;
-static sqInt genSaveStackPointers(AbstractInstruction * self_in_genSaveStackPointers) NoDbgRegParms;
-static sqInt genSecondExtendedSendBytecode(void);
-static sqInt genSendAbsentDynamicSupernumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
-static sqInt genSendAbsentImplicit0ArgsBytecode(void);
-static sqInt genSendAbsentImplicitnumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
-static sqInt genSendDynamicSupernumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
-static sqInt genSendLiteralSelector0ArgsBytecode(void);
-static sqInt genSendLiteralSelector1ArgBytecode(void);
-static sqInt genSendLiteralSelector2ArgsBytecode(void);
-static sqInt genSendSupernumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
-static sqInt genSendTrampolineFornumArgscalledargargarg(void *aRoutine, sqInt numArgs, char *aString, sqInt regOrConst0, sqInt regOrConst1, sqInt regOrConst2) NoDbgRegParms;
-static sqInt genSendTrampolineFornumArgscalledargargargarg(void *aRoutine, sqInt numArgs, char *aString, sqInt regOrConst0, sqInt regOrConst1, sqInt regOrConst2, sqInt regOrConst3) NoDbgRegParms;
-static sqInt genSendnumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
-static sqInt genSetSmallIntegerTagsIn(sqInt scratchReg) NoDbgRegParms;
-static sqInt genShiftAwaySmallIntegerTagsInScratchReg(sqInt scratchReg) NoDbgRegParms;
-static sqInt genShortJumpIfFalse(void);
-static sqInt genShortJumpIfTrue(void);
-static sqInt genShortUnconditionalJump(void);
-static sqInt genSmallIntegerComparisonorDoubleComparison(sqInt jumpOpcode, AbstractInstruction *(*jumpFPOpcodeGenerator)(void *)) NoDbgRegParms;
 static sqInt genSmalltalkToCStackSwitch(void);
-static sqInt genSpecialSelectorArithmetic(void);
-static sqInt genSpecialSelectorClass(void);
-static sqInt genSpecialSelectorComparison(void);
-static sqInt genSpecialSelectorEqualsEquals(void);
-static sqInt genSpecialSelectorSend(void);
-static sqInt genStoreAndPopReceiverVariableBytecode(void);
-static sqInt genStoreAndPopRemoteTempLongBytecode(void);
-static sqInt genStoreAndPopTemporaryVariableBytecode(void);
-static sqInt genStoreImmediateInSourceRegslotIndexdestReg(sqInt sourceReg, sqInt index, sqInt destReg) NoDbgRegParms;
-static sqInt genStorePopLiteralVariable(sqInt popBoolean, sqInt litVarIndex) NoDbgRegParms;
-static sqInt genStorePopMaybeContextReceiverVariable(sqInt popBoolean, sqInt slotIndex) NoDbgRegParms;
-static sqInt genStorePopReceiverVariable(sqInt popBoolean, sqInt slotIndex) NoDbgRegParms;
-static sqInt genStorePopRemoteTempAt(sqInt popBoolean, sqInt slotIndex, sqInt remoteTempIndex) NoDbgRegParms;
-static sqInt genStorePopTemporaryVariable(sqInt popBoolean, sqInt tempIndex) NoDbgRegParms;
-static sqInt genStoreRemoteTempLongBytecode(void);
-static sqInt genStoreSourceRegslotIndexdestRegscratchReg(sqInt sourceReg, sqInt index, sqInt destReg, sqInt scratchReg) NoDbgRegParms;
-static sqInt genStoreSourceRegslotIndexintoNewObjectInDestReg(sqInt sourceReg, sqInt index, sqInt destReg) NoDbgRegParms;
-static AbstractInstruction * genSubstituteReturnAddress(AbstractInstruction * self_in_genSubstituteReturnAddress, sqInt retpc) NoDbgRegParms;
 static sqInt genTrampolineForcalled(void *aRoutine, char *aString) NoDbgRegParms;
 static sqInt genTrampolineForcalledarg(void *aRoutine, char *aString, sqInt regOrConst0) NoDbgRegParms;
 static sqInt genTrampolineForcalledargargargresult(void *aRoutine, char *aString, sqInt regOrConst0, sqInt regOrConst1, sqInt regOrConst2, sqInt resultReg) NoDbgRegParms;
 static sqInt genTrampolineForcalledargargresult(void *aRoutine, char *aString, sqInt regOrConst0, sqInt regOrConst1, sqInt resultReg) NoDbgRegParms;
 static sqInt genTrampolineForcalledargresult(void *aRoutine, char *aString, sqInt regOrConst0, sqInt resultReg) NoDbgRegParms;
 static sqInt genTrampolineForcallednumArgsargargargargsaveRegspushLinkRegresultRegappendOpcodes(void *aRoutine, char *trampolineName, sqInt numArgs, sqInt regOrConst0, sqInt regOrConst1, sqInt regOrConst2, sqInt regOrConst3, sqInt saveRegs, sqInt pushLinkReg, sqInt resultRegOrNil, sqInt appendBoolean) NoDbgRegParms;
-static sqInt genUpArrowReturn(void);
-static AbstractInstruction * genWriteCResultIntoReg(AbstractInstruction * self_in_genWriteCResultIntoReg, sqInt abstractRegister) NoDbgRegParms;
 static AbstractInstruction * gen(sqInt opcode) NoDbgRegParms;
 static AbstractInstruction * genoperand(sqInt opcode, sqInt operand) NoDbgRegParms;
 static AbstractInstruction * genoperandoperand(sqInt opcode, sqInt operandOne, sqInt operandTwo) NoDbgRegParms;

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list