[llvm-commits] [vmkit] r50208 - in /vmkit/trunk/lib/JnJVM: Classpath/ClasspathVMStackWalker.cpp VMCore/JavaBacktrace.cpp VMCore/JavaUpcalls.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Thu Apr 24 01:48:11 PDT 2008


Author: geoffray
Date: Thu Apr 24 03:48:11 2008
New Revision: 50208

URL: http://llvm.org/viewvc/llvm-project?rev=50208&view=rev
Log:
Correct signature of getCallingClass and getCallingClassLoader.


Modified:
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaBacktrace.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp?rev=50208&r1=50207&r2=50208&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp Thu Apr 24 03:48:11 2008
@@ -8,12 +8,14 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include <execinfo.h>
 #include <string.h>
 
 #include "types.h"
 
 #include "JavaArray.h"
 #include "JavaClass.h"
+#include "JavaJIT.h"
 #include "JavaObject.h"
 #include "JavaTypes.h"
 #include "JavaThread.h"
@@ -21,8 +23,6 @@
 #include "Jnjvm.h"
 #include "NativeUtil.h"
 
-#include <execinfo.h>
-
 using namespace jnjvm;
 
 extern "C" JavaMethod* ip_to_meth(int* ip);
@@ -80,37 +80,13 @@
 }
 
 extern "C" JavaObject* getCallingClass() {
-  int* ips[10];
-  int real_size = backtrace((void**)(void*)ips, 100);
-  int n = 0;
-  int i = 0;
-  
-  while (i < real_size) {
-    JavaMethod* meth = ip_to_meth(ips[i++]);
-    if (meth) {
-      ++n;
-      if (n == 1) return meth->classDef->getClassDelegatee();
-    }   
-  }
-
+  Class* cl = JavaJIT::getCallingClass();
+  if (cl) return cl->getClassDelegatee();
   return 0;
 }
 
 extern "C" JavaObject* getCallingClassLoader() {
-  int* ips[10];
-  int real_size = backtrace((void**)(void*)ips, 100);
-  int n = 0;
-  int i = 0;
-  
-  while (i < real_size) {
-    JavaMethod* meth = ip_to_meth(ips[i++]);
-    if (meth) {
-      ++n;
-      if (n == 1) return meth->classDef->classLoader;
-    }   
-  }
-
-  return 0;
+  return JavaJIT::getCallingClassLoader();
 }
 
 }

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaBacktrace.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaBacktrace.cpp Thu Apr 24 03:48:11 2008
@@ -80,10 +80,12 @@
     if (code) {
       mvm::Method* m = code->method();
       mvm::Object* meth = m->definition();
-      if (meth && meth->getVirtualTable() == JavaMethod::VT && i == 0) {
-        return ((JavaMethod*)meth)->classDef;
-      } else {
-        ++i;
+      if (meth && meth->getVirtualTable() == JavaMethod::VT) {
+        if (i == 1) {
+          return ((JavaMethod*)meth)->classDef;
+        } else {
+          ++i;
+        }
       }
     }
   }
@@ -100,9 +102,13 @@
     if (code) {
       mvm::Method* m = code->method();
       mvm::Object* meth = m->definition();
-      if (meth && meth->getVirtualTable() == JavaMethod::VT && i == 1) {
-        return ((JavaMethod*)meth)->classDef;
-      } else ++i;
+      if (meth && meth->getVirtualTable() == JavaMethod::VT) {
+        if (i == 1) {
+          return ((JavaMethod*)meth)->classDef;
+        } else {
+          ++i;
+        }
+      }
     }
   }
   return 0;

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp Thu Apr 24 03:48:11 2008
@@ -216,54 +216,18 @@
 
   loadInClassLoader = UPCALL_METHOD(vm, "java/lang/ClassLoader", "loadClass", "(Ljava/lang/String;Z)Ljava/lang/Class;", ACC_VIRTUAL);
 
