summaryrefslogtreecommitdiff
path: root/disassembler/disassembler.h
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2016-08-09 11:04:26 +0100
committerVladimir Marko <vmarko@google.com>2016-09-05 17:27:41 +0100
commit70e97462116a47ef2e582ea29a037847debcc029 (patch)
treeee587e35b9b9483c35875ccc8ddea139978ca823 /disassembler/disassembler.h
parent521691ae4dfad47cf6b46858347fa5fa32fd7bcc (diff)
Avoid excessive spill slots for slow paths.
Reducing the frame size makes stack maps smaller as we need fewer bits for stack masks and some dex register locations may use short location kind rather than long. On Nexus 9, AOSP ToT, the boot.oat size reduction is prebuilt multi-part boot image: - 32-bit boot.oat: -416KiB (-0.6%) - 64-bit boot.oat: -635KiB (-0.9%) prebuilt multi-part boot image with read barrier: - 32-bit boot.oat: -483KiB (-0.7%) - 64-bit boot.oat: -703KiB (-0.9%) on-device built single boot image: - 32-bit boot.oat: -380KiB (-0.6%) - 64-bit boot.oat: -632KiB (-0.9%) on-device built single boot image with read barrier: - 32-bit boot.oat: -448KiB (-0.6%) - 64-bit boot.oat: -692KiB (-0.9%) The other benefit is that at runtime, threads may need fewer pages for their stacks, reducing overall memory usage. We defer the calculation of the maximum spill size from the main register allocator (linear scan or graph coloring) to the RegisterAllocationResolver and do it based on the live registers at slow path safepoints. The old notion of an artificial slow path safepoint interval is removed as it is no longer needed. Test: Run ART test suite on host and Nexus 9. Bug: 30212852 Change-Id: I40b3d114e278e2c5807982904fa49bf6642c6275
Diffstat (limited to 'disassembler/disassembler.h')
0 files changed, 0 insertions, 0 deletions