Index: src/runtime/runtime-symbol.cc |
diff --git a/src/runtime/runtime-symbol.cc b/src/runtime/runtime-symbol.cc |
index 03bd76ce27f9eff9dc75872acd7c22e9aedee793..778c2417095ba7ed96c272dc8ffa7f16eea1f53a 100644 |
--- a/src/runtime/runtime-symbol.cc |
+++ b/src/runtime/runtime-symbol.cc |
@@ -5,7 +5,9 @@ |
#include "src/runtime/runtime-utils.h" |
#include "src/arguments.h" |
+#include "src/isolate-inl.h" |
#include "src/objects-inl.h" |
+#include "src/string-builder.h" |
namespace v8 { |
namespace internal { |
@@ -38,6 +40,22 @@ RUNTIME_FUNCTION(Runtime_SymbolDescription) { |
} |
+RUNTIME_FUNCTION(Runtime_SymbolDescriptiveString) { |
+ HandleScope scope(isolate); |
+ DCHECK_EQ(1, args.length()); |
+ CONVERT_ARG_HANDLE_CHECKED(Symbol, symbol, 0); |
+ IncrementalStringBuilder builder(isolate); |
+ builder.AppendCString("Symbol("); |
+ if (symbol->name()->IsString()) { |
+ builder.AppendString(handle(String::cast(symbol->name()), isolate)); |
+ } |
+ builder.AppendCharacter(')'); |
+ Handle<String> result; |
+ ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, builder.Finish()); |
+ return *result; |
+} |
+ |
+ |
RUNTIME_FUNCTION(Runtime_SymbolRegistry) { |
HandleScope scope(isolate); |
DCHECK(args.length() == 0); |