// // 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 }
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(); } }
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); } }
// 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); }
virtual void run () { getCompilationContext()->getVMCompilationInterface()->unlockMethodData(); }
virtual void run () {getCompilationContext()->setCompilationFailed(true);}