helper.setMethod(method);
X86StackFrame stackFrame = new X86StackFrame((X86Assembler) os, helper, method, entryPoints, cm);
TypeSizeInfo typeSizeInfo = getTypeSizeInfo();
VmByteCode bytecode = method.getBytecode();
IRControlFlowGraph cfg = new IRControlFlowGraph(bytecode);
IRGenerator irg = new IRGenerator(cfg);
BytecodeParser.parse(bytecode, irg);
initMethodArguments(method, stackFrame, typeSizeInfo, irg);
cfg.constructSSA();
cfg.optimize();
cfg.removeUnusedVars();
cfg.deconstrucSSA();
cfg.fixupAddresses();
X86CodeGenerator x86cg = new X86CodeGenerator(method, (X86Assembler) os, bytecode.getLength(),
typeSizeInfo, stackFrame);
List<Variable<?>> liveVariables = cfg.computeLiveVariables();
LiveRange<?>[] liveRanges = getLiveRanges(liveVariables);
LinearScanAllocator<?> lsa = allocate(liveRanges);
generateCode(x86cg, cfg, irg, lsa);
// Unsafe.debug("L2 compiled method: " + method.getFullName() + "\n");