JSBool JSHistogram_Snapshot(JSContext *cx, unsigned argc, jsval *vp) { JSObject *obj = JS_THIS_OBJECT(cx, vp); if (!obj) { return JS_FALSE; } Histogram *h = static_cast<Histogram*>(JS_GetPrivate(obj)); JSObject *snapshot = JS_NewObject(cx, nullptr, nullptr, nullptr); if (!snapshot) return JS_FALSE; JS::AutoObjectRooter sroot(cx, snapshot); switch (ReflectHistogramSnapshot(cx, snapshot, h)) { case REFLECT_FAILURE: return JS_FALSE; case REFLECT_CORRUPT: JS_ReportError(cx, "Histogram is corrupt"); return JS_FALSE; case REFLECT_OK: JS_SET_RVAL(cx, vp, OBJECT_TO_JSVAL(snapshot)); return JS_TRUE; default: MOZ_NOT_REACHED("unhandled reflection status"); return JS_FALSE; } }
boost::uint64_t get_size(boost::uint32_t version = 0) { if (version == 0) return latest_root.current_size; metadata::root_t sroot(0, 0, 0, 0, 0); if (get_root(version, sroot)) return sroot.current_size; else return 0; }