Darin has been working on replacing ExecStates with a call frame Register pointer. This should be a small increase in function call performance.
*** Bug 21214 has been marked as a duplicate of this bug. ***
Created attachment 24036 [details] some work in progress on getting fields out of ExecState
Created attachment 24059 [details] patch
Comment on attachment 24059 [details] patch + ScopeChainNode(ScopeChainNode* next, JSObject* object, JSGlobalData* globalData, JSObject* globalThis) + : next(next) + , object(object) + , globalData(globalData) + , globalThis(globalThis) I don't think you ended up using this, did you? r=me -- should probably remove the ScopeChainNode change.
(In reply to comment #4) > (From update of attachment 24059 [details] [edit]) > + ScopeChainNode(ScopeChainNode* next, JSObject* object, JSGlobalData* > globalData, JSObject* globalThis) > + : next(next) > + , object(object) > + , globalData(globalData) > + , globalThis(globalThis) > > I don't think you ended up using this, did you? Yes, I did. That's still the way we get JSGlobalData faster in the more typical cases. It's possible we could roll that optimization back out because the really hot cases get it from the CTI. But all my performance testing has been with both mechanisms in place.
(In reply to comment #5) > Yes, I did. That's still the way we get JSGlobalData faster in the more typical > cases. More typical case means anyone who calls exec->globalData().
okeedokee!
Comment on attachment 24059 [details] patch Clearing flag since I landed this. http://trac.webkit.org/changeset/37257
Created attachment 24090 [details] patch
Comment on attachment 24090 [details] patch r=me if you do the #define exec CallFrame::create(r) workaround for the local variable 'exec' in Machine::privateExecute() that we discussed, and then remove the use of 'exec' afterwards in a followup patch.
http://trac.webkit.org/changeset/37297