diff options
author | Mathieu Chartier <mathieuc@google.com> | 2015-02-24 09:37:21 -0800 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2015-02-24 10:47:02 -0800 |
commit | e5f13e57ff8fa36342beb33830b3ec5942a61cca (patch) | |
tree | 02e370ecc4e0d955f28bfc71a41015f94fbb19b7 /runtime/runtime.h | |
parent | 354d58ba776866ea7b1c71f0d0848d5aaa013ae3 (diff) | |
download | art-e5f13e57ff8fa36342beb33830b3ec5942a61cca.tar.gz art-e5f13e57ff8fa36342beb33830b3ec5942a61cca.tar.bz2 art-e5f13e57ff8fa36342beb33830b3ec5942a61cca.zip |
Revert "Revert "Add JIT""
Added missing EntryPointToCodePointer.
This reverts commit a5ca888d715cd0c6c421313211caa1928be3e399.
Change-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af
Diffstat (limited to 'runtime/runtime.h')
-rw-r--r-- | runtime/runtime.h | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/runtime/runtime.h b/runtime/runtime.h index 944c8bd0dd..5078b7f1d6 100644 --- a/runtime/runtime.h +++ b/runtime/runtime.h @@ -48,6 +48,12 @@ namespace gc { class GarbageCollector; } // namespace collector } // namespace gc + +namespace jit { + class Jit; + class JitOptions; +} // namespace jit + namespace mirror { class ArtMethod; class ClassLoader; @@ -95,12 +101,18 @@ class Runtime { static bool Create(const RuntimeOptions& options, bool ignore_unrecognized) SHARED_TRYLOCK_FUNCTION(true, Locks::mutator_lock_); + // IsAotCompiler for compilers that don't have a running runtime. Only dex2oat currently. + bool IsAotCompiler() const { + return !UseJit() && IsCompiler(); + } + + // IsCompiler is any runtime which has a running compiler, either dex2oat or JIT. bool IsCompiler() const { return compiler_callbacks_ != nullptr; } bool CanRelocate() const { - return !IsCompiler() || compiler_callbacks_->IsRelocationPossible(); + return !IsAotCompiler() || compiler_callbacks_->IsRelocationPossible(); } bool ShouldRelocate() const { @@ -339,9 +351,7 @@ class Runtime { return !imt_conflict_method_.IsNull(); } - void SetImtConflictMethod(mirror::ArtMethod* method) { - imt_conflict_method_ = GcRoot<mirror::ArtMethod>(method); - } + void SetImtConflictMethod(mirror::ArtMethod* method); void SetImtUnimplementedMethod(mirror::ArtMethod* method) { imt_unimplemented_method_ = GcRoot<mirror::ArtMethod>(method); } @@ -421,6 +431,14 @@ class Runtime { kUnload, kInitialize }; + + jit::Jit* GetJit() { + return jit_.get(); + } + bool UseJit() const { + return jit_.get() != nullptr; + } + void PreZygoteFork(); bool InitZygote(); void DidForkFromZygote(JNIEnv* env, NativeBridgeAction action, const char* isa); @@ -525,6 +543,8 @@ class Runtime { return zygote_max_failed_boots_; } + void CreateJit(); + private: static void InitPlatformSignalHandlers(); @@ -604,6 +624,9 @@ class Runtime { JavaVMExt* java_vm_; + std::unique_ptr<jit::Jit> jit_; + std::unique_ptr<jit::JitOptions> jit_options_; + // Fault message, printed when we get a SIGSEGV. Mutex fault_message_lock_ DEFAULT_MUTEX_ACQUIRED_AFTER; std::string fault_message_ GUARDED_BY(fault_message_lock_); |