OSDN Git Service

Optimizations around escape analysis. With tests.
authorAart Bik <ajcbik@google.com>
Wed, 16 Nov 2016 18:17:46 +0000 (10:17 -0800)
committerAart Bik <ajcbik@google.com>
Wed, 30 Nov 2016 21:21:21 +0000 (13:21 -0800)
commit71bf7b43380eb445973f32a7f789d9670f8cc97d
tree76425f8578b247a845fe61724d71efc63059760f
parent52f52361c2ea37941fbda71e3c653bb8096bf516
Optimizations around escape analysis. With tests.

Details:
(1) added new intrinsics
(2) implemented optimizations
      more !can be null information
      more null check removals
      replace return-this uses with incoming parameter
      remove dead StringBuffer/Builder calls (with escape analysis)
(3) Fixed exposed bug in CanBeMoved()

Performance gain:
This improves CafeineString by about 360%
(removes null check from first loop, eliminates second loop completely)

Test: test-art-host

Change-Id: Iaf16a1b9cab6a7386f43d71c6b51dd59600e81c1
15 files changed:
compiler/intrinsics_list.h
compiler/optimizing/escape.cc
compiler/optimizing/escape.h
compiler/optimizing/instruction_simplifier.cc
compiler/optimizing/intrinsics_arm.cc
compiler/optimizing/intrinsics_arm64.cc
compiler/optimizing/intrinsics_arm_vixl.cc
compiler/optimizing/intrinsics_mips.cc
compiler/optimizing/intrinsics_mips64.cc
compiler/optimizing/intrinsics_x86.cc
compiler/optimizing/intrinsics_x86_64.cc
compiler/optimizing/load_store_elimination.cc
compiler/optimizing/nodes.h
runtime/image.cc
test/624-checker-stringops/src/Main.java