Wed, 31 Dec 2014 06:09:35 +0100
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");