You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by va...@apache.org on 2007/02/20 08:04:14 UTC

svn commit: r509440 [1/3] - in /harmony/enhanced/drlvm/trunk/vm: jitrino/src/codegenerator/ipf/ jitrino/src/codegenerator/ipf/include/ jitrino/src/main/ jitrino/src/optimizer/ vmcore/src/util/linux/

Author: varlax
Date: Mon Feb 19 23:04:13 2007
New Revision: 509440

URL: http://svn.apache.org/viewvc?view=rev&rev=509440
Log:
Applied HARMONY-3131 [drlvm][ipf] jitrino ipf enabling: specjvm98 passes

Modified:
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfIrPrinter.cpp
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeGenerator.h
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfIrPrinter.h
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/Jitrino.cpp
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/CodeGenerator.cpp
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/linux/signals_ipf.cpp

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp?view=diff&rev=509440&r1=509439&r2=509440
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfCodeGenerator.cpp Mon Feb 19 23:04:13 2007
@@ -33,31 +33,47 @@
 #include "IpfPrologEpilogGenerator.h"
 #include "IpfRuntimeSupport.h"
 #include "IpfCfgVerifier.h"
+#include "CodeGenerator.h"
 //#include "IpfInstrumentator.h"
 
 namespace Jitrino {
 namespace IPF {
 
+static const char* help = "  Ipf CodeGen\n";
+static ActionFactory<CodeGenerator> _ipf_codegen("ipf_codegen", help);
+
 //========================================================================================//
 // IpfCodeGenerator
 //========================================================================================//
 
-CodeGenerator::CodeGenerator(MemoryManager        &memoryManager_, 
-                             CompilationInterface &compilationInterface_) 
-    : memoryManager(memoryManager_), compilationInterface(compilationInterface_) {
+CodeGenerator::CodeGenerator() {
 
-    cfg        = NULL;
-    methodDesc = NULL;
+    compilationInterface = NULL;
+    cfg                  = NULL;
+    methodDesc           = NULL;
 }
 
 //----------------------------------------------------------------------------------------//
 
-void CodeGenerator::genCode(SessionAction *sa, MethodCodeSelector &methodCodeSelector) {
+void CodeGenerator::run() {
+    
+    MemoryManager mm(0x1000, "IpfCodeGenerator");
+
+    CompilationContext   *cc          = CompilationContext::getCurrentContext();
+    IRManager            &irManager   = *cc->getHIRManager();
+    CompilationInterface *ci          = cc->getVMCompilationInterface();
+    MethodDesc           *methodDesc  = ci->getMethodToCompile();
+    ::Jitrino::OpndManager &opndManager = irManager.getOpndManager();
+    const OptimizerFlags &optFlags    = irManager.getOptimizerFlags();
+    VarOpnd              *varOpnds    = opndManager.getVarOpnds();
 
-    MemoryManager  mm(0x1000, "IpfCodeGenerator");
-    cfg = new(mm) Cfg(mm, compilationInterface);
-    IrPrinter irPrinter(*cfg, "LOG"); //(char *)Log::getLogDirName());
-    methodDesc = compilationInterface.getMethodToCompile();
+    MethodCodeSelector *methodCodeSelector = new(mm) _MethodCodeSelector(irManager, methodDesc,
+        varOpnds, &irManager.getFlowGraph(), opndManager, optFlags.sink_constants, optFlags.sink_constants1);
+    
+    compilationInterface = CompilationContext::getCurrentContext()->getVMCompilationInterface();
+    cfg                  = new(mm) Cfg(mm, *compilationInterface);
+    methodDesc           = compilationInterface->getMethodToCompile();
+    IrPrinter irPrinter(*cfg);
 
     if(LOG_ON) {
         const char *methodName     = methodDesc->getName();
@@ -69,9 +85,11 @@
         IPF_LOG << endl << methodTypeName << "." << methodName << methodSignature << endl;
     }
 
+    //compilationInterface->lockMethodData();
+
     IPF_LOG << endl << "=========== Stage: Code Selector =============================" << endl;
-    IpfMethodCodeSelector ipfMethodCodeSelector(*cfg, compilationInterface);
-    methodCodeSelector.selectCode(ipfMethodCodeSelector);
+    IpfMethodCodeSelector ipfMethodCodeSelector(*cfg, *compilationInterface);
+    methodCodeSelector->selectCode(ipfMethodCodeSelector);
 
     methodDesc = ipfMethodCodeSelector.getMethodDesc();
     cfg->getOpndManager()->initCompBases((BbNode *)cfg->getEnterNode());
@@ -98,7 +116,7 @@
     liveAnalyzer.makeLiveSets(false);
 
     IPF_LOG << endl << "=========== Stage: Build GC Root Set =========================" << endl;
-    RuntimeSupport runtimeSupport(*cfg, compilationInterface);
+    RuntimeSupport runtimeSupport(*cfg, *compilationInterface);
     runtimeSupport.buildRootSet();
 
     IPF_LOG << endl << "=========== Stage: Register Allocator ========================" << endl;
@@ -116,11 +134,13 @@
     if(LOG_ON) irPrinter.printAsm(LOG_OUT);
 
     IPF_LOG << endl << "=========== Stage: Code Emitter ==============================" << endl;
-    Emitter emitter(*cfg, compilationInterface, false);
+    Emitter emitter(*cfg, *compilationInterface, false);
     bool ret = emitter.emit();
 
     IPF_LOG << endl << "=========== Stage: Make Runtime Info =========================" << endl;
     runtimeSupport.makeRuntimeInfo();
+
+    //compilationInterface->unlockMethodData();
     
     if(ret) IPF_LOG << endl << "=========== Compilation Successful ===========================" << endl;
     else    IPF_LOG << endl << "=========== Compilation Failed ===============================" << endl;

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfIrPrinter.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfIrPrinter.cpp?view=diff&rev=509440&r1=509439&r2=509440
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfIrPrinter.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfIrPrinter.cpp Mon Feb 19 23:04:13 2007
@@ -35,20 +35,17 @@
 // IrPrinter
 //========================================================================================//
 
-IrPrinter::IrPrinter(Cfg &cfg_, char *logDirName_) :
+IrPrinter::IrPrinter(Cfg &cfg_) :
     mm(cfg_.getMM()),
     cfg(cfg_),
-    logDirName(logDirName_),
     ofs(NULL) {
 }
 
 //----------------------------------------------------------------------------------------//
 
-void IrPrinter::printLayoutDot(char *logFileName) {
+void IrPrinter::printLayoutDot(char *logName) {
 
-    string logName(logDirName);
-    logName.append(logFileName);
-    ofs = new(mm) ofstream(logName.c_str());
+    ofs = new(mm) ofstream(logName);
     
     BbNode *node = (BbNode *)cfg.getEnterNode();
     BbNode *succ = node->getLayoutSucc();
@@ -69,11 +66,9 @@
 
 //----------------------------------------------------------------------------------------//
 
-void IrPrinter::printCfgDot(char *logFileName) {
+void IrPrinter::printCfgDot(char *logName) {
 
-    string logName(logDirName);
-    logName.append(logFileName);
-    ofs = new(mm) ofstream(logName.c_str());
+    ofs = new(mm) ofstream(logName);
     
     NodeVector &nodes = cfg.search(SEARCH_POST_ORDER);
 

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeGenerator.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeGenerator.h?view=diff&rev=509440&r1=509439&r2=509440
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeGenerator.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeGenerator.h Mon Feb 19 23:04:13 2007
@@ -34,17 +34,15 @@
 // CodeGenerator
 //========================================================================================//
 
-class CodeGenerator : public ::Jitrino::CodeGenerator {
+class CodeGenerator : public SessionAction {
 public:
-                         CodeGenerator(MemoryManager&, CompilationInterface&);
-    void                 genCode(SessionAction*, MethodCodeSelector&);
+                         CodeGenerator();
+    void                 run();
     virtual              ~CodeGenerator() {}
 
 protected:
-    MemoryManager        &memoryManager;
-    CompilationInterface &compilationInterface;
+    CompilationInterface *compilationInterface;
     MethodDesc           *methodDesc;
-
     Cfg                  *cfg;
 };
 

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfIrPrinter.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfIrPrinter.h?view=diff&rev=509440&r1=509439&r2=509440
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfIrPrinter.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfIrPrinter.h Mon Feb 19 23:04:13 2007
@@ -37,7 +37,7 @@
 
 class IrPrinter {
 public:
-                   IrPrinter(Cfg&, char*);
+                   IrPrinter(Cfg&);
     void           printCfgDot(char*);
     void           printLayoutDot(char*);
     void           printAsm(ostream&);
@@ -65,7 +65,6 @@
     
     MemoryManager  &mm;
     Cfg            &cfg;
-    char           *logDirName;   // name of log dir
     ostream        *os;           // output stream
     ofstream       *ofs;          // file output stream
 };

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/Jitrino.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/Jitrino.cpp?view=diff&rev=509440&r1=509439&r2=509440
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/Jitrino.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/Jitrino.cpp Mon Feb 19 23:04:13 2007
@@ -272,9 +272,9 @@
 
 bool Jitrino::CompileMethod(CompilationContext* cc) {
     CompilationInterface* compilationInterface = cc->getVMCompilationInterface();
-#ifdef _IPF_ //IPF CG params are not safe -> add them to CompilationContext and remove this lock
-    compilationInterface->lockMethodData();
-#endif
+//#ifdef _IPF_ //IPF CG params are not safe -> add them to CompilationContext and remove this lock
+//    compilationInterface->lockMethodData();
+//#endif
     bool success = false;
     MethodDesc& methodDesc = *compilationInterface->getMethodToCompile();
     initialize_parameters(cc, methodDesc);
@@ -285,9 +285,9 @@
     } else {
         success = compileMethod(cc);
     }
-#ifdef _IPF_
-    compilationInterface->unlockMethodData();
-#endif
+//#ifdef _IPF_
+//    compilationInterface->unlockMethodData();
+//#endif
     return success;
 }