v8/test/mjsunit/regress/regress-1204748.js
Thibaud Michaud f6a3ef5643 [regalloc] Avoid duplicate moves for slot constraint
We potentially emitted the same gap move multiple times to satisfy slot
constraint of live ranges defined by a constant. Avoid this by keeping
track of already spilled ranges for a given instruction.

This is not expected to cause any regression because this case is rare.
If it does, a better approach to save allocations would be to re-use the
same vector by storing it somewhere that survives the function calls,
e.g. in the ConstraintBuilder.

Drive-by: Remove unused functions.

R=sigurds@chromium.org
CC=nicohartmann@chromium.org

Bug: chromium:1204748
Change-Id: I75a838a8b27775ecdeddb4c60cf72c56d5f1c2a4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2871462
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#74375}
2021-05-05 09:51:27 +00:00

25 lines
646 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 --assert-types
function __f_2(__v_4, __v_5) {
let __v_6 = __v_4 >= __v_5;
while (__v_6 != 0) {
__v_4 = __v_4 | __v_5 - __v_4;
let __v_7 = __v_4 >= __v_5;
new Int32Array(__v_4);
__v_6 = __v_4 < __v_5;
}
}
function __f_3() {
__f_2(Infinity, 1);
__f_2();
}
%PrepareFunctionForOptimization(__f_3);
%PrepareFunctionForOptimization(__f_2);
__f_3();
%OptimizeFunctionOnNextCall(__f_3);
__f_3();