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