[vmkit-commits] [vmkit] r180414 - transparent frametable generation

Peter Senna Tschudin peter.senna at gmail.com
Thu Apr 25 10:09:19 PDT 2013


Author: peter.senna
Date: Thu Apr 25 12:07:39 2013
New Revision: 180414

URL: http://llvm.org/viewvc/llvm-project?rev=180414&view=rev
Log:
transparent frametable generation
(cherry picked from commit 03675b510eee862a02034716fb492c05bc4d388d)

Modified:
    vmkit/trunk/Makefile.rules
    vmkit/trunk/include/vmkit/MethodInfo.h
    vmkit/trunk/tools/j3/Main.cpp
    vmkit/trunk/tools/j3/Makefile
    vmkit/trunk/tools/precompiler/Makefile
    vmkit/trunk/tools/precompiler/Precompiler.cpp

Modified: vmkit/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/Makefile.rules?rev=180414&r1=180413&r2=180414&view=diff
==============================================================================
--- vmkit/trunk/Makefile.rules (original)
+++ vmkit/trunk/Makefile.rules Thu Apr 25 12:07:39 2013
@@ -30,6 +30,12 @@ ifeq ($(DEBUG),1)
   COMMON_CFLAGS+=-g
 endif
 
+ifeq ($(OPTIMIZED),1)
+	OPT_MSG="Optimizing"
+else
+	OPT_MSG="Performing GC pass on"
+endif
+
 ###############################################################################
 #   Nice printing
 ###############################################################################
@@ -116,7 +122,6 @@ VMJC=$(BIN_DIR)/vmjc$(EXEEXT)
 ###############################################################################
 ifdef TOOL
 MODULE=$(TOOL)
-#GEN+=frametables.cc
 
 all:: $(BIN_DIR)/$(TOOL)$(EXEEXT)
 endif
@@ -145,11 +150,11 @@ define all-suffixes
 	$(wildcard *$1) $(filter %$1, $(GEN))
 endef
 
-CLANG_FILES+=$(patsubst %.c,$(BUILD_DIR)/%,$(call all-suffixes,.c)) \
-             $(patsubst %.cc,$(BUILD_DIR)/%,$(call all-suffixes,.cc)) \
-             $(patsubst %.cpp,$(BUILD_DIR)/%,$(call all-suffixes,.cpp))
+CLANG_FILES=$(patsubst %.c,$(BUILD_DIR)/%,$(call all-suffixes,.c)) \
+            $(patsubst %.cc,$(BUILD_DIR)/%,$(call all-suffixes,.cc)) \
+            $(patsubst %.cpp,$(BUILD_DIR)/%,$(call all-suffixes,.cpp))
 
-BC_FILES+=$(addsuffix .bc,$(CLANG_FILES)) $(addprefix $(BUILD_DIR)/,$(filter %.bc, $(GEN)))
+BC_FILES=$(addsuffix .bc,$(CLANG_FILES)) $(addprefix $(BUILD_DIR)/,$(filter %.bc, $(GEN)))
 
 ifdef NEED_GC
 LLC_GC=-load=$(PREPARE_CODE)
@@ -187,58 +192,41 @@ $(MODULE_A): $(MODULE_A_DEP) $(LIB_DIR)/
 	$(Verb) $(LLC) -relocation-model=pic -filetype=obj -disable-cfi -disable-fp-elim $(LLC_GC) $< -o $@
 
 %-opt.bc: %.bc
-	$(Echo) "Optimizing '$(notdir $<)'"
+	$(Echo) "$(OPT_MSG) '$(notdir $<)'"
 	$(Verb) $(LOPT) $< $(OPT_GC) -o $@
 
 endif
 
 ###############################################################################
