jif

## Class JifScheduler

- java.lang.Object
- - polyglot.frontend.Scheduler
  - - polyglot.frontend.JLScheduler
    - - jif.JifScheduler

-     public class JifScheduler
      extends polyglot.frontend.JLScheduler

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class polyglot.frontend.Scheduler

      `polyglot.frontend.Scheduler.TheEndGoal`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected polyglot.frontend.JLExtensionInfo` | `jlext`
    `protected polyglot.frontend.Job` | `objectJob` Hack to ensure that we track the job for java.lang.Object specially.

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

      `commandLineJobs, currentPass, dumpCounter, extInfo, failed, goals, infiniteDeps, infiniteFrontEnd, infiniteLoopGoal, inWorklist, jobs, runCount, worklist`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JifScheduler(ExtensionInfo extInfo, polyglot.frontend.JLExtensionInfo jlext)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `polyglot.frontend.Job` | `addJob(polyglot.frontend.Source source)`
    `polyglot.frontend.Job` | `addJob(polyglot.frontend.Source source, polyglot.ast.Node ast)`
    `polyglot.frontend.goals.Goal` | `ExceptionsChecked(polyglot.frontend.Job job)`
    `polyglot.frontend.goals.Goal` | `FieldConstantsChecked(polyglot.types.FieldInstance fi)`
    `FieldLabelInferenceGoal` | `FieldLabelInference(polyglot.frontend.Job job)`
    `polyglot.frontend.goals.Goal` | `FinalParams(polyglot.frontend.Job job)`
    `polyglot.frontend.goals.Goal` | `FinalParamsBarrier()`
    `polyglot.frontend.goals.Goal` | `InitializationsChecked(polyglot.frontend.Job job)`
    `polyglot.frontend.goals.Goal` | `IntegerBoundsChecker(polyglot.frontend.Job job)`
    `polyglot.frontend.goals.Goal` | `JifToJavaRewritten(polyglot.frontend.Job job)`
    `polyglot.frontend.goals.Goal` | `LabelsChecked(polyglot.frontend.Job job)`
    `polyglot.frontend.goals.Goal` | `LabelsDoubleChecked(polyglot.frontend.Job job)` Creates a goal for the label double-checking pass.
    `polyglot.frontend.goals.Goal` | `NativeConstructorsAdded(polyglot.frontend.Job job)`
    `polyglot.frontend.goals.Goal` | `NotNullChecker(polyglot.frontend.Job job)`
    `polyglot.frontend.goals.Goal` | `PreciseClassChecker(polyglot.frontend.Job job)`
    `boolean` | `runToCompletion()`
    `polyglot.frontend.goals.Goal` | `TypeChecked(polyglot.frontend.Job job)`
    `polyglot.frontend.goals.Goal` | `Validated(polyglot.frontend.Job job)`

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

      `CodeGenerated, ConstantsChecked, ConstructorCallsChecked, Disambiguated, ExitPathsChecked, ForwardReferencesChecked, ImportTableInitialized, MembersAdded, Parsed, ReachabilityChecked, Serialized, SignaturesDisambiguated, SignaturesResolved, SupertypesDisambiguated, SupertypesResolved, TypeExists, TypesInitialized, TypesInitializedForCommandLine`

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

      `addCorequisiteDependency, addCorequisiteDependencyAndEnqueue, addDependencyAndEnqueue, addGoal, addPrerequisiteDependency, addPrerequisiteDependencyChain, attemptGoal, attemptGoal, commandLineJobs, completeJob, createSourceJob, currentGoal, currentJob, currentPass, dumpDependenceGraph, dumpDependenceGraph, dumpInFlightDependenceGraph, inInfiniteLoop, internGoal, jobs, loadSource, maxRunCount, prerequisiteDependsOn, reached, runGoal, runPass, setCommandLineJobs, sourceHasJob, statusString, toString, worklist`

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

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

- - ### Field Detail

    - #### jlext

          protected polyglot.frontend.JLExtensionInfo jlext

    - #### objectJob

          protected polyglot.frontend.Job objectJob

      Hack to ensure that we track the job for java.lang.Object specially. In particular, ensure that it is submitted for re-writing before any other job.

  - ### Constructor Detail

    - #### JifScheduler

          public JifScheduler(ExtensionInfo extInfo,
                              polyglot.frontend.JLExtensionInfo jlext)

  - ### Method Detail

    - #### LabelsChecked

          public polyglot.frontend.goals.Goal LabelsChecked(polyglot.frontend.Job job)

    - #### LabelsDoubleChecked

          public polyglot.frontend.goals.Goal LabelsDoubleChecked(polyglot.frontend.Job job)

      Creates a goal for the label double-checking pass. Labels need to be double checked because the labels inferred during the first label-checking pass may be unsound.

    - #### FinalParamsBarrier

          public polyglot.frontend.goals.Goal FinalParamsBarrier()

    - #### FinalParams

          public polyglot.frontend.goals.Goal FinalParams(polyglot.frontend.Job job)

    - #### FieldLabelInference

          public FieldLabelInferenceGoal FieldLabelInference(polyglot.frontend.Job job)

    - #### IntegerBoundsChecker

          public polyglot.frontend.goals.Goal IntegerBoundsChecker(polyglot.frontend.Job job)

    - #### TypeChecked

          public polyglot.frontend.goals.Goal TypeChecked(polyglot.frontend.Job job)

      Overrides:
        `TypeChecked` in class `polyglot.frontend.JLScheduler`

    - #### PreciseClassChecker

          public polyglot.frontend.goals.Goal PreciseClassChecker(polyglot.frontend.Job job)

    - #### NotNullChecker

          public polyglot.frontend.goals.Goal NotNullChecker(polyglot.frontend.Job job)

    - #### ExceptionsChecked

          public polyglot.frontend.goals.Goal ExceptionsChecked(polyglot.frontend.Job job)

      Overrides:
        `ExceptionsChecked` in class `polyglot.frontend.JLScheduler`

    - #### JifToJavaRewritten

          public polyglot.frontend.goals.Goal JifToJavaRewritten(polyglot.frontend.Job job)

    - #### Validated

          public polyglot.frontend.goals.Goal Validated(polyglot.frontend.Job job)

      Overrides:
        `Validated` in class `polyglot.frontend.JLScheduler`

    - #### NativeConstructorsAdded

          public polyglot.frontend.goals.Goal NativeConstructorsAdded(polyglot.frontend.Job job)

    - #### FieldConstantsChecked

          public polyglot.frontend.goals.Goal FieldConstantsChecked(polyglot.types.FieldInstance fi)

      Overrides:
        `FieldConstantsChecked` in class `polyglot.frontend.JLScheduler`

    - #### InitializationsChecked

          public polyglot.frontend.goals.Goal InitializationsChecked(polyglot.frontend.Job job)

      Overrides:
        `InitializationsChecked` in class `polyglot.frontend.JLScheduler`

    - #### runToCompletion

          public boolean runToCompletion()

      Overrides:
        `runToCompletion` in class `polyglot.frontend.Scheduler`

    - #### addJob

          public polyglot.frontend.Job addJob(polyglot.frontend.Source source,
                                              polyglot.ast.Node ast)

      Overrides:
        `addJob` in class `polyglot.frontend.Scheduler`

    - #### addJob

          public polyglot.frontend.Job addJob(polyglot.frontend.Source source)

      Overrides:
        `addJob` in class `polyglot.frontend.Scheduler`