blob: 9a7e992ada2f060b49f80ad2a6aaa8240325145d [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 m = (function() {
8 "use asm";
9 function f(x) {
10 return x < 0;
11 }
12 function g(x) {
13 return 0 < x;
14 }
15 return { f: f, g: g };
16})();
17var f = m.f;
18var g = m.g;
19
20var counter = 0;
21
22function deopt(f) {
23 return {
24 toString : function() {
25 %DeoptimizeFunction(f);
26 counter++;
27 return "2";
28 }
29 };
30}
31
32assertEquals(false, f(deopt(f)));
33assertEquals(1, counter);
34
35assertEquals(true, g(deopt(g)));
36assertEquals(2, counter);
37
38%OptimizeFunctionOnNextCall(f);
39assertEquals(false, f(deopt(f)));
40assertEquals(3, counter);
41
42%OptimizeFunctionOnNextCall(g);
43assertEquals(true, g(deopt(g)));
44assertEquals(4, counter);