C# 클래스 Mosa.Compiler.Framework.BaseMethodCompilerStage

Basic base class for method compiler pipeline stages
상속: IMethodCompilerStage
파일 보기 프로젝트 열기: tgiphil/MOSA-Project 1 사용 예제들

보호된 프로퍼티들

프로퍼티 타입 설명
instructionCount int

공개 메소드들

메소드 설명
AddMissingBlocks ( IList blocks, bool cleanUp ) : IList
AllocateVirtualRegisterOrStackSlot ( MosaType type ) : Operand

Allocates the virtual register or stack slot.

CreateTraceLog ( string section ) : TraceLog
GetFormattedStageName ( ) : string
GetInstructionSize ( InstructionSize size, MosaType type ) : InstructionSize

Gets the size of the instruction.

GetInstructionSize ( MosaType type ) : InstructionSize

Gets the size of the instruction.

GetLoadInstruction ( MosaType type ) : BaseIRInstruction
GetMoveInstruction ( MosaType type ) : BaseIRInstruction
GetStoreInstruction ( MosaType type ) : BaseIRInstruction
IsTraceable ( ) : bool
StoreOnStack ( MosaType type ) : bool

Stores the on stack.

UpdateCounter ( string name, int count ) : void

Updates the counter.

보호된 메소드들

메소드 설명
AllocateVirtualRegister ( MosaType type ) : Operand

Allocates the virtual register.

CreateNewBlock ( ) : BasicBlock

Create an empty block.

CreateNewBlock ( int label ) : BasicBlock

Create an empty block.

CreateNewBlockContext ( ) : Context

Create an empty block.

CreateNewBlockContext ( int label ) : Context

Create an empty block.

CreateNewBlockContexts ( int blocks ) : Mosa.Compiler.Framework.Context[]

Creates empty blocks.

CreateNewBlocks ( int blocks ) : Mosa.Compiler.Framework.BasicBlock[]

Creates empty blocks.

CreateTraceLog ( ) : TraceLog
Dump ( bool before ) : void

Dumps this instance.

EmptyBlockOfAllInstructions ( BasicBlock block ) : void

Empties the block of all instructions.

FindFinallyExceptionContext ( InstructionNode node ) : MosaExceptionHandler
FindImmediateExceptionContext ( int label ) : MosaExceptionHandler
FindNextEnclosingFinallyContext ( MosaExceptionHandler exceptionContext ) : MosaExceptionHandler
Finish ( ) : void
IMethodCompilerStage ( ) : void
IMethodCompilerStage ( BaseMethodCompiler compiler ) : void

Setups the specified compiler.

IsEmptyBlockWithSingleJump ( BasicBlock block ) : bool

Determines whether [is empty block with single jump] [the specified block].

IsSourceAndTargetWithinSameTryOrException ( InstructionNode node ) : bool
NewCompilerTraceEvent ( CompilerEvent compileEvent, string message ) : void
RemoveEmptyBlockWithSingleJump ( BasicBlock block ) : void
ReplaceBranchTargets ( BasicBlock block, BasicBlock oldTarget, BasicBlock newTarget ) : void

Replaces the branch targets.

Run ( ) : void
Setup ( ) : void
Split ( InstructionNode node ) : BasicBlock

Splits the block.

Split ( Context ctx ) : Context

Splits the block.

UpdatePhiList ( BasicBlock removedBlock, BasicBlock nextBlocks ) : void

비공개 메소드들

메소드 설명
ITraceFactory ( string section ) : TraceLog
MustSignExtendOnLoad ( MosaType source ) : bool

Determines if the load should sign extend the given source operand.

MustZeroExtendOnLoad ( MosaType source ) : bool

Determines if the load should sign extend the given source operand.

SubmitTraceLog ( TraceLog traceLog ) : void
SubmitTraceLogs ( IList traceLogs ) : void

메소드 상세

AddMissingBlocks() 공개 메소드

public AddMissingBlocks ( IList blocks, bool cleanUp ) : IList
blocks IList
cleanUp bool
리턴 IList

AllocateVirtualRegister() 보호된 메소드

Allocates the virtual register.
protected AllocateVirtualRegister ( MosaType type ) : Operand
type MosaType The type.
리턴 Operand

AllocateVirtualRegisterOrStackSlot() 공개 메소드

Allocates the virtual register or stack slot.
public AllocateVirtualRegisterOrStackSlot ( MosaType type ) : Operand
type MosaType The type.
리턴 Operand

CreateNewBlock() 보호된 메소드

Create an empty block.
protected CreateNewBlock ( ) : BasicBlock
리턴 BasicBlock

CreateNewBlock() 보호된 메소드

Create an empty block.
protected CreateNewBlock ( int label ) : BasicBlock
label int The label.
리턴 BasicBlock

CreateNewBlockContext() 보호된 메소드

Create an empty block.
protected CreateNewBlockContext ( ) : Context
리턴 Context

CreateNewBlockContext() 보호된 메소드

Create an empty block.
protected CreateNewBlockContext ( int label ) : Context
label int The label.
리턴 Context

CreateNewBlockContexts() 보호된 메소드

Creates empty blocks.
protected CreateNewBlockContexts ( int blocks ) : Mosa.Compiler.Framework.Context[]
blocks int The Blocks.
리턴 Mosa.Compiler.Framework.Context[]

CreateNewBlocks() 보호된 메소드

Creates empty blocks.
protected CreateNewBlocks ( int blocks ) : Mosa.Compiler.Framework.BasicBlock[]
blocks int The Blocks.
리턴 Mosa.Compiler.Framework.BasicBlock[]