-  getCallingClassLoader = UPCALL_METHOD(vm, "gnu/classpath/VMStackWalker", "getCallingClassLoader", "()Ljava/lang/ClassLoader;", ACC_STATIC);
-  
-  // Create getCallingClassLoader
-  {
-  std::vector<const llvm::Type*> args;
-#ifdef MULTIPLE_VM
-  args.push_back(mvm::jit::ptrType);  
-#endif
-  const llvm::FunctionType* type = 
-    llvm::FunctionType::get(JavaObject::llvmType, args, false);
-
-  Classpath::getCallingClassLoader->llvmFunction =
-    llvm::Function::Create(type, llvm::GlobalValue::ExternalLinkage,
-                       "_ZN5jnjvm7JavaJIT21getCallingClassLoaderEv",
-                       vm->module);
-  }
-
   JavaMethod* internString = UPCALL_METHOD(vm, "java/lang/VMString", "intern", "(Ljava/lang/String;)Ljava/lang/String;", ACC_STATIC);
   // Create intern
   {
-  std::vector<const llvm::Type*> args;
-  args.push_back(JavaObject::llvmType);
-#ifdef MULTIPLE_VM
-  args.push_back(mvm::jit::ptrType);  
-#endif
-  const llvm::FunctionType* type = 
-    llvm::FunctionType::get(JavaObject::llvmType, args, false);
-
-  internString->llvmFunction =
-    llvm::Function::Create(type, llvm::GlobalValue::ExternalLinkage,
-                       "internString",
-                       vm->module);
+    internString->llvmFunction->setName("internString");
+    internString->llvmFunction->setLinkage(llvm::GlobalValue::ExternalLinkage);
   }
   
   JavaMethod* isArray = UPCALL_METHOD(vm, "java/lang/Class", "isArray", "()Z", ACC_VIRTUAL);
   // Create intern
   {
-  std::vector<const llvm::Type*> args;
-  args.push_back(JavaObject::llvmType);
-#ifdef MULTIPLE_VM
-  args.push_back(mvm::jit::ptrType);  
-#endif
-  const llvm::FunctionType* type = 
-    llvm::FunctionType::get(llvm::Type::Int8Ty, args, false);
-  isArray->llvmFunction =
-    llvm::Function::Create(type, llvm::GlobalValue::ExternalLinkage,
-                       "isArray",
-                       vm->module);
+    isArray->llvmFunction->setName("isArray");
+    isArray->llvmFunction->setLinkage(llvm::GlobalValue::ExternalLinkage);
   }
 
   ClasspathThread::initialise(vm);
@@ -278,34 +242,16 @@
                                          true, false);
   COMPILE_METHODS(object)
   
-  JavaMethod* getCallingClass = UPCALL_METHOD(vm, "gnu/classpath/VMStackWalker", "getCallingClass", "()Ljava/lang/Object;", ACC_STATIC);
+  JavaMethod* getCallingClass = UPCALL_METHOD(vm, "gnu/classpath/VMStackWalker", "getCallingClass", "()Ljava/lang/Class;", ACC_STATIC);
   {
-  std::vector<const llvm::Type*> args;
-#ifdef MULTIPLE_VM
-  args.push_back(mvm::jit::ptrType);  
-#endif
-  const llvm::FunctionType* type = 
-    llvm::FunctionType::get(JavaObject::llvmType, args, false);
-
-  getCallingClass->llvmFunction =
-    llvm::Function::Create(type, llvm::GlobalValue::ExternalLinkage,
-                       "getCallingClass",
-                       vm->module);
+    getCallingClass->llvmFunction->setName("getCallingClass");
+    getCallingClass->llvmFunction->setLinkage(llvm::GlobalValue::ExternalLinkage);
   }
   
-  JavaMethod* getCallingClassLoader = UPCALL_METHOD(vm, "gnu/classpath/VMStackWalker", "getCallingClassLoader", "()Ljava/lang/Object;", ACC_STATIC);
+  JavaMethod* getCallingClassLoader = UPCALL_METHOD(vm, "gnu/classpath/VMStackWalker", "getCallingClassLoader", "()Ljava/lang/ClassLoader;", ACC_STATIC);
   {
-  std::vector<const llvm::Type*> args;
-#ifdef MULTIPLE_VM
-  args.push_back(mvm::jit::ptrType);  
-#endif
-  const llvm::FunctionType* type = 
-    llvm::FunctionType::get(JavaObject::llvmType, args, false);
-
-  getCallingClassLoader->llvmFunction =
-    llvm::Function::Create(type, llvm::GlobalValue::ExternalLinkage,
-                       "getCallingClassLoader",
-                       vm->module);
+    getCallingClassLoader->llvmFunction->setName("getCallingClassLoader");
+    getCallingClassLoader->llvmFunction->setLinkage(llvm::GlobalValue::ExternalLinkage);
   }
 }
 





More information about the llvm-commits mailing list