js/src/jit-test/tests/ion/bug813784.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Test an inlined argument returns the arguments from the right function */
     2 function get_arg_2() { return arguments[2]; }
     3 function test() { return get_arg_2(1,2,3); }
     5 assertEq(test("a","b","c"), 3);
     6 assertEq(test("a","b","c"), 3);
     8 /* Test the right length of the argument vector gets returned */
     9 function arg_len() { return arguments.length; }
    10 function test2() { return arg_len(1,2,3); }
    12 assertEq(test2("a","b","c","d"), 3);
    13 assertEq(test2("a","b","c","d"), 3);
    15 /* Test returning the argument vector */
    16 function get_arg() { return arguments; }
    17 function test3() { return get_arg(1,2,3) }
    19 var arg = test3("a","b","c","d","e");
    20 assertEq(arg.length, 3);
    21 assertEq(arg[0], 1);
    22 assertEq(arg[1], 2);
    23 assertEq(arg[2], 3);
    24 var arg = test3("a","b","c","d","e");
    25 assertEq(arg.length, 3);
    26 assertEq(arg[0], 1);
    27 assertEq(arg[1], 2);
    28 assertEq(arg[2], 3);
    30 /* Test funapply with arguments */
    31 function return0(a, b, c) { return 0; }
    32 function funapply() { return return0.apply({}, arguments); }
    33 function test4() { return funapply(1,2,3) }
    35 assertEq(test4("a","b","c","d","e"), 0);
    36 assertEq(test4("a","b","c","d","e"), 0);
    38 /* Test if funapply gets the right arguments */
    39 function apply3(a, b, c) {
    40   assertEq(a,1)
    41   assertEq(b,2)
    42   assertEq(c,3)
    43 }
    44 function funapply2() { return apply3.apply({}, arguments); }
    45 function test5() { return funapply2(1,2,3) }
    47 test5("a","b","c","d","e");
    48 test5("a","b","c","d","e");
    50 /* Test funapply when argument vector has less args than callee and callee known */
    51 function apply_fun1(a, b, c) { assertEq(c, undefined) }
    52 function funapply3() { return apply_fun1.apply({}, arguments); }
    53 function test7() { return funapply3(1,2) }
    55 test7("a","b","c","d","e");
    56 test7("a","b","c","d","e");
    58 /* Test funapply when argument vector has less args than callee and callee unknown */
    59 var fun;
    60 function apply_fun2(a, b, c) { assertEq(c, undefined) }
    61 function funapply4() { return fun.apply({}, arguments); }
    62 function test8() { return funapply4(1,2) }
    64 fun = apply_fun1;
    65 test8("a","b","c","d","e");
    66 fun = apply_fun2;
    67 test8("a","b","c","d","e");
    68 fun = apply_fun1;
    69 test8("a","b","c","d","e");
    70 fun = apply_fun2;
    71 test8("a","b","c","d","e");
    73 ////////////
    75 function dumpArgs(i) { if (i == 90) return funapply5.arguments.length; return [i]; }
    76 function funapply5() { return dumpArgs.apply({}, arguments); }
    77 function test9(i) { return funapply5(i); }
    79 assertEq(test9(89)[0], 89);
    80 assertEq(test9(90), 1);
    82 /////////////
    84 function notinlined() {
    85     assertEq(arguments[0], 4);
    86     assertEq(arguments[1], 5);
    87     assertEq(arguments[2], 6);
    88 }
    90 function inline2(a) { return notinlined(4,5,6); }
    91 function inline() { return inline2(1,2,3); }
    92 function base1() { return inline(-1,-2,-3); }
    94 base1(10,11,12);
    95 base1(10,11,12);
    97 ////////////////
    99 function inlined(a) {
   100     if (a == 11) {
   101         a = undefined;
   102         return arguments;
   103     }
   104 }
   106 function inline4(a) { return inlined(a,5,6); }
   107 function inline3(a) { return inline4(a,2,3); }
   108 function base2(a) { return inline3(a,-2,-3); }
   110 var args = base2(10,11,12);
   111 assertEq(args, undefined);
   112 var args = base2(11,11,12);
   113 assertEq(args[0], undefined);
   114 assertEq(args[1], 5);
   115 assertEq(args[2], 6);
   116 var args = base2(10,11,12);
   117 assertEq(args, undefined);
   118 var args = base2(11,11,12);
   119 assertEq(args[0], undefined);
   120 assertEq(args[1], 5);
   121 assertEq(args[2], 6);
   123 //////////////////
   125 function arg_len2() { assertEq(arguments.length, 4); }
   126 function bailing_arg_len(a) {
   127     if (a == 90) {
   128         bailout();
   129         arg_len.apply({}, arguments);
   130     }
   131     assertEq(arguments.length, 4);
   132     return arguments;
   133 }
   134 function test10(i) { return bailing_arg_len(i,2,3,4); }
   136 var args = test10(1, "b");
   137 assertEq(args.length, 4)
   138 assertEq(args[0], 1)
   139 assertEq(args[1], 2)
   140 assertEq(args[2], 3)
   141 assertEq(args[3], 4)
   143 var args = test10(90, 'b');
   144 assertEq(args.length, 4)
   145 assertEq(args[0], 90)
   146 assertEq(args[1], 2)
   147 assertEq(args[2], 3)
   148 assertEq(args[3], 4)
   150 ////////////
   152 function dumpArgs11(i) { return funapply11.arguments; eval(""); }
   153 function funapply11(i) { return dumpArgs11(i); }
   154 function test11(i) { return funapply11(i); }
   156 assertEq(test11(89)[0], 89);
   157 assertEq(test11(90)[0], 90);
   159 ////////////
   161 function dumpArgs12(i) { if (i == 90) return funapply12.arguments; return [i]; }
   162 function noion12(i) { return dumpArgs12(i); eval(""); }
   163 function funapply12(i) { return noion12(i); }
   164 function test12(i) { return funapply12(i); }
   166 assertEq(test12("89")[0], "89");
   167 assertEq(test12("90")[0], "90");
   169 ////////////
   171 function f13(i) { if (i == "90") return f13.arguments; return [i]; }
   172 function test13(i,b) { return f13(i,b); }
   174 assertEq(test13("89", 1)[0], "89");
   175 assertEq(test13("90", 2)[1], 2);
   177 ///////////
   179 function noion14(i) { if (i == 2) { return funapply14.arguments; } return [i]; eval(""); }
   180 function funapply14(i) {  if (i == 90) { i = "2"; } return noion14(i); }
   181 function test14(i) { return funapply14(i); }
   183 assertEq(test14("89")[0], "89");
   184 assertEq(test14("90")[0], "2");

mercurial