
Greg Ewing wrote:
Neil Toronto wrote:
The hard part may be distinguishing LOAD_ATTR applied to self from LOAD_ATTR applied to something else.
Why would you *want* to distinguish that? A decent attribute lookup acceleration mechanism should work for attributes of any object, not just self. Think method calls, which are probably even more common than accesses to globals.
Now that's a durned good point. My cute little hack can be used anywhere you have a mostly-static dict (or at least one that grows infrequently) and a tuple of keys for which you want to repeatedly get or set values. As long as lookups start as tuple indexes (like indexes into co_names and such), things go fast. I'm still a bit fuzzy about how it would be used with LOAD_ATTR. Let's restrict it to just accelerating self.<attr> lookups for now. The oparg to LOAD_ATTR and STORE_ATTR is the co_names index, so co_names is again the tuple of keys. But it seems like you'd need an adapter (see previous reply to Eyal for terminology) for each pair of (self, method). Is there a better way? Neil