diff options
Diffstat (limited to 'src/compiler.h')
-rw-r--r-- | src/compiler.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/compiler.h b/src/compiler.h index c0732aab94..5ae46d5940 100644 --- a/src/compiler.h +++ b/src/compiler.h @@ -94,6 +94,10 @@ class Compiler { const CompiledInvokeStub* FindInvokeStub(bool is_static, const char* shorty) const; const CompiledInvokeStub* FindInvokeStub(const std::string& key) const; +#if defined(ART_USE_LLVM_COMPILER) + const CompiledInvokeStub* FindProxyStub(const char* shorty) const; +#endif + // Callbacks from OAT/ART compiler to see what runtime checks must be generated bool CanAssumeTypeIsPresentInDexCache(const DexCache* dex_cache, uint32_t type_idx); @@ -281,6 +285,10 @@ class Compiler { void InsertInvokeStub(const std::string& key, const CompiledInvokeStub* compiled_invoke_stub); +#if defined(ART_USE_LLVM_COMPILER) + void InsertProxyStub(const char* shorty, const CompiledInvokeStub* compiled_proxy_stub); +#endif + std::vector<const PatchInformation*> code_to_patch_; std::vector<const PatchInformation*> methods_to_patch_; @@ -301,6 +309,13 @@ class Compiler { mutable Mutex compiled_invoke_stubs_lock_; InvokeStubTable compiled_invoke_stubs_; +#if defined(ART_USE_LLVM_COMPILER) + typedef SafeMap<std::string, const CompiledInvokeStub*> ProxyStubTable; + // Proxy stubs created for proxy invocation delegation + mutable Mutex compiled_proxy_stubs_lock_; + ProxyStubTable compiled_proxy_stubs_; +#endif + bool image_; size_t thread_count_; bool support_debugging_; @@ -338,6 +353,10 @@ class Compiler { CreateInvokeStubFn create_invoke_stub_; #if defined(ART_USE_LLVM_COMPILER) + typedef CompiledInvokeStub* (*CreateProxyStubFn) + (Compiler& compiler, const char* shorty, uint32_t shorty_len); + CreateProxyStubFn create_proxy_stub_; + typedef void (*CompilerEnableAutoElfLoadingFn)(Compiler& compiler); CompilerEnableAutoElfLoadingFn compiler_enable_auto_elf_loading_; |