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
arrays. - 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.
Tomas