예제 #1
0
void OSRPass::_run(IRManager & irm) {
    splitCriticalEdges(irm);
    computeDominatorsAndLoops(irm);
    LoopTree* loopTree = irm.getLoopTree();
    DominatorTree* dominatorTree = irm.getDominatorTree();
    OSR osr(irm, irm.getMemoryManager(), loopTree, dominatorTree);
    osr.runPass();
}
예제 #2
0
CfgCodeSelector::CfgCodeSelector(::Jitrino::SessionAction* sa, 
                                 CompilationInterface&      compIntfc,
                                 MethodCodeSelector& methodCodeSel,
                                 MemoryManager&          codeSelectorMM, 
                                 U_32                  nNodes, 
                                 IRManager&          irM
                                 )
    : numNodes(nNodes), nextNodeId(0), compilationInterface(compIntfc), methodCodeSelector(methodCodeSel),
      irMemManager(irM.getMemoryManager()), 
      codeSelectorMemManager(codeSelectorMM),  irManager(irM),
      hasDispatchNodes(false), currBlock(NULL), returnOperand(0) 
{
    nextNodeId = 0;
    nodes = new (codeSelectorMemManager) Node*[numNodes];
    U_32 i;
    for (i = 0; i < numNodes; i++) 
        nodes[i] = NULL;

    InstCodeSelector::onCFGInit(irManager);
    flags.useInternalHelpersForInteger2FloatConv = sa->getBoolArg("useInternalHelpersForInteger2FloatConv", false);
    flags.slowLdString = sa->getBoolArg("SlowLdString", false); 
}