summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'runtime')
-rw-r--r--runtime/Android.mk2
-rw-r--r--runtime/arch/arm64/quick_entrypoints_arm64.S1
-rw-r--r--runtime/arch/x86/quick_entrypoints_x86.S5
-rw-r--r--runtime/arch/x86_64/quick_entrypoints_x86_64.S1
-rw-r--r--runtime/java_vm_ext.cc5
-rw-r--r--runtime/zip_archive.cc2
6 files changed, 9 insertions, 7 deletions
diff --git a/runtime/Android.mk b/runtime/Android.mk
index 5ed6955185..19079cb928 100644
--- a/runtime/Android.mk
+++ b/runtime/Android.mk
@@ -478,7 +478,7 @@ $$(ENUM_OPERATOR_OUT_GEN): $$(GENERATED_SRC_DIR)/%_operator_out.cc : $(LOCAL_PAT
# For liblog, atrace, properties, ashmem, set_sched_policy and socket_peer_is_trusted.
LOCAL_SHARED_LIBRARIES += libcutils
else # host
- LOCAL_SHARED_LIBRARIES += libziparchive-host
+ LOCAL_SHARED_LIBRARIES += libziparchive-host libz-host
# For ashmem_create_region.
LOCAL_SHARED_LIBRARIES += libcutils
endif
diff --git a/runtime/arch/arm64/quick_entrypoints_arm64.S b/runtime/arch/arm64/quick_entrypoints_arm64.S
index f3c111f99f..614936b93f 100644
--- a/runtime/arch/arm64/quick_entrypoints_arm64.S
+++ b/runtime/arch/arm64/quick_entrypoints_arm64.S
@@ -1206,6 +1206,7 @@ ENTRY art_quick_aput_obj
lsr x0, x0, #7
strb w3, [x3, x0]
ret
+ .cfi_adjust_cfa_offset 32 // 4 restores after cbz for unwinding.
.Lthrow_array_store_exception:
ldp x2, x30, [sp, #16]
.cfi_restore x2
diff --git a/runtime/arch/x86/quick_entrypoints_x86.S b/runtime/arch/x86/quick_entrypoints_x86.S
index 98d08129cf..c9bc9779dc 100644
--- a/runtime/arch/x86/quick_entrypoints_x86.S
+++ b/runtime/arch/x86/quick_entrypoints_x86.S
@@ -1185,9 +1185,9 @@ DEFINE_FUNCTION art_quick_aput_obj
pushl MIRROR_OBJECT_CLASS_OFFSET(%edx) // pass arg2 - type of the value to be stored
#endif
CFI_ADJUST_CFA_OFFSET(4)
- PUSH ebx // pass arg1 - component type of the array
+ PUSH ebx // pass arg1 - component type of the array
call SYMBOL(artIsAssignableFromCode) // (Class* a, Class* b)
- addl LITERAL(16), %esp // pop arguments
+ addl LITERAL(16), %esp // pop arguments
CFI_ADJUST_CFA_OFFSET(-16)
testl %eax, %eax
jz .Lthrow_array_store_exception
@@ -1200,6 +1200,7 @@ DEFINE_FUNCTION art_quick_aput_obj
shrl LITERAL(7), %eax
movb %dl, (%edx, %eax)
ret
+ CFI_ADJUST_CFA_OFFSET(12) // 3 POP after the jz for unwinding.
.Lthrow_array_store_exception:
POP edx
POP ecx
diff --git a/runtime/arch/x86_64/quick_entrypoints_x86_64.S b/runtime/arch/x86_64/quick_entrypoints_x86_64.S
index 259cf97407..7d86c3accd 100644
--- a/runtime/arch/x86_64/quick_entrypoints_x86_64.S
+++ b/runtime/arch/x86_64/quick_entrypoints_x86_64.S
@@ -1256,6 +1256,7 @@ DEFINE_FUNCTION art_quick_aput_obj
movb %dl, (%rdx, %rdi) // Note: this assumes that top 32b of %rdi are zero
// movb %dl, (%rdx, %rdi)
ret
+ CFI_ADJUST_CFA_OFFSET(32 + 4 * 8) // Reset unwind info so following code unwinds.
.Lthrow_array_store_exception:
RESTORE_FP_CALLEE_SAVE_FRAME
// Restore arguments.
diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc
index eb9c32d7ad..f1deacf39a 100644
--- a/runtime/java_vm_ext.cc
+++ b/runtime/java_vm_ext.cc
@@ -132,6 +132,8 @@ class SharedLibrary {
}
void* FindSymbol(const std::string& symbol_name) {
+ CHECK(!NeedsNativeBridge());
+
return dlsym(handle_, symbol_name.c_str());
}
@@ -234,9 +236,6 @@ class Libraries {
fn = library->FindSymbol(jni_long_name);
}
}
- if (fn == nullptr) {
- fn = library->FindSymbol(jni_long_name);
- }
if (fn != nullptr) {
VLOG(jni) << "[Found native code for " << PrettyMethod(m)
<< " in \"" << library->GetPath() << "\"]";
diff --git a/runtime/zip_archive.cc b/runtime/zip_archive.cc
index 88c1f69bf5..9daaf8e204 100644
--- a/runtime/zip_archive.cc
+++ b/runtime/zip_archive.cc
@@ -124,7 +124,7 @@ ZipEntry* ZipArchive::Find(const char* name, std::string* error_msg) const {
// Resist the urge to delete the space. <: is a bigraph sequence.
std::unique_ptr< ::ZipEntry> zip_entry(new ::ZipEntry);
- const int32_t error = FindEntry(handle_, ZipEntryName(name), zip_entry.get());
+ const int32_t error = FindEntry(handle_, ZipString(name), zip_entry.get());
if (error) {
*error_msg = std::string(ErrorCodeString(error));
return nullptr;