blob: 2132ad2c00d1038843ac767e54b74a52822adb72 [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// Copyright 2015 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Flags: --allow-natives-syntax
6
7var boom = { valueOf: function() { throw "boom" } };
8
9function mult_left_plain(x) {
10 try {
11 return 2 * x;
12 } catch (e) {
13 return e;
14 }
15}
16
17%OptimizeFunctionOnNextCall(mult_left_plain);
18assertEquals("boom", mult_left_plain(boom));
19assertEquals(46, mult_left_plain(23));
20
21function mult_right_plain(x) {
22 try {
23 return x * 3;
24 } catch (e) {
25 return e;
26 }
27}
28
29%OptimizeFunctionOnNextCall(mult_right_plain);
30assertEquals("boom", mult_right_plain(boom));
31assertEquals(69, mult_right_plain(23));
32
33function mult_none_plain(x,y) {
34 try {
35 return x * y;
36 } catch (e) {
37 return e;
38 }
39}
40
41%OptimizeFunctionOnNextCall(mult_none_plain);
42assertEquals("boom", mult_none_plain(boom, boom));
43assertEquals("boom", mult_none_plain(boom, 2));
44assertEquals("boom", mult_none_plain(2, boom));
45assertEquals(966, mult_none_plain(23, 42));