public class SolverGLB extends AbstractSolver
AbstractSolver.EquationQueue, AbstractSolver.Frame
bounds, compiler, constraint_counter, currentSCC, equations, failedEquations, fixedValueVars, fullTrace, Q, scc, solverCounter, staticFailedConstraints, status, STATUS_NO_SOLUTION, STATUS_NOT_SOLVED, STATUS_SOLVED, STATUS_SOLVING, THROW_STATIC_FAILED_CONSTRAINTS, topics, traces, ts, useSCC
Modifier | Constructor and Description |
---|---|
|
SolverGLB(JifTypeSystem ts,
polyglot.frontend.Compiler compiler,
java.lang.String solverName)
Constructor
|
protected |
SolverGLB(SolverGLB js)
Constructor
|
Modifier and Type | Method and Description |
---|---|
protected void |
addDependencies(Equation eqn)
This method adds the correct dependencies from Equation eqn to variables
occurring in eqn, and dependencies in the other direction (that is, from
variables occurring in eqn to eqn).
|
protected boolean |
allActivesAreMultiVarRHS()
return true if every active constraint has multi vars on the RHS.
|
protected void |
checkEquation(LabelEquation eqn)
Check that the equation eqn is satisfied.
|
protected void |
checkEquation(PrincipalEquation eqn)
Check that the equation eqn is satisfied.
|
protected Equation |
findContradictiveEqn(LabelConstraint c)
Find a contradicting equation.
|
protected ConfPolicy |
findNeeded(ConfPolicy lhs,
ConfPolicy rhs,
LabelEnv env) |
protected IntegPolicy |
findNeeded(IntegPolicy lhs,
IntegPolicy rhs,
LabelEnv env) |
protected Label |
findNeeded(Label lhs,
Label rhs,
LabelEnv env)
Return the most permissive label L such that lhs <= rhs join L
|
protected Label |
getDefaultLabelBound()
The default bound of label variables in this solver is bottom
|
protected Principal |
getDefaultPrincipalBound()
The default bound of label variables in this solver is bottom
|
protected void |
refineVariableEquation(VarLabel v,
LabelEquation eqn,
boolean trace)
Raise the bound on the label variable v, which is a component of the RHS
of the equation eqn.
|
protected void |
refineVariableEquation(VarPrincipal v,
PrincipalEquation eqn)
Raise the bound on the label variable v, which is a component of the equation eqn.
|
protected boolean |
search(Equation eqn)
Search recursively for solution to system of constraints.
|
protected void |
solve_eqn(LabelEquation eqn)
This method changes the bounds of variables in the RHS of Equation eqn,
to make the equation satisfied.
|
protected void |
solve_eqn(PrincipalEquation eqn)
This method changes the bounds of variables in the Equation eqn, to make
the equation satisfied.
|
addConstraint, addConstraintEquations, addDependency, addDependency, addEquationToQueue, addEquationToQueueHead, addTrace, applyBoundsTo, bounds, checkCandidateSolution, checkEquationSatisfied, considerEquation, considerEquation, considerEquation, eqnEqnDependencies, eqnEqnReverseDependencies, findContradictiveEqn, findSCCs, findTrace, genFlowMessage, getQueue, inc_counter, isFixedValueVar, processConstraint, report, reportError, reportTrace, setBound, setBound, setBounds, setStatus, shouldReport, solve_bounds, solve, solverName, triggerTransforms, wakeUp
public SolverGLB(JifTypeSystem ts, polyglot.frontend.Compiler compiler, java.lang.String solverName)
protected SolverGLB(SolverGLB js)
protected void addDependencies(Equation eqn)
addDependencies
in class AbstractSolver
protected Label getDefaultLabelBound()
getDefaultLabelBound
in class AbstractSolver
protected Principal getDefaultPrincipalBound()
getDefaultPrincipalBound
in class AbstractSolver
protected void solve_eqn(LabelEquation eqn) throws polyglot.types.SemanticException
solve_eqn
in class AbstractSolver
polyglot.types.SemanticException
protected void solve_eqn(PrincipalEquation eqn) throws polyglot.types.SemanticException
AbstractSolver
solve_eqn
in class AbstractSolver
polyglot.types.SemanticException
protected boolean allActivesAreMultiVarRHS()
protected void refineVariableEquation(VarLabel v, LabelEquation eqn, boolean trace) throws polyglot.types.SemanticException
polyglot.types.SemanticException
protected void refineVariableEquation(VarPrincipal v, PrincipalEquation eqn)
protected Label findNeeded(Label lhs, Label rhs, LabelEnv env)
protected ConfPolicy findNeeded(ConfPolicy lhs, ConfPolicy rhs, LabelEnv env)
protected IntegPolicy findNeeded(IntegPolicy lhs, IntegPolicy rhs, LabelEnv env)
protected boolean search(Equation eqn) throws polyglot.types.SemanticException
polyglot.types.SemanticException
protected void checkEquation(LabelEquation eqn) throws polyglot.types.SemanticException
polyglot.types.SemanticException
- if eqn is not satisfied.polyglot.util.InternalCompilerError
- if eqn contains variablesprotected void checkEquation(PrincipalEquation eqn) throws polyglot.types.SemanticException
polyglot.types.SemanticException
- if eqn is not satisfied.polyglot.util.InternalCompilerError
- if eqn contains variablesprotected Equation findContradictiveEqn(LabelConstraint c)
findContradictiveEqn
in class AbstractSolver