tfpt review “/shelveset:NewSingletons3;REDMOND\tomat”
Initial work to improve singletons.
- Improves reflection cache generator - it searches IronRuby.dll for
all types marked by [ReflectionCache] attribute and generates ref-cache
entries for all their methods and properties marked with [Emitted]
- Merges RubyModule.Subclass into RubyModule, i.e. RubyModule now
- IRubyObjects now hold on their immediate class (not nominal class)
and that reference might change once from a non-singleton to a singleton
This change allows IRubyObject singletons (including modules and
classes when used in static method calls) to have the same rules as
non-singleton objects. The rule no longer needs to hold on such objects.
- Implements module freezing: methods, constants, instance and class
variables, mixins cannot be modified on a frozen module. Besides, if an
object is frozen its singleton class is (recursively) frozen as well.
- Fixes object freezing: instance variables cannot be modified on a
frozen object (we allowed it).