| // Copyright 2015 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Flags: --allow-natives-syntax |
| |
| function test_function(o) { |
| if (%_ClassOf(o) === "Function") { |
| return true; |
| } else { |
| return false; |
| } |
| } |
| |
| var non_callable = new Proxy({}, {}); |
| var callable = new Proxy(function(){}.__proto__, {}); |
| var constructable = new Proxy(function(){}, {}); |
| |
| assertFalse(test_function(non_callable)); |
| assertTrue(test_function(callable)); |
| assertTrue(test_function(constructable)); |
| |
| %OptimizeFunctionOnNextCall(test_function); |
| |
| assertFalse(test_function(non_callable)); |
| assertTrue(test_function(callable)); |
| assertTrue(test_function(constructable)); |