From e5f13e57ff8fa36342beb33830b3ec5942a61cca Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Tue, 24 Feb 2015 09:37:21 -0800 Subject: Revert "Revert "Add JIT"" Added missing EntryPointToCodePointer. This reverts commit a5ca888d715cd0c6c421313211caa1928be3e399. Change-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af --- runtime/jit/jit.h | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 runtime/jit/jit.h (limited to 'runtime/jit/jit.h') diff --git a/runtime/jit/jit.h b/runtime/jit/jit.h new file mode 100644 index 0000000000..b80015feca --- /dev/null +++ b/runtime/jit/jit.h @@ -0,0 +1,102 @@ +/* + * Copyright 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ART_RUNTIME_JIT_JIT_H_ +#define ART_RUNTIME_JIT_JIT_H_ + +#include + +#include "instrumentation.h" + +#include "atomic.h" +#include "base/macros.h" +#include "base/mutex.h" +#include "gc_root.h" +#include "jni.h" +#include "object_callbacks.h" +#include "thread_pool.h" + +namespace art { + +class CompilerCallbacks; +struct RuntimeArgumentMap; + +namespace jit { + +class JitCodeCache; +class JitInstrumentationCache; +class JitOptions; + +class Jit { + public: + static constexpr bool kStressMode = kIsDebugBuild; + static constexpr size_t kDefaultCompileThreshold = kStressMode ? 1 : 1000; + + virtual ~Jit(); + static Jit* Create(JitOptions* options, std::string* error_msg); + bool CompileMethod(mirror::ArtMethod* method, Thread* self) + SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); + void CreateInstrumentationCache(size_t compile_threshold); + void CreateThreadPool(); + CompilerCallbacks* GetCompilerCallbacks() { + return compiler_callbacks_; + } + const JitCodeCache* GetCodeCache() const { + return code_cache_.get(); + } + JitCodeCache* GetCodeCache() { + return code_cache_.get(); + } + void DeleteThreadPool(); + + private: + Jit(); + bool LoadCompiler(std::string* error_msg); + + // JIT compiler + void* jit_library_handle_; + void* jit_compiler_handle_; + void* (*jit_load_)(CompilerCallbacks**); + void (*jit_unload_)(void*); + bool (*jit_compile_method_)(void*, mirror::ArtMethod*, Thread*); + + std::unique_ptr instrumentation_cache_; + std::unique_ptr code_cache_; + CompilerCallbacks* compiler_callbacks_; // Owned by the jit compiler. +}; + +class JitOptions { + public: + static JitOptions* CreateFromRuntimeArguments(const RuntimeArgumentMap& options); + size_t GetCompileThreshold() const { + return compile_threshold_; + } + size_t GetCodeCacheCapacity() const { + return code_cache_capacity_; + } + + private: + size_t code_cache_capacity_; + size_t compile_threshold_; + + JitOptions() : code_cache_capacity_(0), compile_threshold_(0) { + } +}; + +} // namespace jit +} // namespace art + +#endif // ART_RUNTIME_JIT_JIT_H_ -- cgit v1.2.3