[vmkit-commits] [vmkit] r199647 - Generate the llvm bytecode in a file when in aot mode.
Gael Thomas
gael.thomas at lip6.fr
Mon Jan 20 03:43:15 PST 2014
Author: gthomas
Date: Mon Jan 20 05:43:14 2014
New Revision: 199647
URL: http://llvm.org/viewvc/llvm-project?rev=199647&view=rev
Log:
Generate the llvm bytecode in a file when in aot mode.
Modified:
vmkit/branches/mcjit/include/j3/j3classloader.h
vmkit/branches/mcjit/include/j3/j3codegen.h
vmkit/branches/mcjit/include/j3/j3options.h
vmkit/branches/mcjit/lib/j3/vm/j3.cc
vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
vmkit/branches/mcjit/lib/j3/vm/j3codegenvar.cc
vmkit/branches/mcjit/lib/j3/vm/j3method.cc
vmkit/branches/mcjit/lib/j3/vm/j3options.cc
vmkit/branches/mcjit/lib/mmtk/Makefile
Modified: vmkit/branches/mcjit/include/j3/j3classloader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3classloader.h?rev=199647&r1=199646&r2=199647&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3classloader.h (original)
+++ vmkit/branches/mcjit/include/j3/j3classloader.h Mon Jan 20 05:43:14 2014
@@ -38,7 +38,7 @@ namespace j3 {
static J3InterfaceMethodLess j3InterfaceMethodLess;
- uint32_t _compileMode;
+ uint32_t _compilationMode;
J3ObjectHandle* _javaClassLoader;
J3GlobalReferences _globalReferences;
@@ -61,8 +61,8 @@ namespace j3 {
public:
J3ClassLoader(J3ObjectHandle* javaClassLoader, vmkit::BumpAllocator* allocator);
- uint32_t compileMode() { return _compileMode; }
- void setCompileMode(uint32_t mode) { _compileMode = mode; }
+ uint32_t compilationMode() { return _compilationMode; }
+ void setCompilationMode(uint32_t mode) { _compilationMode = mode; }
void aotSnapshot(llvm::Linker* linker);
Modified: vmkit/branches/mcjit/include/j3/j3codegen.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3codegen.h?rev=199647&r1=199646&r2=199647&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3codegen.h (original)
+++ vmkit/branches/mcjit/include/j3/j3codegen.h Mon Jan 20 05:43:14 2014
@@ -41,13 +41,15 @@ namespace j3 {
WithMethod = 1,
WithCaller = 2,
OnlyTranslate = 4,
- NotUseStub = 8
+ NotUseStub = 8,
+ NotNeedGC = 16
};
bool withMethod() { return mode & WithMethod; }
bool withCaller() { return mode & WithCaller; }
bool onlyTranslate() { return mode & OnlyTranslate; }
bool useStub() { return !(mode & NotUseStub); }
+ bool needGC() { return !(mode & NotNeedGC); }
private:
friend class J3CodeGenVar;
Modified: vmkit/branches/mcjit/include/j3/j3options.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3options.h?rev=199647&r1=199646&r2=199647&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3options.h (original)
+++ vmkit/branches/mcjit/include/j3/j3options.h Mon Jan 20 05:43:14 2014
@@ -52,6 +52,7 @@ namespace j3 {
uintptr_t stackSize;
bool isAOT;
+ const char* aotFile;
J3Options();
Modified: vmkit/branches/mcjit/lib/j3/vm/j3.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3.cc?rev=199647&r1=199646&r2=199647&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3.cc Mon Jan 20 05:43:14 2014
@@ -18,6 +18,9 @@
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Module.h"
#include "llvm/Linker.h"
+#include "llvm/Support/ToolOutputFile.h"
+#include "llvm/PassManager.h"
+#include "llvm/Bitcode/ReaderWriter.h"
#include "vmkit/safepoint.h"
#include "vmkit/system.h"
@@ -191,7 +194,7 @@ void J3::compileApplication() {
names()->get("()Ljava/lang/ClassLoader;"))->invokeStatic().valObject);
- loader->setCompileMode(J3CodeGen::OnlyTranslate | J3CodeGen::NotUseStub);
+ loader->setCompilationMode(J3CodeGen::OnlyTranslate | J3CodeGen::NotUseStub | J3CodeGen::NotNeedGC);
if(options()->mainClass)
J3::internalError("compiling a single class is not yet supported");
@@ -221,7 +224,16 @@ void J3::compileApplication() {
llvm::Linker* linker = new llvm::Linker(res);
loader->aotSnapshot(linker);
- res->dump();
+ std::string err;
+ llvm::tool_output_file out(options()->aotFile, err, llvm::sys::fs::F_Binary);
+ if(!err.empty())
+ fprintf(stderr, "%s\n", err.c_str());
+ else {
+ llvm::PassManager pm;
+ pm.add(llvm::createBitcodeWriterPass(out.os()));
+ pm.run(*res);
+ out.keep();
+ }
}
void J3::runApplication() {
Modified: vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc?rev=199647&r1=199646&r2=199647&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Mon Jan 20 05:43:14 2014
@@ -99,7 +99,9 @@ J3CodeGen::J3CodeGen(vmkit::BumpAllocato
/* only translate of requested and not already translated */
if(withMethod() && !llvmFunction) {
llvmFunction = buildFunction(method, 0);
- llvmFunction->setGC("vmkit");
+
+ if(needGC())
+ llvmFunction->setGC("vmkit");
if(J3Cst::isNative(access))
generateNative();
Modified: vmkit/branches/mcjit/lib/j3/vm/j3codegenvar.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3codegenvar.cc?rev=199647&r1=199646&r2=199647&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegenvar.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegenvar.cc Mon Jan 20 05:43:14 2014
@@ -24,8 +24,10 @@ void J3CodeGenVar::killUnused(llvm::Allo
llvm::dyn_cast<llvm::StoreInst>(*(cur->use_begin()))->eraseFromParent();
cur->eraseFromParent();
} else if(isObj) {
- codeGen->builder.SetInsertPoint(cur->getNextNode());
- codeGen->builder.CreateCall2(codeGen->gcRoot, codeGen->builder.CreateBitCast(refStack[i], i8ptrptr), meta);
+ if(codeGen->needGC()) {
+ codeGen->builder.SetInsertPoint(cur->getNextNode());
+ codeGen->builder.CreateCall2(codeGen->gcRoot, codeGen->builder.CreateBitCast(refStack[i], i8ptrptr), meta);
+ }
//codeGen->builder.CreateStore(codeGen->nullValue, cur);
//
}
Modified: vmkit/branches/mcjit/lib/j3/vm/j3method.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3method.cc?rev=199647&r1=199646&r2=199647&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3method.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3method.cc Mon Jan 20 05:43:14 2014
@@ -62,7 +62,7 @@ void J3Method::aotSnapshot(llvm::Linker*
void J3Method::ensureCompiled(uint32_t mode) {
if(((mode & J3CodeGen::WithMethod) && !fnPtr()) || ((mode & J3CodeGen::WithCaller) && !cxxCaller())) {
//fprintf(stderr, "materializing: %s::%s%s\n", cl()->name()->cStr(), name()->cStr(), signature()->name()->cStr());
- J3CodeGen::translate(this, mode);
+ J3CodeGen::translate(this, mode | cl()->loader()->compilationMode());
}
}
Modified: vmkit/branches/mcjit/lib/j3/vm/j3options.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3options.cc?rev=199647&r1=199646&r2=199647&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3options.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3options.cc Mon Jan 20 05:43:14 2014
@@ -74,9 +74,10 @@ void J3CmdLineParser::process() {
nyi("-no-jre-restrict-search");
else if(opteq("-?") || opteq("-help"))
help();
- else if(opteq("-Xaot"))
+ else if(opteq("-Xaot")) {
options->isAOT = 1;
- else if(opteq("-Xno-aot"))
+ options->aotFile = argv[++cur];
+ } else if(opteq("-Xno-aot"))
options->isAOT = 0;
else if(optbeg("-X"))
nyi("-X");
Modified: vmkit/branches/mcjit/lib/mmtk/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/mmtk/Makefile?rev=199647&r1=199646&r2=199647&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/mmtk/Makefile (original)
+++ vmkit/branches/mcjit/lib/mmtk/Makefile Mon Jan 20 05:43:14 2014
@@ -14,4 +14,4 @@ J3=$(BIN_DIR)/j3
$(BUILD_DIR)/mmtk-llvm.bc: $(BUILD_DIR)/.dir $(J3) $(SELF)
$(Echo) "Generating the llvm bytecode of mmtk"
- $(Verb) $(J3) -Xaot -cp $(MMTK_PATH)/vmmagic-stub/classes/:$(MMTK_PATH)/options/classes/ -jar $(MMTK_PATH)/mmtk/mmtk.jar
\ No newline at end of file
+ $(Verb) $(J3) -Xaot $@ -cp $(MMTK_PATH)/vmmagic-stub/classes/:$(MMTK_PATH)/options/classes/ -jar $(MMTK_PATH)/mmtk/mmtk.jar
\ No newline at end of file
More information about the vmkit-commits
mailing list