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
|