Bug 1071177 - Add support for symbols as a value type. r=billm

This commit is contained in:
Tom Schuster
2014-10-07 11:29:03 +02:00
parent c168c5e4b8
commit 23c4b2f121
3 changed files with 25 additions and 0 deletions

View File

@@ -171,6 +171,10 @@ class Logging
formatObject(incoming, false, ObjectId::deserialize(ovar.get_RemoteObject().serializedId()), out);
break;
}
case JSVariant::TSymbolVariant: {
out = "<Symbol>";
break;
}
case JSVariant::Tdouble: {
out = nsPrintfCString("%.0f", value.get_double());
break;

View File

@@ -267,6 +267,17 @@ JavaScriptShared::toVariant(JSContext *cx, JS::HandleValue from, JSVariant *to)
return true;
}
case JSTYPE_SYMBOL:
{
RootedSymbol sym(cx, from.toSymbol());
SymbolVariant symVar;
if (!toSymbolVariant(cx, sym, &symVar))
return false;
*to = symVar;
return true;
}
case JSTYPE_STRING:
{
nsAutoJSString autoStr;
@@ -314,6 +325,15 @@ JavaScriptShared::fromVariant(JSContext *cx, const JSVariant &from, MutableHandl
return true;
}
case JSVariant::TSymbolVariant:
{
Symbol *sym = fromSymbolVariant(cx, from.get_SymbolVariant());
if (!sym)
return false;
to.setSymbol(sym);
return true;
}
case JSVariant::Tdouble:
to.set(JS_NumberValue(from.get_double()));
return true;

View File

@@ -67,6 +67,7 @@ union JSVariant
UndefinedVariant;
NullVariant;
ObjectVariant;
SymbolVariant;
nsString; /* StringValue(x) */
double; /* NumberValue(x) */
bool; /* BooleanValue(x) */