[vmkit-commits] [vmkit] r113254 - in /vmkit/branches/precise: include/j3/ lib/J3/Classpath/ lib/J3/Compiler/ lib/J3/VMCore/ mmtk/mmtk-j3/
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue Sep 7 12:48:53 PDT 2010
Author: geoffray
Date: Tue Sep 7 14:48:53 2010
New Revision: 113254
URL: http://llvm.org/viewvc/llvm-project?rev=113254&view=rev
Log:
Create a stub method in between a Java native and a J3 implementation. This way we don't need to hack the MethodInfos.
Modified:
vmkit/branches/precise/include/j3/JavaAOTCompiler.h
vmkit/branches/precise/include/j3/JavaCompiler.h
vmkit/branches/precise/include/j3/JavaJITCompiler.h
vmkit/branches/precise/include/j3/JavaLLVMCompiler.h
vmkit/branches/precise/lib/J3/Classpath/ClasspathVMClassLoader.inc
vmkit/branches/precise/lib/J3/Classpath/ClasspathVMSystemProperties.inc
vmkit/branches/precise/lib/J3/Classpath/JavaUpcalls.cpp
vmkit/branches/precise/lib/J3/Compiler/JavaAOTCompiler.cpp
vmkit/branches/precise/lib/J3/Compiler/JavaJIT.cpp
vmkit/branches/precise/lib/J3/Compiler/JavaJITCompiler.cpp
vmkit/branches/precise/lib/J3/Compiler/LLVMInfo.cpp
vmkit/branches/precise/lib/J3/VMCore/JavaClass.cpp
vmkit/branches/precise/lib/J3/VMCore/JavaClass.h
vmkit/branches/precise/lib/J3/VMCore/JnjvmClassLoader.cpp
vmkit/branches/precise/mmtk/mmtk-j3/Assert.cpp
vmkit/branches/precise/mmtk/mmtk-j3/Lock.cpp
vmkit/branches/precise/mmtk/mmtk-j3/SynchronizedCounter.cpp
Modified: vmkit/branches/precise/include/j3/JavaAOTCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/include/j3/JavaAOTCompiler.h?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/include/j3/JavaAOTCompiler.h (original)
+++ vmkit/branches/precise/include/j3/JavaAOTCompiler.h Tue Sep 7 14:48:53 2010
@@ -67,7 +67,7 @@
virtual llvm::Constant* getConstantPool(JavaConstantPool* ctp);
virtual llvm::Constant* getNativeFunction(JavaMethod* meth, void* natPtr);
- virtual void setMethod(JavaMethod* meth, void* ptr, const char* name);
+ virtual void setMethod(llvm::Function* func, void* ptr, const char* name);
#ifdef SERVICE
Modified: vmkit/branches/precise/include/j3/JavaCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/include/j3/JavaCompiler.h?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/include/j3/JavaCompiler.h (original)
+++ vmkit/branches/precise/include/j3/JavaCompiler.h Tue Sep 7 14:48:53 2010
@@ -46,9 +46,6 @@
return 0;
}
- virtual void setMethod(JavaMethod* meth, void* ptr, const char* name) {
- }
-
virtual bool isStaticCompiling() {
return false;
}
Modified: vmkit/branches/precise/include/j3/JavaJITCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/include/j3/JavaJITCompiler.h?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/include/j3/JavaJITCompiler.h (original)
+++ vmkit/branches/precise/include/j3/JavaJITCompiler.h Tue Sep 7 14:48:53 2010
@@ -72,7 +72,7 @@
virtual llvm::Constant* getConstantPool(JavaConstantPool* ctp);
virtual llvm::Constant* getNativeFunction(JavaMethod* meth, void* natPtr);
- virtual void setMethod(JavaMethod* meth, void* ptr, const char* name);
+ virtual void setMethod(llvm::Function* func, void* ptr, const char* name);
#ifdef SERVICE
Modified: vmkit/branches/precise/include/j3/JavaLLVMCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/include/j3/JavaLLVMCompiler.h?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/include/j3/JavaLLVMCompiler.h (original)
+++ vmkit/branches/precise/include/j3/JavaLLVMCompiler.h Tue Sep 7 14:48:53 2010
@@ -195,7 +195,7 @@
virtual llvm::Constant* getConstantPool(JavaConstantPool* ctp) = 0;
virtual llvm::Constant* getNativeFunction(JavaMethod* meth, void* natPtr) = 0;
- virtual void setMethod(JavaMethod* meth, void* ptr, const char* name) = 0;
+ virtual void setMethod(llvm::Function* func, void* ptr, const char* name) = 0;
#ifdef SERVICE
virtual llvm::Value* getIsolate(Jnjvm* vm, llvm::Value* Where) = 0;
Modified: vmkit/branches/precise/lib/J3/Classpath/ClasspathVMClassLoader.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/Classpath/ClasspathVMClassLoader.inc?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/Classpath/ClasspathVMClassLoader.inc (original)
+++ vmkit/branches/precise/lib/J3/Classpath/ClasspathVMClassLoader.inc Tue Sep 7 14:48:53 2010
@@ -351,7 +351,7 @@
"org.xml.sax.helpers"
};
-extern "C" ArrayObject* nativeGetBootPackages() {
+extern "C" ArrayObject* Java_java_lang_VMClassLoader_getBootPackages__() {
ArrayObject* obj = 0;
llvm_gcroot(obj, 0);
Modified: vmkit/branches/precise/lib/J3/Classpath/ClasspathVMSystemProperties.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/Classpath/ClasspathVMSystemProperties.inc?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/Classpath/ClasspathVMSystemProperties.inc (original)
+++ vmkit/branches/precise/lib/J3/Classpath/ClasspathVMSystemProperties.inc Tue Sep 7 14:48:53 2010
@@ -136,7 +136,7 @@
END_NATIVE_EXCEPTION
}
-extern "C" void nativePropertiesPostInit(JavaObject* prop) {
+extern "C" void Java_gnu_classpath_VMSystemProperties_postInit__Ljava_util_Properties_2(JavaObject* prop) {
llvm_gcroot(prop, 0);
Modified: vmkit/branches/precise/lib/J3/Classpath/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/Classpath/JavaUpcalls.cpp?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/Classpath/JavaUpcalls.cpp (original)
+++ vmkit/branches/precise/lib/J3/Classpath/JavaUpcalls.cpp Tue Sep 7 14:48:53 2010
@@ -296,9 +296,8 @@
CreateJavaThread(vm, vm->getEnqueueThread(), "Reference", SystemGroup);
}
-extern "C" void nativeInitWeakReference(JavaObjectReference* reference,
- JavaObject* referent) {
-
+extern "C" void Java_java_lang_ref_WeakReference__0003Cinit_0003E__Ljava_lang_Object_2(
+ JavaObjectReference* reference, JavaObject* referent) {
llvm_gcroot(reference, 0);
llvm_gcroot(referent, 0);
@@ -311,9 +310,10 @@
}
-extern "C" void nativeInitWeakReferenceQ(JavaObjectReference* reference,
- JavaObject* referent,
- JavaObject* queue) {
+extern "C" void Java_java_lang_ref_WeakReference__0003Cinit_0003E__Ljava_lang_Object_2Ljava_lang_ref_ReferenceQueue_2(
+ JavaObjectReference* reference,
+ JavaObject* referent,
+ JavaObject* queue) {
llvm_gcroot(reference, 0);
llvm_gcroot(referent, 0);
llvm_gcroot(queue, 0);
@@ -327,8 +327,8 @@
}
-extern "C" void nativeInitSoftReference(JavaObjectReference* reference,
- JavaObject* referent) {
+extern "C" void Java_java_lang_ref_SoftReference__0003Cinit_0003E__Ljava_lang_Object_2(
+ JavaObjectReference* reference, JavaObject* referent) {
llvm_gcroot(reference, 0);
llvm_gcroot(referent, 0);
@@ -341,9 +341,10 @@
}
-extern "C" void nativeInitSoftReferenceQ(JavaObjectReference* reference,
- JavaObject* referent,
- JavaObject* queue) {
+extern "C" void Java_java_lang_ref_SoftReference__0003Cinit_0003E__Ljava_lang_Object_2Ljava_lang_ref_ReferenceQueue_2(
+ JavaObjectReference* reference,
+ JavaObject* referent,
+ JavaObject* queue) {
llvm_gcroot(reference, 0);
llvm_gcroot(referent, 0);
llvm_gcroot(queue, 0);
@@ -357,9 +358,10 @@
}
-extern "C" void nativeInitPhantomReferenceQ(JavaObjectReference* reference,
- JavaObject* referent,
- JavaObject* queue) {
+extern "C" void Java_java_lang_ref_PhantomReference__0003Cinit_0003E__Ljava_lang_Object_2Ljava_lang_ref_ReferenceQueue_2(
+ JavaObjectReference* reference,
+ JavaObject* referent,
+ JavaObject* queue) {
llvm_gcroot(reference, 0);
llvm_gcroot(referent, 0);
llvm_gcroot(queue, 0);
@@ -372,7 +374,8 @@
END_NATIVE_EXCEPTION
}
-extern "C" JavaString* nativeInternString(JavaString* obj) {
+extern "C" JavaString* Java_java_lang_VMString_intern__Ljava_lang_String_2(
+ JavaString* obj) {
const ArrayUInt16* array = 0;
JavaString* res = 0;
llvm_gcroot(obj, 0);
@@ -392,7 +395,7 @@
return res;
}
-extern "C" uint8 nativeIsArray(JavaObjectClass* klass) {
+extern "C" uint8 Java_java_lang_Class_isArray__(JavaObjectClass* klass) {
llvm_gcroot(klass, 0);
UserCommonClass* cl = 0;
@@ -405,7 +408,7 @@
return (uint8)cl->isArray();
}
-extern "C" JavaObject* nativeGetCallingClass() {
+extern "C" JavaObject* Java_gnu_classpath_VMStackWalker_getCallingClass__() {
JavaObject* res = 0;
llvm_gcroot(res, 0);
@@ -421,7 +424,7 @@
return res;
}
-extern "C" JavaObject* nativeGetCallingClassLoader() {
+extern "C" JavaObject* Java_gnu_classpath_VMStackWalker_getCallingClassLoader__() {
JavaObject* res = 0;
llvm_gcroot(res, 0);
@@ -437,7 +440,7 @@
return res;
}
-extern "C" JavaObject* nativeFirstNonNullClassLoader() {
+extern "C" JavaObject* Java_gnu_classpath_VMStackWalker_firstNonNullClassLoader__() {
JavaObject* res = 0;
llvm_gcroot(res, 0);
@@ -451,7 +454,7 @@
return res;
}
-extern "C" JavaObject* nativeGetCallerClass(uint32 index) {
+extern "C" JavaObject* Java_sun_reflect_Reflection_getCallerClass__I(uint32 index) {
JavaObject* res = 0;
llvm_gcroot(res, 0);
@@ -468,12 +471,13 @@
return res;
}
-extern "C" JavaObject* nativeGetAnnotation(JavaObject* obj) {
+extern "C" JavaObject* Java_java_lang_reflect_AccessibleObject_getAnnotation__Ljava_lang_Class_2(
+ JavaObject* obj) {
llvm_gcroot(obj, 0);
return 0;
}
-extern "C" JavaObject* nativeGetDeclaredAnnotations() {
+extern "C" JavaObject* Java_java_lang_reflect_AccessibleObject_getDeclaredAnnotations__() {
JavaObject* res = 0;
llvm_gcroot(res, 0);
@@ -488,8 +492,6 @@
return res;
}
-extern "C" void nativePropertiesPostInit(JavaObject* prop);
-
extern "C" void nativeJavaObjectClassTracer(
JavaObjectClass* obj, uintptr_t closure) {
JavaObjectClass::staticTracer(obj, closure);
@@ -520,10 +522,7 @@
JavaObjectVMThread::staticDestructor(obj);
}
-// Defined in Classpath/ClasspathVMClassLoader.cpp
-extern "C" ArrayObject* nativeGetBootPackages();
-
-extern "C" JavaString* nativeGetenv(JavaString* str) {
+extern "C" JavaString* Java_java_lang_VMSystem_getenv__Ljava_lang_String_2(JavaString* str) {
JavaString* ret = 0;
llvm_gcroot(str, 0);
llvm_gcroot(ret, 0);
@@ -748,12 +747,11 @@
JavaMethod* internString =
UPCALL_METHOD(loader, "java/lang/VMString", "intern",
"(Ljava/lang/String;)Ljava/lang/String;", ACC_STATIC);
- internString->setCompiledPtr((void*)(intptr_t)nativeInternString,
- "nativeInternString");
+ internString->setNative();
JavaMethod* isArray =
UPCALL_METHOD(loader, "java/lang/Class", "isArray", "()Z", ACC_VIRTUAL);
- isArray->setCompiledPtr((void*)(intptr_t)nativeIsArray, "nativeIsArray");
+ isArray->setNative();
UPCALL_REFLECT_CLASS_EXCEPTION(loader, InvocationTargetException);
@@ -944,61 +942,51 @@
JavaMethod* getEnv =
UPCALL_METHOD(loader, "java/lang/VMSystem", "getenv",
"(Ljava/lang/String;)Ljava/lang/String;", ACC_STATIC);
- getEnv->setCompiledPtr((void*)(intptr_t)nativeGetenv, "nativeGetenv");
+ getEnv->setNative();
JavaMethod* getCallingClass =
UPCALL_METHOD(loader, "gnu/classpath/VMStackWalker", "getCallingClass",
"()Ljava/lang/Class;", ACC_STATIC);
- getCallingClass->setCompiledPtr((void*)(intptr_t)nativeGetCallingClass,
- "nativeGetCallingClass");
+ getCallingClass->setNative();
JavaMethod* getCallingClassLoader =
UPCALL_METHOD(loader, "gnu/classpath/VMStackWalker", "getCallingClassLoader",
"()Ljava/lang/ClassLoader;", ACC_STATIC);
- getCallingClassLoader->setCompiledPtr((void*)(intptr_t)
- nativeGetCallingClassLoader,
- "nativeGetCallingClassLoader");
+ getCallingClassLoader->setNative();
JavaMethod* firstNonNullClassLoader =
UPCALL_METHOD(loader, "gnu/classpath/VMStackWalker", "firstNonNullClassLoader",
"()Ljava/lang/ClassLoader;", ACC_STATIC);
- firstNonNullClassLoader->setCompiledPtr((void*)(intptr_t)
- nativeFirstNonNullClassLoader,
- "nativeFirstNonNullClassLoader");
+ firstNonNullClassLoader->setNative();
JavaMethod* getCallerClass =
UPCALL_METHOD(loader, "sun/reflect/Reflection", "getCallerClass",
"(I)Ljava/lang/Class;", ACC_STATIC);
- getCallerClass->setCompiledPtr((void*)(intptr_t)nativeGetCallerClass,
- "nativeGetCallerClass");
+ getCallerClass->setNative();
JavaMethod* postProperties =
UPCALL_METHOD(loader, "gnu/classpath/VMSystemProperties", "postInit",
"(Ljava/util/Properties;)V", ACC_STATIC);
- postProperties->setCompiledPtr((void*)(intptr_t)nativePropertiesPostInit,
- "nativePropertiesPostInit");
+ postProperties->setNative();
// Also implement these twos, implementation in GNU Classpath 0.97.2 is buggy.
JavaMethod* getAnnotation =
UPCALL_METHOD(loader, "java/lang/reflect/AccessibleObject", "getAnnotation",
"(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;",
ACC_VIRTUAL);
- getAnnotation->setCompiledPtr((void*)(intptr_t)nativeGetAnnotation,
- "nativeGetAnnotation");
+ getAnnotation->setNative();
JavaMethod* getAnnotations =
UPCALL_METHOD(loader, "java/lang/reflect/AccessibleObject",
"getDeclaredAnnotations",
"()[Ljava/lang/annotation/Annotation;",
ACC_VIRTUAL);
- getAnnotations->setCompiledPtr((void*)(intptr_t)nativeGetDeclaredAnnotations,
- "nativeGetDeclaredAnnotations");
+ getAnnotations->setNative();
JavaMethod* getBootPackages =
UPCALL_METHOD(loader, "java/lang/VMClassLoader", "getBootPackages",
"()[Ljava/lang/String;", ACC_STATIC);
- getBootPackages->setCompiledPtr((void*)(intptr_t)nativeGetBootPackages,
- "nativeGetBootPackages");
+ getBootPackages->setNative();
//===----------------------------------------------------------------------===//
//
@@ -1044,39 +1032,31 @@
UPCALL_METHOD(loader, "java/lang/ref/WeakReference", "<init>",
"(Ljava/lang/Object;)V",
ACC_VIRTUAL);
- initWeakReference->setCompiledPtr((void*)(intptr_t)nativeInitWeakReference,
- "nativeInitWeakReference");
+ initWeakReference->setNative();
initWeakReference =
UPCALL_METHOD(loader, "java/lang/ref/WeakReference", "<init>",
"(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V",
ACC_VIRTUAL);
- initWeakReference->setCompiledPtr((void*)(intptr_t)nativeInitWeakReferenceQ,
- "nativeInitWeakReferenceQ");
+ initWeakReference->setNative();
JavaMethod* initSoftReference =
UPCALL_METHOD(loader, "java/lang/ref/SoftReference", "<init>",
"(Ljava/lang/Object;)V",
ACC_VIRTUAL);
- initSoftReference->setCompiledPtr((void*)(intptr_t)nativeInitSoftReference,
- "nativeInitSoftReference");
+ initSoftReference->setNative();
initSoftReference =
- UPCALL_METHOD(loader, "java/lang/ref/WeakReference", "<init>",
+ UPCALL_METHOD(loader, "java/lang/ref/SoftReference", "<init>",
"(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V",
ACC_VIRTUAL);
- initSoftReference->setCompiledPtr((void*)(intptr_t)nativeInitSoftReferenceQ,
- "nativeInitSoftReferenceQ");
+ initSoftReference->setNative();
JavaMethod* initPhantomReference =
UPCALL_METHOD(loader, "java/lang/ref/PhantomReference", "<init>",
"(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V",
ACC_VIRTUAL);
- initPhantomReference->setCompiledPtr(
- (void*)(intptr_t)nativeInitPhantomReferenceQ,
- "nativeInitPhantomReferenceQ");
-
-
+ initPhantomReference->setNative();
}
gc** Jnjvm::getReferentPtr(gc* _obj) {
Modified: vmkit/branches/precise/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/branches/precise/lib/J3/Compiler/JavaAOTCompiler.cpp Tue Sep 7 14:48:53 2010
@@ -1849,8 +1849,7 @@
void JavaAOTCompiler::makeIMT(Class* cl) {
}
-void JavaAOTCompiler::setMethod(JavaMethod* meth, void* ptr, const char* name) {
- Function* func = getMethodInfo(meth)->getMethod();
+void JavaAOTCompiler::setMethod(Function* func, void* ptr, const char* name) {
func->setName(name);
func->setLinkage(GlobalValue::ExternalLinkage);
}
Modified: vmkit/branches/precise/lib/J3/Compiler/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/Compiler/JavaJIT.cpp?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/Compiler/JavaJIT.cpp (original)
+++ vmkit/branches/precise/lib/J3/Compiler/JavaJIT.cpp Tue Sep 7 14:48:53 2010
@@ -295,8 +295,9 @@
sint32 mnlen = jniConsName->size;
sint32 mtlen = jniConsType->size;
- char* functionName = (char*)alloca(3 + JNI_NAME_PRE_LEN +
- ((mnlen + clen + mtlen) << 3));
+ mvm::ThreadAllocator allocator;
+ char* functionName = (char*)allocator.Allocate(
+ 3 + JNI_NAME_PRE_LEN + ((mnlen + clen + mtlen) << 3));
if (!natPtr)
natPtr = compilingClass->classLoader->nativeLookup(compilingMethod, j3,
@@ -305,10 +306,11 @@
if (!natPtr && !TheCompiler->isStaticCompiling()) {
currentBlock = createBasicBlock("start");
CallInst::Create(intrinsics->ThrowExceptionFromJITFunction, "", currentBlock);
- if (returnType != Type::getVoidTy(*llvmContext))
+ if (returnType != Type::getVoidTy(*llvmContext)) {
ReturnInst::Create(*llvmContext, Constant::getNullValue(returnType), currentBlock);
- else
+ } else {
ReturnInst::Create(*llvmContext, currentBlock);
+ }
PRINT_DEBUG(JNJVM_COMPILE, 1, COLOR_NORMAL, "end native compile %s.%s\n",
UTF8Buffer(compilingClass->name).cString(),
@@ -320,8 +322,25 @@
Function* func = llvmFunction;
if (j3) {
- compilingMethod->setCompiledPtr((void*)natPtr, functionName);
- llvmFunction->clearGC();
+ Function* callee = Function::Create(llvmFunction->getFunctionType(),
+ GlobalValue::ExternalLinkage,
+ functionName,
+ llvmFunction->getParent());
+ TheCompiler->setMethod(callee, (void*)natPtr, functionName);
+ currentBlock = createBasicBlock("start");
+ std::vector<Value*> args;
+ for (Function::arg_iterator i = func->arg_begin(), e = func->arg_end();
+ i != e;
+ i++) {
+ args.push_back(i);
+ }
+ Value* res = CallInst::Create(
+ callee, args.begin(), args.end(), "", currentBlock);
+ if (returnType != Type::getVoidTy(*llvmContext)) {
+ ReturnInst::Create(*llvmContext, res, currentBlock);
+ } else {
+ ReturnInst::Create(*llvmContext, currentBlock);
+ }
return llvmFunction;
}
Modified: vmkit/branches/precise/lib/J3/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/Compiler/JavaJITCompiler.cpp?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/branches/precise/lib/J3/Compiler/JavaJITCompiler.cpp Tue Sep 7 14:48:53 2010
@@ -386,12 +386,11 @@
}
}
-void JavaJITCompiler::setMethod(JavaMethod* meth, void* ptr, const char* name) {
- Function* func = getMethodInfo(meth)->getMethod();
+void JavaJITCompiler::setMethod(Function* func, void* ptr, const char* name) {
+ func->setLinkage(GlobalValue::ExternalLinkage);
func->setName(name);
assert(ptr && "No value given");
executionEngine->updateGlobalMapping(func, ptr);
- func->setLinkage(GlobalValue::ExternalLinkage);
}
void* JavaJITCompiler::materializeFunction(JavaMethod* meth) {
Modified: vmkit/branches/precise/lib/J3/Compiler/LLVMInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/Compiler/LLVMInfo.cpp?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/Compiler/LLVMInfo.cpp (original)
+++ vmkit/branches/precise/lib/J3/Compiler/LLVMInfo.cpp Tue Sep 7 14:48:53 2010
@@ -157,10 +157,8 @@
JCL->nativeLookup(methodDef, j3, buf);
}
- if (!j3) {
- methodDef->jniConsFromMethOverloaded(buf + 1);
- memcpy(buf, "JnJVM", 5);
- }
+ methodDef->jniConsFromMethOverloaded(buf + 1);
+ memcpy(buf, "JnJVM", 5);
methodFunction = Function::Create(getFunctionType(),
GlobalValue::ExternalWeakLinkage, buf,
@@ -177,7 +175,7 @@
Compiler->functions.insert(std::make_pair(methodFunction, methodDef));
if (Compiler != JCL->getCompiler() && methodDef->code) {
- Compiler->setMethod(methodDef, methodDef->code, methodFunction->getName().data());
+ Compiler->setMethod(methodFunction, methodDef->code, methodFunction->getName().data());
}
}
return methodFunction;
Modified: vmkit/branches/precise/lib/J3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/VMCore/JavaClass.cpp?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/VMCore/JavaClass.cpp (original)
+++ vmkit/branches/precise/lib/J3/VMCore/JavaClass.cpp Tue Sep 7 14:48:53 2010
@@ -298,20 +298,8 @@
fprintf(stderr, "\n");
}
-void JavaMethod::setCompiledPtr(void* ptr, const char* name) {
- classDef->acquire();
- if (code == 0) {
- code = ptr;
- Jnjvm* vm = JavaThread::get()->getJVM();
- mvm::MethodInfo* MI = vm->SharedStaticFunctions.CodeStartToMethodInfo(ptr);
- JavaStaticMethodInfo* JMI =
- new (classDef->classLoader->allocator, "JavaStaticMethodInfo")
- JavaStaticMethodInfo((mvm::CamlMethodInfo*)MI, code, this);
- vm->StaticFunctions.addMethodInfo(JMI, code);
- classDef->classLoader->getCompiler()->setMethod(this, ptr, name);
- }
+void JavaMethod::setNative() {
access |= ACC_NATIVE;
- classDef->release();
}
void JavaVirtualTable::setNativeTracer(uintptr_t ptr, const char* name) {
@@ -1216,19 +1204,35 @@
for (sint32 i =0; i < mnlen; ++i) {
cur = jniConsName->elements[i];
- if (cur == '/') ptr[0] = '_';
- else if (cur == '_') {
+ if (cur == '/') {
+ ptr[0] = '_';
+ ++ptr;
+ } else if (cur == '_') {
ptr[0] = '_';
ptr[1] = '1';
+ ptr += 2;
+ } else if (cur == '<') {
+ ptr[0] = '_';
+ ptr[1] = '0';
+ ptr[2] = '0';
+ ptr[3] = '0';
+ ptr[4] = '3';
+ ptr[5] = 'C';
+ ptr += 6;
+ } else if (cur == '>') {
+ ptr[0] = '_';
+ ptr[1] = '0';
+ ptr[2] = '0';
+ ptr[3] = '0';
+ ptr[4] = '3';
+ ptr[5] = 'E';
+ ptr += 6;
+ } else {
+ ptr[0] = (uint8)cur;
++ptr;
}
- else ptr[0] = (uint8)cur;
- ++ptr;
- }
-
+ }
ptr[0] = 0;
-
-
}
void JavaMethod::jniConsFromMethOverloaded(char* buf, const UTF8* jniConsClName,
Modified: vmkit/branches/precise/lib/J3/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/VMCore/JavaClass.h?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/VMCore/JavaClass.h (original)
+++ vmkit/branches/precise/lib/J3/VMCore/JavaClass.h Tue Sep 7 14:48:53 2010
@@ -949,9 +949,9 @@
///
void* compiledPtr();
- /// setCompiledPtr - Set the pointer function to the method.
+ /// setNative - Set the method as native.
///
- void setCompiledPtr(void*, const char*);
+ void setNative();
/// JavaMethod - Delete the method as well as the cache enveloppes and
/// attributes of the method.
Modified: vmkit/branches/precise/lib/J3/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/VMCore/JnjvmClassLoader.cpp?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/branches/precise/lib/J3/VMCore/JnjvmClassLoader.cpp Tue Sep 7 14:48:53 2010
@@ -1062,7 +1062,6 @@
}
void JnjvmClassLoader::insertAllMethodsInVM(Jnjvm* vm) {
- JavaCompiler* M = getCompiler();
for (ClassMap::iterator i = classes->map.begin(), e = classes->map.end();
i != e; ++i) {
CommonClass* cl = i->second;
@@ -1075,7 +1074,6 @@
JavaStaticMethodInfo* MI = new (allocator, "JavaStaticMethodInfo")
JavaStaticMethodInfo(0, meth.code, &meth);
vm->StaticFunctions.addMethodInfo(MI, meth.code);
- M->setMethod(&meth, meth.code, "");
}
}
@@ -1085,7 +1083,6 @@
JavaStaticMethodInfo* MI = new (allocator, "JavaStaticMethodInfo")
JavaStaticMethodInfo(0, meth.code, &meth);
vm->StaticFunctions.addMethodInfo(MI, meth.code);
- M->setMethod(&meth, meth.code, "");
}
}
}
Modified: vmkit/branches/precise/mmtk/mmtk-j3/Assert.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/mmtk/mmtk-j3/Assert.cpp?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/mmtk/mmtk-j3/Assert.cpp (original)
+++ vmkit/branches/precise/mmtk/mmtk-j3/Assert.cpp Tue Sep 7 14:48:53 2010
@@ -15,4 +15,4 @@
using namespace j3;
-extern "C" void Java_org_j3_mmtk_Assert_dumpStack__ () { UNIMPLEMENTED(); }
+extern "C" void Java_org_j3_mmtk_Assert_dumpStack__ (JavaObject* self) { UNIMPLEMENTED(); }
Modified: vmkit/branches/precise/mmtk/mmtk-j3/Lock.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/mmtk/mmtk-j3/Lock.cpp?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/mmtk/mmtk-j3/Lock.cpp (original)
+++ vmkit/branches/precise/mmtk/mmtk-j3/Lock.cpp Tue Sep 7 14:48:53 2010
@@ -27,7 +27,7 @@
extern "C" void Java_org_j3_mmtk_Lock_acquire__(Lock* l) {
l->spin.acquire();
}
-extern "C" void Java_org_j3_mmtk_Lock_check__I () { UNIMPLEMENTED(); }
+extern "C" void Java_org_j3_mmtk_Lock_check__I (Lock* l, int i) { UNIMPLEMENTED(); }
extern "C" void Java_org_j3_mmtk_Lock_release__(Lock* l) {
l->spin.release();
Modified: vmkit/branches/precise/mmtk/mmtk-j3/SynchronizedCounter.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/mmtk/mmtk-j3/SynchronizedCounter.cpp?rev=113254&r1=113253&r2=113254&view=diff
==============================================================================
--- vmkit/branches/precise/mmtk/mmtk-j3/SynchronizedCounter.cpp (original)
+++ vmkit/branches/precise/mmtk/mmtk-j3/SynchronizedCounter.cpp Tue Sep 7 14:48:53 2010
@@ -15,6 +15,6 @@
using namespace j3;
-extern "C" void Java_org_j3_mmtk_SynchronizedCounter_reset__ () { UNIMPLEMENTED(); }
-extern "C" void Java_org_j3_mmtk_SynchronizedCounter_increment__ () { UNIMPLEMENTED(); }
+extern "C" void Java_org_j3_mmtk_SynchronizedCounter_reset__ (JavaObject* self) { UNIMPLEMENTED(); }
+extern "C" void Java_org_j3_mmtk_SynchronizedCounter_increment__ (JavaObject* self) { UNIMPLEMENTED(); }
More information about the vmkit-commits
mailing list