165e725da8
This is a reland of 5dde281c87
,
after also fixing the ic-migrated-... test, in which an object died
too early.
Original change's description:
> [compiler] Fix a few test flakes and reenable the tests
>
> Bug: v8:12173
> Change-Id: I2983be9133f8ff4d1740e8eba05a3c29d603dfc3
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3168270
> Auto-Submit: Georg Neis <neis@chromium.org>
> Reviewed-by: Maya Lekova <mslekova@chromium.org>
> Commit-Queue: Maya Lekova <mslekova@chromium.org>
> Commit-Queue: Georg Neis <neis@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#76939}
Bug: v8:12173
Change-Id: If385e5c826b8470ef67f12705c5171f330f6cd57
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3171353
Auto-Submit: Georg Neis <neis@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#76946}
28 lines
758 B
JavaScript
28 lines
758 B
JavaScript
// 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 --opt
|
|
|
|
// https://bugs.chromium.org/p/v8/issues/detail?id=10816
|
|
// When V8 sees a deprecated map, update the IC with its target.
|
|
|
|
function A() { this.x = 1 }
|
|
function B() { this.x = 1 }
|
|
function load(o) { return o.x }
|
|
%PrepareFunctionForOptimization(load);
|
|
|
|
// Initialize the load IC with a map that will not be deprecated.
|
|
var a = new A();
|
|
load(a);
|
|
|
|
const oldB = new B();
|
|
(new B()).x = 1.5; // deprecates map
|
|
|
|
// Should add the target of the deprecated map to the load IC.
|
|
load(oldB);
|
|
|
|
%OptimizeFunctionOnNextCall(load);
|
|
load(oldB);
|
|
assertOptimized(load);
|