clojure.lang.CljCompiler.Ast.CljILGen.MaybeEmitVolatileOp C# (CSharp) Method

MaybeEmitVolatileOp() public method

public MaybeEmitVolatileOp ( FieldInfo fi ) : void
fi System.Reflection.FieldInfo
return void
        public void MaybeEmitVolatileOp(FieldInfo fi)
        {
            if (IsVolatile(fi))
                this.Emit(OpCodes.Volatile);
        }

Same methods

CljILGen::MaybeEmitVolatileOp ( bool emit ) : void

Usage Example

Exemplo n.º 1
0
        internal void EmitLetFnInits(CljILGen ilg, LocalBuilder localBuilder, ObjExpr objx, IPersistentSet letFnLocals)
        {
            if (TypeBuilder != null)
            {
                // Full compile
                ilg.Emit(OpCodes.Castclass, TypeBuilder);

                for (ISeq s = RT.keys(Closes); s != null; s = s.next())
                {
                    LocalBinding lb = (LocalBinding)s.first();
                    if (letFnLocals.contains(lb))
                    {
                        ClosedOverFieldsMap.TryGetValue(lb, out FieldBuilder fb);

                        Type primt = lb.PrimitiveType;
                        ilg.Emit(OpCodes.Dup);  // this
                        if (primt != null)
                        {
                            objx.EmitUnboxedLocal(ilg, lb);
                            ilg.MaybeEmitVolatileOp(IsVolatile(lb));
                            ilg.Emit(OpCodes.Stfld, fb);
                        }
                        else
                        {
                            objx.EmitLocal(ilg, lb);
                            ilg.MaybeEmitVolatileOp(IsVolatile(lb));
                            ilg.Emit(OpCodes.Stfld, fb);
                        }
                    }
                }
                ilg.Emit(OpCodes.Pop);
            }
        }
All Usage Examples Of clojure.lang.CljCompiler.Ast.CljILGen::MaybeEmitVolatileOp