OSDN Git Service

Optimize IMT
authorNelli Kim <nelli.kim@samsung.com>
Fri, 13 May 2016 10:08:53 +0000 (13:08 +0300)
committerMathieu Chartier <mathieuc@google.com>
Tue, 21 Jun 2016 16:50:26 +0000 (09:50 -0700)
commit0790af1391b316c5c12b4e135be357008c060696
tree70b2b7e0db8c107b737df1e2aa0f19fe5c4219c2
parenta6eb11d1bc3b174feeb64d06eb92cd10e81808d7
Optimize IMT

* Remove IMT for classes which do not implement interfaces
* Remove IMT for array classes
* Share same IMT

Saved memory (measured on hammerhead):
boot.art:
Total number of classes: 3854
Number of affected classes: 1637
Saved memory: 409kB

Chrome (excluding classes in boot.art):
Total number of classes: 2409
Number of affected classes: 1259
Saved memory: 314kB

Google Maps (excluding classes in boot.art):
Total number of classes: 6988
Number of affected classes: 2574
Saved memory: 643kB

Performance regression on benchmarks/InvokeInterface.java benchmark
(measured timeCall10Interface)
1st launch: 9.6%
2nd launch: 6.8%

Bug: 29188168

(cherry picked from commit badee9820fcf5dca5f8c46c3215ae1779ee7736e)

Change-Id: If8db765e3333cb78eb9ef0d66c2fc78a5f17f497
27 files changed:
compiler/driver/compiler_driver.cc
compiler/image_writer.cc
compiler/image_writer.h
compiler/optimizing/code_generator_arm.cc
compiler/optimizing/code_generator_arm64.cc
compiler/optimizing/code_generator_mips.cc
compiler/optimizing/code_generator_mips64.cc
compiler/optimizing/code_generator_x86.cc
compiler/optimizing/code_generator_x86_64.cc
compiler/optimizing/inliner.cc
patchoat/patchoat.cc
patchoat/patchoat.h
runtime/art_method.h
runtime/class_linker.cc
runtime/class_linker.h
runtime/class_linker_test.cc
runtime/entrypoints/entrypoint_utils-inl.h
runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
runtime/gc/space/image_space.cc
runtime/image-inl.h
runtime/image.cc
runtime/image.h
runtime/imtable.h [new file with mode: 0644]
runtime/interpreter/interpreter_common.h
runtime/mirror/class-inl.h
runtime/mirror/class.cc
runtime/mirror/class.h