Initial implementation of throw+unwind+Frame.

Unit tests on Exception Handling pass.

Change-Id: I33505dacc6648e72e2ed80c2cca83643cfaef86b
diff --git a/src/object.h b/src/object.h
index 840c966..5a8f5be 100644
--- a/src/object.h
+++ b/src/object.h
@@ -485,6 +485,18 @@
   // arguments into an array of arguments.
   size_t NumArgArrayBytes() const;
 
+  // Converts a native PC to a virtual PC.  TODO: this is a no-op
+  // until we associate a PC mapping table with each method.
+  uintptr_t ToDexPC(const uintptr_t pc) const {
+    return pc;
+  }
+
+  // Converts a virtual PC to a native PC.  TODO: this is a no-op
+  // until we associate a PC mapping table with each method.
+  uintptr_t ToNativePC(const uintptr_t pc) const {
+    return pc;
+  }
+
  public:  // TODO: private
   // Field order required by test "ValidateFieldOrderOfJavaCppUnionClasses".
   // the class we are a part of
@@ -573,7 +585,9 @@
     return code_ != NULL;
   }
 
-  void SetCode(const byte* compiled_code, size_t byte_count, InstructionSet set) {
+  void SetCode(const byte* compiled_code,
+               size_t byte_count,
+               InstructionSet set) {
     // Copy the code into an executable region.
     code_instruction_set_ = set;
     code_area_.reset(MemMap::Map(byte_count,
@@ -595,6 +609,18 @@
     frame_size_ = frame_size;
   }
 
+  void SetPcOffset(uint32_t pc_offset) {
+    pc_offset_ = pc_offset;
+  }
+
+  size_t GetFrameSize() const {
+    return frame_size_;
+  }
+
+  size_t GetPcOffset() const {
+    return pc_offset_;
+  }
+
   void SetCoreSpillMask(uint32_t core_spill_mask) {
     core_spill_mask_ = core_spill_mask;
   }
@@ -692,6 +718,9 @@
   // Size in bytes of compiled code associated with this method
   const uint32_t code_size_;
 
+  // Offset of PC within compiled code (in bytes)
+  uint32_t pc_offset_;
+
   // Any native method registered with this method
   const void* native_method_;