diff options
| author | 2017-02-06 08:27:55 +0000 | |
|---|---|---|
| committer | 2017-02-06 08:27:56 +0000 | |
| commit | fe076a51b0498c2771341cc09a77db15b437328f (patch) | |
| tree | 6f6e0c250e2ecc450567f90a7792f51f8d6b3384 /compiler/optimizing/nodes.cc | |
| parent | 8781fe65fe41d971173bb2d05afe0dc00b5c08ce (diff) | |
| parent | 83c8e27a292e6e002fb3b3def75cf6d8653378e8 (diff) | |
Merge "Code refactoring around sharpening HLoadClass."
Diffstat (limited to 'compiler/optimizing/nodes.cc')
| -rw-r--r-- | compiler/optimizing/nodes.cc | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc index 76900f23a9..abbb91a1a9 100644 --- a/compiler/optimizing/nodes.cc +++ b/compiler/optimizing/nodes.cc @@ -2464,16 +2464,15 @@ bool HLoadClass::InstructionDataEquals(const HInstruction* other) const { } } -void HLoadClass::SetLoadKindInternal(LoadKind load_kind) { - // Once sharpened, the load kind should not be changed again. - // Also, kReferrersClass should never be overwritten. - DCHECK_EQ(GetLoadKind(), LoadKind::kDexCacheViaMethod); +void HLoadClass::SetLoadKind(LoadKind load_kind) { SetPackedField<LoadKindField>(load_kind); - if (load_kind != LoadKind::kDexCacheViaMethod) { + if (load_kind != LoadKind::kDexCacheViaMethod && + load_kind != LoadKind::kReferrersClass) { RemoveAsUserOfInput(0u); SetRawInputAt(0u, nullptr); } + if (!NeedsEnvironment()) { RemoveEnvironment(); SetSideEffects(SideEffects::None()); |