Add shadow stack support to Dex compiler.

Change-Id: I8e188be3fb30c81e2a9e6e466264074ddf7b1624
diff --git a/src/compiler_llvm/method_compiler.h b/src/compiler_llvm/method_compiler.h
index 0ec4858..dd10bc8 100644
--- a/src/compiler_llvm/method_compiler.h
+++ b/src/compiler_llvm/method_compiler.h
@@ -86,6 +86,7 @@
   UniquePtr<DalvikReg> retval_reg_;
 
   llvm::BasicBlock* basic_block_reg_alloca_;
+  llvm::BasicBlock* basic_block_shadow_frame_alloca_;
   llvm::BasicBlock* basic_block_reg_zero_init_;
   llvm::BasicBlock* basic_block_reg_arg_init_;
   std::vector<llvm::BasicBlock*> basic_blocks_;
@@ -94,6 +95,8 @@
   llvm::BasicBlock* basic_block_unwind_;
   llvm::BasicBlock* basic_block_unreachable_;
 
+  llvm::AllocaInst* shadow_frame_;
+
 
  public:
   MethodCompiler(InstructionSet insn_set,
@@ -129,6 +132,7 @@
   void CreateFunction();
   void EmitPrologue();
   void EmitPrologueLastBranch();
+  void EmitPrologueAllocShadowFrame();
   void EmitPrologueAssignArgRegister();
   void EmitInstructions();
   void EmitInstruction(uint32_t dex_pc, Instruction const* insn);
@@ -266,6 +270,12 @@
 #undef GEN_INSN_ARGS
 
 
+  // Shadow frame helper function
+  void EmitPopShadowFrame();
+  void EmitUpdateLineNum(int32_t line_number);
+  void EmitUpdateLineNumFromDexPC(uint32_t dex_pc);
+
+
   // Dex cache code generation helper function
   llvm::Value* EmitLoadDexCacheAddr(MemberOffset dex_cache_offset);