Interface RTAContextInterpreter

All Superinterfaces:
CHAContextInterpreter
All Known Subinterfaces:
SSAContextInterpreter
All Known Implementing Classes:
AbstractReflectionInterpreter, ArgumentSpecialization.ArgumentSpecializationContextIntepreter, AstContextInsensitiveSSAContextInterpreter, ClassFactoryContextInterpreter, ClassNewInstanceContextInterpreter, CloneInterpreter, ContextInsensitiveRTAInterpreter, ContextInsensitiveSSAInterpreter, DefaultRTAInterpreter, DefaultSSAInterpreter, DelegatingRTAContextInterpreter, DelegatingSSAContextInterpreter, DexIContextInterpreter, FactoryBypassInterpreter, FallbackContextInterpreter, GetClassContextInterpeter, GetMethodContextInterpreter, IntentContextInterpreter, JavaLangClassContextInterpreter, JavaScriptFunctionApplyContextInterpreter, ReflectiveInvocationInterpreter

public interface RTAContextInterpreter extends CHAContextInterpreter
This object will analyze a method in a context and return information needed for RTA.
  • Method Details

    • iterateNewSites

      Iterator<NewSiteReference> iterateNewSites(CGNode node)
      Specified by:
      iterateNewSites in interface CHAContextInterpreter
      Returns:
      an Iterator of the types that may be allocated by a given method in a given context.
    • iterateFieldsRead

      Iterator<FieldReference> iterateFieldsRead(CGNode node)
      Returns:
      iterator of FieldReference
    • iterateFieldsWritten

      Iterator<FieldReference> iterateFieldsWritten(CGNode node)
      Returns:
      iterator of FieldReference
    • recordFactoryType

      boolean recordFactoryType(CGNode node, IClass klass)
      record that the "factory" method of a node should be interpreted to allocate a particular class.

      TODO: this is a little ugly, is there a better place to move this?

      Returns:
      true iff a NEW type was recorded, false if the type was previously recorded.