From 0d127e10de0b06ec22d8e855d1d62773c4ede101 Mon Sep 17 00:00:00 2001 From: Roland Levillain Date: Wed, 5 Jul 2017 17:01:11 +0100 Subject: Do not refresh the Marking Register in CriticalNative methods. CriticalNative methods shall not be suspended and hence do not require MR to be refreshed in compiled JNI code. This change is for ARM and ARM64 only. Impact on Critical Native benchmarks times (median of 10 runs, lower is better): * angler-userdebug - ARMv7 ** All cores NativeDowncallStaticCritical -2.78% NativeDowncallStaticCritical6 -1.79% ** Little cores only NativeDowncallStaticCritical -1.66% NativeDowncallStaticCritical6 -1.27% ** Big cores only NativeDowncallStaticCritical -2.66% NativeDowncallStaticCritical6 -1.70% * angler-userdebug - ARMv8 ** All cores NativeDowncallStaticCritical -3.52% NativeDowncallStaticCritical6 -1.79% ** Little cores only NativeDowncallStaticCritical -1.63% NativeDowncallStaticCritical6 -1.27% ** Big cores only NativeDowncallStaticCritical -3.87% NativeDowncallStaticCritical6 -1.75% Test: m test-art-target Test: m test-art-target with tree built with ART_USE_READ_BARRIER=false Test: m test-art-host-gtest Test: ARM64 device boot test Test: ARM device boot test Bug: b/37707231 Change-Id: I95d61b9ecde0afffdd5fd44763b19caa06025ec8 --- compiler/utils/mips64/assembler_mips64.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'compiler/utils/mips64/assembler_mips64.cc') diff --git a/compiler/utils/mips64/assembler_mips64.cc b/compiler/utils/mips64/assembler_mips64.cc index 183b5e507b..606d4c39d0 100644 --- a/compiler/utils/mips64/assembler_mips64.cc +++ b/compiler/utils/mips64/assembler_mips64.cc @@ -3406,7 +3406,8 @@ void Mips64Assembler::BuildFrame(size_t frame_size, } void Mips64Assembler::RemoveFrame(size_t frame_size, - ArrayRef callee_save_regs) { + ArrayRef callee_save_regs, + bool may_suspend ATTRIBUTE_UNUSED) { CHECK_ALIGNED(frame_size, kStackAlignment); DCHECK(!overwriting_); cfi_.RememberState(); -- cgit v1.2.3-59-g8ed1b