Exemplo n.º 1
0
        /// <summary>
        /// Define a new temporary local variable in the optimized block
        /// </summary>
        /// <param name="varType"></param>
        /// <returns></returns>
        private SymbolLocalVariable DefineNewLocalVariable(ILanguageType varType)
        {
            _updateChainFlag = true;

            var varName = "AV" + (_augmentedVariablesIndex++).ToString("X4");

            var declareCommand = _optimizedBlock.DefineLocalVariable(varName, varType);

            return((SymbolLocalVariable)declareCommand.DataStore);
        }
Exemplo n.º 2
0
        private SymbolLocalVariable CompileVariable(SymbolDataStore variable)
        {
            var varName = "CV" + (_tempVariableIndex++).ToString("X4");

            var declareCommand = _compiledBlock.DefineLocalVariable(varName, variable.SymbolType);

            var compiledVariable = (SymbolLocalVariable)declareCommand.DataStore;

            ActiveAr.AddSymbolData(variable, compiledVariable);

            return(compiledVariable);
        }
Exemplo n.º 3
0
        private static LanguageValueAccess NonAtomicExpressionToValueAccess(this CommandBlock commandBlock, ILanguageExpression oldExpr)
        {
            if (oldExpr is ILanguageExpressionAtomic)
            {
                throw new InvalidOperationException("This should never happen!");
            }

            var localVar = commandBlock.DefineLocalVariable(oldExpr.ExpressionType).DataStore;

            //Create a local variable to hold value and return the local variable as a direct value access object
            var lhsValueAccess = LanguageValueAccess.Create(localVar);

            commandBlock.AddCommand_Assign(lhsValueAccess, oldExpr);

            return(lhsValueAccess);
        }