Example #1
0
        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);
        }