blob: 5e940d75aed53a3ec9eec678c4e1dfafb29d2d36 [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
7function test1(s) {
8 return s.toString;
9}
10assertSame(test1(false), Boolean.prototype.toString);
11assertSame(test1(true), Boolean.prototype.toString);
12%OptimizeFunctionOnNextCall(test1);
13assertSame(test1(false), Boolean.prototype.toString);
14assertSame(test1(true), Boolean.prototype.toString);
15
16function test2(s) {
17 return s.valueOf;
18}
19assertSame(test2(false), Boolean.prototype.valueOf);
20assertSame(test2(true), Boolean.prototype.valueOf);
21%OptimizeFunctionOnNextCall(test2);
22assertSame(test2(false), Boolean.prototype.valueOf);
23assertSame(test2(true), Boolean.prototype.valueOf);
24
25Boolean.prototype.foo = 42;
26function test3(s) {
27 return s["foo"];
28}
29assertEquals(test3(false), 42);
30assertEquals(test3(true), 42);
31%OptimizeFunctionOnNextCall(test3);
32assertEquals(test3(false), 42);
33assertEquals(test3(true), 42);
34
35Boolean.prototype.bar = function bar() { "use strict"; return this; }
36function test4(s) {
37 return s.bar();
38}
39assertEquals(test4(false), false);
40assertEquals(test4(true), true);
41%OptimizeFunctionOnNextCall(test4);
42assertEquals(test4(false), false);
43assertEquals(test4(true), true);