OSDN Git Service

ARM: Use hardfp calling convention between java to java call.
authorZheng Xu <zheng.xu@arm.com>
Thu, 23 Oct 2014 10:29:55 +0000 (18:29 +0800)
committerIan Rogers <irogers@google.com>
Fri, 24 Oct 2014 23:27:22 +0000 (16:27 -0700)
commit5667fdbb6e441dee7534ade18b628ed396daf593
treea06fe0a79b3465571556d13f509daf1f664fc614
parentb62ff579cd870b0bf213765b07d7b404d15ece7b
ARM: Use hardfp calling convention between java to java call.

This patch default to use hardfp calling convention. Softfp can be enabled
by setting kArm32QuickCodeUseSoftFloat to true.

We get about -1 ~ +5% performance improvement with different benchmark
tests. Hopefully, we should be able to get more performance by address the left
TODOs, as some part of the code takes the original assumption which is not
optimal.

DONE:
1. Interpreter to quick code
2. Quick code to interpreter
3. Transition assembly and callee-saves
4. Trampoline(generic jni, resolution, invoke with access check and etc.)
5. Pass fp arg reg following aapcs(gpr and stack do not follow aapcs)
6. Quick helper assembly routines to handle ABI differences
7. Quick code method entry
8. Quick code method invocation
9. JNI compiler

TODO:
10. Rework ArgMap, FlushIn, GenDalvikArgs and affected common code.
11. Rework CallRuntimeHelperXXX().

Change-Id: I9965d8a007f4829f2560b63bcbbde271bdcf6ec2
23 files changed:
compiler/dex/compiler_enums.h
compiler/dex/quick/arm/arm_lir.h
compiler/dex/quick/arm/codegen_arm.h
compiler/dex/quick/arm/int_arm.cc
compiler/dex/quick/arm/target_arm.cc
compiler/dex/quick/arm/utility_arm.cc
compiler/dex/quick/gen_invoke.cc
compiler/dex/quick/mir_to_lir.h
compiler/dex/quick/quick_compiler.cc
compiler/jni/quick/arm/calling_convention_arm.cc
compiler/optimizing/optimizing_compiler.cc
compiler/utils/arm/assembler_arm.cc
runtime/Android.mk
runtime/arch/arm/asm_support_arm.h
runtime/arch/arm/context_arm.cc
runtime/arch/arm/entrypoints_init_arm.cc
runtime/arch/arm/quick_entrypoints_arm.S
runtime/arch/arm/quick_entrypoints_cc_arm.cc [new file with mode: 0644]
runtime/arch/arm/quick_method_frame_info_arm.h
runtime/arch/arm64/quick_method_frame_info_arm64.h
runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
runtime/globals.h
runtime/mirror/art_method.cc