Remove the hard coded "constants" related to shadow frame.

(cherry picked from commit ae63b2a5ae3fa64bc07369c22efcf5617d55cc16)

Change-Id: I4f00bcda535b080fd0acb586ef699d101a418675
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index 6e26b78..f8e8910 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -26,6 +26,7 @@
 #include "object.h"
 #include "object_utils.h"
 #include "runtime_support_func.h"
+#include "shadow_frame.h"
 #include "stl_util.h"
 #include "stringprintf.h"
 #include "utils_llvm.h"
@@ -199,26 +200,25 @@
 
   irb_.CreateStore(zero_initializer, shadow_frame_);
 
-  // Variables for GetElementPtr
-  llvm::Constant* zero = irb_.getInt32(0);
-
-  llvm::Value* gep_index[] = {
-    zero, // No displacement for shadow frame pointer
-    zero, // Get the %ArtFrame data structure
-    NULL,
-  };
-
   // Store the method pointer
-  gep_index[2] = irb_.getInt32(1);
-  llvm::Value* method_field_addr = irb_.CreateGEP(shadow_frame_, gep_index);
+  llvm::Value* method_field_addr =
+    irb_.CreatePtrDisp(shadow_frame_,
+                       irb_.getPtrEquivInt(ShadowFrame::MethodOffset()),
+                       irb_.getJObjectTy()->getPointerTo());
+
   llvm::Value* method_object_addr = EmitLoadMethodObjectAddr();
   irb_.CreateStore(method_object_addr, method_field_addr);
 
   // Store the number of the pointer slots
-  gep_index[2] = irb_.getInt32(3);
-  llvm::Value* size_field_addr = irb_.CreateGEP(shadow_frame_, gep_index);
-  llvm::ConstantInt* sirt_size_value = irb_.getInt32(sirt_size);
-  irb_.CreateStore(sirt_size_value, size_field_addr);
+  llvm::ConstantInt* num_of_refs_offset =
+    irb_.getPtrEquivInt(ShadowFrame::NumberOfReferencesOffset());
+
+  llvm::Value* num_of_refs_field_addr =
+    irb_.CreatePtrDisp(shadow_frame_, num_of_refs_offset,
+                       irb_.getJIntTy()->getPointerTo());
+
+  llvm::ConstantInt* num_of_refs_value = irb_.getJInt(sirt_size);
+  irb_.CreateStore(num_of_refs_value, num_of_refs_field_addr);
 
   // Push the shadow frame
   llvm::Value* shadow_frame_upcast =
@@ -3881,15 +3881,11 @@
 
 
 void MethodCompiler::EmitUpdateLineNum(int32_t line_num) {
-  llvm::Constant* zero = irb_.getInt32(0);
+  llvm::Value* line_num_field_addr =
+    irb_.CreatePtrDisp(shadow_frame_,
+                       irb_.getPtrEquivInt(ShadowFrame::LineNumOffset()),
+                       irb_.getJIntTy()->getPointerTo());
 
-  llvm::Value* gep_index[] = {
-    zero, // No displacement for shadow frame pointer
-    zero, // Get the %ArtFrame data structure
-    irb_.getInt32(2),
-  };
-
-  llvm::Value* line_num_field_addr = irb_.CreateGEP(shadow_frame_, gep_index);
   llvm::ConstantInt* line_num_value = irb_.getInt32(line_num);
   irb_.CreateStore(line_num_value, line_num_field_addr);
 }