C# 클래스 Pchp.CodeAnalysis.FlowAnalysis.AnalysisVisitor

상속: Pchp.CodeAnalysis.Semantics.Graph.GraphVisitor
파일 보기 프로젝트 열기: iolevel/peachpie

Private Properties

프로퍼티 타입 설명
AnalysisVisitor Pchp.CodeAnalysis.Semantics.Graph
AssertState void
TraverseToBlock void
VisitCondition void

공개 메소드들

메소드 설명
VisitBinaryExpression ( BoundBinaryEx x ) : void
VisitCFG ( ControlFlowGraph x ) : void
VisitCFGBlock ( BoundBlock x ) : void
VisitCFGCaseBlock ( CaseBlock x ) : void
VisitCFGCatchBlock ( CatchBlock x ) : void
VisitCFGConditionalEdge ( ConditionalEdge x ) : void
VisitCFGExitBlock ( ExitBlock x ) : void
VisitCFGForeachEnumereeEdge ( ForeachEnumereeEdge x ) : void
VisitCFGForeachMoveNextEdge ( ForeachMoveNextEdge x ) : void
VisitCFGSimpleEdge ( SimpleEdge x ) : void
VisitCFGSwitchEdge ( SwitchEdge x ) : void
VisitCFGTryCatchEdge ( TryCatchEdge x ) : void
VisitInstanceOf ( BoundInstanceOfEx x ) : void
VisitUnaryExpression ( BoundUnaryEx x ) : void

보호된 메소드들

메소드 설명
HandleTraversableUse ( BoundExpression varuse ) : TypeRefMask

Handles use of variable as foreach iterator value.

SetVar ( string name, TypeRefMask typemask ) : TypeRefMask

Sets type of local variable in current state.

Visit ( BoundBinaryEx x, ConditionBranch branch ) : void
Visit ( BoundInstanceOfEx x, ConditionBranch branch ) : void
Visit ( BoundUnaryEx x, ConditionBranch branch ) : void
VisitCFGBlockInit ( BoundBlock x ) : void

Called to initialize VisitCFGBlock call. Sets _state to known initial block state.

비공개 메소드들

메소드 설명
AnalysisVisitor ( Worklist worklist ) : Pchp.CodeAnalysis.Semantics.Graph

Creates an instance of AnalysisVisitor that can analyse a block.

AssertState ( ) : void

Debug assert the state is initialized therefore we are in the middle on a block analysis.

TraverseToBlock ( FlowState state, BoundBlock target ) : void

Helper method that merges state with the target block and determines whether to continue by visiting the target block.

Only for traversing into blocks within the same routine (same type context).

VisitCondition ( BoundExpression condition, ConditionBranch branch ) : void

Visits condition used to branch execution to true or false branch.

Because of minimal evaluation there is different FlowState for true and false branches, AND and OR operators have to take this into account. Also some other constructs may have side-effect for known branch, eg. ($x instanceof X) implies ($x is X) in True branch.

메소드 상세

HandleTraversableUse() 보호된 메소드

Handles use of variable as foreach iterator value.
protected HandleTraversableUse ( BoundExpression varuse ) : TypeRefMask
varuse Pchp.CodeAnalysis.Semantics.BoundExpression
리턴 TypeRefMask

SetVar() 보호된 메소드

Sets type of local variable in current state.
protected SetVar ( string name, TypeRefMask typemask ) : TypeRefMask
name string
typemask TypeRefMask
리턴 TypeRefMask

Visit() 보호된 메소드

protected Visit ( BoundBinaryEx x, ConditionBranch branch ) : void
x Pchp.CodeAnalysis.Semantics.BoundBinaryEx
branch ConditionBranch
리턴 void

Visit() 보호된 메소드

protected Visit ( BoundInstanceOfEx x, ConditionBranch branch ) : void
x Pchp.CodeAnalysis.Semantics.BoundInstanceOfEx
branch ConditionBranch
리턴 void

Visit() 보호된 메소드

protected Visit ( BoundUnaryEx x, ConditionBranch branch ) : void
x Pchp.CodeAnalysis.Semantics.BoundUnaryEx
branch ConditionBranch
리턴 void

VisitBinaryExpression() 공개 최종 메소드

public final VisitBinaryExpression ( BoundBinaryEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundBinaryEx
리턴 void

VisitCFG() 공개 메소드

public VisitCFG ( ControlFlowGraph x ) : void
x Pchp.CodeAnalysis.Semantics.Graph.ControlFlowGraph
리턴 void

VisitCFGBlock() 공개 메소드

public VisitCFGBlock ( BoundBlock x ) : void
x Pchp.CodeAnalysis.Semantics.Graph.BoundBlock
리턴 void

VisitCFGBlockInit() 보호된 메소드

Called to initialize VisitCFGBlock call. Sets _state to known initial block state.
protected VisitCFGBlockInit ( BoundBlock x ) : void
x Pchp.CodeAnalysis.Semantics.Graph.BoundBlock
리턴 void

VisitCFGCaseBlock() 공개 메소드

public VisitCFGCaseBlock ( CaseBlock x ) : void
x CaseBlock
리턴 void

VisitCFGCatchBlock() 공개 메소드

public VisitCFGCatchBlock ( CatchBlock x ) : void
x CatchBlock
리턴 void

VisitCFGConditionalEdge() 공개 메소드

public VisitCFGConditionalEdge ( ConditionalEdge x ) : void
x Pchp.CodeAnalysis.Semantics.Graph.ConditionalEdge
리턴 void

VisitCFGExitBlock() 공개 메소드

public VisitCFGExitBlock ( ExitBlock x ) : void
x Pchp.CodeAnalysis.Semantics.Graph.ExitBlock
리턴 void

VisitCFGForeachEnumereeEdge() 공개 메소드

public VisitCFGForeachEnumereeEdge ( ForeachEnumereeEdge x ) : void
x Pchp.CodeAnalysis.Semantics.Graph.ForeachEnumereeEdge
리턴 void

VisitCFGForeachMoveNextEdge() 공개 메소드

public VisitCFGForeachMoveNextEdge ( ForeachMoveNextEdge x ) : void
x Pchp.CodeAnalysis.Semantics.Graph.ForeachMoveNextEdge
리턴 void

VisitCFGSimpleEdge() 공개 메소드

public VisitCFGSimpleEdge ( SimpleEdge x ) : void
x Pchp.CodeAnalysis.Semantics.Graph.SimpleEdge
리턴 void

VisitCFGSwitchEdge() 공개 메소드

public VisitCFGSwitchEdge ( SwitchEdge x ) : void
x Pchp.CodeAnalysis.Semantics.Graph.SwitchEdge
리턴 void

VisitCFGTryCatchEdge() 공개 메소드

public VisitCFGTryCatchEdge ( TryCatchEdge x ) : void
x Pchp.CodeAnalysis.Semantics.Graph.TryCatchEdge
리턴 void

VisitInstanceOf() 공개 최종 메소드

public final VisitInstanceOf ( BoundInstanceOfEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundInstanceOfEx
리턴 void

VisitUnaryExpression() 공개 최종 메소드

public final VisitUnaryExpression ( BoundUnaryEx x ) : void
x Pchp.CodeAnalysis.Semantics.BoundUnaryEx
리턴 void