[compiler] Add missing PropertyCellRef serialization

Bug: v8:7790, chromium:1225300
Change-Id: I36ae331db0abb072ebc597b4682c3983a00d8a1d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2999084
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Auto-Submit: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75497}
This commit is contained in:
Jakob Gruber 2021-07-01 08:44:15 +02:00 committed by V8 LUCI CQ
parent 317db29cb3
commit 64d483a0ff
2 changed files with 23 additions and 4 deletions

View File

@ -3003,10 +3003,13 @@ void SerializerForBackgroundCompilation::ProcessMapForNamedPropertyAccess(
if (lookup_start_object_map.equals(global_proxy.map())) { if (lookup_start_object_map.equals(global_proxy.map())) {
base::Optional<PropertyCellRef> cell = global_object.GetPropertyCell( base::Optional<PropertyCellRef> cell = global_object.GetPropertyCell(
name, SerializationPolicy::kSerializeIfNeeded); name, SerializationPolicy::kSerializeIfNeeded);
if (access_mode == AccessMode::kLoad && cell.has_value()) { if (cell.has_value()) {
result_hints->AddConstant( CHECK(cell->Serialize());
handle(cell->object()->value(), broker()->isolate()), zone(), if (access_mode == AccessMode::kLoad) {
broker()); result_hints->AddConstant(
handle(cell->object()->value(), broker()->isolate()), zone(),
broker());
}
} }
} }

View File

@ -0,0 +1,16 @@
// Copyright 2021 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Flags: --allow-natives-syntax --no-lazy-feedback-allocation
var __v_18 = this;
function __f_3() {
__v_18.outSideFunc = __f_6;
function __f_6() {
}
}
%PrepareFunctionForOptimization(__f_3);
__f_3();
%OptimizeFunctionOnNextCall(__f_3);
__f_3();