Bug 553032 - use MOZ_FORMAT_PRINTF in js; r=evilpie

MozReview-Commit-ID: DD3DJRkOxmC

--HG--
extra : rebase_source : 61cdf0da1a82b626abc79209ee41e43c3bb152ca
This commit is contained in:
Tom Tromey 2016-10-11 12:44:40 -06:00
Родитель 2d0739c63d
Коммит 0dc689acdd
54 изменённых файлов: 259 добавлений и 267 удалений

Просмотреть файл

@ -154,8 +154,8 @@ inline void SetPendingExceptionASCII(JSContext *cx, const char *aMsg)
inline void SetPendingException(JSContext *cx, const char16_t *aMsg)
{
// FIXME: Need to convert to UTF-8 (bug XXX).
JS_ReportErrorLatin1(cx, "%hs", aMsg);
NS_ConvertUTF16toUTF8 msg(aMsg);
JS_ReportErrorUTF8(cx, "%s", msg.get());
}
// Helper class to get stuff from the ClassInfo and not waste extra time with

Просмотреть файл

@ -638,7 +638,7 @@ ThrowJSExceptionASCII(JSContext *cx, const char *message)
PopException();
} else {
::JS_ReportErrorASCII(cx, message);
::JS_ReportErrorASCII(cx, "%s", message);
}
}

Просмотреть файл

