Package org.jruby
Class FlagRegistry
java.lang.Object
org.jruby.FlagRegistry
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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint
Register a new flag for the given class.void
-
Constructor Details
-
FlagRegistry
public FlagRegistry()
-
-
Method Details
-
newFlag
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()
-