bool IdWrapper::equalsAscii(StringData sd) const { if (isString()) { auto str = JSID_TO_STRING(_value); if (!str) { uasserted(ErrorCodes::JSInterpreterFailure, "Failed to JSID_TO_STRING"); } bool matched; if (!JS_StringEqualsAscii(_context, str, sd.rawData(), &matched)) { uasserted(ErrorCodes::JSInterpreterFailure, "Failed to JS_StringEqualsAscii"); } return matched; } if (isInt()) { JSStringWrapper jsstr(toInt32()); return jsstr.toStringData().compare(sd) == 0; } uasserted(ErrorCodes::BadValue, "Cannot equalsAscii non-string non-integer jsid"); }
void GlobalInfo::Functions::print::call(JSContext* cx, JS::CallArgs args) { logger::LogstreamBuilder builder(jsPrintLogDomain, getThreadName(), logger::LogSeverity::Log()); std::ostream& ss = builder.stream(); bool first = true; for (size_t i = 0; i < args.length(); i++) { if (first) first = false; else ss << " "; if (args.get(i).isNullOrUndefined()) { // failed to get object to convert ss << "[unknown type]"; continue; } JSStringWrapper jsstr(cx, JS::ToString(cx, args.get(i))); ss << jsstr.toStringData(); } ss << std::endl; args.rval().setUndefined(); }