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

◆ RewriteExpression()

Result System.Linq.Expressions.Compiler.StackSpiller.RewriteExpression ( Expression node,
Stack stack )
inlineprivate

Definition at line 1210 of file StackSpiller.cs.

1211 {
1212 if (node == null)
1213 {
1214 return new Result(RewriteAction.None, null);
1215 }
1217 {
1218 return _guard.RunOnEmptyStack((StackSpiller @this, Expression n, Stack s) => @this.RewriteExpression(n, s), this, node, stack);
1219 }
1220 Result result;
1221 switch (node.NodeType)
1222 {
1223 case ExpressionType.Add:
1224 case ExpressionType.AddChecked:
1225 case ExpressionType.And:
1226 case ExpressionType.ArrayIndex:
1227 case ExpressionType.Divide:
1228 case ExpressionType.Equal:
1229 case ExpressionType.ExclusiveOr:
1230 case ExpressionType.GreaterThan:
1231 case ExpressionType.GreaterThanOrEqual:
1232 case ExpressionType.LeftShift:
1233 case ExpressionType.LessThan:
1234 case ExpressionType.LessThanOrEqual:
1235 case ExpressionType.Modulo:
1236 case ExpressionType.Multiply:
1237 case ExpressionType.MultiplyChecked:
1238 case ExpressionType.NotEqual:
1239 case ExpressionType.Or:
1240 case ExpressionType.Power:
1241 case ExpressionType.RightShift:
1242 case ExpressionType.Subtract:
1243 case ExpressionType.SubtractChecked:
1244 result = RewriteBinaryExpression(node, stack);
1245 break;
1246 case ExpressionType.AndAlso:
1247 case ExpressionType.Coalesce:
1248 case ExpressionType.OrElse:
1249 result = RewriteLogicalBinaryExpression(node, stack);
1250 break;
1251 case ExpressionType.Assign:
1252 result = RewriteAssignBinaryExpression(node, stack);
1253 break;
1254 case ExpressionType.ArrayLength:
1255 case ExpressionType.Convert:
1256 case ExpressionType.ConvertChecked:
1257 case ExpressionType.Negate:
1258 case ExpressionType.UnaryPlus:
1259 case ExpressionType.NegateChecked:
1260 case ExpressionType.Not:
1261 case ExpressionType.TypeAs:
1262 case ExpressionType.Decrement:
1263 case ExpressionType.Increment:
1264 case ExpressionType.Unbox:
1265 case ExpressionType.OnesComplement:
1266 case ExpressionType.IsTrue:
1267 case ExpressionType.IsFalse:
1268 result = RewriteUnaryExpression(node, stack);
1269 break;
1270 case ExpressionType.Throw:
1271 result = RewriteThrowUnaryExpression(node, stack);
1272 break;
1273 case ExpressionType.Call:
1274 result = RewriteMethodCallExpression(node, stack);
1275 break;
1276 case ExpressionType.Conditional:
1277 result = RewriteConditionalExpression(node, stack);
1278 break;
1279 case ExpressionType.Invoke:
1280 result = RewriteInvocationExpression(node, stack);
1281 break;
1282 case ExpressionType.Lambda:
1283 result = RewriteLambdaExpression(node);
1284 break;
1285 case ExpressionType.ListInit:
1286 result = RewriteListInitExpression(node, stack);
1287 break;
1288 case ExpressionType.MemberAccess:
1289 result = RewriteMemberExpression(node, stack);
1290 break;
1291 case ExpressionType.MemberInit:
1292 result = RewriteMemberInitExpression(node, stack);
1293 break;
1294 case ExpressionType.New:
1295 result = RewriteNewExpression(node, stack);
1296 break;
1297 case ExpressionType.NewArrayInit:
1298 case ExpressionType.NewArrayBounds:
1299 result = RewriteNewArrayExpression(node, stack);
1300 break;
1301 case ExpressionType.TypeIs:
1302 case ExpressionType.TypeEqual:
1303 result = RewriteTypeBinaryExpression(node, stack);
1304 break;
1305 case ExpressionType.Block:
1306 result = RewriteBlockExpression(node, stack);
1307 break;
1308 case ExpressionType.Dynamic:
1310 break;
1311 case ExpressionType.Extension:
1312 result = RewriteExtensionExpression(node, stack);
1313 break;
1314 case ExpressionType.Goto:
1315 result = RewriteGotoExpression(node, stack);
1316 break;
1317 case ExpressionType.Index:
1318 result = RewriteIndexExpression(node, stack);
1319 break;
1320 case ExpressionType.Label:
1321 result = RewriteLabelExpression(node, stack);
1322 break;
1323 case ExpressionType.Loop:
1324 result = RewriteLoopExpression(node, stack);
1325 break;
1326 case ExpressionType.Switch:
1327 result = RewriteSwitchExpression(node, stack);
1328 break;
1329 case ExpressionType.Try:
1330 result = RewriteTryExpression(node, stack);
1331 break;
1332 case ExpressionType.AddAssign:
1333 case ExpressionType.AndAssign:
1334 case ExpressionType.DivideAssign:
1335 case ExpressionType.ExclusiveOrAssign:
1336 case ExpressionType.LeftShiftAssign:
1337 case ExpressionType.ModuloAssign:
1338 case ExpressionType.MultiplyAssign:
1339 case ExpressionType.OrAssign:
1340 case ExpressionType.PowerAssign:
1341 case ExpressionType.RightShiftAssign:
1342 case ExpressionType.SubtractAssign:
1343 case ExpressionType.AddAssignChecked:
1344 case ExpressionType.MultiplyAssignChecked:
1345 case ExpressionType.SubtractAssignChecked:
1346 case ExpressionType.PreIncrementAssign:
1347 case ExpressionType.PreDecrementAssign:
1348 case ExpressionType.PostIncrementAssign:
1349 case ExpressionType.PostDecrementAssign:
1350 result = RewriteReducibleExpression(node, stack);
1351 break;
1352 case ExpressionType.Constant:
1353 case ExpressionType.Parameter:
1354 case ExpressionType.Quote:
1355 case ExpressionType.DebugInfo:
1356 case ExpressionType.Default:
1357 case ExpressionType.RuntimeVariables:
1358 result = new Result(RewriteAction.None, node);
1359 break;
1360 default:
1361 result = RewriteExpression(node.ReduceAndCheck(), stack);
1362 if (result.Action == RewriteAction.None)
1363 {
1364 result = new Result(result.Action | RewriteAction.Copy, result.Node);
1365 }
1366 break;
1367 }
1368 return result;
1369 }
Result RewriteInvocationExpression(Expression expr, Stack stack)
Result RewriteConditionalExpression(Expression expr, Stack stack)
Result RewriteSwitchExpression(Expression expr, Stack stack)
Result RewriteMemberInitExpression(Expression expr, Stack stack)
Result RewriteTryExpression(Expression expr, Stack stack)
Result RewriteUnaryExpression(Expression expr, Stack stack)
Result RewriteLogicalBinaryExpression(Expression expr, Stack stack)
Result RewriteMemberExpression(Expression expr, Stack stack)
Result RewriteNewExpression(Expression expr, Stack stack)
Result RewriteTypeBinaryExpression(Expression expr, Stack stack)
Result RewriteBlockExpression(Expression expr, Stack stack)
Result RewriteExtensionExpression(Expression expr, Stack stack)
Result RewriteAssignBinaryExpression(Expression expr, Stack stack)
Result RewriteLoopExpression(Expression expr, Stack stack)
Result RewriteMethodCallExpression(Expression expr, Stack stack)
Result RewriteIndexExpression(Expression expr, Stack stack)
Result RewriteThrowUnaryExpression(Expression expr, Stack stack)
Result RewriteExpression(Expression node, Stack stack)
static Result RewriteLambdaExpression(Expression expr)
Result RewriteLabelExpression(Expression expr, Stack stack)
Result RewriteNewArrayExpression(Expression expr, Stack stack)
Result RewriteListInitExpression(Expression expr, Stack stack)
Result RewriteReducibleExpression(Expression expr, Stack stack)
Result RewriteBinaryExpression(Expression expr, Stack stack)
Result RewriteGotoExpression(Expression expr, Stack stack)

