v8/test/mjsunit/sloppy-arguments-property-access.js
Daniel Clifford c84ca9c480 Port some SloppyArgumentsElements CSA code to Torque
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}
2020-09-14 15:44:16 +00: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();