OLD | NEW |
---|---|
1 // Copyright 2014 the V8 project authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/arguments.h" | 8 #include "src/arguments.h" |
9 #include "src/compiler.h" | 9 #include "src/compiler.h" |
10 #include "src/deoptimizer.h" | 10 #include "src/deoptimizer.h" |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
319 CONVERT_ARG_CHECKED(Object, object, 0); | 319 CONVERT_ARG_CHECKED(Object, object, 0); |
320 | 320 |
321 if (object->IsJSFunction()) { | 321 if (object->IsJSFunction()) { |
322 JSFunction* func = JSFunction::cast(object); | 322 JSFunction* func = JSFunction::cast(object); |
323 func->shared()->set_native(true); | 323 func->shared()->set_native(true); |
324 } | 324 } |
325 return isolate->heap()->undefined_value(); | 325 return isolate->heap()->undefined_value(); |
326 } | 326 } |
327 | 327 |
328 | 328 |
329 RUNTIME_FUNCTION(Runtime_IsConstructor) { | |
330 HandleScope handles(isolate); | |
331 RUNTIME_ASSERT(args.length() == 1); | |
332 | |
333 CONVERT_ARG_CHECKED(Object, object, 0); | |
Dmitry Lomov (no reviews)
2015/01/19 11:39:46
Must be CONVERT_HANDLE_ARG_CHECKED.
| |
334 | |
335 // TODO(caitp): implement this in a better/simpler way, allow inlining via TF | |
336 if (object->IsJSFunction()) { | |
337 JSFunction* func = JSFunction::cast(object); | |
338 bool should_have_prototype = func->should_have_prototype(); | |
339 if (func->shared()->bound()) { | |
340 Handle<FixedArray> bound_args = | |
341 Handle<FixedArray>(FixedArray::cast(func->function_bindings())); | |
342 Handle<Object> bound_function( | |
343 JSReceiver::cast(bound_args->get(JSFunction::kBoundFunctionIndex)), | |
344 isolate); | |
345 if (bound_function->IsJSFunction()) { | |
346 JSFunction* bound = JSFunction::cast(*bound_function); | |
347 DCHECK(!bound->shared()->bound()); | |
348 should_have_prototype = bound->should_have_prototype(); | |
349 } | |
350 } | |
351 return isolate->heap()->ToBoolean(should_have_prototype); | |
352 } | |
353 return isolate->heap()->false_value(); | |
354 } | |
355 | |
356 | |
329 RUNTIME_FUNCTION(Runtime_SetInlineBuiltinFlag) { | 357 RUNTIME_FUNCTION(Runtime_SetInlineBuiltinFlag) { |
330 SealHandleScope shs(isolate); | 358 SealHandleScope shs(isolate); |
331 RUNTIME_ASSERT(args.length() == 1); | 359 RUNTIME_ASSERT(args.length() == 1); |
332 CONVERT_ARG_HANDLE_CHECKED(Object, object, 0); | 360 CONVERT_ARG_HANDLE_CHECKED(Object, object, 0); |
333 | 361 |
334 if (object->IsJSFunction()) { | 362 if (object->IsJSFunction()) { |
335 JSFunction* func = JSFunction::cast(*object); | 363 JSFunction* func = JSFunction::cast(*object); |
336 func->shared()->set_inline_builtin(true); | 364 func->shared()->set_inline_builtin(true); |
337 } | 365 } |
338 return isolate->heap()->undefined_value(); | 366 return isolate->heap()->undefined_value(); |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
615 | 643 |
616 | 644 |
617 RUNTIME_FUNCTION(RuntimeReference_IsFunction) { | 645 RUNTIME_FUNCTION(RuntimeReference_IsFunction) { |
618 SealHandleScope shs(isolate); | 646 SealHandleScope shs(isolate); |
619 DCHECK(args.length() == 1); | 647 DCHECK(args.length() == 1); |
620 CONVERT_ARG_CHECKED(Object, obj, 0); | 648 CONVERT_ARG_CHECKED(Object, obj, 0); |
621 return isolate->heap()->ToBoolean(obj->IsJSFunction()); | 649 return isolate->heap()->ToBoolean(obj->IsJSFunction()); |
622 } | 650 } |
623 } | 651 } |
624 } // namespace v8::internal | 652 } // namespace v8::internal |
OLD | NEW |