[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