Global Metrics
path: .metrics.cognitive.average
old: null
new: 5.6
path: .metrics.cognitive.sum
old: 0.0
new: 28.0
path: .metrics.nom.total
old: 0.0
new: 5.0
path: .metrics.nom.functions
old: 0.0
new: 5.0
path: .metrics.nargs.average
old: null
new: 1.8
path: .metrics.nargs.sum
old: 0.0
new: 9.0
path: .metrics.cyclomatic.sum
old: 6.0
new: 29.0
path: .metrics.cyclomatic.average
old: 1.0
new: 2.4166666666666665
path: .metrics.halstead.vocabulary
old: 44.0
new: 90.0
path: .metrics.halstead.bugs
old: 0.09978797854455994
new: 0.7166207306026421
path: .metrics.halstead.level
old: 0.11594202898550723
new: 0.03197674418604651
path: .metrics.halstead.effort
old: 5179.635748182135
new: 99681.81412567888
path: .metrics.halstead.difficulty
old: 8.625
new: 31.272727272727273
path: .metrics.halstead.time
old: 287.75754156567416
new: 5537.878562537715
path: .metrics.halstead.N2
old: 46.0
new: 172.0
path: .metrics.halstead.length
old: 110.0
new: 491.0
path: .metrics.halstead.volume
old: 600.5374780501027
new: 3187.4998702978705
path: .metrics.halstead.estimated_program_length
old: 203.01955000865388
new: 508.9691118949657
path: .metrics.halstead.N1
old: 64.0
new: 319.0
path: .metrics.halstead.n2
old: 32.0
new: 66.0
path: .metrics.halstead.purity_ratio
old: 1.8456322728059444
new: 1.0365969692361827
path: .metrics.halstead.n1
old: 12.0
new: 24.0
path: .metrics.nexits.sum
old: 0.0
new: 6.0
path: .metrics.nexits.average
old: null
new: 1.2
path: .metrics.mi.mi_visual_studio
old: 43.26252548959169
new: 25.238587689575045
path: .metrics.mi.mi_original
old: 73.97891858720179
new: 43.157984949173326
path: .metrics.mi.mi_sei
old: 61.46469292590393
new: 17.148211931741816
path: .metrics.loc.sloc
old: 47.0
new: 133.0
path: .metrics.loc.ploc
old: 28.0
new: 103.0
path: .metrics.loc.lloc
old: 0.0
new: 30.0
path: .metrics.loc.cloc
old: 8.0
new: 19.0
Spaces Data
Minimal test - lines (72, 106)
path: .spaces[1].metrics.cognitive.average
old: null
new: 16.0
path: .spaces[1].metrics.cognitive.sum
old: 0.0
new: 16.0
path: .spaces[1].metrics.nexits.average
old: null
new: 2.0
path: .spaces[1].metrics.nexits.sum
old: 0.0
new: 2.0
path: .spaces[1].metrics.nom.functions
old: 0.0
new: 1.0
path: .spaces[1].metrics.nom.total
old: 0.0
new: 1.0
path: .spaces[1].metrics.halstead.effort
old: 4888.304346282569
new: 8530.179581050725
path: .spaces[1].metrics.halstead.estimated_program_length
old: 183.90099886735345
new: 168.0419249893113
path: .spaces[1].metrics.halstead.n2
old: 29.0
new: 23.0
path: .spaces[1].metrics.halstead.vocabulary
old: 41.0
new: 39.0
path: .spaces[1].metrics.halstead.bugs
old: 0.09601024327787588
new: 0.13916099589881023
path: .spaces[1].metrics.halstead.N2
old: 42.0
new: 40.0
path: .spaces[1].metrics.halstead.time
old: 271.57246368236497
new: 473.8988656139291
path: .spaces[1].metrics.halstead.length
old: 105.0
new: 116.0
path: .spaces[1].metrics.halstead.difficulty
old: 8.689655172413794
new: 13.91304347826087
path: .spaces[1].metrics.halstead.level
old: 0.11507936507936509
new: 0.07187500000000001
path: .spaces[1].metrics.halstead.volume
old: 562.5429604848988
new: 613.1066573880208
path: .spaces[1].metrics.halstead.n1
old: 12.0
new: 16.0
path: .spaces[1].metrics.halstead.purity_ratio
old: 1.7514380844509851
new: 1.4486372843906146
path: .spaces[1].metrics.halstead.N1
old: 63.0
new: 76.0
path: .spaces[1].metrics.loc.lloc
old: 0.0
new: 13.0
path: .spaces[1].metrics.loc.ploc
old: 23.0
new: 27.0
path: .spaces[1].metrics.loc.sloc
old: 32.0
new: 35.0
path: .spaces[1].metrics.loc.blank
old: 8.0
new: 2.0
path: .spaces[1].metrics.loc.cloc
old: 1.0
new: 6.0
path: .spaces[1].metrics.nargs.sum
old: 0.0
new: 2.0
path: .spaces[1].metrics.nargs.average
old: null
new: 2.0
path: .spaces[1].metrics.mi.mi_visual_studio
old: 47.37207447180408
new: 45.58886494434368
path: .spaces[1].metrics.mi.mi_sei
old: 55.096280129627694
new: 67.6006153750648
path: .spaces[1].metrics.mi.mi_original
old: 81.00624734678497
new: 77.95695905482769
path: .spaces[1].metrics.cyclomatic.sum
old: 4.0
new: 9.0
path: .spaces[1].metrics.cyclomatic.average
old: 1.0
new: 9.0
Code
already_AddRefed EventQueueInternal::GetEvent(
const MutexAutoLock& aProofOfLock, mozilla::TimeDuration* aLastEventDelay) {
if (mQueue.IsEmpty()) {
if (aLastEventDelay) {
*aLastEventDelay = TimeDuration();
}
return nullptr;
}
#ifdef MOZ_GECKO_PROFILER
// We always want to clear the dispatch times, even if the profiler is turned
// off, because we want to empty the (previously-collected) dispatch times, if
// any, from when the profiler was turned on. We only want to do something
// interesting with the dispatch times if the profiler is turned on, though.
if (!mDispatchTimes.IsEmpty()) {
TimeStamp dispatch_time = mDispatchTimes.Pop();
if (profiler_is_active()) {
if (!dispatch_time.IsNull()) {
if (aLastEventDelay) {
*aLastEventDelay = TimeStamp::Now() - dispatch_time;
}
}
}
} else if (profiler_is_active()) {
if (aLastEventDelay) {
// if we just turned on the profiler, we don't have dispatch
// times for events already in the queue.
*aLastEventDelay = TimeDuration();
}
}
#endif
nsCOMPtr result = mQueue.Pop();
return result.forget();
}
Minimal test - lines (18, 69)
path: .spaces[0].metrics.cognitive.average
old: null
new: 12.0
path: .spaces[0].metrics.cognitive.sum
old: 0.0
new: 12.0
path: .spaces[0].metrics.nexits.average
old: null
new: 1.0
path: .spaces[0].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[0].metrics.mi.mi_sei
old: null
new: 35.90722025789188
path: .spaces[0].metrics.mi.mi_original
old: null
new: 66.28664633498343
path: .spaces[0].metrics.mi.mi_visual_studio
old: null
new: 38.764120663733
path: .spaces[0].metrics.nargs.average
old: null
new: 4.0
path: .spaces[0].metrics.nargs.sum
old: 0.0
new: 4.0
path: .spaces[0].metrics.nom.total
old: 0.0
new: 1.0
path: .spaces[0].metrics.nom.functions
old: 0.0
new: 1.0
path: .spaces[0].metrics.cyclomatic.sum
old: 1.0
new: 10.0
path: .spaces[0].metrics.cyclomatic.average
old: 1.0
new: 10.0
path: .spaces[0].metrics.halstead.N1
old: 0.0
new: 178.0
path: .spaces[0].metrics.halstead.bugs
old: 0.0
new: 0.3465785122822833
path: .spaces[0].metrics.halstead.length
old: 1.0
new: 263.0
path: .spaces[0].metrics.halstead.n2
old: 1.0
new: 47.0
path: .spaces[0].metrics.halstead.purity_ratio
old: null
new: 1.388241828966389
path: .spaces[0].metrics.halstead.time
old: 0.0
new: 1862.566668089544
path: .spaces[0].metrics.halstead.N2
old: 1.0
new: 85.0
path: .spaces[0].metrics.halstead.effort
old: 0.0
new: 33526.2000256118
path: .spaces[0].metrics.halstead.vocabulary
old: 1.0
new: 70.0
path: .spaces[0].metrics.halstead.volume
old: 0.0
new: 1612.0014334565262
path: .spaces[0].metrics.halstead.estimated_program_length
old: null
new: 365.10760101816027
path: .spaces[0].metrics.halstead.level
old: null
new: 0.04808184143222507
path: .spaces[0].metrics.halstead.n1
old: 0.0
new: 23.0
path: .spaces[0].metrics.halstead.difficulty
old: 0.0
new: 20.79787234042553
path: .spaces[0].metrics.loc.ploc
old: 1.0
new: 44.0
path: .spaces[0].metrics.loc.sloc
old: 1.0
new: 52.0
path: .spaces[0].metrics.loc.blank
old: 0.0
new: 6.0
path: .spaces[0].metrics.loc.cloc
old: 0.0
new: 2.0
path: .spaces[0].metrics.loc.lloc
old: 0.0
new: 14.0
Code
void EventQueueInternal::PutEvent(
already_AddRefed&& aEvent, EventQueuePriority aPriority,
const MutexAutoLock& aProofOfLock, mozilla::TimeDuration* aDelay) {
nsCOMPtr event(aEvent);
static_assert(static_cast(nsIRunnablePriority::PRIORITY_IDLE) ==
static_cast(EventQueuePriority::Idle));
static_assert(static_cast(nsIRunnablePriority::PRIORITY_NORMAL) ==
static_cast(EventQueuePriority::Normal));
static_assert(
static_cast(nsIRunnablePriority::PRIORITY_MEDIUMHIGH) ==
static_cast(EventQueuePriority::MediumHigh));
static_assert(
static_cast(nsIRunnablePriority::PRIORITY_INPUT_HIGH) ==
static_cast(EventQueuePriority::InputHigh));
static_assert(static_cast(nsIRunnablePriority::PRIORITY_HIGH) ==
static_cast(EventQueuePriority::High));
if (mForwardToTC) {
TaskController* tc = TaskController::Get();
TaskManager* manager = nullptr;
if (aPriority == EventQueuePriority::InputHigh) {
if (InputTaskManager::Get()->State() ==
InputTaskManager::STATE_DISABLED) {
aPriority = EventQueuePriority::Normal;
} else {
manager = InputTaskManager::Get();
}
} else if (aPriority == EventQueuePriority::DeferredTimers ||
aPriority == EventQueuePriority::Idle) {
manager = TaskController::Get()->GetIdleTaskManager();
}
tc->DispatchRunnable(event.forget(), static_cast(aPriority),
manager);
return;
}
#ifdef MOZ_GECKO_PROFILER
// Sigh, this doesn't check if this thread is being profiled
if (profiler_is_active()) {
// check to see if the profiler has been enabled since the last PutEvent
while (mDispatchTimes.Count() < mQueue.Count()) {
mDispatchTimes.Push(TimeStamp());
}
mDispatchTimes.Push(aDelay ? TimeStamp::Now() - *aDelay : TimeStamp::Now());
}
#endif
mQueue.Push(std::move(event));
}