Interface JvmHeapAbstractState<StateT extends AbstractState<StateT>>

All Superinterfaces:
AbstractState<JvmHeapAbstractState<StateT>>
All Known Implementing Classes:
JvmForgetfulHeapAbstractState, JvmShallowHeapAbstractState

public interface JvmHeapAbstractState<StateT extends AbstractState<StateT>> extends AbstractState<JvmHeapAbstractState<StateT>>
The JvmHeapAbstractState provides the interfaces for heap operations over objects and arrays.
  • Method Details

    • copy

      Description copied from interface: AbstractState
      Creates a copy of itself.
      Specified by:
      copy in interface AbstractState<StateT extends AbstractState<StateT>>
    • newArray

      StateT newArray(String type, List<StateT> dimensions, JvmCfaNode creationCite)
      Creates a new array of a given class with the given dimension sizes at a specific program point and returns a reference to it.
    • newObject

      StateT newObject(String className, JvmCfaNode creationCite)
      Creates a new object of a given class at a specific program point and returns a reference to it.
    • newObject

      default StateT newObject(Clazz clazz, JvmCfaNode creationCite)
      Creates a new object of a given Clazz at a specific program point and returns a reference to it.
    • getFieldOrDefault

      <T> StateT getFieldOrDefault(T object, String fqn, StateT defaultValue)
      Returns a field fqn from a reference object. If there is no abstract state representing the field, returns the defaultValue
    • setField

      <T> void setField(T object, String fqn, StateT value)
      Sets a value to a field fqn of a referenced object.
    • getArrayElementOrDefault

      <T> StateT getArrayElementOrDefault(T array, StateT index, StateT defaultValue)
      Returns an array element at the specified index or the defaultValue, if the element is unset.
    • setArrayElement

      <T> void setArrayElement(T array, StateT index, StateT value)
      Sets the array element value at the specified index.
    • reduce

      default void reduce(Set<Object> references)
      Discards unused parts of the heap. Does nothing in the default implementation.

      This can be overridden to model discarding heap portions at call sites.

      Parameters:
      references - information on the references to keep or discard, based on the implementation. Unused in the default implementation
    • expand

      default void expand(JvmHeapAbstractState<StateT> otherState)
      Expands the heap with references present in another state. Does nothing in the default implementation.

      This can be overridden to model recovering information discarded at call sites when analyzing a return site.

      Parameters:
      otherState - a heap state from which expanding the heap (e.g. the state calling a method to recover information discarded from it)