@ -2250,7 +2250,7 @@ class MOZ_STACK_CLASS ModuleValidator
return false;
}
bool failfOffset(uint32_t offset, const char* fmt, ...) {
bool failfOffset(uint32_t offset, const char* fmt, ...) MOZ_FORMAT_PRINTF(3, 4) {
va_list ap;
va_start(ap, fmt);
failfVAOffset(offset, fmt, ap);
@ -2258,7 +2258,7 @@ class MOZ_STACK_CLASS ModuleValidator
return false;
}
bool failf(ParseNode* pn, const char* fmt, ...) {
bool failf(ParseNode* pn, const char* fmt, ...) MOZ_FORMAT_PRINTF(3, 4) {
va_list ap;
va_start(ap, fmt);
failfVAOffset(pn->pn_pos.begin, fmt, ap);
@ -2944,7 +2944,7 @@ class MOZ_STACK_CLASS FunctionValidator
return m_.fail(pn, str);
}
bool failf(ParseNode* pn, const char* fmt, ...) {
bool failf(ParseNode* pn, const char* fmt, ...) MOZ_FORMAT_PRINTF(3, 4) {
va_list ap;
va_start(ap, fmt);
m_.failfVAOffset(pn->pn_pos.begin, fmt, ap);
@ -4720,7 +4720,8 @@ static bool
CheckSignatureAgainstExisting(ModuleValidator& m, ParseNode* usepn, const Sig& sig, const Sig& existing)
{
if (sig.args().length() != existing.args().length()) {
return m.failf(usepn, "incompatible number of arguments (%u here vs. %u before)",
return m.failf(usepn, "incompatible number of arguments (%" PRIuSIZE
" here vs. %" PRIuSIZE " before)",
sig.args().length(), existing.args().length());
}

Просмотреть файл

@ -57,7 +57,7 @@ wasm::DecodePreamble(Decoder& d)
return d.fail("failed to match magic number");
if (!d.readFixedU32(&u32) || u32 != EncodingVersion)
return d.fail("binary version 0x%lx does not match expected version 0x%lx",
return d.fail("binary version 0x%" PRIx32 " does not match expected version 0x%" PRIx32,
u32, EncodingVersion);
return true;
@ -151,7 +151,7 @@ wasm::DecodeLimits(Decoder& d, Limits* limits)
// TODO (bug 1310149): tighten this check (s/3/1) when the AngryBots demo
// gets updated.
if (flags & ~uint32_t(0x3))
return d.fail("unexpected bits set in flags: %lu", (flags & ~uint32_t(0x3)));
return d.fail("unexpected bits set in flags: %" PRIu32, (flags & ~uint32_t(0x3)));
if (!d.readVarU32(&limits->initial))
return d.fail("expected initial length");
@ -163,7 +163,7 @@ wasm::DecodeLimits(Decoder& d, Limits* limits)
if (limits->initial > maximum) {
return d.fail("memory size minimum must not be greater than maximum; "
"maximum length %lu is less than initial length %lu",
"maximum length %" PRIu32 " is less than initial length %" PRIu32 ,
maximum, limits->initial);
}

Просмотреть файл

@ -778,7 +778,7 @@ class Decoder
error_(error)
{}
bool fail(const char* msg, ...);
bool fail(const char* msg, ...) MOZ_FORMAT_PRINTF(2, 3);
bool fail(UniqueChars msg);
void clearError() {
if (error_)

Просмотреть файл

@ -725,7 +725,7 @@ template <typename Policy>
bool
ExprIter<Policy>::fail(const char* msg)
{
return d_.fail(msg);
return d_.fail("%s", msg);
}
template <typename Policy>

Просмотреть файл

@ -796,8 +796,10 @@ Code::ensureProfilingState(JSContext* cx, bool newProfilingEnabled)
if (!name.append('\0'))
return false;
UniqueChars label(JS_smprintf("%hs (%s:%u)",
name.begin(),
TwoByteChars chars(name.begin(), name.length());
UniqueChars utf8Name(JS::CharsToNewUTF8CharsZ(nullptr, chars).c_str());
UniqueChars label(JS_smprintf("%s (%s:%u)",
utf8Name.get(),
metadata_->filename.get(),
codeRange.funcLineOrBytecode()));
if (!label) {

Просмотреть файл

@ -1488,7 +1488,7 @@ struct WasmParseContext
{}
bool fail(const char* message) {
error->reset(JS_smprintf(message));
error->reset(js_strdup(message));
return false;
}
~WasmParseContext() {
@ -3336,12 +3336,9 @@ class Resolver
return false;
}
bool failResolveLabel(const char* kind, AstName name) {
Vector<char16_t, 0, SystemAllocPolicy> nameWithNull;
if (!nameWithNull.append(name.begin(), name.length()))
return false;
if (!nameWithNull.append(0))
return false;
error_->reset(JS_smprintf("%s label '%hs' not found", kind, nameWithNull.begin()));
TwoByteChars chars(name.begin(), name.length());
UniqueChars utf8Chars(CharsToNewUTF8CharsZ(nullptr, chars).c_str());
error_->reset(JS_smprintf("%s label '%s' not found", kind, utf8Chars.get()));
return false;
}

Просмотреть файл

@ -165,6 +165,7 @@ Array<Array<uint64_t, MaxLifetimeBins>, MaxClasses> finalizedHeapObjectCountByCl
std::vector<Array<Array<uint64_t, MaxLifetimeBins>, HeapKinds> > objectCountByTypeHeapAndLifetime;
static void
MOZ_FORMAT_PRINTF(1, 2)
die(const char* format, ...)
{
va_list va;

Просмотреть файл

@ -1872,7 +1872,7 @@ irregexp::CompilePattern(JSContext* cx, RegExpShared* shared, RegExpCompileData*
Analysis analysis(cx, ignore_case, is_ascii, unicode);
analysis.EnsureAnalyzed(node);
if (analysis.has_failed()) {
JS_ReportErrorASCII(cx, analysis.errorMessage());
JS_ReportErrorASCII(cx, "%s", analysis.errorMessage());
return RegExpCode();
}

Просмотреть файл

@ -1245,7 +1245,7 @@ bool
BacktrackingAllocator::processBundle(MIRGenerator* mir, LiveBundle* bundle)
{
if (JitSpewEnabled(JitSpew_RegAlloc)) {
JitSpew(JitSpew_RegAlloc, "Allocating %s [priority %lu] [weight %lu]",
JitSpew(JitSpew_RegAlloc, "Allocating %s [priority %" PRIuSIZE "] [weight %" PRIuSIZE "]",
bundle->toString().get(), computePriority(bundle), computeSpillWeight(bundle));
}
@ -1437,13 +1437,13 @@ BacktrackingAllocator::tryAllocateRegister(PhysicalRegister& r, LiveBundle* bund
if (JitSpewEnabled(JitSpew_RegAlloc)) {
if (aliasedConflicting.length() == 1) {
LiveBundle* existing = aliasedConflicting[0];
JitSpew(JitSpew_RegAlloc, " %s collides with %s [weight %lu]",
JitSpew(JitSpew_RegAlloc, " %s collides with %s [weight %" PRIuSIZE "]",
r.reg.name(), existing->toString().get(), computeSpillWeight(existing));
} else {
JitSpew(JitSpew_RegAlloc, " %s collides with the following", r.reg.name());
for (size_t i = 0; i < aliasedConflicting.length(); i++) {
LiveBundle* existing = aliasedConflicting[i];
JitSpew(JitSpew_RegAlloc, " %s [weight %lu]",
JitSpew(JitSpew_RegAlloc, " %s [weight %" PRIuSIZE "]",
existing->toString().get(), computeSpillWeight(existing));
}
}
@ -1482,7 +1482,7 @@ bool
BacktrackingAllocator::evictBundle(LiveBundle* bundle)
{
if (JitSpewEnabled(JitSpew_RegAlloc)) {
JitSpew(JitSpew_RegAlloc, " Evicting %s [priority %lu] [weight %lu]",
JitSpew(JitSpew_RegAlloc, " Evicting %s [priority %" PRIuSIZE "] [weight %" PRIuSIZE "]",
bundle->toString().get(), computePriority(bundle), computeSpillWeight(bundle));
}
@ -2296,7 +2296,8 @@ LiveBundle::toString() const
{
AutoEnterOOMUnsafeRegion oomUnsafe;
char *buf = JS_smprintf("");
// Suppress -Wformat warning.
char *buf = JS_smprintf("%s", "");
for (LiveRange::BundleLinkIterator iter = rangesBegin(); buf && iter; iter++) {
buf = JS_sprintf_append(buf, "%s %s",

Просмотреть файл

@ -230,11 +230,11 @@ struct BaselineStackBuilder
if (info) {
if (sizeof(size_t) == 4) {
JitSpew(JitSpew_BaselineBailouts,
" WRITE_WRD %p/%p %-15s %08x",
" WRITE_WRD %p/%p %-15s %08" PRIxSIZE,
header_->copyStackBottom, virtualPointerAtStackOffset(0), info, w);
} else {
JitSpew(JitSpew_BaselineBailouts,
" WRITE_WRD %p/%p %-15s %016llx",
" WRITE_WRD %p/%p %-15s %016" PRIxSIZE,
header_->copyStackBottom, virtualPointerAtStackOffset(0), info, w);
}
}
@ -246,7 +246,7 @@ struct BaselineStackBuilder
return false;
if (info) {
JitSpew(JitSpew_BaselineBailouts,
" WRITE_VAL %p/%p %-15s %016llx",
" WRITE_VAL %p/%p %-15s %016" PRIx64,
header_->copyStackBottom, virtualPointerAtStackOffset(0), info,
*((uint64_t*) &val));
}
@ -637,7 +637,7 @@ InitFromBailout(JSContext* cx, HandleScript caller, jsbytecode* callerPC,
// | ReturnAddr | <-- return into main jitcode after IC
// +===============+
JitSpew(JitSpew_BaselineBailouts, " Unpacking %s:%d", script->filename(), script->lineno());
JitSpew(JitSpew_BaselineBailouts, " Unpacking %s:%" PRIuSIZE, script->filename(), script->lineno());
JitSpew(JitSpew_BaselineBailouts, " [BASELINE-JS FRAME]");
// Calculate and write the previous frame pointer value.
@ -749,7 +749,7 @@ InitFromBailout(JSContext* cx, HandleScript caller, jsbytecode* callerPC,
}
JitSpew(JitSpew_BaselineBailouts, " EnvChain=%p", envChain);
blFrame->setEnvironmentChain(envChain);
JitSpew(JitSpew_BaselineBailouts, " ReturnValue=%016llx", *((uint64_t*) &returnValue));
JitSpew(JitSpew_BaselineBailouts, " ReturnValue=%016" PRIx64, *((uint64_t*) &returnValue));
blFrame->setReturnValue(returnValue);
// Do not need to initialize scratchValue field in BaselineFrame.
@ -764,13 +764,13 @@ InitFromBailout(JSContext* cx, HandleScript caller, jsbytecode* callerPC,
// in the calling frame.
Value thisv = iter.read();
JitSpew(JitSpew_BaselineBailouts, " Is function!");
JitSpew(JitSpew_BaselineBailouts, " thisv=%016llx", *((uint64_t*) &thisv));
JitSpew(JitSpew_BaselineBailouts, " thisv=%016" PRIx64, *((uint64_t*) &thisv));
size_t thisvOffset = builder.framePushed() + JitFrameLayout::offsetOfThis();
builder.valuePointerAtStackOffset(thisvOffset).set(thisv);
MOZ_ASSERT(iter.numAllocations() >= CountArgSlots(script, fun));
JitSpew(JitSpew_BaselineBailouts, " frame slots %u, nargs %u, nfixed %u",
JitSpew(JitSpew_BaselineBailouts, " frame slots %u, nargs %" PRIuSIZE ", nfixed %" PRIuSIZE,
iter.numAllocations(), fun->nargs(), script->nfixed());
if (!callerPC) {
@ -786,7 +786,7 @@ InitFromBailout(JSContext* cx, HandleScript caller, jsbytecode* callerPC,
for (uint32_t i = 0; i < fun->nargs(); i++) {
Value arg = iter.read();
JitSpew(JitSpew_BaselineBailouts, " arg %d = %016llx",
JitSpew(JitSpew_BaselineBailouts, " arg %d = %016" PRIx64,
(int) i, *((uint64_t*) &arg));
if (callerPC) {
size_t argOffset = builder.framePushed() + JitFrameLayout::offsetOfActualArg(i);
@ -1314,7 +1314,7 @@ InitFromBailout(JSContext* cx, HandleScript caller, jsbytecode* callerPC,
return false;
// Push callee token (must be a JS Function)
JitSpew(JitSpew_BaselineBailouts, " Callee = %016llx", callee.asRawBits());
JitSpew(JitSpew_BaselineBailouts, " Callee = %016" PRIx64, callee.asRawBits());
JSFunction* calleeFun = &callee.toObject().as<JSFunction>();
if (!builder.writePtr(CalleeToToken(calleeFun, JSOp(*pc) == JSOP_NEW), "CalleeToken"))
@ -1494,7 +1494,7 @@ jit::BailoutIonToBaseline(JSContext* cx, JitActivation* activation, JitFrameIter
// | ||||| |
// +---------------+
JitSpew(JitSpew_BaselineBailouts, "Bailing to baseline %s:%u (IonScript=%p) (FrameType=%d)",
JitSpew(JitSpew_BaselineBailouts, "Bailing to baseline %s:%" PRIuSIZE " (IonScript=%p) (FrameType=%d)",
iter.script()->filename(), iter.script()->lineno(), (void*) iter.ionScript(),
(int) prevFrameType);
@ -1514,7 +1514,7 @@ jit::BailoutIonToBaseline(JSContext* cx, JitActivation* activation, JitFrameIter
propagatingExceptionForDebugMode = false;
}
JitSpew(JitSpew_BaselineBailouts, " Reading from snapshot offset %u size %u",
JitSpew(JitSpew_BaselineBailouts, " Reading from snapshot offset %u size %" PRIuSIZE,
iter.snapshotOffset(), iter.ionScript()->snapshotsListSize());
if (!excInfo)
@ -1540,7 +1540,7 @@ jit::BailoutIonToBaseline(JSContext* cx, JitActivation* activation, JitFrameIter
RootedFunction callee(cx, iter.maybeCallee());
RootedScript scr(cx, iter.script());
if (callee) {
JitSpew(JitSpew_BaselineBailouts, " Callee function (%s:%u)",
JitSpew(JitSpew_BaselineBailouts, " Callee function (%s:%" PRIuSIZE ")",
scr->filename(), scr->lineno());
} else {
JitSpew(JitSpew_BaselineBailouts, " No callee!");
@ -1575,7 +1575,7 @@ jit::BailoutIonToBaseline(JSContext* cx, JitActivation* activation, JitFrameIter
TraceLogStartEvent(logger, TraceLogger_Baseline);
}
JitSpew(JitSpew_BaselineBailouts, " FrameNo %d", frameNo);
JitSpew(JitSpew_BaselineBailouts, " FrameNo %" PRIuSIZE, frameNo);
// If we are bailing out to a catch or finally block in this frame,
// pass excInfo to InitFromBailout and don't unpack any other frames.
@ -1671,7 +1671,7 @@ InvalidateAfterBailout(JSContext* cx, HandleScript outerScript, const char* reas
static void
HandleBoundsCheckFailure(JSContext* cx, HandleScript outerScript, HandleScript innerScript)
{
JitSpew(JitSpew_IonBailouts, "Bounds check failure %s:%d, inlined into %s:%d",
JitSpew(JitSpew_IonBailouts, "Bounds check failure %s:%" PRIuSIZE ", inlined into %s:%" PRIuSIZE,
innerScript->filename(), innerScript->lineno(),
outerScript->filename(), outerScript->lineno());
@ -1686,7 +1686,7 @@ HandleBoundsCheckFailure(JSContext* cx, HandleScript outerScript, HandleScript i
static void
HandleShapeGuardFailure(JSContext* cx, HandleScript outerScript, HandleScript innerScript)
{
JitSpew(JitSpew_IonBailouts, "Shape guard failure %s:%d, inlined into %s:%d",
JitSpew(JitSpew_IonBailouts, "Shape guard failure %s:%" PRIuSIZE ", inlined into %s:%" PRIuSIZE,
innerScript->filename(), innerScript->lineno(),
outerScript->filename(), outerScript->lineno());
@ -1701,7 +1701,7 @@ HandleShapeGuardFailure(JSContext* cx, HandleScript outerScript, HandleScript in
static void
HandleBaselineInfoBailout(JSContext* cx, HandleScript outerScript, HandleScript innerScript)
{
JitSpew(JitSpew_IonBailouts, "Baseline info failure %s:%d, inlined into %s:%d",
JitSpew(JitSpew_IonBailouts, "Baseline info failure %s:%" PRIuSIZE ", inlined into %s:%" PRIuSIZE,
innerScript->filename(), innerScript->lineno(),
outerScript->filename(), outerScript->lineno());
@ -1711,7 +1711,7 @@ HandleBaselineInfoBailout(JSContext* cx, HandleScript outerScript, HandleScript
static void
HandleLexicalCheckFailure(JSContext* cx, HandleScript outerScript, HandleScript innerScript)
{
JitSpew(JitSpew_IonBailouts, "Lexical check failure %s:%d, inlined into %s:%d",
JitSpew(JitSpew_IonBailouts, "Lexical check failure %s:%" PRIuSIZE ", inlined into %s:%" PRIuSIZE,
innerScript->filename(), innerScript->lineno(),
outerScript->filename(), outerScript->lineno());
@ -1754,7 +1754,7 @@ CopyFromRematerializedFrame(JSContext* cx, JitActivation* act, uint8_t* fp, size
frame->setHasCachedSavedFrame();
JitSpew(JitSpew_BaselineBailouts,
" Copied from rematerialized frame at (%p,%u)",
" Copied from rematerialized frame at (%p,%" PRIuSIZE ")",
fp, inlineDepth);
// Propagate the debuggee frame flag. For the case where the Debugger did
@ -1891,7 +1891,7 @@ jit::FinishBailoutToBaseline(BaselineBailoutInfo* bailoutInfo)
}
JitSpew(JitSpew_BaselineBailouts,
" Restored outerScript=(%s:%u,%u) innerScript=(%s:%u,%u) (bailoutKind=%u)",
" Restored outerScript=(%s:%" PRIuSIZE ",%u) innerScript=(%s:%" PRIuSIZE ",%u) (bailoutKind=%u)",
outerScript->filename(), outerScript->lineno(), outerScript->getWarmUpCount(),
innerScript->filename(), innerScript->lineno(), innerScript->getWarmUpCount(),
(unsigned) bailoutKind);

Просмотреть файл

@ -7,6 +7,7 @@
#include "jit/BaselineCompiler.h"
#include "mozilla/Casting.h"
#include "mozilla/SizePrintfMacros.h"
#include "jit/BaselineIC.h"
#include "jit/BaselineJIT.h"
@ -82,10 +83,10 @@ BaselineCompiler::addPCMappingEntry(bool addIndexEntry)
MethodStatus
BaselineCompiler::compile()
{
JitSpew(JitSpew_BaselineScripts, "Baseline compiling script %s:%d (%p)",
JitSpew(JitSpew_BaselineScripts, "Baseline compiling script %s:%" PRIuSIZE " (%p)",
script->filename(), script->lineno(), script);
JitSpew(JitSpew_Codegen, "# Emitting baseline code for script %s:%d",
JitSpew(JitSpew_Codegen, "# Emitting baseline code for script %s:%" PRIuSIZE,
script->filename(), script->lineno());
TraceLoggerThread* logger = TraceLoggerForMainThread(cx->runtime());
@ -217,7 +218,7 @@ BaselineCompiler::compile()
baselineScript->setMethod(code);
baselineScript->setTemplateEnvironment(templateEnv);
JitSpew(JitSpew_BaselineScripts, "Created BaselineScript %p (raw %p) for %s:%d",
JitSpew(JitSpew_BaselineScripts, "Created BaselineScript %p (raw %p) for %s:%" PRIuSIZE,
(void*) baselineScript.get(), (void*) code->raw(),
script->filename(), script->lineno());
@ -279,7 +280,7 @@ BaselineCompiler::compile()
// Always register a native => bytecode mapping entry, since profiler can be
// turned on with baseline jitcode on stack, and baseline jitcode cannot be invalidated.
{
JitSpew(JitSpew_Profiling, "Added JitcodeGlobalEntry for baseline script %s:%d (%p)",
JitSpew(JitSpew_Profiling, "Added JitcodeGlobalEntry for baseline script %s:%" PRIuSIZE " (%p)",
script->filename(), script->lineno(), baselineScript.get());
// Generate profiling string.

Просмотреть файл

@ -7,6 +7,7 @@
#include "jit/BaselineDebugModeOSR.h"
#include "mozilla/DebugOnly.h"
#include "mozilla/SizePrintfMacros.h"
#include "jit/BaselineIC.h"
#include "jit/JitcodeMap.h"
@ -322,7 +323,7 @@ SpewPatchBaselineFrame(uint8_t* oldReturnAddress, uint8_t* newReturnAddress,
JSScript* script, ICEntry::Kind frameKind, jsbytecode* pc)
{
JitSpew(JitSpew_BaselineDebugModeOSR,
"Patch return %p -> %p on BaselineJS frame (%s:%d) from %s at %s",
"Patch return %p -> %p on BaselineJS frame (%s:%" PRIuSIZE ") from %s at %s",
oldReturnAddress, newReturnAddress, script->filename(), script->lineno(),
ICEntryKindToString(frameKind), CodeName[(JSOp)*pc]);
}
@ -332,7 +333,7 @@ SpewPatchBaselineFrameFromExceptionHandler(uint8_t* oldReturnAddress, uint8_t* n
JSScript* script, jsbytecode* pc)
{
JitSpew(JitSpew_BaselineDebugModeOSR,
"Patch return %p -> %p on BaselineJS frame (%s:%d) from exception handler at %s",
"Patch return %p -> %p on BaselineJS frame (%s:%" PRIuSIZE ") from exception handler at %s",
oldReturnAddress, newReturnAddress, script->filename(), script->lineno(),
CodeName[(JSOp)*pc]);
}
@ -667,7 +668,7 @@ RecompileBaselineScriptForDebugMode(JSContext* cx, JSScript* script,
if (oldBaselineScript->hasDebugInstrumentation() == observing)
return true;
JitSpew(JitSpew_BaselineDebugModeOSR, "Recompiling (%s:%d) for %s",
JitSpew(JitSpew_BaselineDebugModeOSR, "Recompiling (%s:%" PRIuSIZE ") for %s",
script->filename(), script->lineno(), observing ? "DEBUGGING" : "NORMAL EXECUTION");
script->setBaselineScript(cx->runtime(), nullptr);

Просмотреть файл

@ -2586,7 +2586,7 @@ DoSetElemFallback(JSContext* cx, BaselineFrame* frame, ICSetElem_Fallback* stub_
{
JitSpew(JitSpew_BaselineIC,
" Generating SetElem_DenseOrUnboxedArrayAdd stub "
"(shape=%p, group=%p, protoDepth=%u)",
"(shape=%p, group=%p, protoDepth=%" PRIuSIZE ")",
shape.get(), group.get(), protoDepth);
ICSetElemDenseOrUnboxedArrayAddCompiler compiler(cx, obj, protoDepth);
ICUpdatedStub* newStub = compiler.getStub(compiler.getStubSpace(outerScript));

Просмотреть файл

@ -9244,7 +9244,7 @@ CodeGenerator::generateWasm(wasm::SigIdDesc sigId, wasm::TrapOffset trapOffset,
bool
CodeGenerator::generate()
{
JitSpew(JitSpew_Codegen, "# Emitting code for script %s:%d",
JitSpew(JitSpew_Codegen, "# Emitting code for script %s:%" PRIuSIZE,
gen->info().script()->filename(),
gen->info().script()->lineno());

Просмотреть файл

@ -402,7 +402,7 @@ DumpImprovement(MDefinition *load, MDefinitionVector& input, MDefinitionVector&
if (JitSpewEnabled(JitSpew_Alias)) {
Fprinter &print = JitSpewPrinter();
JitSpewHeader(JitSpew_Alias);
print.printf(" Improve dependency from ", load->id());
print.printf(" Improve dependency from %d", load->id());
DumpStoreList(input);
print.printf(" to ");
DumpStoreList(output);

Просмотреть файл

@ -6,6 +6,7 @@
#include "jit/Ion.h"
#include "mozilla/IntegerPrintfMacros.h"
#include "mozilla/MemoryReporting.h"
#include "mozilla/SizePrintfMacros.h"
#include "mozilla/ThreadLocal.h"
@ -2136,7 +2137,7 @@ TrackIonAbort(JSContext* cx, JSScript* script, jsbytecode* pc, const char* messa
static void
TrackAndSpewIonAbort(JSContext* cx, JSScript* script, const char* message)
{
JitSpew(JitSpew_IonAbort, message);
JitSpew(JitSpew_IonAbort, "%s", message);
TrackIonAbort(cx, script, script->code(), message);
}
@ -2395,7 +2396,7 @@ CheckScriptSize(JSContext* cx, JSScript* script)
numLocalsAndArgs > MAX_MAIN_THREAD_LOCALS_AND_ARGS)
{
if (!OffThreadCompilationAvailable(cx)) {
JitSpew(JitSpew_IonAbort, "Script too large (%u bytes) (%u locals/args)",
JitSpew(JitSpew_IonAbort, "Script too large (%" PRIuSIZE " bytes) (%u locals/args)",
script->length(), numLocalsAndArgs);
TrackIonAbort(cx, script, script->code(), "too large");
return Method_CantCompile;
@ -3014,7 +3015,7 @@ InvalidateActivation(FreeOp* fop, const JitActivationIterator& activations, bool
#ifdef JS_JITSPEW
switch (it.type()) {
case JitFrame_Exit:
JitSpew(JitSpew_IonInvalidate, "#%d exit frame @ %p", frameno, it.fp());
JitSpew(JitSpew_IonInvalidate, "#%" PRIuSIZE " exit frame @ %p", frameno, it.fp());
break;
case JitFrame_BaselineJS:
case JitFrame_IonJS:
@ -3029,26 +3030,26 @@ InvalidateActivation(FreeOp* fop, const JitActivationIterator& activations, bool
else if (it.isBailoutJS())
type = "Bailing";
JitSpew(JitSpew_IonInvalidate,
"#%d %s JS frame @ %p, %s:%" PRIuSIZE " (fun: %p, script: %p, pc %p)",
"#%" PRIuSIZE " %s JS frame @ %p, %s:%" PRIuSIZE " (fun: %p, script: %p, pc %p)",
frameno, type, it.fp(), it.script()->maybeForwardedFilename(),
it.script()->lineno(), it.maybeCallee(), (JSScript*)it.script(),
it.returnAddressToFp());
break;
}
case JitFrame_IonStub:
JitSpew(JitSpew_IonInvalidate, "#%d ion stub frame @ %p", frameno, it.fp());
JitSpew(JitSpew_IonInvalidate, "#%" PRIuSIZE " ion stub frame @ %p", frameno, it.fp());
break;
case JitFrame_BaselineStub:
JitSpew(JitSpew_IonInvalidate, "#%d baseline stub frame @ %p", frameno, it.fp());
JitSpew(JitSpew_IonInvalidate, "#%" PRIuSIZE " baseline stub frame @ %p", frameno, it.fp());
break;
case JitFrame_Rectifier:
JitSpew(JitSpew_IonInvalidate, "#%d rectifier frame @ %p", frameno, it.fp());
JitSpew(JitSpew_IonInvalidate, "#%" PRIuSIZE " rectifier frame @ %p", frameno, it.fp());
break;
case JitFrame_IonAccessorIC:
JitSpew(JitSpew_IonInvalidate, "#%d ion IC getter/setter frame @ %p", frameno, it.fp());
JitSpew(JitSpew_IonInvalidate, "#%" PRIuSIZE " ion IC getter/setter frame @ %p", frameno, it.fp());
break;
case JitFrame_Entry:
JitSpew(JitSpew_IonInvalidate, "#%d entry frame @ %p", frameno, it.fp());
JitSpew(JitSpew_IonInvalidate, "#%" PRIuSIZE " entry frame @ %p", frameno, it.fp());
break;
}
#endif // JS_JITSPEW
@ -3143,7 +3144,7 @@ InvalidateActivation(FreeOp* fop, const JitActivationIterator& activations, bool
CodeLocationLabel osiPatchPoint = SafepointReader::InvalidationPatchPoint(ionScript, si);
CodeLocationLabel invalidateEpilogue(ionCode, CodeOffset(ionScript->invalidateEpilogueOffset()));
JitSpew(JitSpew_IonInvalidate, " ! Invalidate ionScript %p (inv count %u) -> patching osipoint %p",
JitSpew(JitSpew_IonInvalidate, " ! Invalidate ionScript %p (inv count %" PRIuSIZE ") -> patching osipoint %p",
ionScript, ionScript->invalidationCount(), (void*) osiPatchPoint.raw());
Assembler::PatchWrite_NearCall(osiPatchPoint, invalidateEpilogue);
}
@ -3360,7 +3361,7 @@ AutoFlushICache::setRange(uintptr_t start, size_t len)
AutoFlushICache* afc = TlsPerThreadData.get()->PerThreadData::autoFlushICache();
MOZ_ASSERT(afc);
MOZ_ASSERT(!afc->start_);
JitSpewCont(JitSpew_CacheFlush, "(%x %x):", start, len);
JitSpewCont(JitSpew_CacheFlush, "(%" PRIxPTR " %" PRIxSIZE "):", start, len);
uintptr_t stop = start + len;
afc->start_ = start;

Просмотреть файл

@ -6,6 +6,8 @@
#include "jit/IonAnalysis.h"
#include "mozilla/SizePrintfMacros.h"
#include "jit/AliasAnalysis.h"
#include "jit/BaselineInspector.h"
#include "jit/BaselineJIT.h"
@ -445,9 +447,10 @@ jit::PruneUnusedBranches(MIRGenerator* mir, MIRGraph& graph)
shouldBailout = false;
JitSpew(JitSpew_Prune, "info: block %d,"
" predCount: %lu, domInst: %lu, span: %lu, effectful: %lu, "
" isLoopExit: %s, numSuccessorsOfPred: %lu."
" (score: %lu, shouldBailout: %s)",
" predCount: %" PRIuSIZE ", domInst: %" PRIuSIZE
", span: %" PRIuSIZE ", effectful: %" PRIuSIZE ", "
" isLoopExit: %s, numSuccessorsOfPred: %" PRIuSIZE "."
" (score: %" PRIuSIZE ", shouldBailout: %s)",
block->id(), predCount, numDominatedInst, branchSpan, numEffectfulInst,
isLoopExit ? "true" : "false", numSuccessorsOfPreds,
score, shouldBailout ? "true" : "false");

Просмотреть файл

@ -229,7 +229,7 @@ class IonBuilder
MOZ_MUST_USE bool inspectOpcode(JSOp op);
uint32_t readIndex(jsbytecode* pc);
JSAtom* readAtom(jsbytecode* pc);
bool abort(const char* message, ...);
bool abort(const char* message, ...) MOZ_FORMAT_PRINTF(2, 3);
void trackActionableAbort(const char* message);
void spew(const char* message);

Просмотреть файл

@ -8,6 +8,8 @@
#include "jit/JSONSpewer.h"
#include "mozilla/SizePrintfMacros.h"
#include <stdarg.h>
#include "jit/BacktrackingAllocator.h"
@ -146,7 +148,7 @@ JSONSpewer::beginFunction(JSScript* script)
{
beginObject();
if (script)
stringProperty("name", "%s:%d", script->filename(), script->lineno());
stringProperty("name", "%s:%" PRIuSIZE, script->filename(), script->lineno());
else
stringProperty("name", "asm.js compilation");
beginListProperty("passes");
@ -156,7 +158,7 @@ void
JSONSpewer::beginPass(const char* pass)
{
beginObject();
stringProperty("name", pass);
stringProperty("name", "%s", pass);
}
void

Просмотреть файл

@ -36,8 +36,8 @@ class JSONSpewer
void beginObject();
void beginObjectProperty(const char* name);
void beginListProperty(const char* name);
void stringValue(const char* format, ...);
void stringProperty(const char* name, const char* format, ...);
void stringValue(const char* format, ...) MOZ_FORMAT_PRINTF(2, 3);
void stringProperty(const char* name, const char* format, ...) MOZ_FORMAT_PRINTF(3, 4);
void beginStringProperty(const char* name);
void endStringProperty();
void integerValue(int value);

Просмотреть файл

@ -172,9 +172,9 @@ class JitSpewIndent
~JitSpewIndent();
};
void JitSpew(JitSpewChannel channel, const char* fmt, ...);
void JitSpewStart(JitSpewChannel channel, const char* fmt, ...);
void JitSpewCont(JitSpewChannel channel, const char* fmt, ...);
void JitSpew(JitSpewChannel channel, const char* fmt, ...) MOZ_FORMAT_PRINTF(2, 3);
void JitSpewStart(JitSpewChannel channel, const char* fmt, ...) MOZ_FORMAT_PRINTF(2, 3);
void JitSpewCont(JitSpewChannel channel, const char* fmt, ...) MOZ_FORMAT_PRINTF(2, 3);
void JitSpewFin(JitSpewChannel channel);
void JitSpewHeader(JitSpewChannel channel);
bool JitSpewEnabled(JitSpewChannel channel);

Просмотреть файл

@ -72,7 +72,7 @@ class MIRGenerator
// Set an error state and prints a message. Returns false so errors can be
// propagated up.
bool abort(const char* message, ...); // always returns false
bool abort(const char* message, ...) MOZ_FORMAT_PRINTF(2, 3); // always returns false
bool abortFmt(const char* message, va_list ap); // always returns false
bool errored() const {

Просмотреть файл

@ -326,7 +326,7 @@ UniqueTrackedOptimizations::sortByFrequency(JSContext* cx)
MOZ_ASSERT(p);
p->value().index = sorted_.length();
JitSpew(JitSpew_OptimizationTracking, " Entry %u has frequency %u",
JitSpew(JitSpew_OptimizationTracking, " Entry %" PRIuSIZE " has frequency %" PRIu32,
sorted_.length(), p->value().frequency);
if (!sorted_.append(entries[i]))
@ -765,14 +765,14 @@ IonTrackedOptimizationsRegion::WriteRun(CompactBufferWriter& writer,
const UniqueTrackedOptimizations& unique)
{
// Write the header, which is the range that this whole run encompasses.
JitSpew(JitSpew_OptimizationTracking, " Header: [%u, %u]",
JitSpew(JitSpew_OptimizationTracking, " Header: [%" PRIuSIZE ", %" PRIuSIZE "]",
start->startOffset.offset(), (end - 1)->endOffset.offset());
writer.writeUnsigned(start->startOffset.offset());
writer.writeUnsigned((end - 1)->endOffset.offset());
// Write the first entry of the run, which is not delta-encoded.
JitSpew(JitSpew_OptimizationTracking,
" [%6u, %6u] vector %3u, offset %4u",
" [%6" PRIuSIZE ", %6" PRIuSIZE "] vector %3u, offset %4" PRIuSIZE,
start->startOffset.offset(), start->endOffset.offset(),
unique.indexOf(start->optimizations), writer.length());
uint32_t prevEndOffset = start->endOffset.offset();
@ -789,7 +789,7 @@ IonTrackedOptimizationsRegion::WriteRun(CompactBufferWriter& writer,
uint8_t index = unique.indexOf(entry->optimizations);
JitSpew(JitSpew_OptimizationTracking,
" [%6u, %6u] delta [+%5u, +%5u] vector %3u, offset %4u",
" [%6u, %6u] delta [+%5u, +%5u] vector %3u, offset %4" PRIuSIZE,
startOffset, endOffset, startDelta, length, index, writer.length());
WriteDelta(writer, startDelta, length, index);
@ -825,7 +825,7 @@ WriteOffsetsTable(CompactBufferWriter& writer, const Vector<uint32_t, 16>& offse
// Write entry offset table.
for (size_t i = 0; i < offsets.length(); i++) {
JitSpew(JitSpew_OptimizationTracking, " Entry %u reverse offset %u",
JitSpew(JitSpew_OptimizationTracking, " Entry %" PRIuSIZE " reverse offset %u",
i, tableOffset - padding - offsets[i]);
writer.writeNativeEndianUint32_t(tableOffset - padding - offsets[i]);
}
@ -885,7 +885,7 @@ SpewConstructor(TypeSet::Type ty, JSFunction* constructor)
Maybe<unsigned> lineno;
InterpretedFunctionFilenameAndLineNumber(constructor, &filename, &lineno);
JitSpew(JitSpew_OptimizationTracking, " Unique type %s has constructor %s (%s:%" PRIuSIZE ")",
JitSpew(JitSpew_OptimizationTracking, " Unique type %s has constructor %s (%s:%u)",
TypeSet::TypeString(ty), buf, filename, lineno.isSome() ? *lineno : 0);
#endif
}
@ -919,7 +919,7 @@ jit::WriteIonTrackedOptimizationsTable(JSContext* cx, CompactBufferWriter& write
if (JitSpewEnabled(JitSpew_OptimizationTracking)) {
JitSpewStart(JitSpew_OptimizationTracking, "=> Training data: ");
for (const NativeToTrackedOptimizations* entry = start; entry != end; entry++) {
JitSpewCont(JitSpew_OptimizationTracking, "%u,%u,%u ",
JitSpewCont(JitSpew_OptimizationTracking, "%" PRIuSIZE ",%" PRIuSIZE ",%u ",
entry->startOffset.offset(), entry->endOffset.offset(),
unique.indexOf(entry->optimizations));
}
@ -934,7 +934,8 @@ jit::WriteIonTrackedOptimizationsTable(JSContext* cx, CompactBufferWriter& write
JitSpew(JitSpew_Profiling, "=> Writing regions");
while (entry != end) {
uint32_t runLength = IonTrackedOptimizationsRegion::ExpectedRunLength(entry, end);
JitSpew(JitSpew_OptimizationTracking, " Run at entry %u, length %u, offset %u",
JitSpew(JitSpew_OptimizationTracking,
" Run at entry %" PRIuSIZE ", length %" PRIu32 ", offset %" PRIuSIZE,
entry - start, runLength, writer.length());
if (!offsets.append(writer.length()))
@ -957,7 +958,7 @@ jit::WriteIonTrackedOptimizationsTable(JSContext* cx, CompactBufferWriter& write
offsets.clear();
const UniqueTrackedOptimizations::SortedVector& vec = unique.sortedVector();
JitSpew(JitSpew_OptimizationTracking, "=> Writing unique optimizations table with %u entr%s",
JitSpew(JitSpew_OptimizationTracking, "=> Writing unique optimizations table with %" PRIuSIZE " entr%s",
vec.length(), vec.length() == 1 ? "y" : "ies");
// Write out type info payloads.
@ -967,7 +968,8 @@ jit::WriteIonTrackedOptimizationsTable(JSContext* cx, CompactBufferWriter& write
for (const UniqueTrackedOptimizations::SortEntry* p = vec.begin(); p != vec.end(); p++) {
const TempOptimizationTypeInfoVector* v = p->types;
JitSpew(JitSpew_OptimizationTracking, " Type info entry %u of length %u, offset %u",
JitSpew(JitSpew_OptimizationTracking,
" Type info entry %" PRIuSIZE " of length %" PRIuSIZE ", offset %" PRIuSIZE,
p - vec.begin(), v->length(), writer.length());
SpewTempOptimizationTypeInfoVector(v, " ");
@ -1017,7 +1019,8 @@ jit::WriteIonTrackedOptimizationsTable(JSContext* cx, CompactBufferWriter& write
// Write out attempts payloads.
for (const UniqueTrackedOptimizations::SortEntry* p = vec.begin(); p != vec.end(); p++) {
const TempOptimizationAttemptsVector* v = p->attempts;
JitSpew(JitSpew_OptimizationTracking, " Attempts entry %u of length %u, offset %u",
JitSpew(JitSpew_OptimizationTracking,
" Attempts entry %" PRIuSIZE " of length %" PRIuSIZE ", offset %" PRIuSIZE,
p - vec.begin(), v->length(), writer.length());
SpewTempOptimizationAttemptsVector(v, " ");

Просмотреть файл

@ -6,6 +6,8 @@
#include "jit/Recover.h"
#include "mozilla/SizePrintfMacros.h"
#include "jsapi.h"
#include "jscntxt.h"
#include "jsmath.h"
@ -123,7 +125,7 @@ MResumePoint::writeRecoverData(CompactBufferWriter& writer) const
uint32_t formalArgs = CountArgSlots(script, fun);
uint32_t nallocs = formalArgs + script->nfixed() + exprStack;
JitSpew(JitSpew_IonSnapshots, "Starting frame; implicit %u, formals %u, fixed %u, exprs %u",
JitSpew(JitSpew_IonSnapshots, "Starting frame; implicit %u, formals %u, fixed %" PRIuSIZE ", exprs %u",
implicit, formalArgs - implicit, script->nfixed(), exprStack);
uint32_t pcoff = script->pcToOffset(pc());

Просмотреть файл

@ -7,6 +7,7 @@
#include "jit/Safepoints.h"
#include "mozilla/MathAlgorithms.h"
#include "mozilla/SizePrintfMacros.h"
#include "jit/BitSet.h"
#include "jit/JitSpewer.h"
@ -31,7 +32,7 @@ SafepointWriter::init(TempAllocator& alloc)
uint32_t
SafepointWriter::startEntry()
{
JitSpew(JitSpew_Safepoints, "Encoding safepoint (position %d):", stream_.length());
JitSpew(JitSpew_Safepoints, "Encoding safepoint (position %" PRIuSIZE "):", stream_.length());
return uint32_t(stream_.length());
}

Просмотреть файл

@ -2132,7 +2132,7 @@ UpdateExistingGenerationalDOMProxyStub(ICGetProp_Fallback* stub,
// Update generation
uint64_t generation = expandoAndGeneration->generation;
JitSpew(JitSpew_BaselineIC,
" Updating existing stub with generation, old value: %i, "
" Updating existing stub with generation, old value: %" PRIu64 ", "
"new value: %" PRIu64 "", updateStub->generation(),
generation);
updateStub->setGeneration(generation);

Просмотреть файл

@ -202,8 +202,10 @@ class ICFallbackStub;
#undef FORWARD_DECLARE_STUBS
#ifdef JS_JITSPEW
void FallbackICSpew(JSContext* cx, ICFallbackStub* stub, const char* fmt, ...);
void TypeFallbackICSpew(JSContext* cx, ICTypeMonitor_Fallback* stub, const char* fmt, ...);
void FallbackICSpew(JSContext* cx, ICFallbackStub* stub, const char* fmt, ...)
MOZ_FORMAT_PRINTF(3, 4);
void TypeFallbackICSpew(JSContext* cx, ICTypeMonitor_Fallback* stub, const char* fmt, ...)
MOZ_FORMAT_PRINTF(3, 4);
#else
#define FallbackICSpew(...)
#define TypeFallbackICSpew(...)

Просмотреть файл

@ -996,7 +996,7 @@ ValueNumberer::visitBlock(MBasicBlock* block, const MBasicBlock* dominatorRoot)
bool
ValueNumberer::visitDominatorTree(MBasicBlock* dominatorRoot)
{
JitSpew(JitSpew_GVN, " Visiting dominator tree (with %llu blocks) rooted at block%u%s",
JitSpew(JitSpew_GVN, " Visiting dominator tree (with %" PRIu64 " blocks) rooted at block%u%s",
uint64_t(dominatorRoot->numDominated()), dominatorRoot->id(),
dominatorRoot == graph_.entryBlock() ? " (normal entry block)" :
dominatorRoot == graph_.osrBlock() ? " (OSR entry block)" :
@ -1222,7 +1222,7 @@ ValueNumberer::run(UpdateAliasAnalysisFlag updateAliasAnalysis)
{
updateAliasAnalysis_ = updateAliasAnalysis == UpdateAliasAnalysis;
JitSpew(JitSpew_GVN, "Running GVN on graph (with %llu blocks)",
JitSpew(JitSpew_GVN, "Running GVN on graph (with %" PRIu64 " blocks)",
uint64_t(graph_.numBlocks()));
// Adding fixup blocks only make sense iff we have a second entry point into
@ -1282,7 +1282,7 @@ ValueNumberer::run(UpdateAliasAnalysisFlag updateAliasAnalysis)
break;
}
JitSpew(JitSpew_GVN, "Re-running GVN on graph (run %d, now with %llu blocks)",
JitSpew(JitSpew_GVN, "Re-running GVN on graph (run %d, now with %" PRIu64 " blocks)",
runs, uint64_t(graph_.numBlocks()));
}

Просмотреть файл

@ -1363,7 +1363,7 @@ class Assembler : public AssemblerShared
uint32_t spewResolve(Label* l);
uint32_t spewProbe(Label* l);
uint32_t spewDefine(Label* l);
void spew(const char* fmt, ...);
void spew(const char* fmt, ...) MOZ_FORMAT_PRINTF(2, 3);
void spew(const char* fmt, va_list args);
#endif

Просмотреть файл

@ -43,6 +43,7 @@ namespace disasm {
// Helper function for printing to a Vector.
static int
MOZ_FORMAT_PRINTF(2, 3)
SNPrintF(V8Vector<char> str, const char* format, ...)
{
va_list args;

Просмотреть файл

@ -7,6 +7,7 @@
#include "jit/shared/CodeGenerator-shared-inl.h"
#include "mozilla/DebugOnly.h"
#include "mozilla/SizePrintfMacros.h"
#include "jit/CompactBuffer.h"
#include "jit/IonCaches.h"
@ -233,7 +234,7 @@ CodeGeneratorShared::addNativeToBytecodeEntry(const BytecodeSite* site)
// bytecodeOffset, but the nativeOffset has changed, do nothing.
// The same site just generated some more code.
if (lastEntry.tree == tree && lastEntry.pc == pc) {
JitSpew(JitSpew_Profiling, " => In-place update [%u-%u]",
JitSpew(JitSpew_Profiling, " => In-place update [%" PRIuSIZE "-%" PRIu32 "]",
lastEntry.nativeOffset.offset(), nativeOffset);
return true;
}
@ -280,7 +281,7 @@ CodeGeneratorShared::dumpNativeToBytecodeEntries()
{
#ifdef JS_JITSPEW
InlineScriptTree* topTree = gen->info().inlineScriptTree();
JitSpewStart(JitSpew_Profiling, "Native To Bytecode Entries for %s:%d\n",
JitSpewStart(JitSpew_Profiling, "Native To Bytecode Entries for %s:%" PRIuSIZE "\n",
topTree->script()->filename(), topTree->script()->lineno());
for (unsigned i = 0; i < nativeToBytecodeList_.length(); i++)
dumpNativeToBytecodeEntry(i);
@ -303,16 +304,16 @@ CodeGeneratorShared::dumpNativeToBytecodeEntry(uint32_t idx)
if (nextRef->tree == ref.tree)
pcDelta = nextRef->pc - ref.pc;
}
JitSpewStart(JitSpew_Profiling, " %08x [+%-6d] => %-6d [%-4d] {%-10s} (%s:%d",
JitSpewStart(JitSpew_Profiling, " %08" PRIxSIZE " [+%-6d] => %-6ld [%-4d] {%-10s} (%s:%" PRIuSIZE,
ref.nativeOffset.offset(),
nativeDelta,
ref.pc - script->code(),
(long) (ref.pc - script->code()),
pcDelta,
CodeName[JSOp(*ref.pc)],
script->filename(), script->lineno());
for (tree = tree->caller(); tree; tree = tree->caller()) {
JitSpewCont(JitSpew_Profiling, " <= %s:%d", tree->script()->filename(),
JitSpewCont(JitSpew_Profiling, " <= %s:%" PRIuSIZE, tree->script()->filename(),
tree->script()->lineno());
}
JitSpewCont(JitSpew_Profiling, ")");
@ -927,7 +928,7 @@ CodeGeneratorShared::generateCompactTrackedOptimizationsMap(JSContext* cx, JitCo
"== Compact Native To Optimizations Map [%p-%p] size %u",
data, data + trackedOptimizationsMapSize_, trackedOptimizationsMapSize_);
JitSpew(JitSpew_OptimizationTracking,
" with type list of length %u, size %u",
" with type list of length %" PRIuSIZE ", size %" PRIuSIZE,
allTypes->length(), allTypes->length() * sizeof(IonTrackedTypeWithAddendum));
return true;

Просмотреть файл

@ -8,6 +8,7 @@
#define jit_shared_IonAssemblerBufferWithConstantPools_h
#include "mozilla/MathAlgorithms.h"
#include "mozilla/SizePrintfMacros.h"
#include <algorithm>
@ -792,7 +793,7 @@ struct AssemblerBufferWithConstantPools : public AssemblerBuffer<SliceSize, Inst
if (numPoolEntries)
JitSpew(JitSpew_Pools, "[%d] Inserting pool entry caused a spill", id);
else
JitSpew(JitSpew_Pools, "[%d] Inserting instruction(%d) caused a spill", id,
JitSpew(JitSpew_Pools, "[%d] Inserting instruction(%" PRIuSIZE ") caused a spill", id,
sizeExcludingCurrentPool());
finishPool();
@ -863,7 +864,7 @@ struct AssemblerBufferWithConstantPools : public AssemblerBuffer<SliceSize, Inst
// Now to get an instruction to write.
PoolEntry retPE;
if (numPoolEntries) {
JitSpew(JitSpew_Pools, "[%d] Entry has index %u, offset %u", id, index,
JitSpew(JitSpew_Pools, "[%d] Entry has index %u, offset %" PRIuSIZE, id, index,
sizeExcludingCurrentPool());
Asm::InsertIndexIntoTag(inst, index);
// Figure out the offset within the pool entries.
@ -935,8 +936,8 @@ struct AssemblerBufferWithConstantPools : public AssemblerBuffer<SliceSize, Inst
}
void finishPool() {
JitSpew(JitSpew_Pools, "[%d] Attempting to finish pool %d with %d entries.", id,
poolInfo_.length(), pool_.numEntries());
JitSpew(JitSpew_Pools, "[%d] Attempting to finish pool %" PRIuSIZE " with %u entries.",
id, poolInfo_.length(), pool_.numEntries());
if (pool_.numEntries() == 0 && !hasExpirableShortRangeBranches()) {
// If there is no data in the pool being dumped, don't dump anything.
@ -1004,7 +1005,7 @@ struct AssemblerBufferWithConstantPools : public AssemblerBuffer<SliceSize, Inst
// the pool entry that is being loaded. We need to do a non-trivial
// amount of math here, since the pool that we've made does not
// actually reside there in memory.
JitSpew(JitSpew_Pools, "[%d] Fixing entry %d offset to %u", id, idx, codeOffset);
JitSpew(JitSpew_Pools, "[%d] Fixing entry %d offset to %" PRIuSIZE, id, idx, codeOffset);
Asm::PatchConstantPoolLoad(inst, (uint8_t*)inst + codeOffset);
}
@ -1037,7 +1038,7 @@ struct AssemblerBufferWithConstantPools : public AssemblerBuffer<SliceSize, Inst
// assumed that no pool entries are allocated in a no-pool region and
// this is asserted when allocating entries.
if (!hasSpaceForInsts(maxInst, 0)) {
JitSpew(JitSpew_Pools, "[%d] No-Pool instruction(%d) caused a spill.", id,
JitSpew(JitSpew_Pools, "[%d] No-Pool instruction(%" PRIuSIZE ") caused a spill.", id,
sizeExcludingCurrentPool());
finishPool();
}
@ -1077,8 +1078,8 @@ struct AssemblerBufferWithConstantPools : public AssemblerBuffer<SliceSize, Inst
// dumped at the aligned code position.
if (!hasSpaceForInsts(requiredFill / InstSize + 1, 0)) {
// Alignment would cause a pool dump, so dump the pool now.
JitSpew(JitSpew_Pools, "[%d] Alignment of %d at %d caused a spill.", id, alignment,
sizeExcludingCurrentPool());
JitSpew(JitSpew_Pools, "[%d] Alignment of %d at %" PRIuSIZE " caused a spill.",
id, alignment, sizeExcludingCurrentPool());
finishPool();
}

Просмотреть файл

@ -5199,13 +5199,16 @@ const uint16_t MaxNumErrorArguments = 10;
* and its arguments.
*/
extern JS_PUBLIC_API(void)
JS_ReportErrorASCII(JSContext* cx, const char* format, ...);
JS_ReportErrorASCII(JSContext* cx, const char* format, ...)
MOZ_FORMAT_PRINTF(2, 3);
extern JS_PUBLIC_API(void)
JS_ReportErrorLatin1(JSContext* cx, const char* format, ...);
JS_ReportErrorLatin1(JSContext* cx, const char* format, ...)
MOZ_FORMAT_PRINTF(2, 3);
extern JS_PUBLIC_API(void)
JS_ReportErrorUTF8(JSContext* cx, const char* format, ...);
JS_ReportErrorUTF8(JSContext* cx, const char* format, ...)
MOZ_FORMAT_PRINTF(2, 3);
/*
* Use an errorNumber to retrieve the format string, args are char*
@ -5257,13 +5260,16 @@ JS_ReportErrorNumberUCArray(JSContext* cx, JSErrorCallback errorCallback,
* being set, false otherwise.
*/
extern JS_PUBLIC_API(bool)
JS_ReportWarningASCII(JSContext* cx, const char* format, ...);
JS_ReportWarningASCII(JSContext* cx, const char* format, ...)
MOZ_FORMAT_PRINTF(2, 3);
extern JS_PUBLIC_API(bool)
JS_ReportWarningLatin1(JSContext* cx, const char* format, ...);
JS_ReportWarningLatin1(JSContext* cx, const char* format, ...)
MOZ_FORMAT_PRINTF(2, 3);
extern JS_PUBLIC_API(bool)
JS_ReportWarningUTF8(JSContext* cx, const char* format, ...);
JS_ReportWarningUTF8(JSContext* cx, const char* format, ...)
MOZ_FORMAT_PRINTF(2, 3);
extern JS_PUBLIC_API(bool)
JS_ReportErrorFlagsAndNumberASCII(JSContext* cx, unsigned flags,

Просмотреть файл

@ -3630,11 +3630,11 @@ js::DumpBacktrace(JSContext* cx, FILE* fp)
i.isWasm() ? 'W' :
'?';
sprinter.printf("#%d %14p %c %s:%d",
sprinter.printf("#%" PRIuSIZE " %14p %c %s:%d",
depth, i.rawFramePtr(), frameType, filename, line);
if (i.hasScript()) {
sprinter.printf(" (%p @ %d)\n",
sprinter.printf(" (%p @ %" PRIuSIZE ")\n",
i.script(), i.script()->pcToOffset(i.pc()));
} else {
sprinter.printf(" (%p)\n", i.pc());

Просмотреть файл

@ -151,14 +151,14 @@ const char * PCCounts::numExecName = "interp";
static MOZ_MUST_USE bool
DumpIonScriptCounts(Sprinter* sp, HandleScript script, jit::IonScriptCounts* ionCounts)
{
if (!sp->jsprintf("IonScript [%lu blocks]:\n", ionCounts->numBlocks()))
if (!sp->jsprintf("IonScript [%" PRIuSIZE " blocks]:\n", ionCounts->numBlocks()))
return false;
for (size_t i = 0; i < ionCounts->numBlocks(); i++) {
const jit::IonBlockCounts& block = ionCounts->block(i);
unsigned lineNumber = 0, columnNumber = 0;
lineNumber = PCToLineNumber(script, script->offsetToPC(block.offset()), &columnNumber);
if (!sp->jsprintf("BB #%lu [%05u,%u,%u]",
if (!sp->jsprintf("BB #%" PRIu32 " [%05u,%u,%u]",
block.id(), block.offset(), lineNumber, columnNumber))
{
return false;
@ -168,10 +168,10 @@ DumpIonScriptCounts(Sprinter* sp, HandleScript script, jit::IonScriptCounts* ion
return false;
}
for (size_t j = 0; j < block.numSuccessors(); j++) {
if (!sp->jsprintf(" -> #%lu", block.successor(j)))
if (!sp->jsprintf(" -> #%" PRIu32, block.successor(j)))
return false;
}
if (!sp->jsprintf(" :: %llu hits\n", block.hitCount()))
if (!sp->jsprintf(" :: %" PRIu64 " hits\n", block.hitCount()))
return false;
if (!sp->jsprintf("%s\n", block.code()))
return false;

Просмотреть файл

@ -63,18 +63,18 @@ struct NumArgState
typedef mozilla::Vector<NumArgState, 20, js::SystemAllocPolicy> NumArgStateVector;
#define TYPE_INT16 0
#define TYPE_UINT16 1
#define TYPE_SHORT 0
#define TYPE_USHORT 1
#define TYPE_INTN 2
#define TYPE_UINTN 3
#define TYPE_INT32 4
#define TYPE_UINT32 5
#define TYPE_INT64 6
#define TYPE_UINT64 7
#define TYPE_LONG 4
#define TYPE_ULONG 5
#define TYPE_LONGLONG 6
#define TYPE_ULONGLONG 7
#define TYPE_STRING 8
#define TYPE_DOUBLE 9
#define TYPE_INTSTR 10
#define TYPE_WSTRING 11
#define TYPE_POINTER 11
#define TYPE_UNKNOWN 20
#define FLAG_LEFT 0x1
@ -89,31 +89,9 @@ generic_write(SprintfState* ss, const char* src, size_t srclen)
return (*ss->stuff)(ss, src, srclen);
}
inline bool
generic_write(SprintfState* ss, const char16_t* src, size_t srclen)
{
const size_t CHUNK_SIZE = 64;
char chunk[CHUNK_SIZE];
size_t j = 0;
size_t i = 0;
while (i < srclen) {
// FIXME: truncates characters to 8 bits
chunk[j++] = char(src[i++]);
if (j == CHUNK_SIZE || i == srclen) {
if (!(*ss->stuff)(ss, chunk, j))
return false;
j = 0;
}
}
return true;
}
// Fill into the buffer using the data in src
template <typename Char>
static bool
fill2(SprintfState* ss, const Char* src, int srclen, int width, int flags)
fill2(SprintfState* ss, const char* src, int srclen, int width, int flags)
{
char space = ' ';
@ -318,19 +296,16 @@ static bool cvt_f(SprintfState* ss, double d, const char* fmt0, const char* fmt1
}
static inline const char* generic_null_str(const char*) { return "(null)"; }
static inline const char16_t* generic_null_str(const char16_t*) { return u"(null)"; }
static inline size_t generic_strlen(const char* s) { return strlen(s); }
static inline size_t generic_strlen(const char16_t* s) { return js_strlen(s); }
/*
* Convert a string into its printable form. "width" is the output
* width. "prec" is the maximum number of characters of "s" to output,
* where -1 means until NUL.
*/
template <typename Char>
static bool
cvt_s(SprintfState* ss, const Char* s, int width, int prec, int flags)
cvt_s(SprintfState* ss, const char* s, int width, int prec, int flags)
{
if (prec == 0)
return true;
@ -452,23 +427,24 @@ BuildArgArray(const char* fmt, va_list ap, NumArgStateVector& nas)
// size
nas[cn].type = TYPE_INTN;
if (c == 'h') {
nas[cn].type = TYPE_INT16;
nas[cn].type = TYPE_SHORT;
c = *p++;
} else if (c == 'L') {
// XXX not quite sure here
nas[cn].type = TYPE_INT64;
nas[cn].type = TYPE_LONGLONG;
c = *p++;
} else if (c == 'l') {
nas[cn].type = TYPE_INT32;
nas[cn].type = TYPE_LONG;
c = *p++;
if (c == 'l') {
nas[cn].type = TYPE_INT64;
nas[cn].type = TYPE_LONGLONG;
c = *p++;
}
} else if (c == 'z' || c == 'I') {
static_assert(sizeof(size_t) == sizeof(int32_t) || sizeof(size_t) == sizeof(int64_t),
static_assert(sizeof(size_t) == sizeof(int) || sizeof(size_t) == sizeof(long) ||
sizeof(size_t) == sizeof(long long),
"size_t is not one of the expected sizes");
nas[cn].type = sizeof(size_t) == sizeof(int64_t) ? TYPE_INT64 : TYPE_INT32;
nas[cn].type = sizeof(size_t) == sizeof(int) ? TYPE_INTN :
sizeof(size_t) == sizeof(long) ? TYPE_LONG : TYPE_LONGLONG;
c = *p++;
}
@ -490,16 +466,7 @@ BuildArgArray(const char* fmt, va_list ap, NumArgStateVector& nas)
break;
case 'p':
// XXX should use cpp
if (sizeof(void*) == sizeof(int32_t)) {
nas[cn].type = TYPE_UINT32;
} else if (sizeof(void*) == sizeof(int64_t)) {
nas[cn].type = TYPE_UINT64;
} else if (sizeof(void*) == sizeof(int)) {
nas[cn].type = TYPE_UINTN;
} else {
nas[cn].type = TYPE_UNKNOWN;
}
nas[cn].type = TYPE_POINTER;
break;
case 'C':
@ -512,7 +479,7 @@ BuildArgArray(const char* fmt, va_list ap, NumArgStateVector& nas)
break;
case 's':
nas[cn].type = (nas[cn].type == TYPE_UINT16) ? TYPE_WSTRING : TYPE_STRING;
nas[cn].type = TYPE_STRING;
break;
case 'n':
@ -544,18 +511,18 @@ BuildArgArray(const char* fmt, va_list ap, NumArgStateVector& nas)
VARARGS_ASSIGN(nas[cn].ap, ap);
switch (nas[cn].type) {
case TYPE_INT16:
case TYPE_UINT16:
case TYPE_SHORT:
case TYPE_USHORT:
case TYPE_INTN:
case TYPE_UINTN: (void) va_arg(ap, int); break;
case TYPE_INT32: (void) va_arg(ap, int32_t); break;
case TYPE_UINT32: (void) va_arg(ap, uint32_t); break;
case TYPE_INT64: (void) va_arg(ap, int64_t); break;
case TYPE_UINT64: (void) va_arg(ap, uint64_t); break;
case TYPE_LONG: (void) va_arg(ap, long); break;
case TYPE_ULONG: (void) va_arg(ap, unsigned long); break;
case TYPE_LONGLONG: (void) va_arg(ap, long long); break;
case TYPE_ULONGLONG: (void) va_arg(ap, unsigned long long); break;
case TYPE_STRING: (void) va_arg(ap, char*); break;
case TYPE_WSTRING: (void) va_arg(ap, char16_t*); break;
case TYPE_INTSTR: (void) va_arg(ap, int*); break;
case TYPE_DOUBLE: (void) va_arg(ap, double); break;
case TYPE_POINTER: (void) va_arg(ap, void*); break;
default: MOZ_CRASH();
}
@ -576,14 +543,13 @@ dosprintf(SprintfState* ss, const char* fmt, va_list ap)
int flags, width, prec, radix, type;
union {
char ch;
char16_t wch;
int i;
long l;
int64_t ll;
long long ll;
double d;
const char* s;
const char16_t* ws;
int* ip;
void* p;
} u;
const char* fmt0;
static const char hex[] = "0123456789abcdef";
@ -685,23 +651,24 @@ dosprintf(SprintfState* ss, const char* fmt, va_list ap)
// size
type = TYPE_INTN;
if (c == 'h') {
type = TYPE_INT16;
type = TYPE_SHORT;
c = *fmt++;
} else if (c == 'L') {
// XXX not quite sure here
type = TYPE_INT64;
type = TYPE_LONGLONG;
c = *fmt++;
} else if (c == 'l') {
type = TYPE_INT32;
type = TYPE_LONG;
c = *fmt++;
if (c == 'l') {
type = TYPE_INT64;
type = TYPE_LONGLONG;
c = *fmt++;
}
} else if (c == 'z' || c == 'I') {
static_assert(sizeof(size_t) == sizeof(int32_t) || sizeof(size_t) == sizeof(int64_t),
static_assert(sizeof(size_t) == sizeof(int) || sizeof(size_t) == sizeof(long) ||
sizeof(size_t) == sizeof(long long),
"size_t is not one of the expected sizes");
type = sizeof(size_t) == sizeof(int64_t) ? TYPE_INT64 : TYPE_INT32;
type = sizeof(size_t) == sizeof(int) ? TYPE_INTN :
sizeof(size_t) == sizeof(long) ? TYPE_LONG : TYPE_LONGLONG;
c = *fmt++;
}
@ -735,15 +702,15 @@ dosprintf(SprintfState* ss, const char* fmt, va_list ap)
fetch_and_convert:
switch (type) {
case TYPE_INT16:
case TYPE_SHORT:
u.l = va_arg(ap, int);
if (u.l < 0) {
u.l = -u.l;
flags |= FLAG_NEG;
}
goto do_long;
case TYPE_UINT16:
u.l = va_arg(ap, int) & 0xffff;
case TYPE_USHORT:
u.l = (unsigned short) va_arg(ap, unsigned int);
goto do_long;
case TYPE_INTN:
u.l = va_arg(ap, int);
@ -756,30 +723,33 @@ dosprintf(SprintfState* ss, const char* fmt, va_list ap)
u.l = (long)va_arg(ap, unsigned int);
goto do_long;
case TYPE_INT32:
u.l = va_arg(ap, int32_t);
case TYPE_LONG:
u.l = va_arg(ap, long);
if (u.l < 0) {
u.l = -u.l;
flags |= FLAG_NEG;
}
goto do_long;
case TYPE_UINT32:
u.l = (long)va_arg(ap, uint32_t);
case TYPE_ULONG:
u.l = (long)va_arg(ap, unsigned long);
do_long:
if (!cvt_l(ss, u.l, width, prec, radix, type, flags, hexp))
return false;
break;
case TYPE_INT64:
u.ll = va_arg(ap, int64_t);
case TYPE_LONGLONG:
u.ll = va_arg(ap, long long);
if (u.ll < 0) {
u.ll = -u.ll;
flags |= FLAG_NEG;
}
goto do_longlong;
case TYPE_UINT64:
u.ll = va_arg(ap, uint64_t);
case TYPE_POINTER:
u.ll = (uintptr_t)va_arg(ap, void*);
goto do_longlong;
case TYPE_ULONGLONG:
u.ll = va_arg(ap, unsigned long long);
do_longlong:
if (!cvt_ll(ss, u.ll, width, prec, radix, type, flags, hexp))
return false;
@ -816,7 +786,7 @@ dosprintf(SprintfState* ss, const char* fmt, va_list ap)
}
}
switch (type) {
case TYPE_INT16:
case TYPE_SHORT:
case TYPE_INTN:
u.ch = va_arg(ap, int);
if (!(*ss->stuff)(ss, &u.ch, 1))
@ -832,16 +802,7 @@ dosprintf(SprintfState* ss, const char* fmt, va_list ap)
break;
case 'p':
if (sizeof(void*) == sizeof(int32_t)) {
type = TYPE_UINT32;
} else if (sizeof(void*) == sizeof(int64_t)) {
type = TYPE_UINT64;
} else if (sizeof(void*) == sizeof(int)) {
type = TYPE_UINTN;
} else {
MOZ_ASSERT(0);
break;
}
type = TYPE_POINTER;
radix = 16;
goto fetch_and_convert;
@ -856,15 +817,9 @@ dosprintf(SprintfState* ss, const char* fmt, va_list ap)
#endif
case 's':
if(type == TYPE_INT16) {
u.ws = va_arg(ap, const char16_t*);
if (!cvt_s(ss, u.ws, width, prec, flags))
return false;
} else {
u.s = va_arg(ap, const char*);
if (!cvt_s(ss, u.s, width, prec, flags))
return false;
}
u.s = va_arg(ap, const char*);
if (!cvt_s(ss, u.s, width, prec, flags))
return false;
break;
case 'n':
@ -1004,18 +959,18 @@ JS_vsprintf_append(char* last, const char* fmt, va_list ap)
return ss.base;
}
#undef TYPE_INT16
#undef TYPE_UINT16
#undef TYPE_SHORT
#undef TYPE_USHORT
#undef TYPE_INTN
#undef TYPE_UINTN
#undef TYPE_INT32
#undef TYPE_UINT32
#undef TYPE_INT64
#undef TYPE_UINT64
#undef TYPE_LONG
#undef TYPE_ULONG
#undef TYPE_LONGLONG
#undef TYPE_ULONGLONG
#undef TYPE_STRING
#undef TYPE_DOUBLE
#undef TYPE_INTSTR
#undef TYPE_WSTRING
#undef TYPE_POINTER
#undef TYPE_UNKNOWN
#undef FLAG_LEFT

Просмотреть файл

@ -14,11 +14,13 @@
** %x - unsigned hex
** %X - unsigned uppercase hex
** %o - unsigned octal
** %hd, %hu, %hx, %hX, %ho - 16-bit versions of above
** %ld, %lu, %lx, %lX, %lo - 32-bit versions of above
** %lld, %llu, %llx, %llX, %llo - 64 bit versions of above
** %s - ascii string
** %hs - ucs2 string
** %hd, %hu, %hx, %hX, %ho - "short" versions of above
** %ld, %lu, %lx, %lX, %lo - "long" versions of above
** %lld, %llu, %llx, %llX, %llo - "long long" versions of above
** %zd, %zo, %zu, %zx, %zX - size_t versions of above
** %Id, %Io, %Iu, %Ix, %IX - size_t versions of above (for Windows compat)
** You should use PRI*SIZE macros instead
** %s - string
** %c - character
** %p - pointer (deals with machine dependent pointer size)
** %f - float
@ -37,7 +39,8 @@
** buffer on success, nullptr on failure. Call "JS_smprintf_free" to release
** the memory returned.
*/
extern JS_PUBLIC_API(char*) JS_smprintf(const char* fmt, ...);
extern JS_PUBLIC_API(char*) JS_smprintf(const char* fmt, ...)
MOZ_FORMAT_PRINTF(1, 2);
/*
** Free the memory allocated, for the caller, by JS_smprintf
@ -51,7 +54,8 @@ extern JS_PUBLIC_API(void) JS_smprintf_free(char* mem);
** will allocate the initial string. The return value is the new value of
** last for subsequent calls, or nullptr if there is a malloc failure.
*/
extern JS_PUBLIC_API(char*) JS_sprintf_append(char* last, const char* fmt, ...);
extern JS_PUBLIC_API(char*) JS_sprintf_append(char* last, const char* fmt, ...)
MOZ_FORMAT_PRINTF(2, 3);
/*
** va_list forms of the above.

Просмотреть файл

@ -783,7 +783,7 @@ if CONFIG['JS_HAS_CTYPES']:
DEFINES['FFI_BUILDING'] = True
if CONFIG['GNU_CXX']:
CXXFLAGS += ['-Wno-shadow']
CXXFLAGS += ['-Wno-shadow', '-Werror=format']
# Suppress warnings in third-party code.
if CONFIG['CLANG_CXX']:

Просмотреть файл

@ -5232,7 +5232,7 @@ ReflectTrackedOptimizations(JSContext* cx, unsigned argc, Value* vp)
uint8_t* addr = ion->method()->raw() + endOffset;
entry.youngestFrameLocationAtAddr(rt, addr, &script, &pc);
if (!sp.jsprintf("{\"location\":\"%s:%u\",\"offset\":%u,\"index\":%u}%s",
if (!sp.jsprintf("{\"location\":\"%s:%" PRIuSIZE "\",\"offset\":%" PRIuSIZE ",\"index\":%u}%s",
script->filename(), script->lineno(), script->pcToOffset(pc), index,
iter.more() ? "," : ""))
{

Просмотреть файл

@ -264,7 +264,7 @@ OptionParser::extractValue(size_t argc, char** argv, size_t* i, char** value)
if (eq) {
*value = eq + 1;
if (*value[0] == '\0')
return error("A value is required for option %.*s", eq - argv[*i], argv[*i]);
return error("A value is required for option %.*s", (int) (eq - argv[*i]), argv[*i]);
return Okay;
}

Просмотреть файл

@ -228,7 +228,7 @@ class OptionParser
Option* findArgument(const char* name);
const Option* findArgument(const char* name) const;
Result error(const char* fmt, ...);
Result error(const char* fmt, ...) MOZ_FORMAT_PRINTF(2, 3);
Result extractValue(size_t argc, char** argv, size_t* i, char** value);
Result handleArg(size_t argc, char** argv, size_t* i, bool* optsAllowed);
Result handleOption(Option* opt, size_t argc, char** argv, size_t* i, bool* optsAllowed);

Просмотреть файл

@ -51,7 +51,7 @@ shellmoduleloader.inputs = [
]
if CONFIG['GNU_CXX']:
CXXFLAGS += ['-Wno-shadow']
CXXFLAGS += ['-Wno-shadow', '-Werror=format']
# This is intended as a temporary workaround to enable VS2015.
if CONFIG['_MSC_VER']:

Просмотреть файл

@ -91,16 +91,16 @@ LCovSource::exportInto(GenericPrinter& out) const
outFN_.exportInto(out);
outFNDA_.exportInto(out);
out.printf("FNF:%d\n", numFunctionsFound_);
out.printf("FNH:%d\n", numFunctionsHit_);
out.printf("FNF:%" PRIuSIZE "\n", numFunctionsFound_);
out.printf("FNH:%" PRIuSIZE "\n", numFunctionsHit_);
outBRDA_.exportInto(out);
out.printf("BRF:%d\n", numBranchesFound_);
out.printf("BRH:%d\n", numBranchesHit_);
out.printf("BRF:%" PRIuSIZE "\n", numBranchesFound_);
out.printf("BRH:%" PRIuSIZE "\n", numBranchesHit_);
outDA_.exportInto(out);
out.printf("LF:%d\n", numLinesInstrumented_);
out.printf("LH:%d\n", numLinesHit_);
out.printf("LF:%" PRIuSIZE "\n", numLinesInstrumented_);
out.printf("LH:%" PRIuSIZE "\n", numLinesHit_);
out.put("end_of_record\n");
}
@ -130,7 +130,7 @@ bool
LCovSource::writeScript(JSScript* script)
{
numFunctionsFound_++;
outFN_.printf("FN:%d,", script->lineno());
outFN_.printf("FN:%" PRIuSIZE ",", script->lineno());
if (!writeScriptName(outFN_, script))
return false;
outFN_.put("\n", 1);
@ -191,7 +191,7 @@ LCovSource::writeScript(JSScript* script)
}
if (oldLine != lineno && fallsthrough) {
outDA_.printf("DA:%d,%" PRIu64 "\n", lineno, hits);
outDA_.printf("DA:%" PRIuSIZE ",%" PRIu64 "\n", lineno, hits);
// Count the number of lines instrumented & hit.
numLinesInstrumented_++;
@ -220,13 +220,13 @@ LCovSource::writeScript(JSScript* script)
}
uint64_t taken = hits - fallthroughHits;
outBRDA_.printf("BRDA:%d,%d,0,", lineno, branchId);
outBRDA_.printf("BRDA:%" PRIuSIZE ",%" PRIuSIZE ",0,", lineno, branchId);
if (taken)
outBRDA_.printf("%" PRIu64 "\n", taken);
else
outBRDA_.put("-\n", 2);
outBRDA_.printf("BRDA:%d,%d,1,", lineno, branchId);
outBRDA_.printf("BRDA:%" PRIuSIZE ",%" PRIuSIZE ",1,", lineno, branchId);
if (fallthroughHits)
outBRDA_.printf("%" PRIu64 "\n", fallthroughHits);
else
@ -308,7 +308,8 @@ LCovSource::writeScript(JSScript* script)
caseHits -= fallsThroughHits;
}
outBRDA_.printf("BRDA:%d,%d,%d,", lineno, branchId, caseId);
outBRDA_.printf("BRDA:%" PRIuSIZE ",%" PRIuSIZE ",%" PRIuSIZE ",",
lineno, branchId, caseId);
if (caseHits)
outBRDA_.printf("%" PRIu64 "\n", caseHits);
else
@ -359,7 +360,8 @@ LCovSource::writeScript(JSScript* script)
}
if (defaultHasOwnClause) {
outBRDA_.printf("BRDA:%d,%d,%d,", lineno, branchId, caseId);
outBRDA_.printf("BRDA:%" PRIuSIZE ",%" PRIuSIZE ",%" PRIuSIZE ",",
lineno, branchId, caseId);
if (defaultHits)
outBRDA_.printf("%" PRIu64 "\n", defaultHits);
else

Просмотреть файл

@ -43,7 +43,7 @@ class GenericPrinter
}
// Prints a formatted string into the buffer.
virtual int printf(const char* fmt, ...);
virtual int printf(const char* fmt, ...) MOZ_FORMAT_PRINTF(2, 3);
virtual int vprintf(const char* fmt, va_list ap);
// Report that a string operation failed to get the memory it requested. The
@ -115,7 +115,7 @@ class Sprinter final : public GenericPrinter
// Format the given format/arguments as if by JS_vsmprintf, then put it.
// Return true on success, else return false and report an error (typically
// OOM).
MOZ_MUST_USE bool jsprintf(const char* fmt, ...);
MOZ_MUST_USE bool jsprintf(const char* fmt, ...) MOZ_FORMAT_PRINTF(2, 3);
// Prints a formatted string into the buffer.
virtual int vprintf(const char* fmt, va_list ap) override;
@ -157,7 +157,7 @@ class Fprinter final : public GenericPrinter
using GenericPrinter::put; // pick up |inline int put(const char* s);|
// Prints a formatted string into the buffer.
virtual int printf(const char* fmt, ...) override;
virtual int printf(const char* fmt, ...) override MOZ_FORMAT_PRINTF(2, 3);
virtual int vprintf(const char* fmt, va_list ap) override;
};
@ -203,7 +203,7 @@ class LSprinter final : public GenericPrinter
using GenericPrinter::put; // pick up |inline int put(const char* s);|
// Prints a formatted string into the buffer.
virtual int printf(const char* fmt, ...) override;
virtual int printf(const char* fmt, ...) override MOZ_FORMAT_PRINTF(2, 3);
virtual int vprintf(const char* fmt, va_list ap) override;
// Report that a string operation failed to get the memory it requested. The

Просмотреть файл

@ -50,6 +50,7 @@ TraceLoggerGraphState* traceLoggerGraphState = nullptr;
// are allowed, with %u standing for a full 32-bit number and %d standing for
// an up to 3-digit number.
static js::UniqueChars
MOZ_FORMAT_PRINTF(1, 2)
AllocTraceLogFilename(const char* pattern, ...) {
js::UniqueChars filename;

Просмотреть файл

@ -237,6 +237,7 @@ js::InferSpewImpl(const char* fmt, ...)
#endif
MOZ_NORETURN MOZ_COLD static void
MOZ_FORMAT_PRINTF(2, 3)
TypeFailure(JSContext* cx, const char* fmt, ...)
{
char msgbuf[1024]; /* Larger error messages will be truncated */
@ -3288,7 +3289,7 @@ js::TypeMonitorResult(JSContext* cx, JSScript* script, jsbytecode* pc, TypeSet::
if (types->hasType(type))
return;
InferSpew(ISpewOps, "bytecodeType: %p %05u: %s",
InferSpew(ISpewOps, "bytecodeType: %p %05" PRIuSIZE ": %s",
script, script->pcToOffset(pc), TypeSet::TypeString(type));
types->addType(cx, type);
}

Просмотреть файл

@ -1296,7 +1296,7 @@ const char * InferSpewColor(TypeConstraint* constraint);
const char * InferSpewColor(TypeSet* types);
#define InferSpew(channel, ...) if (InferSpewActive(channel)) { InferSpewImpl(__VA_ARGS__); } else {}
void InferSpewImpl(const char* fmt, ...);
void InferSpewImpl(const char* fmt, ...) MOZ_FORMAT_PRINTF(1, 2);
/* Check that the type property for id in group contains value. */
bool ObjectGroupHasProperty(JSContext* cx, ObjectGroup* group, jsid id, const Value& value);

Просмотреть файл

@ -154,6 +154,7 @@ private:
};
static nsresult
MOZ_FORMAT_PRINTF(2, 3)
ReportOnCallerUTF8(JSContext* callerContext,
const char* format, ...) {
if (!callerContext) {
@ -177,6 +178,7 @@ ReportOnCallerUTF8(JSContext* callerContext,
}
static nsresult
MOZ_FORMAT_PRINTF(2, 3)
ReportOnCallerUTF8(JSCLContextHelper& helper,
const char* format, ...)
{

Просмотреть файл

@ -116,9 +116,9 @@ XPCThrower::ThrowBadResult(nsresult rv, nsresult result, XPCCallContext& ccx)
format = "";
if (nsXPCException::NameAndFormatForNSResult(result, &name, nullptr) && name)
sz = JS_smprintf("%s 0x%x (%s)", format, result, name);
sz = JS_smprintf("%s 0x%x (%s)", format, (unsigned) result, name);
else
sz = JS_smprintf("%s 0x%x", format, result);
sz = JS_smprintf("%s 0x%x", format, (unsigned) result);
NS_ENSURE_TRUE_VOID(sz);
if (sz && sVerbose)

Просмотреть файл

@ -971,7 +971,7 @@ nsXPCWrappedJSClass::CallMethod(nsXPCWrappedJS* wrapper, uint16_t methodIndex,
const char* str = "IDL methods marked with [implicit_jscontext] "
"or [optional_argc] may not be implemented in JS";
// Throw and warn for good measure.
JS_ReportErrorASCII(cx, str);
JS_ReportErrorASCII(cx, "%s", str);
NS_WARNING(str);
return CheckForException(ccx, aes, name, GetInterfaceName());
}

Просмотреть файл

@ -72,4 +72,4 @@ if CONFIG['MOZ_B2G_BT']:
]
if CONFIG['GNU_CXX']:
CXXFLAGS += ['-Wno-shadow']
CXXFLAGS += ['-Wno-shadow', '-Werror=format']

Просмотреть файл

@ -274,7 +274,7 @@ static void
EnterAndThrowASCII(JSContext* cx, JSObject* wrapper, const char* msg)
{
JSAutoCompartment ac(cx, wrapper);
JS_ReportErrorASCII(cx, msg);
JS_ReportErrorASCII(cx, "%s", msg);
}
bool