Beispiel #1
0
//
// code generator entry point
//
void HIR2LIRSelectorSessionAction::run() {

#if defined(_IPF_)
#else
    CompilationContext* cc = getCompilationContext();
    IRManager& irManager = *cc->getHIRManager();
    CompilationInterface* ci = cc->getVMCompilationInterface();
    MethodDesc* methodDesc  = ci->getMethodToCompile();
    OpndManager& opndManager = irManager.getOpndManager();
    const OptimizerFlags& optFlags = irManager.getOptimizerFlags();
    VarOpnd* varOpnds   = opndManager.getVarOpnds();
    MemoryManager& mm  = cc->getCompilationLevelMemoryManager();

    MethodCodeSelector* mcs = new (mm) _MethodCodeSelector(irManager,methodDesc,varOpnds,&irManager.getFlowGraph(),
        opndManager, optFlags.sink_constants, optFlags.sink_constants1);

    Ia32::CodeGenerator cg;
    cg.genCode(this, *mcs);
#endif
#if defined(ORDER) && !defined(DISABLE_PTHREAD_OPT)
    cc->getLIRManager()->pthread_opt_enable = cc->getHIRManager()->pthread_opt_enable;
#endif



}
Beispiel #2
0
 virtual void run () {
     CompilationContext* cc = getCompilationContext();
     CompilationInterface* ci = cc->getVMCompilationInterface();
     ci->lockMethodData();
     MethodDesc* methDesc = ci->getMethodToCompile();
     if (methDesc->getCodeBlockSize(0) > 0 || methDesc->getCodeBlockSize(1) > 0){
         cc->setCompilationFinished(true);
         ci->unlockMethodData();
     }
 }
Beispiel #3
0
void TranslatorSession::postTranslatorCleanup() {
    IRManager* irm = getCompilationContext()->getHIRManager();
    ControlFlowGraph& flowGraph = irm->getFlowGraph();
    MethodDesc& methodDesc = irm->getMethodDesc();
    if (Log::isEnabled()) {
        Log::out() << "PRINTING LOG: After Translator" << std::endl;
        FlowGraph::printHIR(Log::out(), flowGraph, methodDesc);
    }
    FlowGraph::doTranslatorCleanupPhase(*irm);
    if (Log::isEnabled()) {
        Log::out() << "PRINTING LOG: After Cleanup" << std::endl;
        FlowGraph::printHIR(Log::out(), flowGraph,  methodDesc);
    }
}
Beispiel #4
0
// this is the regular routine to be used to generate IR for a method
void TranslatorSession::translate() {
    CompilationContext* cc = getCompilationContext();
    IRManager* irm = cc->getHIRManager();
    assert(irm);
    irm->getTypeManager().setLazyResolutionMode(flags.lazyResolution);
    MethodDesc& methodDesc = irm->getMethodDesc();
    //create IRBuilder
    MemoryManager& mm = cc->getCompilationLevelMemoryManager();
    TranslatorAction* myAction = (TranslatorAction*)getAction();
    IRBuilder* irb = (IRBuilder*)myAction->getIRBuilderAction()->createSession(mm);
    irb->setCompilationContext(cc);
    MemoryManager tmpMM("IRBuilder::tmpMM");
    irb->init(irm, &flags, tmpMM);
    JavaTranslator::translateMethod(*cc->getVMCompilationInterface(), methodDesc, *irb);
}
Beispiel #5
0
 virtual void run () {
     getCompilationContext()->getVMCompilationInterface()->unlockMethodData();
 }
Beispiel #6
0
 virtual void run () {getCompilationContext()->setCompilationFailed(true);}