Package org.jruby

Class FlagRegistry

java.lang.Object
org.jruby.FlagRegistry

public class FlagRegistry extends Object
This class serves as a registry of all bit flags we use on JRuby objects. In order to maximally use our bit flags and prevent overlap between ancestors and dependents, this class registers flags on a first-come, first-served basis using previous flags registered for ancestor classes as a base line for new flags in a descendant. Because of the first-come, first-served nature, the most general types will need to register their flags first. This guarantees all bit flags from the progenitor on down will be packed tightly while avoiding overlaps.
  • Constructor Details

    • FlagRegistry

      public FlagRegistry()
  • Method Details

    • newFlag

      public int newFlag(Class klass)
      Register a new flag for the given class. The bit index for the new flag will be calculated at runtime, by walking parent classes and looking for previously-registered flags. Ancestors should register all their flags before descendants (which means they should not be registered in a static initializer unless the parent is known to have fully run its own static initializers).
      Parameters:
      klass - the class for which to register a new flag
      Returns:
      an integer with the new flag bit set
    • printFlags

      public void printFlags()