accrue.analysis.interprocvarcontext

## Class WorkQueueVarContext<T extends AbstractValue<T>>

- java.lang.Object
- - accrue.analysis.interprocanalysis.WorkQueue<VarContext<T>>
  - - accrue.analysis.interprocvarcontext.WorkQueueVarContext<T>

-     public class WorkQueueVarContext<T extends AbstractValue<T>>
      extends WorkQueue<VarContext<T>>

  Manages the work queue. Notices when analysis results change, and adds dependent jobs back to the queue.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `WorkQueueVarContext.AnalysisUnitRecordLocs<T extends AbstractValue<T>>`

    - ### Nested classes/interfaces inherited from class accrue.analysis.interprocanalysis.WorkQueue

      `WorkQueue.AnalysisUnitRecord<T extends Ordered<T>>`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `WorkQueueVarContext(Registrar registrar, polyglot.frontend.ExtensionInfo extInfo, AnalysisFactory<VarContext<T>> factory, polyglot.frontend.Pass pass)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected WorkQueue.AnalysisUnitRecord<VarContext<T>>` | `createAnalysisUnitRecord()`
    `protected WorkQueue.AnalysisUnitRecord<VarContext<T>>` | `createAnalysisUnitRecord(VarContext<T> initialInput, ExitMap<VarContext<T>> initialOutput)`
    `protected boolean` | `existingResultSuitable(VarContext<T> input, WorkQueue.AnalysisUnitRecord<VarContext<T>> rec)`
    `AnalysisFactoryVarContext<T>` | `factory()`
    `WorkQueueVarContext.AnalysisUnitRecordLocs<T>` | `getAnalysisUnitRecord(AnalysisUnit unit)`
    `protected FinalVarContext<T>` | `initialAnalysisUnitOutput(AnalysisUnit callee, VarContext<T> input)`
    `protected boolean` | `isOutputChanged(ExitMap<VarContext<T>> output, WorkQueue.AnalysisUnitRecord<VarContext<T>> rec, AnalysisUtil<VarContext<T>> autil)`
    `protected ExitMap<VarContext<T>>` | `restoreCallingFrame(ExitMap<VarContext<T>> output, VarContext<T> input, WorkQueue.AnalysisUnitRecord<VarContext<T>> rec)`
    `protected void` | `updateCallerRecordAfterCalleeProcessing(WorkQueue.AnalysisUnitRecord<VarContext<T>> callerRec, WorkQueue.AnalysisUnitRecord<VarContext<T>> rec)`
    `protected void` | `updateOutput(WorkQueue.AnalysisUnitRecord<VarContext<T>> rec, ExitMap<VarContext<T>> output, AnalysisUtil<VarContext<T>> autil)`

    - ### Methods inherited from class accrue.analysis.interprocanalysis.WorkQueue

      `callGraph, clearDependees, createExitMap, dumpQueue, emptyExitMap, extensionInfo, getAnalysisResult, getDependees, isEmpty, maybeRecursiveCall, pass, processQueue, recordResult, registrar`

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

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

- - ### Constructor Detail

    - #### WorkQueueVarContext

          public WorkQueueVarContext(Registrar registrar,
                             polyglot.frontend.ExtensionInfo extInfo,
                             AnalysisFactory<VarContext<T>> factory,
                             polyglot.frontend.Pass pass)

  - ### Method Detail

    - #### existingResultSuitable

          protected boolean existingResultSuitable(VarContext<T> input,
                                       WorkQueue.AnalysisUnitRecord<VarContext<T>> rec)

      Overrides:
        `existingResultSuitable` in class `WorkQueue<VarContext<T extends AbstractValue<T>>>`

    - #### restoreCallingFrame

          protected ExitMap<VarContext<T>> restoreCallingFrame(ExitMap<VarContext<T>> output,
                                                   VarContext<T> input,
                                                   WorkQueue.AnalysisUnitRecord<VarContext<T>> rec)

      Overrides:
        `restoreCallingFrame` in class `WorkQueue<VarContext<T extends AbstractValue<T>>>`

    - #### isOutputChanged

          protected boolean isOutputChanged(ExitMap<VarContext<T>> output,
                                WorkQueue.AnalysisUnitRecord<VarContext<T>> rec,
                                AnalysisUtil<VarContext<T>> autil)

      Overrides:
        `isOutputChanged` in class `WorkQueue<VarContext<T extends AbstractValue<T>>>`

    - #### updateOutput

          protected void updateOutput(WorkQueue.AnalysisUnitRecord<VarContext<T>> rec,
                          ExitMap<VarContext<T>> output,
                          AnalysisUtil<VarContext<T>> autil)

      Overrides:
        `updateOutput` in class `WorkQueue<VarContext<T extends AbstractValue<T>>>`

    - #### factory

          public AnalysisFactoryVarContext<T> factory()

      Overrides:
        `factory` in class `WorkQueue<VarContext<T extends AbstractValue<T>>>`

    - #### updateCallerRecordAfterCalleeProcessing

          protected void updateCallerRecordAfterCalleeProcessing(WorkQueue.AnalysisUnitRecord<VarContext<T>> callerRec,
                                                     WorkQueue.AnalysisUnitRecord<VarContext<T>> rec)

      Overrides:
        `updateCallerRecordAfterCalleeProcessing` in class `WorkQueue<VarContext<T extends AbstractValue<T>>>`

    - #### getAnalysisUnitRecord

          public WorkQueueVarContext.AnalysisUnitRecordLocs<T> getAnalysisUnitRecord(AnalysisUnit unit)

      Overrides:
        `getAnalysisUnitRecord` in class `WorkQueue<VarContext<T extends AbstractValue<T>>>`

    - #### initialAnalysisUnitOutput

          protected FinalVarContext<T> initialAnalysisUnitOutput(AnalysisUnit callee,
                                                     VarContext<T> input)

      Overrides:
        `initialAnalysisUnitOutput` in class `WorkQueue<VarContext<T extends AbstractValue<T>>>`

    - #### createAnalysisUnitRecord

          protected WorkQueue.AnalysisUnitRecord<VarContext<T>> createAnalysisUnitRecord()

      Overrides:
        `createAnalysisUnitRecord` in class `WorkQueue<VarContext<T extends AbstractValue<T>>>`

    - #### createAnalysisUnitRecord

          protected WorkQueue.AnalysisUnitRecord<VarContext<T>> createAnalysisUnitRecord(VarContext<T> initialInput,
                                                                             ExitMap<VarContext<T>> initialOutput)

      Overrides:
        `createAnalysisUnitRecord` in class `WorkQueue<VarContext<T extends AbstractValue<T>>>`