[vmkit-commits] [vmkit] r68317 - in /vmkit/trunk: include/jnjvm/JavaCompiler.h lib/JnJVM/Compiler/JITInfo.cpp lib/JnJVM/VMCore/JavaTypes.cpp tools/llcj/llcj.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Thu Apr 2 08:06:38 PDT 2009


Author: geoffray
Date: Thu Apr  2 10:06:38 2009
New Revision: 68317

URL: http://llvm.org/viewvc/llvm-project?rev=68317&view=rev
Log:
Add some code to try dlsym signature callbacks instead of
always generating them.


Modified:
    vmkit/trunk/include/jnjvm/JavaCompiler.h
    vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp
    vmkit/trunk/tools/llcj/llcj.cpp

Modified: vmkit/trunk/include/jnjvm/JavaCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/jnjvm/JavaCompiler.h?rev=68317&r1=68316&r2=68317&view=diff

==============================================================================
--- vmkit/trunk/include/jnjvm/JavaCompiler.h (original)
+++ vmkit/trunk/include/jnjvm/JavaCompiler.h Thu Apr  2 10:06:38 2009
@@ -34,8 +34,6 @@
   }
 
   virtual void setMethod(JavaMethod* meth, void* ptr, const char* name) {
-    fprintf(stderr, "Implement me");
-    abort();
   }
   
   virtual bool isStaticCompiling() {

Modified: vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp?rev=68317&r1=68316&r2=68317&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp Thu Apr  2 10:06:38 2009
@@ -341,13 +341,13 @@
     char* buf = (char*)alloca((signature->keyName->size << 1) + 1 + 11);
     signature->nativeName(buf, type);
     res = Function::Create(virt ? getVirtualBufType() : getStaticBufType(),
-                           GlobalValue::InternalLinkage, buf,
+                           GlobalValue::ExternalLinkage, buf,
                            Mod->getLLVMModule());
   
 
   } else {
     res = Function::Create(virt ? getVirtualBufType() : getStaticBufType(),
-                           GlobalValue::InternalLinkage, "",
+                           GlobalValue::ExternalLinkage, "",
                            Mod->getLLVMModule());
   }
 

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp?rev=68317&r1=68316&r2=68317&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp Thu Apr  2 10:06:38 2009
@@ -105,28 +105,48 @@
 
 intptr_t Signdef::staticCallBuf() {
   if (!_staticCallBuf) {
-    initialLoader->getCompiler()->staticCallBuf(this);
+    char* buf = (char*)alloca((keyName->size << 1) + 1 + 11);
+    nativeName(buf, "static_buf");
+    bool unused = false;
+    _staticCallBuf = initialLoader->loadInLib(buf, unused);
+    if (!_staticCallBuf)
+      initialLoader->getCompiler()->staticCallBuf(this);
   }
   return _staticCallBuf;
 }
 
 intptr_t Signdef::virtualCallBuf() {
   if (!_virtualCallBuf) {
-    initialLoader->getCompiler()->virtualCallBuf(this);
+    char* buf = (char*)alloca((keyName->size << 1) + 1 + 11);
+    nativeName(buf, "virtual_buf");
+    bool unused = false;
+    _virtualCallBuf = initialLoader->loadInLib(buf, unused);
+    if (!_virtualCallBuf)
+      initialLoader->getCompiler()->virtualCallBuf(this);
   }
   return _virtualCallBuf;
 }
 
 intptr_t Signdef::staticCallAP() {
   if (!_staticCallAP) {
-    initialLoader->getCompiler()->staticCallAP(this);
+    char* buf = (char*)alloca((keyName->size << 1) + 1 + 11);
+    nativeName(buf, "static_ap");
+    bool unused = false;
+    _staticCallAP = initialLoader->loadInLib(buf, unused);
+    if (!_staticCallAP)
+      initialLoader->getCompiler()->staticCallAP(this);
   }
   return _staticCallAP;
 }
 
 intptr_t Signdef::virtualCallAP() {
   if (!_virtualCallAP) {
-    initialLoader->getCompiler()->virtualCallAP(this);
+    char* buf = (char*)alloca((keyName->size << 1) + 1 + 11);
+    nativeName(buf, "virtual_ap");
+    bool unused = false;
+    _virtualCallAP = initialLoader->loadInLib(buf, unused);
+    if (!_virtualCallAP)
+      initialLoader->getCompiler()->virtualCallAP(this);
   }
   return _virtualCallAP;
 }

Modified: vmkit/trunk/tools/llcj/llcj.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/llcj/llcj.cpp?rev=68317&r1=68316&r2=68317&view=diff

==============================================================================
--- vmkit/trunk/tools/llcj/llcj.cpp (original)
+++ vmkit/trunk/tools/llcj/llcj.cpp Thu Apr  2 10:06:38 2009
@@ -29,10 +29,12 @@
  
   bool runGCC = true;
   char* className = 0;
+  bool shared = false;
 
   for (int i = 1; i < argc; ++i) {
     if (!strcmp(argv[i], "-shared")) {
       gccArgv[gccArgc++] = argv[i];
+      shared = true;
     } else if (!strcmp(argv[i], "-O1") || !strcmp(argv[i], "-O2") ||
                !strcmp(argv[i], "-O3")) {
       opt = argv[i];
@@ -141,7 +143,13 @@
   }
 
   if (!res) {
-    sys::Path LlcOut = tempDir;
+    sys::Path LlcOut;
+    
+    if (runGCC)
+      LlcOut= tempDir;
+    else
+      LlcOut = sys::Path(sys::Path::GetCurrentDirectory());
+
     LlcOut.appendComponent(className);
     LlcOut.appendSuffix("s");
    
@@ -153,14 +161,15 @@
     }
     
     const char* llcArgv[8];
-    llcArgv[0] = Prog.toString().c_str();
-    llcArgv[1] = Out.toString().c_str();
-    llcArgv[2] = "-relocation-model=pic";
-    llcArgv[3] = "-disable-fp-elim";
-    llcArgv[4] = "-f";
-    llcArgv[5] = "-o";
-    llcArgv[6] = LlcOut.toString().c_str();
-    llcArgv[7] = 0;
+    int i = 0;
+    llcArgv[i++] = Prog.toString().c_str();
+    llcArgv[i++] = Out.toString().c_str();
+    if (shared) llcArgv[i++] = "-relocation-model=pic";
+    llcArgv[i++] = "-disable-fp-elim";
+    llcArgv[i++] = "-f";
+    llcArgv[i++] = "-o";
+    llcArgv[i++] = LlcOut.toString().c_str();
+    llcArgv[i++] = 0;
   
     res = sys::Program::ExecuteAndWait(Prog, llcArgv);
     Out = LlcOut;
@@ -188,6 +197,7 @@
     gccArgv[gccArgc++] = "-ljnjvm";
     gccArgv[gccArgc++] = "-lvmjc";
     gccArgv[gccArgc++] = "-lLLVMSupport";
+    gccArgv[gccArgc++] = "-rdynamic";
     gccArgv[gccArgc++] = 0;
 
     res = sys::Program::ExecuteAndWait(Prog, gccArgv);





More information about the vmkit-commits mailing list