//----------------------------------------------------------------------------------------------------------------------------------------------------- public void RegisterExpressionStatement(IExpressionOperand expression) { if (expression != null) { InsertStatementToBlock(new ExpressionStatement(expression)); } }
//----------------------------------------------------------------------------------------------------------------------------------------------------- protected void EnsureOperandLeavesValueOnStack(IExpressionOperand expressionOperand) { if (expressionOperand != null) { expressionOperand.ShouldLeaveValueOnStack = true; } }
//----------------------------------------------------------------------------------------------------------------------------------------------------- public void Consume(IExpressionOperand expression) { if (expression != null) { var removedIndex = m_StatementBlock.RemoveExpressionStatement(expression); if (m_IsRewriteMode && removedIndex >= 0 && removedIndex < m_RewriteInsertionIndex) { m_RewriteInsertionIndex--; } } }
//----------------------------------------------------------------------------------------------------------------------------------------------------- public int RemoveExpressionStatement(IExpressionOperand expression) { for (int index = m_StatementList.Count - 1; index >= 0; index--) { var statement = (m_StatementList[index] as ExpressionStatement); if (statement != null && ReferenceEquals(statement.Expression, expression)) { m_StatementList.RemoveAt(index); return(index); } } return(-1); }
//----------------------------------------------------------------------------------------------------------------------------------------------------- public ExpressionStatement(IExpressionOperand expression) { m_Expression = expression; }