From 9b688a095afbae21112df5d495487ac5231b12d0 Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Wed, 6 May 2015 14:12:42 +0100 Subject: Optimizing: Better invoke-static/-direct dispatch. Add framework for different types of loading ArtMethod* and code pointer retrieval. Implement invoke-static and invoke-direct calls the same way as Quick. Document the dispatch kinds in HInvokeStaticOrDirect's new enumerations MethodLoadKind and CodePtrLocation. PC-relative loads from dex cache arrays are used only for x86-64 and arm64. The implementation for other architectures will be done in separate CLs. Change-Id: I468ca4d422dbd14748e1ba6b45289f0d31734d94 --- compiler/optimizing/builder.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'compiler/optimizing/builder.h') diff --git a/compiler/optimizing/builder.h b/compiler/optimizing/builder.h index ad5d92345b..08600c756d 100644 --- a/compiler/optimizing/builder.h +++ b/compiler/optimizing/builder.h @@ -266,6 +266,12 @@ class HGraphBuilder : public ValueObject { uint32_t dex_pc, HInvoke* invoke); + HInvokeStaticOrDirect::DispatchInfo ComputeDispatchInfo(bool is_string_init, + int32_t string_init_offset, + MethodReference target_method, + uintptr_t direct_method, + uintptr_t direct_code); + ArenaAllocator* const arena_; // A list of the size of the dex code holding block information for -- cgit v1.2.3-59-g8ed1b