summaryrefslogtreecommitdiff
path: root/runtime/stack_map.h
diff options
context:
space:
mode:
author Mathieu Chartier <mathieuc@google.com> 2017-01-17 16:38:30 -0800
committer Mathieu Chartier <mathieuc@google.com> 2017-01-23 15:13:10 -0800
commit5e7c6a9223ddd11f800ea9b26fa72bece5c7d26c (patch)
tree3f34f313b7b7a97eddda4ebab1e2f8c38864c3ff /runtime/stack_map.h
parentc51842b8dd2ad57a1b05f31ab20ad01123443c50 (diff)
Add more code info size dumping to oatdump
Helps break down where oat bytes are being used, example output on a large app: OAT FILE STATS: Dumping cumulative use of 95784720 accounted bytes Code = 68894196 (72% of total) QuickMethodHeader = 3071080 ( 3% of total) CodeInfoEncoding = 1226080 ( 1% of total) CodeInfoLocationCatalog = 1005716 ( 1% of total) CodeInfoDexRegisterMap = 5813389 ( 6% of total) CodeInfoInlineInfo = 2391251 ( 2% of total) CodeInfoStackMap = 13383008 (14% of total) StackMapNativePc = 1607888 (12% of stack map) StackMapDexPcEncoding = 1116724 ( 8% of stack map) StackMapDexRegisterMap = 1277680 (10% of stack map) StackMapInlineInfo = 1082720 ( 8% of stack map) StackMapRegisterMaskEncoding = 5104960 (38% of stack map) StackMapMask = 3193034 (24% of stack map) StackMapOther = 0 ( 0% of stack map) Test: test-art-host, oatdump Bug: 34621054 Change-Id: I5daf0f1308d126b6a30928f523c6051585f1491f
Diffstat (limited to 'runtime/stack_map.h')
-rw-r--r--runtime/stack_map.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/runtime/stack_map.h b/runtime/stack_map.h
index 28c4b88fb0..cd9a3f04cf 100644
--- a/runtime/stack_map.h
+++ b/runtime/stack_map.h
@@ -1182,6 +1182,17 @@ class CodeInfo {
}
}
+ size_t GetDexRegisterMapsSize(const CodeInfoEncoding& encoding,
+ uint32_t number_of_dex_registers) const {
+ size_t total = 0;
+ for (size_t i = 0, e = GetNumberOfStackMaps(encoding); i < e; ++i) {
+ StackMap stack_map = GetStackMapAt(i, encoding);
+ DexRegisterMap map(GetDexRegisterMapOf(stack_map, encoding, number_of_dex_registers));
+ total += map.Size();
+ }
+ return total;
+ }
+
// Return the `DexRegisterMap` pointed by `inline_info` at depth `depth`.
DexRegisterMap GetDexRegisterMapAtDepth(uint8_t depth,
InlineInfo inline_info,