| Index: src/messages.cc
|
| diff --git a/src/messages.cc b/src/messages.cc
|
| index c21f96c0187a91370c44f0b948a27fbaf68b6da9..bd2792ec25f490a668e66678e658951d54d25e1c 100644
|
| --- a/src/messages.cc
|
| +++ b/src/messages.cc
|
| @@ -280,22 +280,27 @@ Handle<String> MessageTemplate::FormatMessage(Isolate* isolate,
|
| int template_index,
|
| Handle<Object> arg) {
|
| Factory* factory = isolate->factory();
|
| - Handle<String> fmt_str = factory->InternalizeOneByteString(
|
| - STATIC_CHAR_VECTOR("$noSideEffectToString"));
|
| - Handle<JSFunction> fun = Handle<JSFunction>::cast(
|
| - Object::GetProperty(isolate->js_builtins_object(), fmt_str)
|
| - .ToHandleChecked());
|
| -
|
| - MaybeHandle<Object> maybe_result =
|
| - Execution::TryCall(fun, isolate->js_builtins_object(), 1, &arg);
|
| - Handle<Object> result;
|
| - if (!maybe_result.ToHandle(&result) || !result->IsString()) {
|
| - return factory->InternalizeOneByteString(STATIC_CHAR_VECTOR("<error>"));
|
| + Handle<String> result_string;
|
| + if (arg->IsString()) {
|
| + result_string = Handle<String>::cast(arg);
|
| + } else {
|
| + Handle<String> fmt_str = factory->InternalizeOneByteString(
|
| + STATIC_CHAR_VECTOR("$noSideEffectToString"));
|
| + Handle<JSFunction> fun = Handle<JSFunction>::cast(
|
| + Object::GetProperty(isolate->js_builtins_object(), fmt_str)
|
| + .ToHandleChecked());
|
| +
|
| + MaybeHandle<Object> maybe_result =
|
| + Execution::TryCall(fun, isolate->js_builtins_object(), 1, &arg);
|
| + Handle<Object> result;
|
| + if (!maybe_result.ToHandle(&result) || !result->IsString()) {
|
| + return factory->InternalizeOneByteString(STATIC_CHAR_VECTOR("<error>"));
|
| + }
|
| + result_string = Handle<String>::cast(result);
|
| }
|
| MaybeHandle<String> maybe_result_string = MessageTemplate::FormatMessage(
|
| - template_index, Handle<String>::cast(result), factory->empty_string(),
|
| + template_index, result_string, factory->empty_string(),
|
| factory->empty_string());
|
| - Handle<String> result_string;
|
| if (!maybe_result_string.ToHandle(&result_string)) {
|
| return factory->InternalizeOneByteString(STATIC_CHAR_VECTOR("<error>"));
|
| }
|
|
|