accrue.analysis.interprocanalysis

## Class InterProcAnalysisPass<T extends Ordered<T>>

- java.lang.Object
- - polyglot.frontend.AbstractPass
  - - accrue.analysis.interprocanalysis.InterProcAnalysisPass<T>

- Type Parameters:
    `T` - Analysis result type
  All Implemented Interfaces:
    polyglot.frontend.Pass
  Direct Known Subclasses:
    CtlDepPass, DominationPass, InterProcVarContextPass, PreciseCallGraphPass, PreciseExPass, ReadWriteSetsPass

      public class InterProcAnalysisPass<T extends Ordered<T>>
      extends polyglot.frontend.AbstractPass

  Compiler pass for an interprocedural analysis.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected polyglot.frontend.ExtensionInfo` | `extInfo` Compiler extension info
    `protected AnalysisFactory<T>` | `factory` Analysis utility class
    `protected Registrar` | `registrar` Map from procedures to analysis results

    - ### Fields inherited from class polyglot.frontend.AbstractPass

      `exclusive_time, goal, inclusive_time`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `InterProcAnalysisPass(polyglot.frontend.ExtensionInfo extInfo, polyglot.frontend.goals.Goal g, Registrar registrar, AnalysisFactory<T> factory)` Create a new interprocedural analysis pass

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected WorkQueue<T>` | `createWorkQueue()` Create the analysis work queue of analysis units
    `polyglot.frontend.ExtensionInfo` | `extensionInfo()`
    `protected void` | `postSuccessfulProcess(WorkQueue<T> workQueue)` Post the results of a successful analysis pass
    `Registrar` | `registrar()`
    `boolean` | `run()`

    - ### Methods inherited from class polyglot.frontend.AbstractPass

      `exclusiveTime, goal, inclusiveTime, name, resetTimers, toggleTimers, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### extInfo

          protected final polyglot.frontend.ExtensionInfo extInfo

      Compiler extension info

    - #### registrar

          protected final Registrar registrar

      Map from procedures to analysis results

    - #### factory

          protected final AnalysisFactory<T extends Ordered<T>> factory

      Analysis utility class

  - ### Constructor Detail

    - #### InterProcAnalysisPass

          protected InterProcAnalysisPass(polyglot.frontend.ExtensionInfo extInfo,
                               polyglot.frontend.goals.Goal g,
                               Registrar registrar,
                               AnalysisFactory<T> factory)

      Create a new interprocedural analysis pass
      Parameters:
        `extInfo` - Compiler extension info
        `g` - Compiler goal used by Polyglot scheduler
        `registrar` - Map from procedures to analysis results
        `factory` - Analysis utility class

  - ### Method Detail

    - #### registrar

          public Registrar registrar()

      Returns:
        Map from procedures to analysis results

    - #### extensionInfo

          public polyglot.frontend.ExtensionInfo extensionInfo()

      Returns:
        Compiler extension info

    - #### run

          public boolean run()

      Specified by:
        `run` in interface `polyglot.frontend.Pass`
      Specified by:
        `run` in class `polyglot.frontend.AbstractPass`

    - #### createWorkQueue

          protected WorkQueue<T> createWorkQueue()

      Create the analysis work queue of analysis units

    - #### postSuccessfulProcess

          protected void postSuccessfulProcess(WorkQueue<T> workQueue)

      Post the results of a successful analysis pass
      Parameters:
        `analysis` - work queue of analysis units