-#   Frametables
-###############################################################################
-DEP_FRAMETABLES=$(patsubst %,$(LIB_DIR)/lib%.a,$(LINK_USE))
-$(BUILD_DIR)/frametables.cc: $(DEP_FRAMETABLES) $(SELF) $(BUILD_DIR)/.dir 
-	$(Echo) "Generating frametables in $@"
-	$(Verb) mkdir -p $(dir $@)
-	$(Verb) doit() { \
-	          echo '#include "vmkit/MethodInfo.h"'; \
-						echo 'using namespace vmkit;'; \
-						$(NM) $^ | grep __frametable | sed 's/\([a-f0-9]*\) \([a-zA-Z]*\) _*\([a-zA-Z0-9_]*\)/extern "C" CompiledFrames \3;/'; \
-						echo 'CompiledFrames* vmkit::initialFrametables[] = {'; \
-						$(NM) $^ | grep __frametable | sed 's/\([a-f0-9]*\) \([a-zA-Z]*\) _*\([a-zA-Z0-9_]*\)/\&\3,/'; \
-						echo "0"; \
-						echo "};"; \
-					}; doit
-
-ifdef BUILD_FRAMETABLE
-
-## have to remove this symbol (used elsewere)
-BUILT_INC+=$(patsubst %,$(BUILD_DIR)/%,FrametablesExterns.inc FrametablesSymbols.inc)
-DEP_FRAMETABLES=$(patsubst %,$(LIB_DIR)/lib%.a,$(LINK_USE))
-
-$(BUILD_DIR)/FrametablesExterns.inc: $(DEP_FRAMETABLES) $(SELF) $(BUILD_DIR)/.dir
-	$(Echo) "Generating $(notdir $@)"
-	$(Verb) $(NM) $(DEP_FRAMETABLES) | $(GREP) __frametable | sed 's/\([a-f0-9]*\) \([a-zA-Z]*\) _*\([a-zA-Z0-9_]*\)/extern "C" CompiledFrames \3;/' > $@
-
-$(BUILD_DIR)/FrametablesSymbols.inc: $(DEP_FRAMETABLES) $(SELF) $(BUILD_DIR)/.dir
-	$(Echo) "Generating $(notdir $@)"
-	$(Verb) $(NM) $(DEP_FRAMETABLES) | $(GREP) __frametable | sed 's/\([a-f0-9]*\) \([a-zA-Z]*\) _*\([a-zA-Z0-9_]*\)/\&\3,/' > $@
-
-endif
-
-###############################################################################
 #   Linking
 ###############################################################################
-DEP_LIBS=$(patsubst %,$(LIB_DIR)/lib%.a,$(LINK_USE) $(LINK_USE))
+DEP_LIBS=$(patsubst %,$(LIB_DIR)/lib%.a,$(LINK_USE))
 
-$(BIN_DIR)/$(TOOL)$(EXEEXT): $(MODULE_A) $(DEP_LIBS) $(SELF) $(BIN_DIR)/.dir
+$(BIN_DIR)/$(TOOL)$(EXEEXT): $(MODULE_A) $(DEP_LIBS) $(BUILD_DIR)/frametables-opt.o $(SELF) $(BIN_DIR)/.dir
 	$(Echo) "Linking executable '$(notdir $@)'"
-	$(Verb) $(CLANGXX) -o $@ $(MODULE_A) $(DEP_LIBS) $(MY_LIBS) $(MY_LDFLAGS) 
+	$(Verb) $(CLANGXX) -o $@ $(MODULE_A) $(DEP_LIBS) $(BUILD_DIR)/frametables-opt.o $(DEP_LIBS) $(MY_LIBS) $(MY_LDFLAGS) 
 
 $(LIB_DIR)/$(LIBRARY)$(SHLIBEXT): $(MODULE_A) $(DEP_LIBS) $(SELF) $(LIB_DIR)/.dir
 	$(Echo) "Linking shared library '$(notdir $@)'"
 	$(Verb) $(CLANGXX) -O0 -o $@ $(SHOPT) -shared -Wl,--whole-archive $(MODULE_A) -Wl,--no-whole-archive $(DEP_LIBS)
 
 ###############################################################################
+#   Frametables
+###############################################################################
+$(BUILD_DIR)/frametables.cc: $(MODULE_A) $(DEP_LIBS) $(SELF) $(BUILD_DIR)/.dir 
+	$(Echo) "Generating frametables of $(notdir $(TOOL))" #$(notdir $(DEP_LIBS))"
+	$(Verb) doit() { \
+						F="$(MODULE_A) $(DEP_LIBS)"; \
+	          echo '#include "vmkit/MethodInfo.h"'; \
+						echo 'using namespace vmkit;'; \
+						$(NM) $$F | grep __frametable | sed 's/\([a-f0-9]*\) \([a-zA-Z]*\) _*\([a-zA-Z0-9_]*\)/extern "C" CompiledFrames \3;/'; \
+						echo 'CompiledFrames* vmkit::initialFrametables[] = {'; \
+						$(NM) $$F | grep __frametable | sed 's/\([a-f0-9]*\) \([a-zA-Z]*\) _*\([a-zA-Z0-9_]*\)/\&\3,/'; \
+						echo "0"; \
+						echo "};"; \
+					}; doit > $@
+
+###############################################################################
 # vmkit runtime generated files
 ###############################################################################
 ifdef VMKIT_RUNTIME_OUT

