Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| --enable-legacy-regexp; skip-if: !getBuildConfiguration("debug")
load(libdir + 'asserts.js');
function testSubclassProtoJitBug() {
class MyRegExp extends RegExp {}
let real = RegExp("ab|cd");
let fake = new MyRegExp("ab|cd");
fake.__proto__ = RegExp.prototype;
function foo(r) {
return r.test("ab");
}
for (var i = 0; i < 2000; i++) {
foo(real);
}
assertEq(RegExp.lastMatch, "ab");
foo(fake);
assertThrowsInstanceOf(() => RegExp.lastMatch, TypeError);
}
testSubclassProtoJitBug();