blob: ae347d17924c0fe8f57fb67e580c929381815a09 [file] [log] [blame]
sbarati@apple.com5bebda72015-11-10 07:48:54 +00001function foo(o, a) {
2 let x = o.g;
3 let y = o.y;
4 try {
5 o.f = 20;
6 } catch(e) {
7 return x + y + 1;
8 }
9 return x + y;
10}
11
12function assert(b) {
13 if (!b)
14 throw new Error("bad value")
15}
16noInline(assert);
17
18noInline(foo);
19var flag = false;
20function f(arg1, arg2, arg3) {
21 if (flag)
22 throw new Error("blah")
23 return arg1;
24}
25noInline(f);
26let o1 = {
27 g: 20,
28 y: 40,
29 f: null
30};
31
32let o2 = {
33 g: "g",
34 y: "y",
35 set f(v) { if (flag) throw new Error("blah"); }
36}
37
38for (let i = 0; i < 100000; i++) {
39 if (i % 2) {
40 assert(foo(o1) === 60);
41 } else {
42 assert(foo(o2) === "gy");
43 }
44}
45flag = true;
46assert(foo(o2) === "gy1");