[vmkit-commits] [vmkit] r72017 - in /vmkit/trunk/lib/JnJVM: Compiler/JavaAOTCompiler.cpp VMCore/JavaArray.h VMCore/JnjvmClassLoader.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon May 18 10:13:17 PDT 2009


Author: geoffray
Date: Mon May 18 12:13:16 2009
New Revision: 72017

URL: http://llvm.org/viewvc/llvm-project?rev=72017&view=rev
Log:
Change names for AOT class names, following JNI conventions.


Modified:
    vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp Mon May 18 12:13:16 2009
@@ -66,7 +66,7 @@
     
       GlobalVariable* varGV = 
         new GlobalVariable(Ty, false, GlobalValue::ExternalLinkage, 0,
-                           UTF8Buffer(classDef->name).toClassName()->cString(),
+                           UTF8Buffer(classDef->name).toCompileName()->cString(),
                            getLLVMModule());
     
       nativeClasses.insert(std::make_pair(classDef, varGV));
@@ -97,7 +97,7 @@
       GlobalVariable* varGV = 
         new GlobalVariable(Ty, false, GlobalValue::InternalLinkage,
                            Constant::getNullValue(Ty),
-                           UTF8Buffer(classDef->name).toClassName()->cString(),
+                           UTF8Buffer(classDef->name).toCompileName()->cString(),
                            getLLVMModule());
     
       arrayClasses.insert(std::make_pair(classDef->asArrayClass(), varGV));
@@ -279,7 +279,7 @@
     LLVMClassInfo* LCI = getClassInfo(classDef);
     const Type* Ty = LCI->getStaticType();
     Ty = Ty->getContainedType(0);
-    std::string name(UTF8Buffer(classDef->name).toClassName()->cString());
+    std::string name(UTF8Buffer(classDef->name).toCompileName()->cString());
     name += "_static";
     GlobalVariable* varGV = 
       new GlobalVariable(Ty, false, GlobalValue::ExternalLinkage,
@@ -319,7 +319,7 @@
       dyn_cast<ArrayType>(JnjvmModule::VTType->getContainedType(0));
     const PointerType* PTy = dyn_cast<PointerType>(ATy->getContainedType(0));
     ATy = ArrayType::get(PTy, size);
-    std::string name(UTF8Buffer(classDef->name).toClassName()->cString());
+    std::string name(UTF8Buffer(classDef->name).toCompileName()->cString());
     name += "_VT";
     // Do not set a virtual table as a constant, because the runtime may
     // modify it.

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h?rev=72017&r1=72016&r2=72017&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h Mon May 18 12:13:16 2009
@@ -183,10 +183,29 @@
 
   /// toClassName - Change '/' into '.' in the buffer.
   ///
-  UTF8Buffer* toClassName() {
+  UTF8Buffer* toCompileName() {
     uint32 len = strlen(buffer);
-    for (uint32 i = 0; i < len; ++i)
-      if (buffer[i] == '/') buffer[i] = '.';
+    char* newBuffer = new char[(len << 1) + 1];
+    uint32 j = 0;
+    for (uint32 i = 0; i < len; ++i) {
+      if (buffer[i] == '/') {
+        newBuffer[j++] = '_';
+      } else if (buffer[i] == '_') {
+        newBuffer[j++] = '_';
+        newBuffer[j++] = '1';
+      } else if (buffer[i] == ';') {
+        newBuffer[j++] = '_';
+        newBuffer[j++] = '2';
+      } else if (buffer[i] == '[') {
+        newBuffer[j++] = '_';
+        newBuffer[j++] = '3';
+      } else {
+        newBuffer[j++] = buffer[i];
+      }
+    }
+    newBuffer[j] = 0;
+    delete[] buffer;
+    buffer = newBuffer;
     return this;
   }
 

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Mon May 18 12:13:16 2009
@@ -82,12 +82,12 @@
    
   // Try to find if we have a pre-compiled rt.jar
   if (dlLoad) {
-    SuperArray = (Class*)dlsym(SELF_HANDLE, "java.lang.Object");
+    SuperArray = (Class*)dlsym(SELF_HANDLE, "java_lang_Object");
     if (!SuperArray) {
       nativeHandle = dlopen("libvmjc"DYLD_EXTENSION, RTLD_LAZY | RTLD_GLOBAL);
       if (nativeHandle) {
         // Found it!
-        SuperArray = (Class*)dlsym(nativeHandle, "java.lang.Object");
+        SuperArray = (Class*)dlsym(nativeHandle, "java_lang_Object");
       }
     }
     





More information about the vmkit-commits mailing list