chrome-che...@chops-service-accounts.iam.gserviceaccount.com would like Darius Mercadier and v8-s...@luci-project-accounts.iam.gserviceaccount.com to review this change.
[M150] [maglev] Skip stale maps in StoreMap alias invalidation
Original change's description:
> [maglev] Skip stale maps in StoreMap alias invalidation
>
> Fixed: 528501127
> Change-Id: Icce0566468bb46dfd352e05a105646ba3f3b9ad4
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/8019002
> Reviewed-by: Darius Mercadier <dmerc...@chromium.org>
> Commit-Queue: Victor Gomes <victo...@chromium.org>
> Commit-Queue: Darius Mercadier <dmerc...@chromium.org>
> Auto-Submit: Victor Gomes <victo...@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#108302}
(cherry picked from commit 9068d5fc068f85d0eb723d9b63f15fb56c6db725)
diff --git a/src/maglev/maglev-known-node-aspects.cc b/src/maglev/maglev-known-node-aspects.cc
index fa5cc31..fc44406 100644
--- a/src/maglev/maglev-known-node-aspects.cc
+++ b/src/maglev/maglev-known-node-aspects.cc
@@ -344,7 +344,7 @@
if (!node->is_transitioning()) return;
if (NodeInfo* node_info = TryGetInfoFor(node->ValueInput().node())) {
- if (node_info->possible_maps_are_known() &&
+ if (node_info->possible_maps_are_known() && !node_info->maps_are_stale() &&
node_info->possible_maps().size() == 1) {
compiler::MapRef old_map = node_info->possible_maps().at(0);
auto MaybeAliases = [&](compiler::MapRef map) -> bool {
diff --git a/test/mjsunit/turbolev/regress-528501127.js b/test/mjsunit/turbolev/regress-528501127.js
new file mode 100644
index 0000000..8a8e17d
--- /dev/null
+++ b/test/mjsunit/turbolev/regress-528501127.js
@@ -0,0 +1,25 @@
+// Copyright 2026 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 --turbolev
+
+function f(a, b) {
+ let tr = (a.w * 1.5) | 0;
+ a.x = 1.1;
+ let t1 = b.x;
+ a.y = 2.2;
+ let t2 = b.x;
+ b.z = 3.3;
+ return tr + t1 + t2;
+}
+%PrepareFunctionForOptimization(f);
+{ let a = {w: 0.5}; let b = {w: 0.5}; b.x = 1.1; f(a, b); }
+%OptimizeFunctionOnNextCall(f);
+{ let a = {w: 0.5}; let b = {w: 0.5}; b.x = 1.1; f(a, b); }
+
+let o = {w: 0.5};
+f(o, o);
+assertEquals("w,x,y,z", Object.keys(o).join(","));
+assertEquals(2.2, o.y);
+assertEquals(3.3, o.z);
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Code-Review | +1 |
| Commit-Queue | +2 |
lgtm
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
[M150] [maglev] Skip stale maps in StoreMap alias invalidation
Original change's description:
> [maglev] Skip stale maps in StoreMap alias invalidation
>
> Fixed: 528501127
> Change-Id: Icce0566468bb46dfd352e05a105646ba3f3b9ad4
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/8019002
> Reviewed-by: Darius Mercadier <dmerc...@chromium.org>
> Commit-Queue: Victor Gomes <victo...@chromium.org>
> Commit-Queue: Darius Mercadier <dmerc...@chromium.org>
> Auto-Submit: Victor Gomes <victo...@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#108302}
(cherry picked from commit 9068d5fc068f85d0eb723d9b63f15fb56c6db725)
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |