diff --git a/src/common_test.h b/src/common_test.h
index a9bd139..cdcac24 100644
--- a/src/common_test.h
+++ b/src/common_test.h
@@ -231,7 +231,9 @@
     } else {
       const std::vector<uint8_t>& invoke_stub = compiled_invoke_stub->GetCode();
       MakeExecutable(invoke_stub);
-      method_invoke_stub = reinterpret_cast<const Method::InvokeStub*>(&invoke_stub[0]);
+      method_invoke_stub = reinterpret_cast<const Method::InvokeStub*>(
+          CompiledCode::CodePointer(&invoke_stub[0],
+                                    compiled_invoke_stub->GetInstructionSet()));
     }
 
     LOG(INFO) << "MakeExecutable " << PrettyMethod(method)
diff --git a/src/oat_file.cc b/src/oat_file.cc
index e97e70c..239239b 100644
--- a/src/oat_file.cc
+++ b/src/oat_file.cc
@@ -435,6 +435,8 @@
     if (code == 0) {
       return 0;
     }
+    // TODO: make this Thumb2 specific
+    code &= ~0x1;
     return reinterpret_cast<uint32_t*>(code)[-1];
   } else {
 #if !defined(ART_USE_LLVM_COMPILER)
diff --git a/src/oat_writer.cc b/src/oat_writer.cc
index ec25ae9..2558eba 100644
--- a/src/oat_writer.cc
+++ b/src/oat_writer.cc
@@ -377,7 +377,8 @@
       const std::vector<uint8_t>& invoke_stub = compiled_invoke_stub->GetCode();
       uint32_t invoke_stub_size = invoke_stub.size() * sizeof(invoke_stub[0]);
       CHECK_NE(invoke_stub_size, 0U);
-      invoke_stub_offset = offset + sizeof(invoke_stub_size);
+      uint32_t thumb_offset = compiled_invoke_stub->CodeDelta();
+      invoke_stub_offset = offset + sizeof(invoke_stub_size) + thumb_offset;
 
       // Deduplicate invoke stubs
       SafeMap<const std::vector<uint8_t>*, uint32_t>::iterator stub_iter = code_offsets_.find(&invoke_stub);
@@ -760,7 +761,7 @@
       CHECK_NE(invoke_stub_size, 0U);
 
       // Deduplicate invoke stubs
-      size_t offset = code_offset + sizeof(invoke_stub_size);
+      size_t offset = code_offset + sizeof(invoke_stub_size) + compiled_invoke_stub->CodeDelta();
       SafeMap<const std::vector<uint8_t>*, uint32_t>::iterator stub_iter =
           code_offsets_.find(&invoke_stub);
       if (stub_iter != code_offsets_.end() && offset != method_offsets.invoke_stub_offset_) {
diff --git a/src/object.h b/src/object.h
index 6334f8e..efdc3d7 100644
--- a/src/object.h
+++ b/src/object.h
@@ -840,11 +840,13 @@
   }
 
   uint32_t GetInvokeStubSize() const {
-    const uint32_t* invoke_stub = reinterpret_cast<const uint32_t*>(GetInvokeStub());
-    if (invoke_stub == NULL) {
+    uintptr_t invoke_stub = reinterpret_cast<uintptr_t>(GetInvokeStub());
+    if (invoke_stub == 0) {
       return 0;
     }
-    return invoke_stub[-1];
+    // TODO: make this Thumb2 specific
+    invoke_stub &= ~0x1;
+    return reinterpret_cast<const uint32_t*>(invoke_stub)[-1];
   }
 
   uint32_t GetOatInvokeStubOffset() const {
