JSObject* ThreadProfile::ToJSObject(JSContext *aCx) { JS::RootedValue val(aCx); std::stringstream ss; JSStreamWriter b(ss); StreamJSObject(b); NS_ConvertUTF8toUTF16 js_string(nsDependentCString(ss.str().c_str())); JS_ParseJSON(aCx, static_cast<const jschar*>(js_string.get()), js_string.Length(), &val); return &val.toObject(); }
JSObject* ThreadProfile::ToJSObject(JSContext *aCx) { JS::RootedValue val(aCx); std::stringstream ss; { // Define a scope to prevent a moving GC during ~JSStreamWriter from // trashing the return value. JSStreamWriter b(ss); StreamJSObject(b); NS_ConvertUTF8toUTF16 js_string(nsDependentCString(ss.str().c_str())); JS_ParseJSON(aCx, static_cast<const char16_t*>(js_string.get()), js_string.Length(), &val); } return &val.toObject(); }
void ThreadProfile::ToStreamAsJSON(std::ostream& stream) { JSStreamWriter b(stream); StreamJSObject(b); }