[vmkit-commits] [vmkit] r68199 - in /vmkit/trunk/lib/JnJVM: Compiler/JITInfo.cpp VMCore/JavaTypes.cpp VMCore/JavaTypes.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed Apr 1 05:23:37 PDT 2009


Author: geoffray
Date: Wed Apr  1 07:23:28 2009
New Revision: 68199

URL: http://llvm.org/viewvc/llvm-project?rev=68199&view=rev
Log:
Change naming of signatures in AOT .ll files.


Modified:
    vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JITInfo.cpp Wed Apr  1 07:23:28 2009
@@ -335,19 +335,22 @@
 
   JavaLLVMCompiler* Mod = 
     (JavaLLVMCompiler*)signature->initialLoader->getCompiler();
-  const char* name = 0;
+  Function* res = 0;
   if (Mod->isStaticCompiling()) {
-    name = virt ? signature->printString("virtual_buf") :
-                  signature->printString("static_buf");
+    const char* type = virt ? "virtual_buf" : "static_buf";
+    char* buf = (char*)alloca((signature->keyName->size << 1) + 1 + 11);
+    signature->nativeName(buf, type);
+    res = Function::Create(virt ? getVirtualBufType() : getStaticBufType(),
+                           GlobalValue::InternalLinkage, buf,
+                           Mod->getLLVMModule());
+  
+
   } else {
-    name = "";
+    res = Function::Create(virt ? getVirtualBufType() : getStaticBufType(),
+                           GlobalValue::InternalLinkage, "",
+                           Mod->getLLVMModule());
   }
 
-  Function* res = Function::Create(virt ? getVirtualBufType() : 
-                                          getStaticBufType(),
-                                   GlobalValue::InternalLinkage, name,
-                                   Mod->getLLVMModule());
-  
   BasicBlock* currentBlock = BasicBlock::Create("enter", res);
   Function::arg_iterator i = res->arg_begin();
   Value *obj, *ptr, *func;

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp Wed Apr  1 07:23:28 2009
@@ -130,3 +130,39 @@
   }
   return _virtualCallAP;
 }
+
+
+void Signdef::nativeName(char* ptr, const char* ext) const {
+  sint32 i = 0;
+  while (i < keyName->size) {
+    char c = keyName->elements[i++];
+    if (c == I_PARG) {
+      ptr[0] = '_';
+      ptr[1] = '_';
+      ptr += 2;
+    } else if (c == '/') {
+      ptr[0] = '_';
+      ++ptr;
+    } else if (c == '_') {
+      ptr[0] = '_';
+      ptr[1] = '1';
+      ptr += 2;
+    } else if (c == I_END_REF) {
+      ptr[0] = '_';
+      ptr[1] = '2';
+      ptr += 2;
+    } else if (c == I_TAB) {
+      ptr[0] = '_';
+      ptr[1] = '3';
+      ptr += 2;
+    } else if (c == I_PARD) {
+      break;
+    } else {
+      ptr[0] = c;
+      ++ptr;
+    }
+  }
+
+  assert(ext && "I need an extension");
+  memcpy(ptr, ext, strlen(ext) + 1);
+}

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h Wed Apr  1 07:23:28 2009
@@ -284,6 +284,10 @@
   /// printString - Print the signature with the following extension.
   ///
   const char* printString(const char* ext = "") const;
+  
+  /// nativeName - Get a native name for callbacks emitted AOT.
+  ///
+  void nativeName(char* buf, const char* ext) const;
 
   /// printWithSign - Print the signature of a method with the method's class
   /// and name.





More information about the vmkit-commits mailing list