Modified: vmkit/trunk/include/vmkit/MethodInfo.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/MethodInfo.h?rev=180414&r1=180413&r2=180414&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/MethodInfo.h (original)
+++ vmkit/trunk/include/vmkit/MethodInfo.h Thu Apr 25 12:07:39 2013
@@ -95,5 +95,7 @@ public:
   }
 };
 
+extern CompiledFrames* initialFrametables[]; 
+
 } // end namespace vmkit
 #endif // VMKIT_METHODINFO_H

Modified: vmkit/trunk/tools/j3/Main.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/j3/Main.cpp?rev=180414&r1=180413&r2=180414&view=diff
==============================================================================
--- vmkit/trunk/tools/j3/Main.cpp (original)
+++ vmkit/trunk/tools/j3/Main.cpp Thu Apr 25 12:07:39 2013
@@ -23,13 +23,6 @@
 using namespace j3;
 using namespace vmkit;
 
-#include "FrametablesExterns.inc"
-
-CompiledFrames* frametables[] = {
-  #include "FrametablesSymbols.inc"
-  NULL
-};
-
 int main(int argc, char **argv, char **envp) {
   llvm::llvm_shutdown_obj X;
 
@@ -42,7 +35,7 @@ int main(int argc, char **argv, char **e
   JavaJITCompiler* Comp = JavaJITCompiler::CreateCompiler("JITModule");
   JnjvmBootstrapLoader* loader = new(Allocator, "Bootstrap loader")
     JnjvmBootstrapLoader(Allocator, Comp, true);
-  Jnjvm* vm = new(Allocator, "VM") Jnjvm(Allocator, frametables, loader);
+  Jnjvm* vm = new(Allocator, "VM") Jnjvm(Allocator, initialFrametables, 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=180414&r1=180413&r2=180414&view=diff
==============================================================================
--- vmkit/trunk/tools/j3/Makefile (original)
+++ vmkit/trunk/tools/j3/Makefile Thu Apr 25 12:07:39 2013
@@ -10,6 +10,5 @@ LEVEL = ../..
 
 TOOL=j3
 LINK_USE=Classpath J3 J3Compiler Vmkit VmkitCompiler CommonThread FinalMMTk InlineMMTk Precompiled BootstrapClasses
-BUILD_FRAMETABLE = 1
 
 include $(LEVEL)/Makefile.common

Modified: vmkit/trunk/tools/precompiler/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/precompiler/Makefile?rev=180414&r1=180413&r2=180414&view=diff
==============================================================================
--- vmkit/trunk/tools/precompiler/Makefile (original)
+++ vmkit/trunk/tools/precompiler/Makefile Thu Apr 25 12:07:39 2013
@@ -10,6 +10,5 @@ LEVEL = ../..
 
 TOOL=precompiler
 LINK_USE=Classpath J3 J3Compiler Vmkit VmkitCompiler CommonThread FinalMMTk
-BUILD_FRAMETABLE=1
 
 include $(LEVEL)/Makefile.common

Modified: vmkit/trunk/tools/precompiler/Precompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/precompiler/Precompiler.cpp?rev=180414&r1=180413&r2=180414&view=diff
==============================================================================
--- vmkit/trunk/tools/precompiler/Precompiler.cpp (original)
+++ vmkit/trunk/tools/precompiler/Precompiler.cpp Thu Apr 25 12:07:39 2013
@@ -32,13 +32,6 @@
 using namespace j3;
 using namespace vmkit;
 
-#include "FrametablesExterns.inc"
-
-CompiledFrames* frametables[] = {
-  #include "FrametablesSymbols.inc"
-  NULL
-};
-
 
 static void mainCompilerLoaderStart(JavaThread* th) {
   Jnjvm* vm = th->getJVM();
@@ -80,7 +73,7 @@ int main(int argc, char **argv, char **e
     JavaJITCompiler* JIT = JavaJITCompiler::CreateCompiler("JIT");
     JnjvmBootstrapLoader* loader = new(Allocator, "Bootstrap loader")
       JnjvmBootstrapLoader(Allocator, JIT, true);
-    Jnjvm* vm = new(Allocator, "VM") Jnjvm(Allocator, frametables, loader);
+    Jnjvm* vm = new(Allocator, "VM") Jnjvm(Allocator, initialFrametables, loader);
  
     // Run the application. 
     vm->runApplication(argc, argv);





More information about the vmkit-commits mailing list