References System.Linq.Expressions.Compiler.StackSpiller._guard, System.Linq.Expressions.Compiler.StackSpiller.Result.Action, System.Linq.Expressions.Compiler.StackSpiller.Result.Node, System.Linq.Expressions.Compiler.StackSpiller.RewriteAssignBinaryExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteBinaryExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteBlockExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteConditionalExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteDynamicExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteExtensionExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteGotoExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteIndexExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteInvocationExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteLabelExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteLambdaExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteListInitExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteLogicalBinaryExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteLoopExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteMemberExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteMemberInitExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteMethodCallExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteNewArrayExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteNewExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteReducibleExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteSwitchExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteThrowUnaryExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteTryExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteTypeBinaryExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteUnaryExpression(), System.s, and System.Linq.Expressions.StackGuard.TryEnterOnCurrentStack().

Referenced by System.Linq.Expressions.Compiler.StackSpiller.ChildRewriter.Add(), System.Linq.Expressions.Compiler.StackSpiller.RewriteBlockExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteConditionalExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteExpressionFreeTemps(), System.Linq.Expressions.Compiler.StackSpiller.RewriteExtensionExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteLabelExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteListInitExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteLogicalBinaryExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteLoopExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteMemberExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteMemberInitExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteReducibleExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteSwitchExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteTryExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteTypeBinaryExpression(), System.Linq.Expressions.Compiler.StackSpiller.RewriteUnaryExpression(), and System.Linq.Expressions.Compiler.StackSpiller.RewriteVariableAssignment().