X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/2d39b0e377c0896910ee49ae70082ba665faf986..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/tests/stress/varargs-inlined-simple-exit-aliasing-weird-reversed-args.js diff --git a/tests/stress/varargs-inlined-simple-exit-aliasing-weird-reversed-args.js b/tests/stress/varargs-inlined-simple-exit-aliasing-weird-reversed-args.js new file mode 100644 index 0000000..f1fbee1 --- /dev/null +++ b/tests/stress/varargs-inlined-simple-exit-aliasing-weird-reversed-args.js @@ -0,0 +1,42 @@ +function foo(a, b) { + return a + b; +} + +function verify(a, b) { + if (a !== b) + throw "Error: the two arguments objects aren't identical."; +} + +noInline(verify); + +function bar() { + var a = arguments; + this.verify(arguments, a); + return foo.apply(null, a); +} + +function baz(a, b) { + return this.bar(a + 1, b + 1); +} + +noInline(baz); + +for (var i = 0; i < 20000; ++i) { + var o = { + baz: baz, + bar: bar, + verify: function() { } + }; + var result = o.baz(1, 2); + if (result != 1 + 1 + 2 + 1) + throw "Error: bad result: " + result; +} + +var o = { + baz: baz, + bar: bar, + verify: verify +}; +var result = o.baz(1, 2); +if (result != 1 + 1 + 2 + 1) + throw "Error: bad result at end: " + result;