Bug 1287525 - Part 1: Do not use RegExp.prototype[@@split] optimized path if |this| object has extra property. r=h4writer

This commit is contained in:
Tooru Fujisawa 2016-07-29 13:55:26 +09:00
Родитель 414b89d4d3
Коммит 1de3de00d8
2 изменённых файлов: 20 добавлений и 0 удалений

Просмотреть файл

@ -579,6 +579,7 @@ function IsRegExpSplitOptimizable(rx, C) {
// If RegExpPrototypeOptimizable succeeds, `RegExpProto.exec` is guaranteed
// to be a data property.
return RegExpPrototypeOptimizable(RegExpProto) &&
RegExpInstanceOptimizable(rx, RegExpProto) &&
RegExpProto.exec === RegExp_prototype_Exec;
}

Просмотреть файл

@ -0,0 +1,19 @@
var BUGNUMBER = 1287525;
var summary = 'String.prototype.split should call ToUint32(limit) before ToString(separator).';
print(BUGNUMBER + ": " + summary);
var accessed = false;
var rx = /a/;
Object.defineProperty(rx, Symbol.match, {
get() {
accessed = true;
}
});
rx[Symbol.split]("abba");
assertEq(accessed, true);
if (typeof reportCompare === "function")
reportCompare(true, true);