diff --git a/src/compiler/Frontend.cc b/src/compiler/Frontend.cc
index 4202a39..8a3d8b2 100644
--- a/src/compiler/Frontend.cc
+++ b/src/compiler/Frontend.cc
@@ -897,7 +897,7 @@
 
     method->SetCode((const art::byte*)&cUnit.codeBuffer[0],
                     cUnit.codeBuffer.size() * 2, art::kThumb2);
-    method->SetFrameSize(cUnit.frameSize);
+    method->SetFrameSizeInBytes(cUnit.frameSize);
     method->SetCoreSpillMask(cUnit.coreSpillMask);
     method->SetFpSpillMask(cUnit.fpSpillMask);
     // TODO: Transmit mapping table to caller
diff --git a/src/jni_compiler.cc b/src/jni_compiler.cc
index 9dceed4..b03a016 100644
--- a/src/jni_compiler.cc
+++ b/src/jni_compiler.cc
@@ -296,8 +296,8 @@
   jni_asm->FinalizeInstructions(code);
   native_method->SetCode(reinterpret_cast<byte*>(code.pointer()), cs,
       jni_asm->GetInstructionSet());
-  native_method->SetFrameSize(frame_size);
-  native_method->SetReturnPcOffset(jni_conv.ReturnPcOffset());
+  native_method->SetFrameSizeInBytes(frame_size);
+  native_method->SetReturnPcOffsetInBytes(jni_conv.ReturnPcOffset());
 }
 
 // Copy a single parameter from the managed to the JNI calling convention
diff --git a/src/object.h b/src/object.h
index bdba37f..93e7a7a 100644
--- a/src/object.h
+++ b/src/object.h
@@ -610,20 +610,20 @@
     code_ =  reinterpret_cast<void*>(address);
   }
 
-  void SetFrameSize(size_t frame_size) {
-    frame_size_ = frame_size;
+  void SetFrameSizeInBytes(size_t frame_size_in_bytes) {
+    frame_size_in_bytes_ = frame_size_in_bytes;
   }
 
-  void SetReturnPcOffset(size_t return_pc_offset) {
-    return_pc_offset_ = return_pc_offset;
+  void SetReturnPcOffsetInBytes(size_t return_pc_offset_in_bytes) {
+    return_pc_offset_in_bytes_ = return_pc_offset_in_bytes;
   }
 
-  size_t GetFrameSize() const {
-    return frame_size_;
+  size_t GetFrameSizeInBytes() const {
+    return frame_size_in_bytes_;
   }
 
-  size_t GetReturnPcOffset() const {
-    return return_pc_offset_;
+  size_t GetReturnPcOffsetInBytes() const {
+    return return_pc_offset_in_bytes_;
   }
 
   void SetCoreSpillMask(uint32_t core_spill_mask) {
@@ -685,7 +685,7 @@
   uint16_t num_ins_;
 
   // Total size in bytes of the frame
-  size_t frame_size_;
+  size_t frame_size_in_bytes_;
 
   // Architecture-dependent register spill masks
   uint32_t core_spill_mask_;
@@ -730,7 +730,8 @@
   const uint32_t code_size_;
 
   // Offset of return PC within frame for compiled code (in bytes)
-  size_t return_pc_offset_;
+  // Offset of PC within compiled code (in bytes)
+  size_t return_pc_offset_in_bytes_;
 
   // Any native method registered with this method
   const void* native_method_;
diff --git a/src/thread.cc b/src/thread.cc
index 3284625..d730442 100644
--- a/src/thread.cc
+++ b/src/thread.cc
@@ -103,19 +103,19 @@
 
 void Frame::Next() {
   byte* next_sp = reinterpret_cast<byte*>(sp_) +
-      GetMethod()->GetFrameSize();
+      GetMethod()->GetFrameSizeInBytes();
   sp_ = reinterpret_cast<const Method**>(next_sp);
 }
 
 void* Frame::GetPC() const {
   byte* pc_addr = reinterpret_cast<byte*>(sp_) +
-      GetMethod()->GetReturnPcOffset();
+      GetMethod()->GetReturnPcOffsetInBytes();
   return reinterpret_cast<void*>(pc_addr);
 }
 
 const Method* Frame::NextMethod() const {
   byte* next_sp = reinterpret_cast<byte*>(sp_) +
-      GetMethod()->GetFrameSize();
+      GetMethod()->GetFrameSizeInBytes();
   return reinterpret_cast<const Method*>(next_sp);
 }
 
