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>")); |
} |