[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