bool SetObject::keys(JSContext* cx, HandleObject obj, JS::MutableHandle<GCVector<JS::Value>> keys) { ValueSet* set = obj->as<SetObject>().getData(); if (!set) return false; for (ValueSet::Range r = set->all(); !r.empty(); r.popFront()) { if (!keys.append(r.front().get())) return false; } return true; }