diff options
| author | 2017-01-17 16:38:30 -0800 | |
|---|---|---|
| committer | 2017-01-23 15:13:10 -0800 | |
| commit | 5e7c6a9223ddd11f800ea9b26fa72bece5c7d26c (patch) | |
| tree | 3f34f313b7b7a97eddda4ebab1e2f8c38864c3ff /runtime/stack_map.h | |
| parent | c51842b8dd2ad57a1b05f31ab20ad01123443c50 (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.h | 11 | 
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,  |