EncodedJSValue JSC_HOST_CALL symbolProtoFuncToString(ExecState* exec) { JSValue thisValue = exec->thisValue(); Symbol* symbol = nullptr; if (thisValue.isSymbol()) symbol = asSymbol(thisValue); else if (!thisValue.isObject()) return throwVMTypeError(exec); else { JSObject* thisObject = asObject(thisValue); if (!thisObject->inherits(SymbolObject::info())) return throwVMTypeError(exec); symbol = asSymbol(jsCast<SymbolObject*>(thisObject)->internalValue()); } return JSValue::encode(jsNontrivialString(exec, symbol->descriptiveString())); }
EncodedJSValue JSC_HOST_CALL symbolProtoFuncToString(ExecState* exec) { VM& vm = exec->vm(); auto scope = DECLARE_THROW_SCOPE(vm); JSValue thisValue = exec->thisValue(); Symbol* symbol = nullptr; if (thisValue.isSymbol()) symbol = asSymbol(thisValue); else { if (!thisValue.isObject()) return throwVMTypeError(exec, scope, SymbolToStringTypeError); JSObject* thisObject = asObject(thisValue); if (!thisObject->inherits(vm, SymbolObject::info())) return throwVMTypeError(exec, scope, SymbolToStringTypeError); symbol = asSymbol(jsCast<SymbolObject*>(thisObject)->internalValue()); } return JSValue::encode(jsNontrivialString(exec, symbol->descriptiveString())); }