tfpt review “/shelveset:rubyopt;REDMOND\tomat”
Misc Ruby optimizations.
Optimizes method lookup:
- Adds cache for unsuccessful CLR member lookup. CLR types are
read-only and so the knowledge of a member lookup failure could be
stored for the next lookup. This saves about 10% of allocated memory
since unsuccessful lookups in reflection allocate some MethodInfo
- Stores successfully resolved CLR members in the module method
table. We don’t need to create a RubyMethodGroupInfo each time we find
CLR member and also if we find it once it is available the next time as
well (unless it is removed/modified).
- When a new method is added into a module/class and it doesn’t
hide a method of the same name that was already used in dynamic sites,
the sites don’t need to be invalidated.
Adds some perf counters.
Fixes message in method_missing.
Refactors RubyBinder a bit, especially super-call action.