[vmkit-commits] [vmkit] r137251 - in /vmkit/trunk: include/j3/JavaAOTCompiler.h lib/J3/Compiler/JavaAOTCompiler.cpp lib/J3/Compiler/JavaJIT.cpp lib/J3/Compiler/LLVMInfo.cpp tools/precompiler/trainer/Makefile

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed Aug 10 14:34:42 PDT 2011


Author: geoffray
Date: Wed Aug 10 16:34:42 2011
New Revision: 137251

URL: http://llvm.org/viewvc/llvm-project?rev=137251&view=rev
Log:
Set Java methods to NoUnwind and NoInline, so that LLVM does not try to be clever.


Modified:
    vmkit/trunk/include/j3/JavaAOTCompiler.h
    vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
    vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp
    vmkit/trunk/lib/J3/Compiler/LLVMInfo.cpp
    vmkit/trunk/tools/precompiler/trainer/Makefile

Modified: vmkit/trunk/include/j3/JavaAOTCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaAOTCompiler.h?rev=137251&r1=137250&r2=137251&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JavaAOTCompiler.h (original)
+++ vmkit/trunk/include/j3/JavaAOTCompiler.h Wed Aug 10 16:34:42 2011
@@ -190,8 +190,6 @@
   
   void CreateStaticInitializer();
   
-  void setNoInline(Class* cl);
-  
   void printStats();
   
   void compileFile(Jnjvm* vm, const char* name);

Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=137251&r1=137250&r2=137251&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Wed Aug 10 16:34:42 2011
@@ -1987,24 +1987,6 @@
   ReturnInst::Create(getLLVMContext(), currentBlock);
 }
 
-void JavaAOTCompiler::setNoInline(Class* cl) {
-  for (uint32 i = 0; i < cl->nbVirtualMethods; ++i) {
-    JavaMethod& meth = cl->virtualMethods[i];
-    if (!isAbstract(meth.access)) {
-      Function* func = getMethod(&meth);
-      func->addFnAttr(Attribute::NoInline);
-    }
-  }
-  
-  for (uint32 i = 0; i < cl->nbStaticMethods; ++i) {
-    JavaMethod& meth = cl->staticMethods[i];
-    if (!isAbstract(meth.access)) {
-      Function* func = getMethod(&meth);
-      func->addFnAttr(Attribute::NoInline);
-    }
-  }
-}
-
 void JavaAOTCompiler::makeVT(Class* cl) {
   JavaVirtualTable* VT = cl->virtualVT;
   
@@ -2296,25 +2278,6 @@
     M->getNativeClass(bootstrapLoader->upcalls->OfFloat);
     M->getNativeClass(bootstrapLoader->upcalls->OfLong);
     M->getNativeClass(bootstrapLoader->upcalls->OfDouble);
-
-    // Also do not allow inling of some functions.
-#define SET_INLINE(NAME) { \
-    const UTF8* name = bootstrapLoader->asciizConstructUTF8(NAME); \
-    Class* cl = (Class*)bootstrapLoader->lookupClass(name); \
-    if (cl) M->setNoInline(cl); }
-
-    SET_INLINE("java/util/concurrent/atomic/AtomicReferenceFieldUpdater")
-    SET_INLINE("java/util/concurrent/atomic/AtomicReferenceFieldUpdater"
-               "$AtomicReferenceFieldUpdaterImpl")
-    SET_INLINE("java/util/concurrent/atomic/AtomicIntegerFieldUpdater")
-    SET_INLINE("java/util/concurrent/atomic/AtomicIntegerFieldUpdater"
-               "$AtomicIntegerFieldUpdaterImpl")
-    SET_INLINE("java/util/concurrent/atomic/AtomicLongFieldUpdater")
-    SET_INLINE("java/util/concurrent/atomic/AtomicLongFieldUpdater"
-               "$CASUpdater")
-    SET_INLINE("java/util/concurrent/atomic/AtomicLongFieldUpdater"
-               "$LockedUpdater")
-#undef SET_INLINE
   }
 
   M->CreateStaticInitializer();
