How about bisecting, if the symptom is observable in a few minutes of
running a nightly?
/be
Kannan Vijayan <mailto:[email protected]>
November 3, 2013 9:50 PM
You're hitting slowpath named property accesses (JSOP_GETELEM style)
which are going through an Ion IC, but which are not getting optimized
stubs added to handle them.
Tracking down the relevant code with the in-browser might be
helpful... The gecko profiler addon should be able to help here.
It'll gather profiling info continuously, and when you encounter some
sluggishness you can quickly hit a button on the toolbar to present
that info, and then just select the previous second or two to analyze.
Kannan
_______________________________________________
dev-tech-js-engine-internals mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals
Nicholas Nethercote <mailto:[email protected]>
November 3, 2013 7:11 PM
Hi,
Recently my trunk builds have been sluggish at times. It varies a
lot, but some days I have lots of pauses. It seems to happen when I
have lots of bugzilla tabs open, though I'm not certain that's a
factor. I also use Chatzilla, which may be a factor.
A number of the times it's happened I've run |perf top|, which is like
|top| but works at the level of functions rather than processes.
Here's a typical result when a bad pause is occurring:
18.08% perf-2573.map [.] 0x00007f2d41c0cf1d
6.04% libxul.so [.] js::jit::GetElementIC::update(JSContext*, u
4.92% libxul.so [.] js::Shape::search(js::ExclusiveContext*, js
4.53% libxul.so [.] js::types::TypeMonitorResult(JSContext*, JS
3.84% libxul.so [.] js::ShapeTable::search(long, bool)
2.55% libxul.so [.] js::baseops::GetProperty(JSContext*, JS::Ha
2.26% libc-2.17.so [.] __strstr_sse42
2.21% libxul.so [.] js::baseops::GetPropertyNoGC(JSContext*, JS
1.46% libxul.so [.] js::jit::GetPcScript(JSContext*, JSScript**
1.32% libxul.so [.] JSObject::lookupGeneric(JSContext*, JS::Han
1.27% libxul.so [.] js::jit::IonFrameIterator::operator++()
1.27% libc-2.17.so [.] __strcmp_sse42
1.19% libxul.so [.] js::types::AutoEnterAnalysis::~AutoEnterAna
1.11% libc-2.17.so [.] __memcpy_ssse3_back
1.09% libc-2.17.so [.] _int_malloc
1.03% libxul.so [.] js::jit::IonFrameIterator::script() const
0.91% libxul.so [.] js::types::TypeSet::hasType(js::types::Type
0.91% libc-2.17.so [.] __strlen_sse2_pminub
0.84% libxul.so [.] js::jit::OperatorIn(JSContext*, JS::Handle<
0.68% libxul.so [.] js::ObjectImpl::nativeLookup(js::ExclusiveC
0.64% libxul.so [.] JSAtom* js::ToAtom<(js::AllowGC)0>(js::Excl
The percentage indicates how many samples are occurring in each function.
Any suggestions what might be going on here? Some kind of property
access, I'd guess.
Nick
_______________________________________________
dev-tech-js-engine-internals mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals
_______________________________________________
dev-tech-js-engine-internals mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals