1// 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
7function test(expected, f) {
8  assertEquals(expected, f());
9  assertEquals(expected, f());
10  %OptimizeFunctionOnNextCall(f);
11  assertEquals(expected, f());
12  assertEquals(expected, f());
13}
14
15function testThrows(f) {
16  assertThrows(f);
17  assertThrows(f);
18  %OptimizeFunctionOnNextCall(f);
19  assertThrows(f);
20  assertThrows(f);
21}
22
23// --- Constant case.
24var a = 11;
25
26function f1() { return a; }
27test(11, f1);
28
29delete a;
30
31test(11, f1);
32
33
34// --- SMI case.
35
36var b = 11;
37b = 12;
38b = 13;
39
40function f2() { return b; }
41test(13, f2);
42
43delete b;
44
45test(13, f2);
46
47
48// --- double case.
49
50var c = 11;
51c = 12.25;
52c = 13.25;
53
54function f3() { return c; }
55test(13.25, f3);
56
57delete c;
58
59test(13.25, f3);
60
61
62// --- tagged case.
63
64var d = 11;
65d = 12.25;
66d = "hello";
67
68function f4() { return d; }
69test("hello", f4);
70
71delete d;
72
73test("hello", f4);
74