Implement proxy stub for compiler_llvm.
Change-Id: Id8ba59c62795d885a18b3cc634e7ef370a2d2f97
diff --git a/src/object.h b/src/object.h
index f5970f6..e787933 100644
--- a/src/object.h
+++ b/src/object.h
@@ -861,6 +861,22 @@
return OFFSET_OF_OBJECT_MEMBER(Method, invoke_stub_);
}
+#if defined(ART_USE_LLVM_COMPILER)
+ // Proxy stub entry point
+ const void* GetProxyStub() const {
+ // NOTE: LLVM doesn't use vmap table, so we reuse it for proxy stub.
+ const void* result = GetFieldPtr<const void*>(
+ OFFSET_OF_OBJECT_MEMBER(Method, vmap_table_), false);
+ // TODO: DCHECK(result != NULL); should be ahead of time compiled
+ return result;
+ }
+
+ void SetProxyStub(const void* proxy_stub) {
+ SetFieldPtr<const void*>(OFFSET_OF_OBJECT_MEMBER(Method, vmap_table_),
+ proxy_stub, false);
+ }
+#endif
+
static MemberOffset GetMethodIndexOffset() {
return OFFSET_OF_OBJECT_MEMBER(Method, method_index_);
}