[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