[vm/compiler] Fix LoadStaticField::ComputeCanDeoptimize
It should only return true in JIT mode similar to other calls.
Discovered when looking at allocation sinking in FFI version of
reverse-complement microbenchmark.
TEST=ci
Issue https://github.com/dart-lang/sdk/issues/40308
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-linux-release-x64-try
Change-Id: I79f432ffb88a467336fcb412a2d9fcdedc390cd8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187404
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h
index 8e19b15..a09d32c 100644
--- a/runtime/vm/compiler/backend/il.h
+++ b/runtime/vm/compiler/backend/il.h
@@ -5552,7 +5552,9 @@
return field().is_final() && !FLAG_fields_may_be_reset;
}
- virtual bool ComputeCanDeoptimize() const { return calls_initializer(); }
+ virtual bool ComputeCanDeoptimize() const {
+ return calls_initializer() && !CompilerState::Current().is_aot();
+ }
virtual bool HasUnknownSideEffects() const { return calls_initializer(); }
virtual bool CanTriggerGC() const { return calls_initializer(); }
virtual bool MayThrow() const { return calls_initializer(); }
@@ -6592,7 +6594,9 @@
DECLARE_INSTRUCTION(LoadField)
virtual CompileType ComputeType() const;
- virtual bool ComputeCanDeoptimize() const { return calls_initializer(); }
+ virtual bool ComputeCanDeoptimize() const {
+ return calls_initializer() && !CompilerState::Current().is_aot();
+ }
virtual bool HasUnknownSideEffects() const {
return calls_initializer() && !throw_exception_on_initialization();