mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Bug 1299841: TraceLogger - Fail gracefully on OOM, r=bbouvier
This commit is contained in:
parent
67f478581c
commit
901986bdee
@ -978,13 +978,13 @@ BaselineScript::initTraceLogger(JSRuntime* runtime, JSScript* script,
|
||||
#endif
|
||||
|
||||
TraceLoggerThread* logger = TraceLoggerForMainThread(runtime);
|
||||
traceLoggerScriptEvent_ = TraceLoggerEvent(logger, TraceLogger_Scripts, script);
|
||||
|
||||
MOZ_ASSERT(offsets.length() == numTraceLoggerToggleOffsets_);
|
||||
for (size_t i = 0; i < offsets.length(); i++)
|
||||
traceLoggerToggleOffsets()[i] = offsets[i].offset();
|
||||
|
||||
if (TraceLogTextIdEnabled(TraceLogger_Engine) || TraceLogTextIdEnabled(TraceLogger_Scripts)) {
|
||||
traceLoggerScriptEvent_ = TraceLoggerEvent(logger, TraceLogger_Scripts, script);
|
||||
for (size_t i = 0; i < numTraceLoggerToggleOffsets_; i++) {
|
||||
CodeLocationLabel label(method_, CodeOffset(traceLoggerToggleOffsets()[i]));
|
||||
Assembler::ToggleToCmp(label);
|
||||
@ -1003,10 +1003,8 @@ BaselineScript::toggleTraceLoggerScripts(JSRuntime* runtime, JSScript* script, b
|
||||
// Patch the logging script textId to be correct.
|
||||
// When logging log the specific textId else the global Scripts textId.
|
||||
TraceLoggerThread* logger = TraceLoggerForMainThread(runtime);
|
||||
if (enable)
|
||||
if (enable && !traceLoggerScriptEvent_.hasPayload())
|
||||
traceLoggerScriptEvent_ = TraceLoggerEvent(logger, TraceLogger_Scripts, script);
|
||||
else
|
||||
traceLoggerScriptEvent_ = TraceLoggerEvent(logger, TraceLogger_Scripts);
|
||||
|
||||
AutoWritableJitCode awjc(method());
|
||||
|
||||
|
@ -480,7 +480,12 @@ TraceLoggerThread::startEvent(TraceLoggerTextId id) {
|
||||
void
|
||||
TraceLoggerThread::startEvent(const TraceLoggerEvent& event) {
|
||||
if (!event.hasPayload()) {
|
||||
if (!enabled())
|
||||
return;
|
||||
startEvent(TraceLogger_Error);
|
||||
disable(/* force = */ true, "TraceLogger encountered an empty event. "
|
||||
"Potentially due to OOM during creation of "
|
||||
"this event. Disabling TraceLogger.");
|
||||
return;
|
||||
}
|
||||
startEvent(event.payload()->textId());
|
||||
@ -776,6 +781,8 @@ TraceLoggerThreadState::init()
|
||||
enabledTextIds[TraceLogger_Baseline] = enabledTextIds[TraceLogger_Engine];
|
||||
enabledTextIds[TraceLogger_IonMonkey] = enabledTextIds[TraceLogger_Engine];
|
||||
|
||||
enabledTextIds[TraceLogger_Error] = true;
|
||||
|
||||
const char* options = getenv("TLOPTIONS");
|
||||
if (options) {
|
||||
if (strstr(options, "help")) {
|
||||
|
Loading…
Reference in New Issue
Block a user