internal static void InlineJsrs(ClassLoaderWrapper classLoader, MethodWrapper mw, ClassFile classFile, ClassFile.Method m) { JsrInliner inliner; do { ClassFile.Method.Instruction[] codeCopy = (ClassFile.Method.Instruction[])m.Instructions.Clone(); InstructionFlags[] flags = new InstructionFlags[codeCopy.Length]; JsrMethodAnalyzer ma = new JsrMethodAnalyzer(mw, classFile, m, classLoader, flags); inliner = new JsrInliner(codeCopy, flags, m, ma); } while (inliner.InlineJsrs()); }
internal SubroutineCall(JsrInliner inliner, int subroutineIndex, int returnIndex) { this.inliner = inliner; this.subroutineIndex = subroutineIndex; this.returnIndex = returnIndex; baseIndex = inliner.codeLength; branchMap = new int[inliner.m.Instructions.Length]; for (int i = 0; i < branchMap.Length; i++) { branchMap[i] = i; } }