Added code generation framework.
visitors.h: Contains only IR visitor declarations for now.
code_gen.h: Code generation vistor declaration (needs llvm).
code_gen.cc:Code generation visitor implementation (needs llvm).
instruction_nodes.h: Classes for each type of instruction; this
enables the visitor to visit each instruction differently and
corresponds to the sea of nodes paper.
sea_node.h : Moved base Sea IR Node to this separate header.
Replaced NO_REGISTER with enum (including RETURN_REGISTER)
sea.cc: Addded code generation call.
Set parent region for SignatureNodes.
Propagate method and class ids in IR generation routine.
Create InstructionNode subclasses.
*.mk: Updated to support the new files. Fixed some pre-existing formatting.
instruction_tools.h: Fixed double-define of NO_REGISTER to
refer to the new enum.
dex_instruction.cc: Added support for one more instruction in
HasRegXX and VRegXX functions.
Change-Id: I7c78f603e41df7bf9da5b77951b8485dd1b49200
diff --git a/compiler/Android.mk b/compiler/Android.mk
index 0bb8770..c43d5a5 100644
--- a/compiler/Android.mk
+++ b/compiler/Android.mk
@@ -74,8 +74,8 @@
llvm/runtime_support_builder_arm.cc \
llvm/runtime_support_builder_thumb2.cc \
llvm/runtime_support_builder_x86.cc \
- stubs/portable/stubs.cc \
- stubs/quick/stubs.cc \
+ stubs/portable/stubs.cc \
+ stubs/quick/stubs.cc \
elf_fixup.cc \
elf_stripper.cc \
elf_writer.cc \
@@ -86,7 +86,9 @@
ifeq ($(ART_SEA_IR_MODE),true)
LIBART_COMPILER_SRC_FILES += \
sea_ir/frontend.cc \
- sea_ir/instruction_tools.cc
+ sea_ir/instruction_tools.cc \
+ sea_ir/sea.cc \
+ sea_ir/code_gen.cc
endif
LIBART_COMPILER_CFLAGS :=
@@ -173,7 +175,6 @@
LOCAL_SHARED_LIBRARIES += libart
endif
LOCAL_SHARED_LIBRARIES += libbcc libbcinfo libLLVM
-
ifeq ($(ART_USE_PORTABLE_COMPILER),true)
LOCAL_CFLAGS += -DART_USE_PORTABLE_COMPILER=1
endif