Open Bug 897455 Opened 11 years ago Updated 2 years ago

Implement Store and API for adding Reasons to the Profiler

Categories

(Core :: Gecko Profiler, defect, P3)

defect

Tracking

()

People

(Reporter: rcampbell, Unassigned)

References

(Blocks 1 open bug)

Details

Multiple groups have identified a need to store and report information of the nature:

"Reason X has caused [Code|Operation] to become SLOW".

This seems to be a pretty common desire, though the individual means of implementing the detection of these reasons is going to vary and could be quite complicated.

We should add a data store to the Profiler object and an API for capturing these reasons to give interested parties a place to write them.
Assigning blame is usually difficult, but forming chains of blame would go a long way for a dev tool.

Flow of types when we analyze JS code to be JIT'd is an example of something that isn't too hard to assign blame chains for, for example, in the following program:

L1  function f(x) {
L2    print(x.length);
L3  }
L4  f({length:1});
L5  f([1]);

After being JIT'd, x.length will have an inline cache because it gets passed in JS objects with different types. The blame chain might look like:

x.length is slow, because x is polymorphic,
                  because argument 1 of f is polymorphic,
                  because L4,L5 contributed types to argument 1's type set
Priority: -- → P3
Should probably be in Core.
Component: Developer Tools: Profiler → Gecko Profiler
Product: Firefox → Core
Blocks: 1329137
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.