Complete direct, static & virtual invoke
Reworked direct/static invoke to use code_and_method_ structure. Removed
slow/fast path distinction for direct/static (because there is only
a single path). Added fast and reworked slow path for virtual invokes.
Change-Id: I037aee26b63244d03ac2bd8720d8c55e256b9b4d
diff --git a/src/object.h b/src/object.h
index 5a47c46..046f74e 100644
--- a/src/object.h
+++ b/src/object.h
@@ -903,6 +903,18 @@
return OFFSET_OF_OBJECT_MEMBER(Method, invoke_stub_);
}
+ static MemberOffset GetDexCacheCodeAndDirectMethodsOffset() {
+ return OFFSET_OF_OBJECT_MEMBER(Method, dex_cache_code_and_direct_methods_);
+ }
+
+ static MemberOffset GetDexCacheResolvedMethodsOffset() {
+ return OFFSET_OF_OBJECT_MEMBER(Method, dex_cache_resolved_methods_);
+ }
+
+ static MemberOffset GetMethodIndexOffset() {
+ return OFFSET_OF_OBJECT_MEMBER(Method, method_index_);
+ }
+
void SetInvokeStub(const InvokeStub* new_invoke_stub) {
SetFieldPtr<const InvokeStub*>(
OFFSET_OF_OBJECT_MEMBER(Method, invoke_stub_), new_invoke_stub, false);