[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