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

211 lines
4.1 KiB
JavaScript

//@ runShadowChicken
"use strict";
var shadowChickenFunctionsOnStack = $vm.shadowChickenFunctionsOnStack;
var verbose = false;
load("resources/shadow-chicken-support.js");
initialize();
(function test1() {
function foo() {
expectStack([foo, bar, baz, test1]);
}
function bar() {
return foo();
}
function baz() {
return bar();
}
baz();
})();
(function test2() {
function foo() {
}
function bar() {
return foo();
}
function baz() {
return bar();
}
baz();
})();
(function test3() {
if (verbose) {
print("test3:");
print("bob = " + describe(bob));
print("thingy = " + describe(thingy));
print("foo = " + describe(foo));
print("bar = " + describe(bar));
print("baz = " + describe(baz));
}
function bob() {
if (verbose)
print("Doing bob...");
expectStack([bob, thingy, foo, bar, baz, test3]);
}
function thingy() {
return bob();
}
function foo() {
if (verbose)
print("Doing foo...");
expectStack([foo, bar, baz, test3]);
return thingy();
}
function bar() {
return foo();
}
function baz() {
return bar();
}
baz();
})();
(function test4() {
if (verbose) {
print("test4:");
print("bob = " + describe(bob));
print("thingy = " + describe(thingy));
print("foo = " + describe(foo));
print("bar = " + describe(bar));
print("baz = " + describe(baz));
}
function bob(thingyIsTail) {
if (verbose)
print("Doing bob...");
expectStack([bob, thingy, foo, bar, baz, test4]);
}
function thingy(isTail) {
bob(false);
return bob(isTail);
}
function foo() {
if (verbose)
print("Doing foo...");
expectStack([foo, bar, baz, test4]);
thingy(false);
return thingy(true);
}
function bar() {
foo();
return foo();
}
function baz() {
bar();
return bar();
}
baz();
})();
(function test5a() {
if (verbose)
print("In test5a:");
var foos = 50;
function foo(ttl) {
if (ttl <= 1) {
var array = [];
for (var i = 0; i < foos; ++i)
array.push(foo);
array.push(test5a);
expectStack(array);
return;
}
return foo(ttl - 1);
}
foo(foos);
})();
(function test5b() {
if (verbose)
print("In test5b:");
var foos = 100;
function foo(ttl) {
if (ttl <= 1) {
var array = [];
for (var i = 0; i < foos; ++i)
array.push(foo);
array.push(test5b);
expectStack(array);
return;
}
return foo(ttl - 1);
}
foo(foos);
})();
(function test6() {
if (verbose) {
print("In test6");
print("foo = " + describe(foo));
print("array.push = " + describe([].push));
}
var foos = 128;
function foo(ttl) {
if (ttl <= 1) {
var array = [];
for (var i = 0; i < foos; ++i)
array.push(foo);
array.push(test6);
expectStack(array);
return;
}
return foo(ttl - 1);
}
foo(foos);
if (verbose)
print("Done with test6.");
})();
(function test7() {
var foos = 200000;
function foo(ttl) {
if (ttl <= 1) {
var stack = shadowChickenFunctionsOnStack();
var expectedStack = [];
expectedStack.push(shadowChickenFunctionsOnStack);
while (expectedStack.length < stack.length - 2)
expectedStack.push(foo);
expectedStack.push(test7);
expectedStack.push(stackTop);
compareStacks(stack, expectedStack);
return;
}
return foo(ttl - 1);
}
foo(foos);
})();