diff options
author | 2024-10-15 20:15:17 +0800 | |
---|---|---|
committer | 2024-10-17 13:36:01 +0000 | |
commit | f0c45c0576f53b81c80a7d868d54fad41a7bae8b (patch) | |
tree | bb4ccc8eaff7379d392e943831cdbacdd74a0967 /compiler/dex/inline_method_analyser.h | |
parent | a5f50ab9af9f5456bbd4b49def3393e3986b21e1 (diff) |
fix inliner bug
I see field index of a class member variable is 0xFFFF which will cause TryPatternSubstitution throw away the iput-xxx instruction
```code
void zyb.<init>(com.mi.fitness.netproxy.NetProxyManager) (dex_method_idx=20258)
DEX CODE:
0x0000: 7010 273f 0000 | invoke-direct {v0}, void java.lang.Object.<init>() // method@16167
0x0003: 5b01 ffff | iput-object v1, v0, Lcom/mi/fitness/netproxy/NetProxyManager; zyb.a // field@65535
0x0005: 0e00 | return-void
```
Bug: 368471540
Test: the above bug doesn't reproduce
Change-Id: I6bee31e07e17982e00e0e22d476a36f554081c3d
Signed-off-by: wangmingming1 <wangmingming1@xiaomi.com>
Diffstat (limited to 'compiler/dex/inline_method_analyser.h')
-rw-r--r-- | compiler/dex/inline_method_analyser.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/dex/inline_method_analyser.h b/compiler/dex/inline_method_analyser.h index 4cd5b824f1..68e8912c93 100644 --- a/compiler/dex/inline_method_analyser.h +++ b/compiler/dex/inline_method_analyser.h @@ -76,7 +76,7 @@ struct InlineConstructorData { uint16_t iput0_arg : 4; uint16_t iput1_arg : 4; uint16_t iput2_arg : 4; - uint16_t reserved : 4; + uint16_t iput_count: 4; }; static_assert(sizeof(InlineConstructorData) == sizeof(uint64_t), "Invalid size of InlineConstructorData"); |