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