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