| ;(function () { |
| function foo(a, b) { |
| var result = null; |
| try { |
| result = a == b; |
| } catch(e) { |
| } |
| } |
| noInline(foo); |
| |
| for (var i = 0; i < 1000; i++) { |
| foo(10, 20); |
| foo({}, {}); |
| foo(10, 10.0); |
| foo("hello", "hello"); |
| foo(null, undefined); |
| foo(false, 0); |
| } |
| |
| var o = { |
| valueOf: function() { return {}; }, |
| toString: function() { return {}; } |
| }; |
| foo(o, "hello"); |
| })(); |
| |
| |
| function assert(b) { |
| if (!b) |
| throw new Error("Bad assertion"); |
| } |
| noInline(assert); |
| |
| |
| ;(function() { |
| |
| var _shouldDoSomethingInFinally = false; |
| function shouldDoSomethingInFinally() { return _shouldDoSomethingInFinally; } |
| noInline(shouldDoSomethingInFinally); |
| |
| function foo(a, b) { |
| var result = null; |
| try { |
| result = a == b; |
| } finally { |
| if (shouldDoSomethingInFinally()) |
| assert(result === null); |
| } |
| return result; |
| } |
| noInline(foo); |
| |
| for (var i = 0; i < 1000; i++) { |
| foo(10, 20); |
| foo({}, {}); |
| foo(10, 10.0); |
| foo("hello", "hello"); |
| foo(null, undefined); |
| foo(false, 0); |
| } |
| |
| var o = { |
| valueOf: function() { return {}; }, |
| toString: function() { return {}; } |
| }; |
| try { |
| _shouldDoSomethingInFinally = true; |
| foo(o, "hello"); |
| } catch(e) {} |
| |
| })(); |