1// Copyright 2014 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 --fold-constants
6
7function test() {
8  assertEquals("string", typeof "");
9  assertEquals("number", typeof 1.1);
10  assertEquals("number", typeof 1);
11  assertEquals("boolean", typeof true);
12  assertEquals("function", typeof function() {});
13  assertEquals("object", typeof null);
14  assertEquals("object", typeof {});
15  assertEquals("object", typeof /regex/);
16
17  assertTrue(%_IsSmi(1));
18  assertFalse(%_IsSmi(1.1));
19  assertFalse(%_IsSmi({}));
20
21  assertTrue(%_IsRegExp(/regexp/));
22  assertFalse(%_IsRegExp({}));
23
24  assertTrue(%_IsArray([1]));
25  assertFalse(%_IsArray(function() {}));
26
27  assertTrue(%_IsFunction(function() {}));
28  assertFalse(%_IsFunction(null));
29
30  assertTrue(%_IsJSReceiver(new Date()));
31  assertFalse(%_IsJSReceiver(1));
32
33  assertTrue(%_IsMinusZero(-0.0));
34  assertFalse(%_IsMinusZero(1));
35  assertFalse(%_IsMinusZero(""));
36}
37
38
39test();
40test();
41%OptimizeFunctionOnNextCall(test);
42test();
43