| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 36d6ea870c493945536ed49df2ee99917782442b..b6070aaf12784d0a35a53c146c6b6eb32d1d28d5 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -1873,15 +1873,7 @@ void JSObject::JSObjectShortPrint(StringStream* accumulator) {
|
| }
|
| case JS_BOUND_FUNCTION_TYPE: {
|
| JSBoundFunction* bound_function = JSBoundFunction::cast(this);
|
| - Object* name = bound_function->name();
|
| accumulator->Add("<JS BoundFunction");
|
| - if (name->IsString()) {
|
| - String* str = String::cast(name);
|
| - if (str->length() > 0) {
|
| - accumulator->Add(" ");
|
| - accumulator->Put(str);
|
| - }
|
| - }
|
| accumulator->Add(
|
| " (BoundTargetFunction %p)>",
|
| reinterpret_cast<void*>(bound_function->bound_target_function()));
|
| @@ -5107,6 +5099,44 @@ MaybeHandle<Context> JSBoundFunction::GetFunctionRealm(
|
| handle(function->bound_target_function()));
|
| }
|
|
|
| +// static
|
| +MaybeHandle<String> JSBoundFunction::GetName(Isolate* isolate,
|
| + Handle<JSBoundFunction> function) {
|
| + Handle<String> prefix = isolate->factory()->bound__string();
|
| + if (!function->bound_target_function()->IsJSFunction()) return prefix;
|
| + Handle<JSFunction> target(JSFunction::cast(function->bound_target_function()),
|
| + isolate);
|
| + Handle<Object> target_name = JSFunction::GetName(isolate, target);
|
| + if (!target_name->IsString()) return prefix;
|
| + Factory* factory = isolate->factory();
|
| + return factory->NewConsString(prefix, Handle<String>::cast(target_name));
|
| +}
|
| +
|
| +// static
|
| +Handle<Object> JSFunction::GetName(Isolate* isolate,
|
| + Handle<JSFunction> function) {
|
| + if (function->shared()->name_should_print_as_anonymous()) {
|
| + return isolate->factory()->anonymous_string();
|
| + }
|
| + return handle(function->shared()->name(), isolate);
|
| +}
|
| +
|
| +// static
|
| +MaybeHandle<Smi> JSFunction::GetLength(Isolate* isolate,
|
| + Handle<JSFunction> function) {
|
| + int length = 0;
|
| + if (function->shared()->is_compiled()) {
|
| + length = function->shared()->length();
|
| + } else {
|
| + // If the function isn't compiled yet, the length is not computed
|
| + // correctly yet. Compile it now and return the right length.
|
| + if (Compiler::Compile(function, Compiler::KEEP_EXCEPTION)) {
|
| + length = function->shared()->length();
|
| + }
|
| + if (isolate->has_pending_exception()) return MaybeHandle<Smi>();
|
| + }
|
| + return handle(Smi::FromInt(length), isolate);
|
| +}
|
|
|
| // static
|
| Handle<Context> JSFunction::GetFunctionRealm(Handle<JSFunction> function) {
|
|
|