public HLInstructionBlock CreateBlock(HLLabel pStartLabel) { HLInstructionBlock block = HLInstructionBlock.Create(this, pStartLabel); mBlocks.Add(block); return(block); }
public static HLLabel Create(int pIdentifier) { HLLabel label = new HLLabel(); label.mIdentifier = pIdentifier; return(label); }
public HLLabel CreateLabel() { HLLabel label = HLLabel.Create(mLabels.Count); mLabels.Add(label); return(label); }
public static HLInstructionBlock Create(HLMethod pMethod, HLLabel pStartLabel) { HLInstructionBlock block = new HLInstructionBlock(); block.mMethod = pMethod; block.mStartLabel = pStartLabel; block.EmitLabel(pStartLabel); return block; }
public static HLInstructionBlock Create(HLMethod pMethod, HLLabel pStartLabel) { HLInstructionBlock block = new HLInstructionBlock(); block.mMethod = pMethod; block.mStartLabel = pStartLabel; block.EmitLabel(pStartLabel); return(block); }
private void ProcessLabeledStatement(ILabeledStatement pStatement) { HLLabel labelTarget = null; if (!mRemappedLabels.TryGetValue(pStatement.Label.Value, out labelTarget)) { labelTarget = CreateLabel(); mRemappedLabels.Add(pStatement.Label.Value, labelTarget); } mCurrentBlock.Terminate(labelTarget); mCurrentBlock = CreateBlock(labelTarget); ProcessStatement(pStatement.Statement); }
public void Terminate(HLLabel pNextBlockStartLabel) { if (!mTerminated) { if (pNextBlockStartLabel == null) { EmitReturn(null); } else { EmitGoto(pNextBlockStartLabel); } } }
private void ProcessGotoStatement(IGotoStatement pStatement) { if (mCurrentBlock.Terminated) { mCurrentBlock = CreateBlock(CreateLabel()); } HLLabel labelTarget = null; if (!mRemappedLabels.TryGetValue(pStatement.TargetStatement.Label.Value, out labelTarget)) { labelTarget = CreateLabel(); mRemappedLabels.Add(pStatement.TargetStatement.Label.Value, labelTarget); } mCurrentBlock.EmitGoto(labelTarget); }
public void EmitBranch(HLLocation pConditionSource, HLLabel pTrueLabel, HLLabel pFalseLabel) { Emit(HLBranchInstruction.Create(mMethod, pConditionSource, pTrueLabel, pFalseLabel)); }
public HLInstructionBlock CreateBlock(HLLabel pStartLabel) { HLInstructionBlock block = HLInstructionBlock.Create(this, pStartLabel); mBlocks.Add(block); return block; }
public void EmitSwitch(HLLocation pConditionSource, HLLabel pDefaultLabel, List <Tuple <HLLiteralLocation, HLLabel> > pCases) { Emit(HLSwitchInstruction.Create(mMethod, pConditionSource, pDefaultLabel, pCases)); }
public void EmitLabel(HLLabel pLabel) { Emit(HLLabelInstruction.Create(mMethod, pLabel)); }
public void EmitGoto(HLLabel pTargetLabel) { Emit(HLGotoInstruction.Create(mMethod, pTargetLabel)); }
public void EmitSwitch(HLLocation pConditionSource, HLLabel pDefaultLabel, List<Tuple<HLLiteralLocation, HLLabel>> pCases) { Emit(HLSwitchInstruction.Create(mMethod, pConditionSource, pDefaultLabel, pCases)); }
public void Terminate(HLLabel pNextBlockStartLabel) { if (!mTerminated) { if (pNextBlockStartLabel == null) EmitReturn(null); else EmitGoto(pNextBlockStartLabel); } }
public static HLLabel Create(int pIdentifier) { HLLabel label = new HLLabel(); label.mIdentifier = pIdentifier; return label; }