v8/test/mjsunit/regress/regress-crbug-882233-2.js
Camillo Bruni dbe98c8090 [turbofan] Fix some tests
Stress configurations cause maps to be GC'ed too early.
We now keep them alive by storing the object in a global variable.

Bug: v8:10892
Change-Id: If03c42612d9907b3b6d0df8bb2de879857a89e0a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2404774
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69862}
2020-09-14 07:52:22 +00:00

37 lines
1.1 KiB
JavaScript

// Copyright 2018 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
// Intended to test bug [882233] on TF inlined (js-call-reducer) path.
function shift_array() {
let array = [];
Object.defineProperty(array, 'length', {writable : false});
out = array; // Prevent array's map from dying too early.
return array.shift();
}
%PrepareFunctionForOptimization(shift_array);
assertThrows(shift_array);
assertThrows(shift_array);
%OptimizeFunctionOnNextCall(shift_array);
assertThrows(shift_array);
assertOptimized(shift_array);
function shift_object() {
let object = { length: 0 };
Object.defineProperty(object, 'length', {writable : false});
out = object; // Prevent object's map from dying too early.
return object.shift();
}
%PrepareFunctionForOptimization(shift_object);
assertThrows(shift_object);
assertThrows(shift_object);
%OptimizeFunctionOnNextCall(shift_object);
assertThrows(shift_object);
assertOptimized(shift_object);