@@ -2404,7 +2367,8 @@
        e = loader->getClasses()->map.end(); i!= e; ++i) {
     AddInitializerToClass(getNativeClass(i->second), i->second);
     JavaVirtualTable* VT = i->second->virtualVT;
-    GlobalVariable* gv = dyn_cast<GlobalVariable>(getVirtualTable(VT)->getOperand(0));
+    GlobalVariable* gv =
+        dyn_cast<GlobalVariable>(getVirtualTable(VT)->getOperand(0));
     gv->setInitializer(CreateConstantFromVT(VT));
   }
 

Modified: vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp?rev=137251&r1=137250&r2=137251&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaJIT.cpp Wed Aug 10 16:34:42 2011
@@ -1145,6 +1145,7 @@
       const UTF8* name =
         compilingClass->ctpInfo->UTF8At(AR.AnnotationNameIndex);
       if (name->equals(TheCompiler->InlinePragma)) {
+        llvmFunction->removeFnAttr(Attribute::NoInline);
         llvmFunction->addFnAttr(Attribute::AlwaysInline);
       } else if (name->equals(TheCompiler->NoInlinePragma)) {
         llvmFunction->addFnAttr(Attribute::NoInline);

Modified: vmkit/trunk/lib/J3/Compiler/LLVMInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/LLVMInfo.cpp?rev=137251&r1=137250&r2=137251&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/LLVMInfo.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/LLVMInfo.cpp Wed Aug 10 16:34:42 2011
@@ -172,6 +172,8 @@
     }
     
     methodFunction->setGC("vmkit");
+    methodFunction->addFnAttr(Attribute::NoInline);
+    methodFunction->addFnAttr(Attribute::NoUnwind);
     
     Compiler->functions.insert(std::make_pair(methodFunction, methodDef));
     if (!Compiler->isStaticCompiling() && methodDef->code) {
@@ -394,6 +396,8 @@
   }
   
   res->setGC("vmkit");
+  res->addFnAttr(Attribute::NoInline);
+  res->addFnAttr(Attribute::NoUnwind);
 
   if (virt) {
     Compiler->virtualBufs[FTy] = res;
@@ -482,6 +486,8 @@
   }
   
   res->setGC("vmkit");
+  res->addFnAttr(Attribute::NoInline);
+  res->addFnAttr(Attribute::NoUnwind);
   
   if (virt) {
     Compiler->virtualAPs[FTy] = res;
@@ -598,7 +604,9 @@
   }
   
   stub->setGC("vmkit");
- 
+  stub->addFnAttr(Attribute::NoInline);
+  stub->addFnAttr(Attribute::NoUnwind);
+  
   if (virt) {
     Compiler->virtualStubs[FTy] = stub;
   } else if (special) {

Modified: vmkit/trunk/tools/precompiler/trainer/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/precompiler/trainer/Makefile?rev=137251&r1=137250&r2=137251&view=diff
==============================================================================
--- vmkit/trunk/tools/precompiler/trainer/Makefile (original)
+++ vmkit/trunk/tools/precompiler/trainer/Makefile Wed Aug 10 16:34:42 2011
@@ -31,7 +31,7 @@
 Precompiled.bc: HelloWorld.class $(LibDir)/StaticGCPass$(SHLIBEXT) $(LibDir)/StaticGCPrinter$(SHLIBEXT) generated.bc
 	$(Echo) "Building precompiled bootstrap code"
 	$(Verb) $(MKDIR) $(ObjDir)
-	$(Verb) $(LLC) -disable-branch-fold -disable-cfi -O0 -fast-isel=false -load=$(LibDir)/StaticGCPrinter$(SHLIBEXT) -disable-fp-elim generated.bc -o $(ObjDir)/Precompiled.s
+	$(Verb) $(LLC) -disable-branch-fold -disable-cfi -disable-debug-info-print -O0 -fast-isel=false -load=$(LibDir)/StaticGCPrinter$(SHLIBEXT) -disable-fp-elim generated.bc -o $(ObjDir)/Precompiled.s
 	$(Verb) $(CC) -c $(ObjDir)/Precompiled.s -o $(ObjDir)/Precompiled.o
 	$(Verb) $(Archive) $(LibDir)/libPrecompiled.a $(ObjDir)/Precompiled.o
 	$(Verb) $(Ranlib) $(LibDir)/libPrecompiled.a





More information about the vmkit-commits mailing list