test262-automation e9a5a7f918 [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time) (#1620)
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
2018-07-03 15:59:58 -04:00

83 lines
1.4 KiB
JavaScript

function assert(a) {
if (!a)
throw Error("bad assertion");
}
function testRegexpInline(functor) {
for (let i = 0; i < 100000; i++) {
functor();
}
gc();
// Create objects to force collected objects be reused
for (let i = 0; i < 10000000; i++) {
let a = {value: i};
}
// Checking if RegExp were collected
for (let i = 0; i < 100; i++) {
functor();
}
}
function toInlineGlobal() {
var re = /cc+/;
assert(re.test("ccc"));
assert(!re.test("abc"));
return 0;
}
function withRegexp() {
toInlineGlobal();
var re = /(ab)+/;
assert(re.test("ab"));
assert(!re.test("ba"));
return 0;
}
noInline(withRegexp);
testRegexpInline(withRegexp);
function inlineRegexpNotGlobal() {
let toInline = () => {
let re = /a+/;
assert(re.test("aaaaaa"));
assert(!re.test("bc"));
}
toInline();
}
noInline(inlineRegexpNotGlobal);
testRegexpInline(inlineRegexpNotGlobal);
function toInlineRecursive(depth) {
if (depth == 5) {
return;
}
var re = /(ef)+/;
assert(re.test("efef"));
assert(!re.test("abc"));
toInlineRecursive(depth + 1);
}
function regexpContainsRecursive() {
var re = /r+/;
toInlineRecursive(0);
assert(re.test("r"));
assert(!re.test("ab"));
}
noInline(regexpContainsRecursive);
testRegexpInline(regexpContainsRecursive);