Disable double const store check to see impact on canary

R=tebbi@chromium.org

Bug: chromium:964833
Change-Id: I798f7c38eacaa16011ab7cc9ac4dea066078fbb5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1643170
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Georg Schmid <gsps@google.com>
Cr-Commit-Position: refs/heads/master@{#61977}
This commit is contained in:
Georg Schmid 2019-06-04 10:13:51 +02:00 committed by Commit Bot
parent 9c3546889c
commit 021ce3b5d9

View File

@ -923,18 +923,20 @@ Reduction LoadElimination::ReduceStoreField(Node* node,
FieldInfo const* lookup_result =
state->LookupField(object, field_index, constness);
if (lookup_result) {
if (lookup_result && constness == PropertyConstness::kMutable) {
// At runtime, we should never encounter
// - any store replacing existing info with a different, incompatible
// representation, nor
// - two consecutive const stores.
// However, we may see such code statically, so we guard against
// executing it by emitting Unreachable.
// TODO(gsps): Re-enable the double const store check once we have
// identified other FieldAccesses that should be marked mutable
// instead of const (cf. JSCreateLowering::AllocateFastLiteral).
bool incompatible_representation =
!lookup_result->name.is_null() &&
!IsCompatible(representation, lookup_result->representation);
if (incompatible_representation ||
constness == PropertyConstness::kConst) {
if (incompatible_representation) {
Node* control = NodeProperties::GetControlInput(node);
Node* unreachable =
graph()->NewNode(common()->Unreachable(), effect, control);