diff options
author | 2024-01-22 15:03:42 +0000 | |
---|---|---|
committer | 2024-01-22 16:20:41 +0000 | |
commit | 31b949bc4a76e5c6d00a8e18c346f123b5321a1c (patch) | |
tree | b60da081b30899a7447c63ccad60cc4519de9d00 /compiler/optimizing/write_barrier_elimination.cc | |
parent | 689cca840843eeced3206da16e475856de953360 (diff) |
Revert^4 "Disable write-barrier elimination pass"
This reverts commit b5b98b9bb31acb2deffb692c50d0fbc71476663b.
Reason for revert: Breaks tests in arm64 + heap poison configurations
Bug: 310755375
Bug: 260843353
Change-Id: I682c74987a365497e0dbe47eba26a9ccf0513561
Diffstat (limited to 'compiler/optimizing/write_barrier_elimination.cc')
-rw-r--r-- | compiler/optimizing/write_barrier_elimination.cc | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/compiler/optimizing/write_barrier_elimination.cc b/compiler/optimizing/write_barrier_elimination.cc index 27348cd87d..6182125b74 100644 --- a/compiler/optimizing/write_barrier_elimination.cc +++ b/compiler/optimizing/write_barrier_elimination.cc @@ -21,8 +21,8 @@ #include "base/scoped_arena_containers.h" #include "optimizing/nodes.h" -// TODO(b/310755375, solanes): Enable WBE with the fixes. -constexpr bool kWBEEnabled = true; +// TODO(b/310755375, solanes): Disable WBE while we investigate crashes. +constexpr bool kWBEEnabled = false; namespace art HIDDEN { @@ -58,7 +58,7 @@ class WBEVisitor final : public HGraphVisitor { DCHECK(it->second->AsInstanceFieldSet()->GetWriteBarrierKind() != WriteBarrierKind::kDontEmit); DCHECK_EQ(it->second->GetBlock(), instruction->GetBlock()); - it->second->AsInstanceFieldSet()->SetWriteBarrierKind(WriteBarrierKind::kEmitBeingReliedOn); + it->second->AsInstanceFieldSet()->SetWriteBarrierKind(WriteBarrierKind::kEmitNoNullCheck); instruction->SetWriteBarrierKind(WriteBarrierKind::kDontEmit); MaybeRecordStat(stats_, MethodCompilationStat::kRemovedWriteBarrier); } else { @@ -84,7 +84,7 @@ class WBEVisitor final : public HGraphVisitor { DCHECK(it->second->IsStaticFieldSet()); DCHECK(it->second->AsStaticFieldSet()->GetWriteBarrierKind() != WriteBarrierKind::kDontEmit); DCHECK_EQ(it->second->GetBlock(), instruction->GetBlock()); - it->second->AsStaticFieldSet()->SetWriteBarrierKind(WriteBarrierKind::kEmitBeingReliedOn); + it->second->AsStaticFieldSet()->SetWriteBarrierKind(WriteBarrierKind::kEmitNoNullCheck); instruction->SetWriteBarrierKind(WriteBarrierKind::kDontEmit); MaybeRecordStat(stats_, MethodCompilationStat::kRemovedWriteBarrier); } else { @@ -112,7 +112,8 @@ class WBEVisitor final : public HGraphVisitor { DCHECK(it->second->IsArraySet()); DCHECK(it->second->AsArraySet()->GetWriteBarrierKind() != WriteBarrierKind::kDontEmit); DCHECK_EQ(it->second->GetBlock(), instruction->GetBlock()); - it->second->AsArraySet()->SetWriteBarrierKind(WriteBarrierKind::kEmitBeingReliedOn); + // We never skip the null check in ArraySets so that value is already set. + DCHECK(it->second->AsArraySet()->GetWriteBarrierKind() == WriteBarrierKind::kEmitNoNullCheck); instruction->SetWriteBarrierKind(WriteBarrierKind::kDontEmit); MaybeRecordStat(stats_, MethodCompilationStat::kRemovedWriteBarrier); } else { |