c84ca9c480
Specifically, all the EmitKeyedSloppyArgumentsXXX methods. Change-Id: I5d98c0f031b858e1e5342020f5ad68526c57c42a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2235694 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#69886}
68 lines
1.3 KiB
JavaScript
68 lines
1.3 KiB
JavaScript
// Copyright 2020 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
|
|
|
|
function sloppyArgumentsGenerator(a,b) {
|
|
arguments[7] = 88;
|
|
return arguments;
|
|
}
|
|
|
|
function testLoad() {
|
|
let a = sloppyArgumentsGenerator(66,55,45,77);
|
|
for (let i=0;i<2;++i) {
|
|
assertEquals(a[0], 66);
|
|
}
|
|
for (let i=0;i<2;++i) {
|
|
assertEquals(a[2], 45);
|
|
}
|
|
for (let i=0;i<2;++i) {
|
|
assertEquals(a[10], undefined);
|
|
}
|
|
for (let i=0;i<2;++i) {
|
|
assertEquals(a[6], undefined);
|
|
}
|
|
for (let i=0;i<2;++i) {
|
|
assertEquals(a[7], 88);
|
|
}
|
|
delete a[0];
|
|
for (let i=0;i<2;++i) {
|
|
assertEquals(a[0], undefined);
|
|
}
|
|
}
|
|
|
|
function testHas() {
|
|
let a = sloppyArgumentsGenerator(66,55,45,77);
|
|
for (let i=0;i<2;++i) {
|
|
assertTrue(0 in a);
|
|
}
|
|
for (let i=0;i<2;++i) {
|
|
assertTrue(2 in a);
|
|
}
|
|
for (let i=0;i<2;++i) {
|
|
assertFalse(10 in a);
|
|
}
|
|
for (let i=0;i<2;++i) {
|
|
assertFalse(6 in a);
|
|
}
|
|
for (let i=0;i<2;++i) {
|
|
assertTrue(7 in a);
|
|
}
|
|
delete a[0];
|
|
for (let i=0;i<2;++i) {
|
|
assertFalse(0 in a);
|
|
}
|
|
}
|
|
|
|
// Test once without type feedback vector
|
|
testLoad();
|
|
testHas();
|
|
|
|
%EnsureFeedbackVectorForFunction(testLoad);
|
|
%EnsureFeedbackVectorForFunction(testHas);
|
|
|
|
// Test again with type feedback vector
|
|
testLoad();
|
|
testHas();
|