45a2d9c518
Since 94ce16b704
, when loading an iterator from null or undefined, we
generate the error message "x is not iterable" instead of the unwieldy
"Cannot read property 'Symbol(Symbol.iterator)' of undefined". However
Runtime::GetObjectProperty, which is used as slow path by LoadICs, did
not check for this case, leading to different messages being generated
depending on IC state.
Bug: chromium:823130
Change-Id: Ie98500b97efef401aac9880b9af47d58c3c2825d
Reviewed-on: https://chromium-review.googlesource.com/1042951
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#52974}
41 lines
741 B
JavaScript
41 lines
741 B
JavaScript
// Copyright 2018 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: --expose-gc
|
|
|
|
var __v_1 = new Array();
|
|
var __v_2 = 0x30;
|
|
var __v_4 = "abc";
|
|
var __v_3 = "def";
|
|
|
|
function __f_2(b) {
|
|
[...b];
|
|
}
|
|
__f_2([1]);
|
|
__f_2([3.3]);
|
|
__f_2([{}]);
|
|
|
|
var vars = [__v_1, __v_2, __v_3, __v_4];
|
|
|
|
for (var j = 0; j < vars.length && j < 7; j++) {
|
|
for (var k = j; k < vars.length && k < 7 + j; k++) {
|
|
var v1 = vars[j];
|
|
var e1, e2;
|
|
try {
|
|
__f_2(v1);
|
|
__f_2();
|
|
} catch (e) {
|
|
e1 = "" + e;
|
|
}
|
|
gc();
|
|
try {
|
|
__f_2(v1);
|
|
__f_2();
|
|
} catch (e) {
|
|
e2 = "" + e;
|
|
}
|
|
assertEquals(e1, e2);
|
|
}
|
|
}
|