Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ EmitAddressWriteBack()

WriteBack System.Linq.Expressions.Compiler.LambdaCompiler.EmitAddressWriteBack ( Expression node,
Type type )
inlineprivate

Definition at line 256 of file LambdaCompiler.cs.

257 {
259 WriteBack writeBack = null;
260 if (TypeUtils.AreEquivalent(type, node.Type))
261 {
262 switch (node.NodeType)
263 {
264 case ExpressionType.MemberAccess:
265 writeBack = AddressOfWriteBack((MemberExpression)node);
266 break;
267 case ExpressionType.Index:
268 writeBack = AddressOfWriteBack((IndexExpression)node);
269 break;
270 }
271 }
272 if (writeBack == null)
273 {
274 EmitAddress(node, type, CompilationFlags.EmitNoExpressionStart | CompilationFlags.EmitAsNoTail);
275 }
276 EmitExpressionEnd(flags);
277 return writeBack;
278 }
static bool AreEquivalent(Type t1, Type t2)
Definition TypeUtils.cs:664
void EmitAddress(Expression node, Type type)
WriteBack AddressOfWriteBack(MemberExpression node)
delegate void WriteBack(LambdaCompiler compiler)

References System.Linq.Expressions.Compiler.LambdaCompiler.AddressOfWriteBack(), System.Dynamic.Utils.TypeUtils.AreEquivalent(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitAddress(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpressionEnd(), System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpressionStart, System.type, and System.Linq.Expressions.Compiler.LambdaCompiler.WriteBack().

Referenced by System.Linq.Expressions.Compiler.LambdaCompiler.EmitArguments().