CreateTraceLog() 보호된 메소드

protected CreateTraceLog ( ) : TraceLog
리턴 TraceLog

CreateTraceLog() 공개 메소드

public CreateTraceLog ( string section ) : TraceLog
section string
리턴 TraceLog

Dump() 보호된 메소드

Dumps this instance.
protected Dump ( bool before ) : void
before bool
리턴 void

EmptyBlockOfAllInstructions() 보호된 메소드

Empties the block of all instructions.
protected EmptyBlockOfAllInstructions ( BasicBlock block ) : void
block BasicBlock The block.
리턴 void

FindFinallyExceptionContext() 보호된 메소드

protected FindFinallyExceptionContext ( InstructionNode node ) : MosaExceptionHandler
node InstructionNode
리턴 Mosa.Compiler.MosaTypeSystem.MosaExceptionHandler

FindImmediateExceptionContext() 보호된 메소드

protected FindImmediateExceptionContext ( int label ) : MosaExceptionHandler
label int
리턴 Mosa.Compiler.MosaTypeSystem.MosaExceptionHandler

FindNextEnclosingFinallyContext() 보호된 메소드

protected FindNextEnclosingFinallyContext ( MosaExceptionHandler exceptionContext ) : MosaExceptionHandler
exceptionContext Mosa.Compiler.MosaTypeSystem.MosaExceptionHandler
리턴 Mosa.Compiler.MosaTypeSystem.MosaExceptionHandler

Finish() 보호된 메소드

protected Finish ( ) : void
리턴 void

GetFormattedStageName() 공개 메소드

public GetFormattedStageName ( ) : string
리턴 string

GetInstructionSize() 공개 정적인 메소드

Gets the size of the instruction.
public static GetInstructionSize ( InstructionSize size, MosaType type ) : InstructionSize
size InstructionSize The size.
type MosaType The type.
리턴 InstructionSize

GetInstructionSize() 공개 정적인 메소드

Gets the size of the instruction.
public static GetInstructionSize ( MosaType type ) : InstructionSize
type MosaType The type.
리턴 InstructionSize

GetLoadInstruction() 공개 정적인 메소드

public static GetLoadInstruction ( MosaType type ) : BaseIRInstruction
type MosaType
리턴 Mosa.Compiler.Framework.IR.BaseIRInstruction

GetMoveInstruction() 공개 정적인 메소드

public static GetMoveInstruction ( MosaType type ) : BaseIRInstruction
type MosaType
리턴 Mosa.Compiler.Framework.IR.BaseIRInstruction

GetStoreInstruction() 공개 정적인 메소드

public static GetStoreInstruction ( MosaType type ) : BaseIRInstruction
type MosaType
리턴 Mosa.Compiler.Framework.IR.BaseIRInstruction

IMethodCompilerStage() 보호된 메소드

protected IMethodCompilerStage ( ) : void
리턴 void

IMethodCompilerStage() 보호된 메소드

Setups the specified compiler.
protected IMethodCompilerStage ( BaseMethodCompiler compiler ) : void
compiler BaseMethodCompiler The compiler.
리턴 void

IsEmptyBlockWithSingleJump() 보호된 메소드

Determines whether [is empty block with single jump] [the specified block].
protected IsEmptyBlockWithSingleJump ( BasicBlock block ) : bool
block BasicBlock The block.
리턴 bool

IsSourceAndTargetWithinSameTryOrException() 보호된 메소드

protected IsSourceAndTargetWithinSameTryOrException ( InstructionNode node ) : bool
node InstructionNode
리턴 bool

IsTraceable() 공개 메소드

public IsTraceable ( ) : bool
리턴 bool

NewCompilerTraceEvent() 보호된 메소드

protected NewCompilerTraceEvent ( CompilerEvent compileEvent, string message ) : void
compileEvent CompilerEvent
message string
리턴 void

RemoveEmptyBlockWithSingleJump() 보호된 메소드

protected RemoveEmptyBlockWithSingleJump ( BasicBlock block ) : void
block BasicBlock
리턴 void

ReplaceBranchTargets() 보호된 메소드

Replaces the branch targets.
protected ReplaceBranchTargets ( BasicBlock block, BasicBlock oldTarget, BasicBlock newTarget ) : void
block BasicBlock The current from block.
oldTarget BasicBlock The current destination block.
newTarget BasicBlock The new target block.
리턴 void

Run() 보호된 메소드

protected Run ( ) : void
리턴 void

Setup() 보호된 메소드

protected Setup ( ) : void
리턴 void

Split() 보호된 메소드

Splits the block.
protected Split ( InstructionNode node ) : BasicBlock
node InstructionNode The node.
리턴 BasicBlock

Split() 보호된 메소드

Splits the block.
protected Split ( Context ctx ) : Context
ctx Context The context.
리턴 Context

StoreOnStack() 공개 메소드

Stores the on stack.
public StoreOnStack ( MosaType type ) : bool
type MosaType The type.
리턴 bool

UpdateCounter() 공개 메소드

Updates the counter.
public UpdateCounter ( string name, int count ) : void
name string The name.
count int The count.
리턴 void

UpdatePhiList() 보호된 정적인 메소드

protected static UpdatePhiList ( BasicBlock removedBlock, BasicBlock nextBlocks ) : void
removedBlock BasicBlock
nextBlocks BasicBlock
리턴 void

프로퍼티 상세

instructionCount 보호되어 있는 프로퍼티

protected int instructionCount
리턴 int