Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index 8ca8d58a45bddbedc6efdb218b398301da4c0a28..8e695d67f12f88beb8e33fa7eee4a822a4e6e38c 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -683,9 +683,23 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateArrayLiteralShallow) { |
RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateSymbol) { |
+ HandleScope scope(isolate); |
+ ASSERT(args.length() == 1); |
+ Handle<Object> name(args[0], isolate); |
Michael Starzinger
2013/03/22 12:03:25
If you use the following instead, you can get by w
rossberg
2013/03/22 13:02:42
Done.
|
+ RUNTIME_ASSERT(name->IsString() || name->IsUndefined()); |
+ Symbol* symbol; |
+ MaybeObject* maybe = isolate->heap()->AllocateSymbol(); |
+ if (!maybe->To(&symbol)) return maybe; |
+ if (name->IsString()) symbol->set_name(*name); |
+ return symbol; |
+} |
+ |
+ |
+RUNTIME_FUNCTION(MaybeObject*, Runtime_SymbolName) { |
NoHandleAllocation ha(isolate); |
- ASSERT(args.length() == 0); |
- return isolate->heap()->AllocateSymbol(); |
+ ASSERT(args.length() == 1); |
+ CONVERT_ARG_CHECKED(Symbol, symbol, 0); |
+ return symbol->name(); |
} |