From fa888d06fd9ae90565254456e9b2e0cd62fbc91f Mon Sep 17 00:00:00 2001 From: Sebastien Hertz Date: Tue, 30 Sep 2014 12:00:11 +0200 Subject: [PATCH] Revert "Enable computed goto interpreter on the host" This reverts commit 66d9bdb94f21106aaaa31a8fd686098672075e04. Bug: 17716550 Change-Id: Ib404242c86e96e8edf019a2dcc14f0f8294b79e8 --- runtime/Android.mk | 5 ++++- runtime/interpreter/interpreter.cc | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/runtime/Android.mk b/runtime/Android.mk index 46b2e1049..61bc9ff23 100644 --- a/runtime/Android.mk +++ b/runtime/Android.mk @@ -79,7 +79,6 @@ LIBART_COMMON_SRC_FILES := \ intern_table.cc \ interpreter/interpreter.cc \ interpreter/interpreter_common.cc \ - interpreter/interpreter_goto_table_impl.cc \ interpreter/interpreter_switch_impl.cc \ java_vm_ext.cc \ jdwp/jdwp_event.cc \ @@ -201,6 +200,10 @@ LIBART_COMMON_SRC_FILES += \ entrypoints/quick/quick_throw_entrypoints.cc \ entrypoints/quick/quick_trampoline_entrypoints.cc +# Source files that only compile with GCC. +LIBART_GCC_ONLY_SRC_FILES := \ + interpreter/interpreter_goto_table_impl.cc + LIBART_TARGET_LDFLAGS := LIBART_HOST_LDFLAGS := diff --git a/runtime/interpreter/interpreter.cc b/runtime/interpreter/interpreter.cc index d2fcc644a..07224efbf 100644 --- a/runtime/interpreter/interpreter.cc +++ b/runtime/interpreter/interpreter.cc @@ -316,7 +316,35 @@ enum InterpreterImplKind { kComputedGotoImplKind // Computed-goto-based interpreter implementation. }; +#if !defined(__clang__) static constexpr InterpreterImplKind kInterpreterImplKind = kComputedGotoImplKind; +#else +// Clang 3.4 fails to build the goto interpreter implementation. +static constexpr InterpreterImplKind kInterpreterImplKind = kSwitchImpl; +template +JValue ExecuteGotoImpl(Thread* self, MethodHelper& mh, const DexFile::CodeItem* code_item, + ShadowFrame& shadow_frame, JValue result_register) { + LOG(FATAL) << "UNREACHABLE"; + exit(0); +} +// Explicit definitions of ExecuteGotoImpl. +template<> SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) +JValue ExecuteGotoImpl(Thread* self, MethodHelper& mh, + const DexFile::CodeItem* code_item, + ShadowFrame& shadow_frame, JValue result_register); +template<> SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) +JValue ExecuteGotoImpl(Thread* self, MethodHelper& mh, + const DexFile::CodeItem* code_item, + ShadowFrame& shadow_frame, JValue result_register); +template<> SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) +JValue ExecuteGotoImpl(Thread* self, MethodHelper& mh, + const DexFile::CodeItem* code_item, + ShadowFrame& shadow_frame, JValue result_register); +template<> SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) +JValue ExecuteGotoImpl(Thread* self, MethodHelper& mh, + const DexFile::CodeItem* code_item, + ShadowFrame& shadow_frame, JValue result_register); +#endif static JValue Execute(Thread* self, MethodHelper& mh, const DexFile::CodeItem* code_item, ShadowFrame& shadow_frame, JValue result_register) -- 2.11.0