X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/2d39b0e377c0896910ee49ae70082ba665faf986..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/tests/stress/varargs-inlined-simple-exit-aliasing.js diff --git a/tests/stress/varargs-inlined-simple-exit-aliasing.js b/tests/stress/varargs-inlined-simple-exit-aliasing.js new file mode 100644 index 0000000..23890d1 --- /dev/null +++ b/tests/stress/varargs-inlined-simple-exit-aliasing.js @@ -0,0 +1,41 @@ +function foo(a, b) { + return a + b; +} + +function verify(a, b) { + if (a !== b) + throw "Error: the two arguments objects aren't identical."; + if (a[0] !== 42) + throw "Error: the first argument isn't 42 (a)."; + if (b[0] !== 42) + throw "Error: the first argument isn't 42 (b)."; +} + +noInline(verify); + +var global = false; +function bar(x) { + var a = arguments; + if (global) { + x = 42; + verify(arguments, a); + } + return foo.apply(null, a); +} + +function baz(a, b) { + return bar(a, b); +} + +noInline(baz); + +for (var i = 0; i < 10000; ++i) { + var result = baz(1, 2); + if (result != 1 + 2) + throw "Error: bad result: " + result; +} + +global = true; +var result = baz(1, 2); +if (result != 42 + 2) + throw "Error: bad result at end: " + result;