diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/common_compiler_test.h | 5 | ||||
-rw-r--r-- | compiler/image_writer.cc | 3 |
2 files changed, 6 insertions, 2 deletions
diff --git a/compiler/common_compiler_test.h b/compiler/common_compiler_test.h index 586c442227..7a91e47fb1 100644 --- a/compiler/common_compiler_test.h +++ b/compiler/common_compiler_test.h @@ -130,6 +130,9 @@ static inline InstructionSetFeatures ParseFeatureList(std::string str) { return result; } +// Normally the ClassLinker supplies this. +extern "C" void art_quick_generic_jni_trampoline(mirror::ArtMethod*); + class CommonCompilerTest : public CommonRuntimeTest { public: // Create an OatMethod based on pointers (for unit tests). @@ -217,7 +220,7 @@ class CommonCompilerTest : public CommonRuntimeTest { oat_method.LinkMethod(method); method->SetEntryPointFromInterpreter(interpreter::artInterpreterToInterpreterBridge); } else { - const void* method_code = GetQuickGenericJniTrampoline(); + const void* method_code = reinterpret_cast<void*>(art_quick_generic_jni_trampoline); OatFile::OatMethod oat_method = CreateOatMethod(method_code, nullptr); oat_method.LinkMethod(method); diff --git a/compiler/image_writer.cc b/compiler/image_writer.cc index 20a66d4022..eb1c5811c7 100644 --- a/compiler/image_writer.cc +++ b/compiler/image_writer.cc @@ -757,7 +757,8 @@ void ImageWriter::PatchOatCodeAndMethods() { uintptr_t value = quick_code - patch_location + patch->RelativeOffset(); SetPatchLocation(patch, value); } else { - if (quick_code == reinterpret_cast<uintptr_t>(GetQuickToInterpreterBridge())) { + if (quick_code == reinterpret_cast<uintptr_t>(GetQuickToInterpreterBridge()) || + quick_code == reinterpret_cast<uintptr_t>(class_linker->GetQuickGenericJniTrampoline())) { if (target->IsNative()) { // generic JNI, not interpreter bridge from GetQuickOatCodeFor(). code_offset = quick_generic_jni_trampoline_offset_; |