2.1% performance gain on JS iBench.
Created attachment 6654 [details] patch
Created attachment 6655 [details] patch w/formatting to match current guidelines To keep things consistent, I only reformatted when moving a whole class or method.
Comment on attachment 6655 [details] patch w/formatting to match current guidelines I think that UString::operator= is exactly what hte compiler would generate, inline, if you just didn't declare the operator= at all. This otherwise looks great, so r=me.
Geoff, does the inline version of ActivationImp::put ever actually get inlined? It is a virtual method, so it could only possibly be inlined if someone called the method scoped to a specific class name so it picks the right one directly. Otherwise it goes through the vtable and can't inline.
Created attachment 6660 [details] patch to address comments and add a few more inlines Yes, removing operator= altogether is just as well. No, put() does not inline, nor do some other virtuals my first patch inlined. (Also explains why I couldn't get processFuncDecl to inline. That was driving me crazy.) New patch addresses both issues and adds a few more inlines (which is why I'm asking for review again). Total speedup: 2.9%.
Comment on attachment 6660 [details] patch to address comments and add a few more inlines r=me
Landed r12949.