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

On 11/3/2013, 10:11 PM, Nicholas Nethercote wrote:
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
dev-tech-js-engine-internals@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

_______________________________________________
dev-tech-js-engine-internals mailing list
dev-tech-js-engine-internals@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to