Class Instantiator

  • All Implemented Interfaces:
    IInstantiator

    public class Instantiator
    extends Object
    implements IInstantiator
    Add code to create an instance of a type in a synthetic method. Creates an instance of (hopefully) anything.
    • Method Detail

      • createInstance

        public SSAValue createInstance​(TypeReference T,
                                       boolean asManaged,
                                       SSAValue.VariableKey key,
                                       Set<? extends SSAValue> seen)
        Creates a new instance of type calling all that's necessary. If T is a class-type all its constructors are searched for the one found best suited (takes the least arguments, ...). New instances are created for all parameters, then the constructor is called. If T represents multiple types (is an interface, abstract class, ...) _all_ implementors of that type are instantiated After that they get Phi-ed together. If T is an array-type a new array of length 1 is generated.
      • createInstance

        public int createInstance​(TypeReference type,
                                  Object... instantiatorArgs)
        Satisfy the interface.
        Specified by:
        createInstance in interface IInstantiator
        Parameters:
        type - Type to generate an instance from
        instantiatorArgs - passed through utility functions
        Returns:
        SSA-Number of the instance