node/deps/v8/test/mjsunit/sloppy-arguments-property-access.js
Michaël Zasso 48db20f6f5
deps: update V8 to 8.7.220
PR-URL: https://github.com/nodejs/node/pull/35700
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
2020-11-15 16:46:54 +01:00

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