[vmkit-commits] [vmkit] r134141 - in /vmkit/trunk: ./ include/mvm/ lib/J3/Classpath/ lib/J3/Compiler/ lib/J3/VMCore/ lib/Mvm/ lib/Mvm/Allocator/ lib/Mvm/CommonThread/ lib/Mvm/Compiler/ lib/Mvm/MMTk/ lib/Mvm/Runtime/ mmtk/inline/ tools/ tools/j3/ tools/vmjc/
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Thu Jun 30 04:32:15 PDT 2011
Author: geoffray
Date: Thu Jun 30 06:32:15 2011
New Revision: 134141
URL: http://llvm.org/viewvc/llvm-project?rev=134141&view=rev
Log:
Major BUILD revamp and cleanup. vmkit can now only be compiled with an llvm-based compiler (clang or llvm-gcc).
Modified:
vmkit/trunk/Makefile
vmkit/trunk/Makefile.rules
vmkit/trunk/include/mvm/JIT.h
vmkit/trunk/include/mvm/MethodInfo.h
vmkit/trunk/include/mvm/VirtualMachine.h
vmkit/trunk/lib/J3/Classpath/Makefile
vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp
vmkit/trunk/lib/J3/Compiler/Makefile
vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
vmkit/trunk/lib/J3/VMCore/JavaClass.h
vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
vmkit/trunk/lib/J3/VMCore/Jnjvm.h
vmkit/trunk/lib/J3/VMCore/LockedMap.cpp
vmkit/trunk/lib/J3/VMCore/LockedMap.h
vmkit/trunk/lib/J3/VMCore/Makefile
vmkit/trunk/lib/Mvm/Allocator/Makefile
vmkit/trunk/lib/Mvm/CommonThread/Makefile
vmkit/trunk/lib/Mvm/Compiler/JIT.cpp
vmkit/trunk/lib/Mvm/Compiler/Makefile
vmkit/trunk/lib/Mvm/MMTk/Makefile
vmkit/trunk/lib/Mvm/Makefile
vmkit/trunk/lib/Mvm/Runtime/Makefile
vmkit/trunk/lib/Mvm/Runtime/MethodInfo.cpp
vmkit/trunk/mmtk/inline/Makefile
vmkit/trunk/tools/Makefile
vmkit/trunk/tools/j3/Main.cpp
vmkit/trunk/tools/j3/Makefile
vmkit/trunk/tools/vmjc/Makefile
vmkit/trunk/tools/vmjc/vmjc.cpp
Modified: vmkit/trunk/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/Makefile (original)
+++ vmkit/trunk/Makefile Thu Jun 30 06:32:15 2011
@@ -13,13 +13,7 @@
# Top-Level vmkit Build Stages:
#
-DIRS := lib tools/vmjc
-
-ifeq ($(GC_MMTK), 1)
- DIRS += mmtk
-endif
-
-DIRS += tools
+DIRS := lib/Mvm/StaticGCPass lib tools/vmjc mmtk tools
EXTRA_DIST=include
Modified: vmkit/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/Makefile.rules?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/Makefile.rules (original)
+++ vmkit/trunk/Makefile.rules Thu Jun 30 06:32:15 2011
@@ -1,52 +1,28 @@
-LTO_OPTS = -std-compile-opts
+VMJC := $(ToolDir)/vmjc$(EXEEXT)
-ifdef VMKIT_RUNTIME
+###############################################################################
+# VMKIT_RUNTIME: Provide rules to build a .cpp file with LLVM instructions
+# generating code matching the .ll files.
+###############################################################################
+ifdef VMKIT_RUNTIME
.PRECIOUS: LLVMRuntime.inc
-# All of these files depend on tblgen and the .td files.
LLVMRuntime.inc : $(LLVMAS) $(LLC) $(VMKIT_RUNTIME)
-
-LLVMRuntime.gen.ll : $(VMKIT_RUNTIME)
- $(Verb) cat $(VMKIT_RUNTIME) > LLVMRuntime.gen.ll
-
-LLVMRuntime.inc : LLVMRuntime.gen.ll
$(Echo) "Building LLVM runtime with $(VMKIT_RUNTIME)"
- $(Verb) $(LLVMAS) -f $(<F) -o - | $(LLC) -march=cpp -cppgen=contents -o $@
-
-
-clean-local::
- $(Verb) $(RM) -f LLVMRuntime.inc LLVMRuntime.gen.ll LLVMRuntime.bc
+ $(Verb) cat $(VMKIT_RUNTIME) | $(LLVMAS) -o - | $(LLC) -march=cpp -cppgen=contents -o $@
-endif
-
-ifdef VMKIT_ASSEMBLY
-
-.PRECIOUS: LLVMAssembly.s
-
-LLVMAssembly.o : $(LLVMAS) $(LLC) $(VMKIT_ASSEMBLY)
-
-LLVMAssembly.gen.ll : $(VMKIT_ASSEMBLY)
- $(Verb) cat $(VMKIT_ASSEMBLY) > LLVMAssembly.gen.ll
-
-LLVMAssembly.s : LLVMAssembly.gen.ll
- $(Echo) "Building LLVM assembly with $(VMKIT_ASSEMBLY)"
- $(Verb) $(LLVMAS) -f $(<F) -o - | $(LLC) -o $@
-
-$(ObjDir)/%.lo $(ObjDir)/%.o: %.s $(ObjDir)/.dir $(BUILT_SOURCES)
- $(Echo) "Compiling $*.s for $(BuildMode) build " $(PIC_FLAG)
- $(Verb) $(GAS) $< -o $(ObjDir)/$*.o
+all-local:: LLVMRuntime.inc
clean-local::
- $(Verb) $(RM) -f LLVMAssembly.s LLVMAssembly.bc LLVMAssembly.gen.ll
-
-endif
+ $(Verb) $(RM) -f LLVMRuntime.inc
-ifndef VMJC
-VMJC := $(ToolDir)/vmjc$(EXEEXT)
endif
+###############################################################################
+# VMJC_ASSEMBLY: Provide rules to build glibj.zip.s.
+###############################################################################
ifdef VMJC_ASSEMBLY
@@ -54,7 +30,6 @@
glibj.zip.s : $(LOPT) $(LLC) $(VMJC)
-
glibj.zip.bc :
$(Echo) "Compiling glibj.zip to llvm"
$(Verb) if test -d $(GLIBJ); then \
@@ -79,74 +54,96 @@
$(Verb) $(RM) -f glibj.zip.s glibj.zip.bc glibj-optimized.zip.bc
endif
+###############################################################################
+# RUN_ANT: Provide rules to build MMTk into a .o file and inlining facilities.
+###############################################################################
+ifdef RUN_ANT
-ifdef VMKIT_BUILD_ARCHIVE
+MMTkLib = $(LibDir)/libFinalMMTk.a
-LibName.A := $(LibDir)/lib$(VMKIT_LIBRARYNAME).a
+ifeq ($(shell [ ! -e $(MMTkLib) ] && echo "1"), 1)
+ COMPILE_MMTK = 1
+endif
-all-local:: $(LibName.A)
+ifeq ($(COMPILE_MMTK), 1)
+ ADDITIONAL_ARGS := -load-bc=$(LibDir)/MMTKRuntime.bc
-$(LibName.A): $(ProjLibsPaths) $(LibDir)/.dir
- $(Echo) Building $(BuildMode) Archive Library $(notdir $@)
- -$(Verb) $(RM) -f $@
- $(Verb) $(Archive) $@ $(ProjLibsPaths)
- $(Verb) $(Ranlib) $@
+ all::
+ $(Verb) $(ANT) -buildfile $(PROJ_OBJ_ROOT)/mmtk/java/build.xml
+ $(Echo) Building $(BuildMode) $(JARNAME).jar $(notdir $@)
+ $(Verb) $(LOPT) -load=$(LibDir)/JITGCPass$(SHLIBEXT) -std-compile-opts -JITGCPass -f $(LibDir)/MMTKAlloc.bc -o $(LibDir)/MMTKAlloc.bc
+ $(Verb) $(VMJC) -std-compile-opts $(ADDITIONAL_ARGS) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -LowerMagic $(PROJ_OBJ_ROOT)/mmtk/java/$(JARNAME).jar -disable-exceptions -disable-cooperativegc -with-clinit=org/mmtk/vm/VM,org/mmtk/utility/*,org/mmtk/policy/*,org/j3/config/* -Dmmtk.hostjvm=org.j3.mmtk.Factory -o $(JARNAME).bc -Dmmtk.properties=$(PROJ_SRC_ROOT)/mmtk/java/vmkit.properties -disable-stubs -assume-compiled -llvm-lazy
+ $(Verb) $(LOPT) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -std-compile-opts -LowerJavaRT -f $(JARNAME).bc -o $(JARNAME)-optimized.bc
+ $(Verb) $(LLVMLD) -r -o $(LibDir)/FinalMMTk.bc $(LibDir)/MMTKAlloc.bc $(JARNAME)-optimized.bc $(LibDir)/MMTKRuntime.bc
+ $(Verb) $(LOPT) $(LibDir)/FinalMMTk.bc -load=$(LibDir)/StaticGCPass$(SHLIBEXT) -std-compile-opts -StaticGCPass -o $(LibDir)/FinalMMTk.bc
+ $(Verb) $(MKDIR) $(ObjDir)
+ $(Verb) $(LLC) -disable-fp-elim $(LibDir)/FinalMMTk.bc -o $(ObjDir)/FinalMMTk.s
+ $(Verb) $(Compile.C) $(ObjDir)/FinalMMTk.s -o $(ObjDir)/FinalMMTk.o
+ $(Verb) $(Archive) $(LibDir)/libFinalMMTk.a $(ObjDir)/FinalMMTk.o
+ $(Verb) $(Ranlib) $(LibDir)/libFinalMMTk.a
+ $(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=gcmalloc $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkMallocInline.inc
+ $(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=fieldWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkFieldWriteInline.inc
+ $(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=arrayWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkArrayWriteInline.inc
+ $(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=nonHeapWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkNonHeapWriteInline.inc
+endif
clean-local::
-ifneq ($(strip $(LibName.A)),)
- -$(Verb) $(RM) -f $(LibName.A)
+ $(Verb) $(RM) -rf classes $(JARNAME).jar $(JARNAME).bc $(JARNAME)-optimized.bc $(ObjDir)
endif
-endif
+###############################################################################
+# MODULE_WITH_GC: Provide rules for building .cpp files into an archive with
+# GC symbol information.
+###############################################################################
+ifdef MODULE_WITH_GC
+ObjectsBCWithGC := $(BaseNameSources:%=$(ObjDir)/%_gc.bc)
+ObjectsSWithGC := $(BaseNameSources:%=$(ObjDir)/%_gc.s)
+ObjectsWithGC := $(BaseNameSources:%=$(ObjDir)/%_gc.o)
+AModule := $(LibDir)/lib$(MODULE_WITH_GC).a
-ifdef MODULESNAME
-ifdef USEDMODULES
+$(ObjectsBCWithGC): $(ObjDir)/%_gc.bc: $(ObjDir)/%.ll $(LOPT)
+ $(Echo) "Compiling $*.ll to $*.bc for $(BuildMode) build (bytecode)"
+ $(Verb) $(LOPT) $< -load=$(LibDir)/StaticGCPass$(SHLIBEXT) -std-compile-opts -StaticGCPass -o $@
-ProjLibsPaths := $(addprefix $(LibDir)/,$(USEDMODULES))
+$(ObjectsSWithGC): $(ObjDir)/%_gc.s: $(ObjDir)/%_gc.bc $(LLC)
+ $(Echo) "Compiling $*.bc to $*.s for $(BuildMode) build"
+ $(Verb) $(LLC) -disable-fp-elim $< -o $@
-$(MODULESNAME).bc : $(ProjLibsPaths)
- $(Echo) Building $(BuildMode) Bytecode Module $(notdir $@)
- $(Verb) $(LLVMLD) -link-as-library -o $@ $(ProjLibsPaths)
+$(ObjectsWithGC): $(ObjDir)/%_gc.o: $(ObjDir)/%_gc.s $(ObjDir)/.dir
+ $(Echo) "Compiling $*.s for $(BuildMode) build" $(PIC_FLAG)
+ $(Verb) $(Compile.C) $< -o $@
-$(MODULESNAME).s : $(MODULESNAME).bc
- $(Echo) Building $(BuildMode) Assembly file $(notdir $@)
- $(Verb) $(LOPT) -load=$(LibDir)/StaticGCPass$(SHLIBEXT) -std-compile-opts -StaticGCPass -f $(MODULESNAME).bc -o vmkitoptimized.bc
- $(Verb) $(LLC) -disable-fp-elim vmkitoptimized.bc -o $(MODULESNAME).s
+$(AModule): $(ObjectsWithGC) $(LibDir)/.dir
+ $(Echo) Building $(BuildMode) Archive Library $(notdir $@)
+ -$(Verb) $(RM) -f $@
+ $(Verb) $(Archive) $@ $(ObjectsWithGC)
+ $(Verb) $(Ranlib) $@
-$(ObjDir)/%.o: %.s $(ObjDir)/.dir $(BUILT_SOURCES)
- $(Echo) "Compiling $*.s for $(BuildMode) build" $(PIC_FLAG)
- $(Verb) $(Compile.C) $< -o $(ObjDir)/$*.o
+all-local:: $(AModule)
clean-local::
- $(Verb) $(RM) -f vmkitoptimized.bc $(MODULESNAME).bc $(MODULESNAME).s
+ -$(Verb) $(RM) -f $(AModule) $(ObjectsBCWithGC) $(ObjectsSWithGC) $(ObjectsWithGC)
endif
-endif
-ifdef RUN_ANT
-ifdef ANT
+###############################################################################
+# BUILD_FRAMETABLE: Generate files for easy access of frametables at runtime.
+###############################################################################
-ifneq ($(DISABLE_MMTK_COMPILE), 1)
- ADDITIONAL_ARGS := -load-bc=$(LibDir)/MMTKRuntime.bc
+ifdef BUILD_FRAMETABLE
- all::
- $(Verb) $(ANT) -buildfile $(PROJ_OBJ_ROOT)/mmtk/java/build.xml
- $(Echo) Building $(BuildMode) $(JARNAME).jar $(notdir $@)
- $(Verb) $(LOPT) -load=$(LibDir)/JITGCPass$(SHLIBEXT) -std-compile-opts -JITGCPass -f $(LibDir)/MMTKAlloc.bc -o $(LibDir)/MMTKAlloc.bc
- $(Verb) $(VMJC) -std-compile-opts $(ADDITIONAL_ARGS) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -LowerMagic $(PROJ_OBJ_ROOT)/mmtk/java/$(JARNAME).jar -disable-exceptions -disable-cooperativegc -with-clinit=org/mmtk/vm/VM,org/mmtk/utility/*,org/mmtk/policy/*,org/j3/config/* -Dmmtk.hostjvm=org.j3.mmtk.Factory -o $(JARNAME).bc -Dmmtk.properties=$(PROJ_SRC_ROOT)/mmtk/java/vmkit.properties -disable-stubs -assume-compiled -llvm-lazy
- $(Verb) $(LOPT) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -std-compile-opts -LowerJavaRT -f $(JARNAME).bc -o $(JARNAME)-optimized.bc
- $(Verb) $(LLVMLD) -r -o $(LibDir)/FinalMMTk.bc $(LibDir)/MMTKAlloc.bc $(JARNAME)-optimized.bc $(LibDir)/MMTKRuntime.bc
- $(Verb) $(LOPT) -std-compile-opts $(LibDir)/FinalMMTk.bc -o $(LibDir)/FinalMMTk.bc
- $(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=gcmalloc $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkMallocInline.inc
- $(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=fieldWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkFieldWriteInline.inc
- $(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=arrayWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkArrayWriteInline.inc
- $(Verb) $(LLC) -march=cpp -cppgen=function -cppfor=nonHeapWriteBarrier $(LibDir)/FinalMMTk.bc -o $(PROJ_SRC_ROOT)/mmtk/inline/MMTkNonHeapWriteInline.inc
-endif
+FrametablesExterns.inc: $(ProjLibsPaths)
+ $(Verb) nm $(ProjLibsPaths) | grep __frametable | sed 's/\([a-f0-9]*\)\s\([a-zA-Z]*\)\s\([a-zA-Z0-9_]*\)/extern "C" CamlFrames \3;/' > $@
+
+FrametablesSymbols.inc: $(ProjLibsPaths)
+ $(Verb) nm $(ProjLibsPaths) | grep __frametable | sed 's/\([a-f0-9]*\)\s\([a-zA-Z]*\)\s\([a-zA-Z0-9_]*\)/\&\3,/' > $@
+
+all-local:: FrametablesExterns.inc FrametablesSymbols.inc
-endif
clean-local::
- $(Verb) $(RM) -rf classes $(JARNAME).jar $(JARNAME).bc $(JARNAME)-optimized.bc
+ -$(Verb) $(RM) -f FrametablesExterns.inc FrametablesSymbols.inc
+
endif
Modified: vmkit/trunk/include/mvm/JIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/JIT.h?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/JIT.h (original)
+++ vmkit/trunk/include/mvm/JIT.h Thu Jun 30 06:32:15 2011
@@ -194,7 +194,6 @@
static void initialise(llvm::CodeGenOpt::Level = llvm::CodeGenOpt::Default,
llvm::Module* TheModule = 0,
llvm::TargetMachine* TheTarget = 0);
- static void loadBytecodeFile(const std::string& str);
static int disassemble(unsigned int* addr);
Modified: vmkit/trunk/include/mvm/MethodInfo.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/MethodInfo.h?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/MethodInfo.h (original)
+++ vmkit/trunk/include/mvm/MethodInfo.h Thu Jun 30 06:32:15 2011
@@ -2,7 +2,7 @@
//
// The VMKit project
//
-// This file is distributed under the University of Pierre et Marie Curie
+// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
@@ -41,6 +41,12 @@
int16_t LiveOffsets[1];
};
+class CamlFrames {
+public:
+ uint16_t NumDescriptors;
+ CamlFrame* frames() const;
+};
+
class CamlMethodInfo : public MethodInfo {
public:
CamlFrame* CF;
Modified: vmkit/trunk/include/mvm/VirtualMachine.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/VirtualMachine.h?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/VirtualMachine.h (original)
+++ vmkit/trunk/include/mvm/VirtualMachine.h Thu Jun 30 06:32:15 2011
@@ -20,6 +20,7 @@
namespace mvm {
+class CamlFrames;
class MethodInfo;
class FunctionMap {
@@ -45,7 +46,7 @@
/// removeMethodInfos - Remove all MethodInfo owned by the given owner.
void removeMethodInfos(void* owner);
- FunctionMap();
+ FunctionMap(CamlFrames** frames);
};
/// VirtualMachine - This class is the root of virtual machine classes. It
@@ -53,8 +54,8 @@
///
class VirtualMachine : public mvm::PermanentObject {
protected:
- VirtualMachine(mvm::BumpPtrAllocator &Alloc) :
- allocator(Alloc) {
+ VirtualMachine(mvm::BumpPtrAllocator &Alloc, mvm::CamlFrames** frames) :
+ allocator(Alloc), FunctionsCache(frames) {
mainThread = NULL;
numberOfThreads = 0;
doExit = false;
Modified: vmkit/trunk/lib/J3/Classpath/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/Makefile (original)
+++ vmkit/trunk/lib/J3/Classpath/Makefile Thu Jun 30 06:32:15 2011
@@ -16,16 +16,8 @@
include $(LEVEL)/Makefile.config
-ifeq ($(WITH_LLVM_GCC), 1)
- MODULE_NAME = Classpath
-else
- LIBRARYNAME = Classpath
-endif
+MODULE_WITH_GC = Classpath
include $(LEVEL)/Makefile.common
CXX.Flags += -I$(PROJ_SRC_DIR)/../VMCore $(CLASSPATH_FLAGS)
-
-ifeq ($(ISOLATE_BUILD), 1)
- CXX.Flags += -I$(PROJ_SRC_DIR)/../Isolate
-endif
Modified: vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp Thu Jun 30 06:32:15 2011
@@ -428,7 +428,7 @@
JavaJITCompiler* Comp = JavaJITCompiler::CreateCompiler("JITModule");
JnjvmBootstrapLoader* loader = new(Allocator, "Bootstrap loader")
JnjvmBootstrapLoader(Allocator, Comp, true);
- Jnjvm* vm = new(Allocator, "VM") Jnjvm(Allocator, loader);
+ Jnjvm* vm = new(Allocator, "VM") Jnjvm(Allocator, NULL, loader);
vm->runApplication(argc + 1, newArgv);
vm->waitForExit();
Modified: vmkit/trunk/lib/J3/Compiler/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/Makefile (original)
+++ vmkit/trunk/lib/J3/Compiler/Makefile Thu Jun 30 06:32:15 2011
@@ -10,19 +10,9 @@
include $(LEVEL)/Makefile.config
-ifeq ($(WITH_LLVM_GCC), 1)
- MODULE_NAME = J3Compiler
-else
- LIBRARYNAME = J3Compiler
-endif
-
+MODULE_WITH_GC = J3Compiler
EXTRA_DIST = ExceptionsCheck.inc ExceptionsDwarf.inc
-
include $(LEVEL)/Makefile.common
CXX.Flags += -I$(PROJ_OBJ_DIR)/../LLVMRuntime -I$(PROJ_SRC_DIR)/../Classpath $(CLASSPATH_FLAGS) -I$(PROJ_SRC_DIR)/../VMCore
-
-ifeq ($(ISOLATE_BUILD), 1)
- CXX.Flags += -I$(PROJ_SRC_DIR)/../Isolate
-endif
Modified: vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaClass.cpp?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaClass.cpp Thu Jun 30 06:32:15 2011
@@ -1836,3 +1836,12 @@
delegatee = getClassDelegatee(JavaThread::get()->getJVM());
JavaObject::notifyAll(delegatee);
}
+
+void JavaField::setInstanceObjectField(JavaObject* obj, JavaObject* val) {
+ llvm_gcroot(obj, 0);
+ llvm_gcroot(val, 0);
+ if (val != NULL) assert(val->getVirtualTable());
+ assert(classDef->isResolved());
+ JavaObject** ptr = (JavaObject**)((uint64)obj + ptrOffset);
+ mvm::Collector::objectReferenceWriteBarrier((gc*)obj, (gc**)ptr, (gc*)val);
+}
Modified: vmkit/trunk/lib/J3/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaClass.h?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaClass.h Thu Jun 30 06:32:15 2011
@@ -1310,14 +1310,8 @@
return ((JavaObject**)ptr)[0];
}
- void setInstanceObjectField(JavaObject* obj, JavaObject* val) {
- llvm_gcroot(obj, 0);
- llvm_gcroot(val, 0);
- if (val != NULL) assert(val->getVirtualTable());
- assert(classDef->isResolved());
- JavaObject** ptr = (JavaObject**)((uint64)obj + ptrOffset);
- mvm::Collector::objectReferenceWriteBarrier((gc*)obj, (gc**)ptr, (gc*)val);
- }
+ // This can't be inlined because of a linker bug.
+ void setInstanceObjectField(JavaObject* obj, JavaObject* val);
bool isReference() {
uint16 val = type->elements[0];
Modified: vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jnjvm.cpp Thu Jun 30 06:32:15 2011
@@ -1319,8 +1319,10 @@
mainThread->start((void (*)(mvm::Thread*))mainJavaStart);
}
-Jnjvm::Jnjvm(mvm::BumpPtrAllocator& Alloc, JnjvmBootstrapLoader* loader) :
- VirtualMachine(Alloc), lockSystem(Alloc) {
+Jnjvm::Jnjvm(mvm::BumpPtrAllocator& Alloc,
+ mvm::CamlFrames** frames,
+ JnjvmBootstrapLoader* loader) :
+ VirtualMachine(Alloc, frames), lockSystem(Alloc) {
classpath = getenv("CLASSPATH");
if (!classpath) classpath = ".";
@@ -1453,7 +1455,7 @@
JavaCompiler* Comp = new JavaCompiler();
JnjvmBootstrapLoader* loader = new(Allocator, "Bootstrap loader")
JnjvmBootstrapLoader(Allocator, Comp, true);
- Jnjvm* vm = new(Allocator, "VM") Jnjvm(Allocator, loader);
+ Jnjvm* vm = new(Allocator, "VM") Jnjvm(Allocator, NULL, loader);
vm->runApplication(argc + 1, newArgv);
vm->waitForExit();
Modified: vmkit/trunk/lib/J3/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jnjvm.h?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jnjvm.h (original)
+++ vmkit/trunk/lib/J3/VMCore/Jnjvm.h Thu Jun 30 06:32:15 2011
@@ -15,6 +15,7 @@
#include "types.h"
#include "mvm/Allocator.h"
+#include "mvm/MethodInfo.h"
#include "mvm/Object.h"
#include "mvm/VirtualMachine.h"
#include "mvm/Threads/Cond.h"
@@ -335,7 +336,9 @@
/// Jnjvm - Allocates a new JVM.
///
- Jnjvm(mvm::BumpPtrAllocator& Alloc, JnjvmBootstrapLoader* loader);
+ Jnjvm(mvm::BumpPtrAllocator& Alloc,
+ mvm::CamlFrames** frames,
+ JnjvmBootstrapLoader* loader);
/// runApplication - Runs the application with the given command line.
/// User-visible function, inherited by the VirtualMachine class.
Modified: vmkit/trunk/lib/J3/VMCore/LockedMap.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/LockedMap.cpp?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/LockedMap.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/LockedMap.cpp Thu Jun 30 06:32:15 2011
@@ -15,6 +15,20 @@
using namespace j3;
+bool ltutf8::operator()(const UTF8* s1, const UTF8* s2) const {
+ return s1->lessThan(s2);
+}
+
+bool ltarray16::operator()(const ArrayUInt16* s1, const ArrayUInt16* s2) const {
+ llvm_gcroot(s1, 0);
+ llvm_gcroot(s2, 0);
+ if (ArrayUInt16::getSize(s1) < ArrayUInt16::getSize(s2)) return true;
+ else if (ArrayUInt16::getSize(s1) > ArrayUInt16::getSize(s2)) return false;
+ else return memcmp((const char*)ArrayUInt16::getElements(s1),
+ (const char*)ArrayUInt16::getElements(s2),
+ ArrayUInt16::getSize(s1) * sizeof(uint16)) < 0;
+}
+
void StringMap::insert(JavaString* str) {
const ArrayUInt16* array = NULL;
llvm_gcroot(str, 0);
Modified: vmkit/trunk/lib/J3/VMCore/LockedMap.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/LockedMap.h?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/LockedMap.h (original)
+++ vmkit/trunk/lib/J3/VMCore/LockedMap.h Thu Jun 30 06:32:15 2011
@@ -37,43 +37,29 @@
class UserCommonClass;
class UserClassArray;
-struct ltutf8
-{
- bool operator()(const UTF8* s1, const UTF8* s2) const
- {
- return s1->lessThan(s2);
- }
+struct ltutf8 {
+ bool operator()(const UTF8* s1, const UTF8* s2) const;
};
-struct ltarray16
-{
- bool operator()(const ArrayUInt16* s1, const ArrayUInt16* s2) const
- {
- llvm_gcroot(s1, 0);
- llvm_gcroot(s2, 0);
- if (ArrayUInt16::getSize(s1) < ArrayUInt16::getSize(s2)) return true;
- else if (ArrayUInt16::getSize(s1) > ArrayUInt16::getSize(s2)) return false;
- else return memcmp((const char*)ArrayUInt16::getElements(s1),
- (const char*)ArrayUInt16::getElements(s2),
- ArrayUInt16::getSize(s1) * sizeof(uint16)) < 0;
- }
+struct ltarray16 {
+ bool operator()(const ArrayUInt16* s1, const ArrayUInt16* s2) const;
};
- class MapNoGC {
- public:
- static void gcroot(void* val, void* unused)
- __attribute__ ((always_inline)) {}
-
- };
-
- class MapWithGC {
- public:
- static void gcroot(void* val, void* unused)
- __attribute__ ((always_inline)) {
- llvm_gcroot(val, unused);
- }
-
- };
+class MapNoGC {
+public:
+ static void gcroot(void* val, void* unused)
+ __attribute__ ((always_inline)) {}
+
+};
+
+class MapWithGC {
+public:
+ static void gcroot(void* val, void* unused)
+ __attribute__ ((always_inline)) {
+ llvm_gcroot(val, unused);
+ }
+
+};
template<class Key, class Container, class Compare, class Meta, class TLock,
@@ -154,12 +140,6 @@
public LockedMap<const UTF8*, UserCommonClass*, ltutf8, JnjvmClassLoader*,
mvm::LockRecursive, MapNoGC > {
-#ifdef USE_GC_BOEHM
-public:
- void* operator new(size_t sz, mvm::BumpPtrAllocator& allocator) {
- return GC_MALLOC(sz);
- }
-#endif
};
class StringMap :
Modified: vmkit/trunk/lib/J3/VMCore/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Makefile (original)
+++ vmkit/trunk/lib/J3/VMCore/Makefile Thu Jun 30 06:32:15 2011
@@ -10,17 +10,8 @@
include $(LEVEL)/Makefile.config
-ifeq ($(WITH_LLVM_GCC), 1)
- MODULE_NAME = J3
-else
- LIBRARYNAME = J3
-endif
-
+MODULE_WITH_GC = J3
include $(LEVEL)/Makefile.common
-CXX.Flags += -I$(PROJ_OBJ_DIR)/../Classpath -I$(PROJ_OBJ_DIR)/../LLVMRuntime -I$(PROJ_SRC_DIR)/../Classpath $(CLASSPATH_FLAGS) -I$(PROJ_SRC_DIR)/../../../include/j3
-
-ifeq ($(ISOLATE_BUILD), 1)
- CXX.Flags += -I$(PROJ_SRC_DIR)/../Isolate
-endif
+CXX.Flags += -I$(PROJ_OBJ_DIR)/../Classpath -I$(PROJ_OBJ_DIR)/../LLVMRuntime -I$(PROJ_SRC_DIR)/../Classpath $(CLASSPATH_FLAGS) -I$(PROJ_SRC_DIR)/../../../include/j3 -Wno-mismatched-tags
Modified: vmkit/trunk/lib/Mvm/Allocator/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Allocator/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Allocator/Makefile (original)
+++ vmkit/trunk/lib/Mvm/Allocator/Makefile Thu Jun 30 06:32:15 2011
@@ -10,11 +10,7 @@
include $(LEVEL)/Makefile.config
-ifeq ($(WITH_LLVM_GCC), 1)
- MODULE_NAME = Allocator
-else
- LIBRARYNAME = Allocator
-endif
+MODULE_WITH_GC = Allocator
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/lib/Mvm/CommonThread/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/CommonThread/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/CommonThread/Makefile (original)
+++ vmkit/trunk/lib/Mvm/CommonThread/Makefile Thu Jun 30 06:32:15 2011
@@ -10,12 +10,7 @@
include $(LEVEL)/Makefile.config
-ifeq ($(WITH_LLVM_GCC), 1)
- MODULE_NAME = CommonThread
-else
- LIBRARYNAME = CommonThread
-endif
-
+MODULE_WITH_GC = CommonThread
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/lib/Mvm/Compiler/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Compiler/JIT.cpp?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Compiler/JIT.cpp (original)
+++ vmkit/trunk/lib/Mvm/Compiler/JIT.cpp Thu Jun 30 06:32:15 2011
@@ -12,7 +12,6 @@
#include <llvm/DerivedTypes.h>
#include <llvm/Instructions.h>
#include <llvm/LinkAllPasses.h>
-#include <llvm/Linker.h>
#include <llvm/LLVMContext.h>
#include <llvm/Module.h>
#include <llvm/PassManager.h>
@@ -58,11 +57,6 @@
using namespace mvm;
using namespace llvm;
-
-static cl::list<std::string>
-LoadBytecodeFiles("load-bc", cl::desc("Load bytecode file"), cl::ZeroOrMore,
- cl::CommaSeparated);
-
cl::opt<bool> EmitDebugInfo("emit-debug-info",
cl::desc("Emit debugging information"),
cl::init(false));
@@ -118,18 +112,6 @@
static MvmJITListener JITListener;
-void MvmModule::loadBytecodeFile(const std::string& str) {
- SMDiagnostic Err;
- Module* M = ParseIRFile(str, Err, globalModule->getContext());
- if (M) {
- M->setTargetTriple(getHostTriple());
- Linker::LinkModules(globalModule, M, 0);
- delete M;
- } else {
- Err.Print("load bytecode", errs());
- }
-}
-
typedef void (*BootType)(uintptr_t Plan);
typedef void (*BootHeapType)(intptr_t initial, intptr_t max);
@@ -176,10 +158,6 @@
//LLVMContext& Context = globalModule->getContext();
//MetadataTypeKind = Context.getMDKindID("HighLevelType");
- for (std::vector<std::string>::iterator i = LoadBytecodeFiles.begin(),
- e = LoadBytecodeFiles.end(); i != e; ++i) {
- loadBytecodeFile(*i);
- }
}
BaseIntrinsics::BaseIntrinsics(llvm::Module* module) {
Modified: vmkit/trunk/lib/Mvm/Compiler/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Compiler/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Compiler/Makefile (original)
+++ vmkit/trunk/lib/Mvm/Compiler/Makefile Thu Jun 30 06:32:15 2011
@@ -10,11 +10,7 @@
include $(LEVEL)/Makefile.config
-ifeq ($(WITH_LLVM_GCC), 1)
- MODULE_NAME = MvmCompiler
-else
- LIBRARYNAME = MvmCompiler
-endif
+MODULE_WITH_GC = MvmCompiler
VMKIT_RUNTIME = $(PROJ_SRC_DIR)/LLVMRuntime.ll
BUILT_SOURCES = LLVMRuntime.inc
Modified: vmkit/trunk/lib/Mvm/MMTk/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/MMTk/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/MMTk/Makefile (original)
+++ vmkit/trunk/lib/Mvm/MMTk/Makefile Thu Jun 30 06:32:15 2011
@@ -10,10 +10,6 @@
include $(LEVEL)/Makefile.config
-ifeq ($(WITH_LLVM_GCC), 1)
- MODULE_NAME = MMTk
-else
- LIBRARYNAME = MMTk
-endif
+MODULE_WITH_GC = MMTk
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/lib/Mvm/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Makefile (original)
+++ vmkit/trunk/lib/Mvm/Makefile Thu Jun 30 06:32:15 2011
@@ -10,8 +10,6 @@
include $(LEVEL)/Makefile.config
-EXTRA_DIST = BoehmGC GCMmap2 MMTk
-
-DIRS = Allocator CommonThread $(GCLIB) Runtime Compiler StaticGCPass JITGCPass
+DIRS = CommonThread MMTk Runtime Compiler JITGCPass
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/lib/Mvm/Runtime/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/Makefile (original)
+++ vmkit/trunk/lib/Mvm/Runtime/Makefile Thu Jun 30 06:32:15 2011
@@ -10,22 +10,6 @@
include $(LEVEL)/Makefile.config
-ifeq ($(WITH_LLVM_GCC), 1)
-
- MODULE_NAME = Mvm
-
-else
- LIBRARYNAME = Mvm
-
- VMKIT_ASSEMBLY = $(PROJ_SRC_DIR)/LLVMAssembly.ll
- BUILT_SOURCES = LLVMAssembly.s
-
- ifeq ($(WITH_64), 1)
- VMKIT_ASSEMBLY += $(PROJ_SRC_DIR)/LLVMAssembly64.ll
- endif
-
- SOURCES = LLVMAssembly.s $(notdir $(wildcard $(PROJ_SRC_DIR)/*.cpp))
-
-endif
+MODULE_WITH_GC = Mvm
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/lib/Mvm/Runtime/MethodInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/MethodInfo.cpp?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/MethodInfo.cpp (original)
+++ vmkit/trunk/lib/Mvm/Runtime/MethodInfo.cpp Thu Jun 30 06:32:15 2011
@@ -15,12 +15,6 @@
#include <dlfcn.h>
#include <map>
-#if defined(__MACH__)
-#define SELF_HANDLE RTLD_DEFAULT
-#else
-#define SELF_HANDLE 0
-#endif
-
using namespace mvm;
void CamlMethodInfo::scan(uintptr_t closure, void* ip, void* addr) {
@@ -51,11 +45,6 @@
void DefaultMethodInfo::scan(uintptr_t closure, void* ip, void* addr) {
}
-struct CamlFrames {
- uint16_t NumDescriptors;
- CamlFrame frames[1];
-};
-
struct CamlFrameDecoder {
CamlFrames* frames ;
uint32 currentDescriptor;
@@ -64,7 +53,7 @@
CamlFrameDecoder(CamlFrames* frames) {
this->frames = frames;
currentDescriptor = 0;
- currentFrame = &(frames->frames[0]);
+ currentFrame = frames->frames();
}
bool hasNext() {
@@ -88,23 +77,33 @@
}
};
+CamlFrame* CamlFrames::frames() const {
+ intptr_t ptr = reinterpret_cast<intptr_t>(this) + sizeof(uint32_t);
+ // If the frames structure was not 4-aligned, manually do it here.
+ if (ptr & 2) {
+ ptr -= sizeof(uint16_t);
+ }
+ return reinterpret_cast<CamlFrame*>(ptr);
+}
+
static BumpPtrAllocator* StaticAllocator = NULL;
-FunctionMap::FunctionMap() {
- CamlFrames* frames =
- (CamlFrames*)dlsym(SELF_HANDLE, "camlVmkitoptimized__frametable");
- if (frames == NULL) return;
-
+FunctionMap::FunctionMap(CamlFrames** allFrames) {
+ if (allFrames == NULL) return;
StaticAllocator = new BumpPtrAllocator();
- CamlFrameDecoder decoder(frames);
- Dl_info info;
- while (decoder.hasNext()) {
- CamlFrame* frame = decoder.next();
- int res = dladdr(frame->ReturnAddress, &info);
- assert(res != 0 && "No frame");
- StaticCamlMethodInfo* MI = new(*StaticAllocator, "StaticCamlMethodInfo")
- StaticCamlMethodInfo(frame, info.dli_sname);
- addMethodInfo(MI, frame->ReturnAddress);
+ int i = 0;
+ CamlFrames* frames = NULL;
+ while ((frames = allFrames[i++]) != NULL) {
+ CamlFrameDecoder decoder(frames);
+ Dl_info info;
+ while (decoder.hasNext()) {
+ CamlFrame* frame = decoder.next();
+ int res = dladdr(frame->ReturnAddress, &info);
+ assert(res != 0 && "No frame");
+ StaticCamlMethodInfo* MI = new(*StaticAllocator, "StaticCamlMethodInfo")
+ StaticCamlMethodInfo(frame, info.dli_sname);
+ addMethodInfo(MI, frame->ReturnAddress);
+ }
}
}
Modified: vmkit/trunk/mmtk/inline/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/inline/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/mmtk/inline/Makefile (original)
+++ vmkit/trunk/mmtk/inline/Makefile Thu Jun 30 06:32:15 2011
@@ -10,7 +10,7 @@
include $(LEVEL)/Makefile.config
-MODULE_NAME = InlineMMTk
+MODULE_WITH_GC = InlineMMTk
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/tools/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/tools/Makefile (original)
+++ vmkit/trunk/tools/Makefile Thu Jun 30 06:32:15 2011
@@ -8,24 +8,9 @@
##===----------------------------------------------------------------------===##
LEVEL = ..
-PARALLEL_DIRS += vmkit
-
include $(LEVEL)/Makefile.config
-ifeq ($(WITH_J3), 1)
- PARALLEL_DIRS += j3
- PARALLEL_DIRS += vmjc
- PARALLEL_DIRS += llcj
-endif
-
-ifeq ($(WITH_N3_MONO), 1)
- PARALLEL_DIRS += n3-mono
-endif
-
-ifeq ($(WITH_N3_PNETLIB), 1)
- PARALLEL_DIRS += n3-pnetlib
-endif
-
+PARALLEL_DIRS = j3 vmjc llcj
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/tools/j3/Main.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/j3/Main.cpp?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/tools/j3/Main.cpp (original)
+++ vmkit/trunk/tools/j3/Main.cpp Thu Jun 30 06:32:15 2011
@@ -9,6 +9,7 @@
#include "MvmGC.h"
#include "mvm/JIT.h"
+#include "mvm/MethodInfo.h"
#include "mvm/Object.h"
#include "mvm/VirtualMachine.h"
#include "mvm/Threads/Thread.h"
@@ -25,8 +26,14 @@
using namespace j3;
using namespace mvm;
+#include "FrametablesExterns.inc"
+
+CamlFrames* frametables[] = {
+ #include "FrametablesSymbols.inc"
+};
+
int main(int argc, char **argv, char **envp) {
- llvm::llvm_shutdown_obj X;
+ llvm::llvm_shutdown_obj X;
// Initialize base components.
MvmModule::initialise();
@@ -40,7 +47,7 @@
JavaJITCompiler* Comp = JavaJITCompiler::CreateCompiler("JITModule");
JnjvmBootstrapLoader* loader = new(Allocator, "Bootstrap loader")
JnjvmBootstrapLoader(Allocator, Comp, true);
- Jnjvm* vm = new(Allocator, "VM") Jnjvm(Allocator, loader);
+ Jnjvm* vm = new(Allocator, "VM") Jnjvm(Allocator, (CamlFrames**)frametables, loader);
// Run the application.
vm->runApplication(argc, argv);
Modified: vmkit/trunk/tools/j3/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/j3/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/tools/j3/Makefile (original)
+++ vmkit/trunk/tools/j3/Makefile Thu Jun 30 06:32:15 2011
@@ -1,6 +1,6 @@
-##===- tools/jnjvm/Makefile --------------------------------*- Makefile -*-===##
+##===- tools/j3/Makefile -----------------------------------*- Makefile -*-===##
#
-# The vmkit project
+# The VMKit project
#
# This file is distributed under the University of Illinois Open Source
# License. See LICENSE.TXT for details.
@@ -11,38 +11,9 @@
include $(LEVEL)/Makefile.config
TOOLNAME = j3
-
-ifeq ($(WITH_LLVM_GCC), 1)
-
- MODULESNAME = j3
- USEDMODULES = J3.bc Classpath.bc J3Compiler.bc Allocator.bc CommonThread.bc \
- Mvm.bc MvmCompiler.bc
-
- ifeq ($(GC_MMTK), 1)
- USEDMODULES += FinalMMTk.bc InlineMMTk.bc
- else
- USEDMODULES += $(GCLIB).bc
- endif
-
- ifeq ($(ISOLATE_SHARING_BUILD), 1)
- USEDMODULES += Isolate.bc
- endif
-
- BUILT_SOURCES = j3.s
- SOURCES = j3.s $(notdir $(wildcard $(PROJ_SRC_DIR)/*.cpp))
-
-else
-
-USEDLIBS = J3.a Classpath.a J3.a J3Compiler.a Allocator.a \
- Mvm.a MvmCompiler.a $(GCLIB).a Allocator.a CommonThread.a
-
- ifeq ($(ISOLATE_SHARING_BUILD), 1)
- USEDLIBS += Isolate
- endif
-
-endif
-
-LINK_COMPONENTS = jit nativecodegen scalaropts instrumentation ipa ipo bitreader asmparser linker
-
+USEDLIBS = Classpath.a J3.a J3Compiler.a Mvm.a MvmCompiler.a CommonThread.a FinalMMTk.a InlineMMTk.a
+BUILT_SOURCES = FrametablesSymbols.inc FrametablesExterns.inc
+BUILD_FRAMETABLE = 1
+LINK_COMPONENTS = jit nativecodegen scalaropts instrumentation ipa ipo asmparser linker
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/tools/vmjc/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmjc/Makefile?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/tools/vmjc/Makefile (original)
+++ vmkit/trunk/tools/vmjc/Makefile Thu Jun 30 06:32:15 2011
@@ -1,4 +1,4 @@
-##===- tools/vmjc/Makefile --------------------------------*- Makefile -*-===##
+##===- tools/vmjc/Makefile ---------------------------------*- Makefile -*-===##
#
# The VMKit project
#
@@ -13,22 +13,7 @@
EXTRA_DIST = libvmjc
TOOLNAME = vmjc
-
-
-ifeq ($(WITH_LLVM_GCC), 1)
- MODULESNAME = vmkit
- USEDMODULES = J3.bc Classpath.bc J3Compiler.bc Allocator.bc \
- CommonThread.bc Mvm.bc MvmCompiler.bc $(GCLIB).bc
-
- BUILT_SOURCES = vmkit.s
- SOURCES = vmkit.s $(notdir $(wildcard $(PROJ_SRC_DIR)/*.cpp))
-
-else
-
- USEDLIBS = J3.a Classpath.a J3.a J3Compiler.a Allocator.a \
- Mvm.a MvmCompiler.a $(GCLIB).a Allocator.a CommonThread.a
-endif
-
+USEDLIBS = J3.a Classpath.a J3.a J3Compiler.a Mvm.a MvmCompiler.a MMTk.a CommonThread.a
LINK_COMPONENTS = jit nativecodegen scalaropts instrumentation ipa ipo bitwriter bitreader asmparser linker
include $(LEVEL)/Makefile.common
Modified: vmkit/trunk/tools/vmjc/vmjc.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmjc/vmjc.cpp?rev=134141&r1=134140&r2=134141&view=diff
==============================================================================
--- vmkit/trunk/tools/vmjc/vmjc.cpp (original)
+++ vmkit/trunk/tools/vmjc/vmjc.cpp Thu Jun 30 06:32:15 2011
@@ -15,6 +15,7 @@
//
//===----------------------------------------------------------------------===//
+#include <llvm/Linker.h>
#include "llvm/LinkAllPasses.h"
#include "llvm/LinkAllVMCore.h"
#include "llvm/Module.h"
@@ -24,6 +25,7 @@
#include "llvm/Bitcode/ReaderWriter.h"
#include "llvm/ExecutionEngine/ExecutionEngine.h"
#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/IRReader.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/PassNameParser.h"
@@ -106,6 +108,24 @@
WithClinit("with-clinit", cl::desc("Classes to clinit"), cl::ZeroOrMore,
cl::CommaSeparated);
+
+static cl::list<std::string>
+LoadBytecodeFiles("load-bc", cl::desc("Load bytecode file"), cl::ZeroOrMore,
+ cl::CommaSeparated);
+
+static void loadBytecodeFile(const std::string& str) {
+ SMDiagnostic Err;
+ Module* M = ParseIRFile(str, Err, mvm::MvmModule::globalModule->getContext());
+ if (M) {
+ M->setTargetTriple(mvm::MvmModule::getHostTriple());
+ Linker::LinkModules(mvm::MvmModule::globalModule, M, 0);
+ delete M;
+ } else {
+ Err.Print("load bytecode", errs());
+ }
+}
+
+
int main(int argc, char **argv) {
llvm_shutdown_obj X; // Call llvm_shutdown() on exit.
cl::ParseCommandLineOptions(argc, argv, "vmkit .class -> .ll compiler\n");
@@ -174,6 +194,11 @@
mvm::MvmModule::initialise();
}
+ for (std::vector<std::string>::iterator i = LoadBytecodeFiles.begin(),
+ e = LoadBytecodeFiles.end(); i != e; ++i) {
+ loadBytecodeFile(*i);
+ }
+
JavaAOTCompiler* Comp = new JavaAOTCompiler("AOT");
mvm::Collector::initialise();
@@ -187,7 +212,7 @@
if (AssumeCompiled) Comp->assumeCompiled = true;
if (DisableCooperativeGC) Comp->disableCooperativeGC();
- Jnjvm* vm = new(allocator, "Bootstrap loader") Jnjvm(allocator, loader);
+ Jnjvm* vm = new(allocator, "Bootstrap loader") Jnjvm(allocator, NULL, loader);
for (std::vector<std::string>::iterator i = Properties.begin(),
e = Properties.end(); i != e; ++i) {
More information about the vmkit-commits
mailing list