v8/test/mjsunit/sloppy-arguments-property-access.js

68 lines
1.3 KiB
JavaScript
Raw Normal View History

// 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();