Weak frames are stored in a linked list, so are not fast. Hence they are not meant to be used when there can be a lot of them active at the same time. When constructing large selects with lots of options we create one for every option.
Created attachment 8838432 [details] [diff] [review] patch
You might have missed this because it has almost the same title as bug 1340451.
We use a hashtable for non-stack WeakFrames now (bug 1340771) so this shouldn't be a perf problem anymore. The problem with using a reflow callback in this case is that it requests an additional reflow if the element has an accesskey, AFAICT: http://searchfox.org/mozilla-central/rev/d4adaabd6d2f88be0d0b151e022c06f6554909da/layout/xul/nsTextBoxFrame.cpp#179,214
Created attachment 8845006 [details] [diff] [review] Alternative patch Using a script runner should avoid that problem (I think) since it allows the "accesskey reflow request" to coalesce with the initial reflow.