Пример #1
0
        public InstanceVariableDeclaration(NameBindingScope scope, ESSymbol name) : base(scope, name)
        {
            var namedSlotsObject = Expression.Convert(Scope.SelfParameter, TypeGuru.esNamedSlotsObjectType);

            namedSlots = Expression.Field(namedSlotsObject, "namedSlots");
            var statusFlags = Expression.Field(namedSlotsObject, "statusFlags");

            isMutable = Expression.Equal(Expression.And(statusFlags, mutabilityFlagBitConstant), zeroConstant);
        }
Пример #2
0
        public override Expression Bind(Object[] args, ReadOnlyCollection <ParameterExpression> parameters, LabelTarget returnLabel)
        {
            Expression testRuleValidityExpression = null;
            Expression getVariableValueExpression = null;

            doAllButFinalBinding(
                args,
                (BindingHandle handle) => {
                testRuleValidityExpression = Expression.Constant(true);
                var handleConstant         = Expression.Constant(handle);
                getVariableValueExpression = handle.IsDirect ?
                                             Expression.Field(handleConstant, TypeGuru.directBindingHandleType, "value") :
                                             Expression.Property(handleConstant, "Value");
            });
            return(Expression
                   .IfThen(
                       testRuleValidityExpression,
                       Expression.Return(returnLabel, getVariableValueExpression)));
        }
Пример #3
0
 public override Expression asCLRSetValueExpression(Expression newValue)
 {
     return(Expression.Invoke(Expression.Field(setVariableCallSite, CodeGenerationContext.callSiteType[1], "Target"), setVariableCallSite, Scope.SelfParameter, newValue));
 }
Пример #4
0
 public override Expression asCLRGetValueExpression()
 {
     return(Expression.Invoke(Expression.Field(getVariableCallSite, CodeGenerationContext.callSiteType[0], "Target"), getVariableCallSite, Scope.SelfParameter));
 }