[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