From 575d3e60c68b5cf481b615dde4a16283507b19ed Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Mon, 6 Feb 2017 11:00:40 -0800 Subject: Clean up code info table layout Previously: Table layout was computed multiple places like stack_map_stream, and getters. This made it difficult to add new stack map tables and made the code hard to understand. This change makes the table layout specified all inside of the code info. Updating the layout only requires changing ComputeTableOffsets. Changed the stack map inline info offset to be an index, so that it is not require the inline infos are directly after the dex register table. Oat file size for a large app: 94459576 -> 93882040 (-0.61%) Updated oatdump and fixed a bug that was incorrectly computing the register mask bytes. Bug: 34621054 Test: test-art-host Change-Id: I3a7f141e09d5a18bce2bc6c9439835244a22016e --- runtime/quick_exception_handler.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'runtime/quick_exception_handler.cc') diff --git a/runtime/quick_exception_handler.cc b/runtime/quick_exception_handler.cc index bf995095de..72e0500457 100644 --- a/runtime/quick_exception_handler.cc +++ b/runtime/quick_exception_handler.cc @@ -441,7 +441,7 @@ class DeoptimizeStackVisitor FINAL : public StackVisitor { const uint8_t* addr = reinterpret_cast(GetCurrentQuickFrame()) + offset; value = *reinterpret_cast(addr); uint32_t bit = (offset >> 2); - if (bit < encoding.stack_mask_size_in_bits && stack_mask.LoadBit(bit)) { + if (bit < encoding.stack_mask.encoding.BitSize() && stack_mask.LoadBit(bit)) { is_reference = true; } break; -- cgit v1.2.3-59-g8ed1b