History log of /art/compiler/debug/elf_debug_line_writer.h
Revision Date Author Comments
09ed09866da6d8c7448ef297c148bfa577a247c2 12-Feb-2016 David Srbecky <dsrbecky@google.com> Pack stack map entries on bit level to save space.

Use only the minimum number of bits required to store stack map data.
For example, if native_pc needs 5 bits and dex_pc needs 3 bits, they
will share the first byte of the stack map entry.

The header is changed to store bit offsets of the fields rather than
byte sizes. Offsets also make it easier to access later fields without
calculating sum of all previous sizes.

All of the header fields are byte sized or encoded as ULEB128 instead
of the previous fixed size encoding. This shrinks it by about half.

It saves 3.6 MB from non-debuggable boot.oat (AOSP).
It saves 3.1 MB from debuggable boot.oat (AOSP).

It saves 2.8 MB (of 99.4 MB) from /system/framework/arm/ (GOOG).
It saves 1.0 MB (of 27.8 MB) from /system/framework/oat/arm/ (GOOG).

Field loads from stackmaps seem to get around 10% faster.
(based on the time it takes to load all stackmap entries from boot.oat)

Bug: 27640410
Change-Id: I8bf0996b4eb24300c1b0dfc6e9d99fe85d04a1b7
6a6b38fbed22688fac7e061450a8a9c64a685faf 11-Mar-2016 David Srbecky <dsrbecky@google.com> Revert "Revert "Allow duplicated methods in different DWARF line tables.""

This reverts commit 8862fac4a0b97d827d2808146d2d79b8d799b998.

Change-Id: I4d5629df4580b7ac08a5cb04924c56eecad3ad25
09c2a6be63337ee060e2d54bd01cf18be7301d29 11-Mar-2016 David Srbecky <dsrbecky@google.com> Add trampoline symbols to native debug info.

The debugger needs them to unwind through the trampolines and to
understand what is happening in the call stack.

Change-Id: Ia554058c3796788adcd7336d620a7734eb366905
252fa90d25eb3fa9c4189304d021533c9657fea7 11-Mar-2016 David Srbecky <dsrbecky@google.com> DWARF: Compensate for compiler's off-by-one instruction.

The compiler generates stackmaps with PC value which is *after*
the instruction rather PC of the instruction itself. This causes
trouble when generating native line number mapping since the
branch instruction itself will not be mapped, and consequently
we get incorrect line number in backtraces. Add code to compensate
for this. See the in-code comment for more details.

Change-Id: I72c992e6d08a767f314290d562421b251ae60732
8862fac4a0b97d827d2808146d2d79b8d799b998 11-Mar-2016 David Srbecky <dsrbecky@google.com> Revert "Allow duplicated methods in different DWARF line tables."

This reverts commit 3c5462364daee17e651299f1c370f965f34baed8.

Change-Id: Icc63c47cd53abeff2a470ae84715012a1ef988ac
3c5462364daee17e651299f1c370f965f34baed8 11-Mar-2016 David Srbecky <dsrbecky@google.com> Allow duplicated methods in different DWARF line tables.

This makes the compilation units more self-contained.
If method is mentioned in the compilation unit, we can
also find its line table there. Otherwise, we would have
to search through all of them.

Change-Id: I0cdfb9006e796e41e123fc1f4fecd15312570068
197160d47f34238cb5e7444fa4c2de300db8e2c6 07-Mar-2016 David Srbecky <dsrbecky@google.com> Refactor MethodDebugInfo (input of DWARF writer).

Do not pass CompiledMethod pointer through since it is only available
during AOT compile but not during JIT compile or at runtime. Creating
mock CompiledMethod just pass data is proving increasingly tricky, so
copy the fields that we need to MethodDebugInfo instead.

Change-Id: I820297b41e769fcac488c0ff2d2ea0492bb13ed8
91cc06c1814bd1d0fd6635bc3d7632a2bb7b0e7c 07-Mar-2016 David Srbecky <dsrbecky@google.com> Mark DWARF lines in non-debuggable methods as "not a statement".

This is a hint to the debugger that breakpoints and stepping
might not function as intended (since we have limited information).

Change-Id: I23c4a816182cc7548fcd69fbd00112225e7b1710
99b87ebbe287ddadf530b217b11a38226bca4367 09-Feb-2016 David Srbecky <dsrbecky@google.com> Change how DWARF detects end of prologue.

Instead of ignoring stack map without dex register maps altogether,
explicitly calculate end of prologue as first stack map which has
dex register maps. This gives us more line number mappings.

Change-Id: I643cf0f9daf9762d894fbc94f5ff981ef6c0583b
c5bfa97c47d656b76f297af8abcd5f7502987399 05-Feb-2016 David Srbecky <dsrbecky@google.com> Split elf_writer_debug.cc to several files.

Refactoring only. The file has grown significantly over time,
and it is time to split it so it can be better managed.

Change-Id: Idce0231718add722292f4701df353d5baf31de5f