Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Compiler / LambdaCompiler.Generated.cs / 1305376 / LambdaCompiler.Generated.cs
/* **************************************************************************** * * Copyright (c) Microsoft Corporation. * * This source code is subject to terms and conditions of the Microsoft Public License. A * copy of the license can be found in the License.html file at the root of this distribution. If * you cannot locate the Microsoft Public License, please send an email to * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound * by the terms of the Microsoft Public License. * * You must not remove this notice, or any other, from this software. * * * ***************************************************************************/ using System.Diagnostics; using System.Dynamic.Utils; namespace System.Linq.Expressions.Compiler { partial class LambdaCompiler { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1505:AvoidUnmaintainableCode"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] private void EmitExpression(Expression node, CompilationFlags flags) { Debug.Assert(node != null); bool emitStart = (flags & CompilationFlags.EmitExpressionStartMask) == CompilationFlags.EmitExpressionStart; CompilationFlags startEmitted = emitStart ? EmitExpressionStart(node) : CompilationFlags.EmitNoExpressionStart; // only pass tail call flags to emit the expression flags = flags & CompilationFlags.EmitAsTailCallMask; switch (node.NodeType) { #region Generated Expression Compiler // *** BEGIN GENERATED CODE *** // generated by function: gen_compiler from: generate_tree.py case ExpressionType.Add: EmitBinaryExpression(node, flags); break; case ExpressionType.AddChecked: EmitBinaryExpression(node, flags); break; case ExpressionType.And: EmitBinaryExpression(node, flags); break; case ExpressionType.AndAlso: EmitAndAlsoBinaryExpression(node, flags); break; case ExpressionType.ArrayLength: EmitUnaryExpression(node, flags); break; case ExpressionType.ArrayIndex: EmitBinaryExpression(node, flags); break; case ExpressionType.Call: EmitMethodCallExpression(node, flags); break; case ExpressionType.Coalesce: EmitCoalesceBinaryExpression(node); break; case ExpressionType.Conditional: EmitConditionalExpression(node, flags); break; case ExpressionType.Constant: EmitConstantExpression(node); break; case ExpressionType.Convert: EmitConvertUnaryExpression(node, flags); break; case ExpressionType.ConvertChecked: EmitConvertUnaryExpression(node, flags); break; case ExpressionType.Divide: EmitBinaryExpression(node, flags); break; case ExpressionType.Equal: EmitBinaryExpression(node, flags); break; case ExpressionType.ExclusiveOr: EmitBinaryExpression(node, flags); break; case ExpressionType.GreaterThan: EmitBinaryExpression(node, flags); break; case ExpressionType.GreaterThanOrEqual: EmitBinaryExpression(node, flags); break; case ExpressionType.Invoke: EmitInvocationExpression(node, flags); break; case ExpressionType.Lambda: EmitLambdaExpression(node); break; case ExpressionType.LeftShift: EmitBinaryExpression(node, flags); break; case ExpressionType.LessThan: EmitBinaryExpression(node, flags); break; case ExpressionType.LessThanOrEqual: EmitBinaryExpression(node, flags); break; case ExpressionType.ListInit: EmitListInitExpression(node); break; case ExpressionType.MemberAccess: EmitMemberExpression(node); break; case ExpressionType.MemberInit: EmitMemberInitExpression(node); break; case ExpressionType.Modulo: EmitBinaryExpression(node, flags); break; case ExpressionType.Multiply: EmitBinaryExpression(node, flags); break; case ExpressionType.MultiplyChecked: EmitBinaryExpression(node, flags); break; case ExpressionType.Negate: EmitUnaryExpression(node, flags); break; case ExpressionType.UnaryPlus: EmitUnaryExpression(node, flags); break; case ExpressionType.NegateChecked: EmitUnaryExpression(node, flags); break; case ExpressionType.New: EmitNewExpression(node); break; case ExpressionType.NewArrayInit: EmitNewArrayExpression(node); break; case ExpressionType.NewArrayBounds: EmitNewArrayExpression(node); break; case ExpressionType.Not: EmitUnaryExpression(node, flags); break; case ExpressionType.NotEqual: EmitBinaryExpression(node, flags); break; case ExpressionType.Or: EmitBinaryExpression(node, flags); break; case ExpressionType.OrElse: EmitOrElseBinaryExpression(node, flags); break; case ExpressionType.Parameter: EmitParameterExpression(node); break; case ExpressionType.Power: EmitBinaryExpression(node, flags); break; case ExpressionType.Quote: EmitQuoteUnaryExpression(node); break; case ExpressionType.RightShift: EmitBinaryExpression(node, flags); break; case ExpressionType.Subtract: EmitBinaryExpression(node, flags); break; case ExpressionType.SubtractChecked: EmitBinaryExpression(node, flags); break; case ExpressionType.TypeAs: EmitUnaryExpression(node, flags); break; case ExpressionType.TypeIs: EmitTypeBinaryExpression(node); break; case ExpressionType.Assign: EmitAssignBinaryExpression(node); break; case ExpressionType.Block: EmitBlockExpression(node, flags); break; case ExpressionType.DebugInfo: EmitDebugInfoExpression(node); break; case ExpressionType.Decrement: EmitUnaryExpression(node, flags); break; case ExpressionType.Dynamic: EmitDynamicExpression(node); break; case ExpressionType.Default: EmitDefaultExpression(node); break; case ExpressionType.Extension: EmitExtensionExpression(node); break; case ExpressionType.Goto: EmitGotoExpression(node, flags); break; case ExpressionType.Increment: EmitUnaryExpression(node, flags); break; case ExpressionType.Index: EmitIndexExpression(node); break; case ExpressionType.Label: EmitLabelExpression(node, flags); break; case ExpressionType.RuntimeVariables: EmitRuntimeVariablesExpression(node); break; case ExpressionType.Loop: EmitLoopExpression(node); break; case ExpressionType.Switch: EmitSwitchExpression(node, flags); break; case ExpressionType.Throw: EmitThrowUnaryExpression(node); break; case ExpressionType.Try: EmitTryExpression(node); break; case ExpressionType.Unbox: EmitUnboxUnaryExpression(node); break; case ExpressionType.TypeEqual: EmitTypeBinaryExpression(node); break; case ExpressionType.OnesComplement: EmitUnaryExpression(node, flags); break; case ExpressionType.IsTrue: EmitUnaryExpression(node, flags); break; case ExpressionType.IsFalse: EmitUnaryExpression(node, flags); break; // *** END GENERATED CODE *** #endregion default: throw ContractUtils.Unreachable; } if (emitStart) { EmitExpressionEnd(startEmitted); } } private static bool IsChecked(ExpressionType op) { switch (op) { #region Generated Checked Operations // *** BEGIN GENERATED CODE *** // generated by function: gen_checked_ops from: generate_tree.py case ExpressionType.AddChecked: case ExpressionType.ConvertChecked: case ExpressionType.MultiplyChecked: case ExpressionType.NegateChecked: case ExpressionType.SubtractChecked: case ExpressionType.AddAssignChecked: case ExpressionType.MultiplyAssignChecked: case ExpressionType.SubtractAssignChecked: // *** END GENERATED CODE *** #endregion return true; } return false; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. /* **************************************************************************** * * Copyright (c) Microsoft Corporation. * * This source code is subject to terms and conditions of the Microsoft Public License. A * copy of the license can be found in the License.html file at the root of this distribution. If * you cannot locate the Microsoft Public License, please send an email to * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound * by the terms of the Microsoft Public License. * * You must not remove this notice, or any other, from this software. * * * ***************************************************************************/ using System.Diagnostics; using System.Dynamic.Utils; namespace System.Linq.Expressions.Compiler { partial class LambdaCompiler { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1505:AvoidUnmaintainableCode"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] private void EmitExpression(Expression node, CompilationFlags flags) { Debug.Assert(node != null); bool emitStart = (flags & CompilationFlags.EmitExpressionStartMask) == CompilationFlags.EmitExpressionStart; CompilationFlags startEmitted = emitStart ? EmitExpressionStart(node) : CompilationFlags.EmitNoExpressionStart; // only pass tail call flags to emit the expression flags = flags & CompilationFlags.EmitAsTailCallMask; switch (node.NodeType) { #region Generated Expression Compiler // *** BEGIN GENERATED CODE *** // generated by function: gen_compiler from: generate_tree.py case ExpressionType.Add: EmitBinaryExpression(node, flags); break; case ExpressionType.AddChecked: EmitBinaryExpression(node, flags); break; case ExpressionType.And: EmitBinaryExpression(node, flags); break; case ExpressionType.AndAlso: EmitAndAlsoBinaryExpression(node, flags); break; case ExpressionType.ArrayLength: EmitUnaryExpression(node, flags); break; case ExpressionType.ArrayIndex: EmitBinaryExpression(node, flags); break; case ExpressionType.Call: EmitMethodCallExpression(node, flags); break; case ExpressionType.Coalesce: EmitCoalesceBinaryExpression(node); break; case ExpressionType.Conditional: EmitConditionalExpression(node, flags); break; case ExpressionType.Constant: EmitConstantExpression(node); break; case ExpressionType.Convert: EmitConvertUnaryExpression(node, flags); break; case ExpressionType.ConvertChecked: EmitConvertUnaryExpression(node, flags); break; case ExpressionType.Divide: EmitBinaryExpression(node, flags); break; case ExpressionType.Equal: EmitBinaryExpression(node, flags); break; case ExpressionType.ExclusiveOr: EmitBinaryExpression(node, flags); break; case ExpressionType.GreaterThan: EmitBinaryExpression(node, flags); break; case ExpressionType.GreaterThanOrEqual: EmitBinaryExpression(node, flags); break; case ExpressionType.Invoke: EmitInvocationExpression(node, flags); break; case ExpressionType.Lambda: EmitLambdaExpression(node); break; case ExpressionType.LeftShift: EmitBinaryExpression(node, flags); break; case ExpressionType.LessThan: EmitBinaryExpression(node, flags); break; case ExpressionType.LessThanOrEqual: EmitBinaryExpression(node, flags); break; case ExpressionType.ListInit: EmitListInitExpression(node); break; case ExpressionType.MemberAccess: EmitMemberExpression(node); break; case ExpressionType.MemberInit: EmitMemberInitExpression(node); break; case ExpressionType.Modulo: EmitBinaryExpression(node, flags); break; case ExpressionType.Multiply: EmitBinaryExpression(node, flags); break; case ExpressionType.MultiplyChecked: EmitBinaryExpression(node, flags); break; case ExpressionType.Negate: EmitUnaryExpression(node, flags); break; case ExpressionType.UnaryPlus: EmitUnaryExpression(node, flags); break; case ExpressionType.NegateChecked: EmitUnaryExpression(node, flags); break; case ExpressionType.New: EmitNewExpression(node); break; case ExpressionType.NewArrayInit: EmitNewArrayExpression(node); break; case ExpressionType.NewArrayBounds: EmitNewArrayExpression(node); break; case ExpressionType.Not: EmitUnaryExpression(node, flags); break; case ExpressionType.NotEqual: EmitBinaryExpression(node, flags); break; case ExpressionType.Or: EmitBinaryExpression(node, flags); break; case ExpressionType.OrElse: EmitOrElseBinaryExpression(node, flags); break; case ExpressionType.Parameter: EmitParameterExpression(node); break; case ExpressionType.Power: EmitBinaryExpression(node, flags); break; case ExpressionType.Quote: EmitQuoteUnaryExpression(node); break; case ExpressionType.RightShift: EmitBinaryExpression(node, flags); break; case ExpressionType.Subtract: EmitBinaryExpression(node, flags); break; case ExpressionType.SubtractChecked: EmitBinaryExpression(node, flags); break; case ExpressionType.TypeAs: EmitUnaryExpression(node, flags); break; case ExpressionType.TypeIs: EmitTypeBinaryExpression(node); break; case ExpressionType.Assign: EmitAssignBinaryExpression(node); break; case ExpressionType.Block: EmitBlockExpression(node, flags); break; case ExpressionType.DebugInfo: EmitDebugInfoExpression(node); break; case ExpressionType.Decrement: EmitUnaryExpression(node, flags); break; case ExpressionType.Dynamic: EmitDynamicExpression(node); break; case ExpressionType.Default: EmitDefaultExpression(node); break; case ExpressionType.Extension: EmitExtensionExpression(node); break; case ExpressionType.Goto: EmitGotoExpression(node, flags); break; case ExpressionType.Increment: EmitUnaryExpression(node, flags); break; case ExpressionType.Index: EmitIndexExpression(node); break; case ExpressionType.Label: EmitLabelExpression(node, flags); break; case ExpressionType.RuntimeVariables: EmitRuntimeVariablesExpression(node); break; case ExpressionType.Loop: EmitLoopExpression(node); break; case ExpressionType.Switch: EmitSwitchExpression(node, flags); break; case ExpressionType.Throw: EmitThrowUnaryExpression(node); break; case ExpressionType.Try: EmitTryExpression(node); break; case ExpressionType.Unbox: EmitUnboxUnaryExpression(node); break; case ExpressionType.TypeEqual: EmitTypeBinaryExpression(node); break; case ExpressionType.OnesComplement: EmitUnaryExpression(node, flags); break; case ExpressionType.IsTrue: EmitUnaryExpression(node, flags); break; case ExpressionType.IsFalse: EmitUnaryExpression(node, flags); break; // *** END GENERATED CODE *** #endregion default: throw ContractUtils.Unreachable; } if (emitStart) { EmitExpressionEnd(startEmitted); } } private static bool IsChecked(ExpressionType op) { switch (op) { #region Generated Checked Operations // *** BEGIN GENERATED CODE *** // generated by function: gen_checked_ops from: generate_tree.py case ExpressionType.AddChecked: case ExpressionType.ConvertChecked: case ExpressionType.MultiplyChecked: case ExpressionType.NegateChecked: case ExpressionType.SubtractChecked: case ExpressionType.AddAssignChecked: case ExpressionType.MultiplyAssignChecked: case ExpressionType.SubtractAssignChecked: // *** END GENERATED CODE *** #endregion return true; } return false; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- LogLogRecordHeader.cs
- HTMLTagNameToTypeMapper.cs
- ConnectionManagementElementCollection.cs
- CroppedBitmap.cs
- Bind.cs
- XmlToDatasetMap.cs
- FocusManager.cs
- PaperSource.cs
- MissingMemberException.cs
- ContractMethodParameterInfo.cs
- SortedDictionary.cs
- InputLanguageProfileNotifySink.cs
- Action.cs
- CriticalHandle.cs
- NameValuePair.cs
- Int32RectValueSerializer.cs
- OpenTypeLayout.cs
- ScriptIgnoreAttribute.cs
- MetadataItemSerializer.cs
- FastEncoder.cs
- Matrix.cs
- SqlClientWrapperSmiStream.cs
- TraceListener.cs
- WindowsTab.cs
- Command.cs
- HttpException.cs
- MembershipUser.cs
- PKCS1MaskGenerationMethod.cs
- HasCopySemanticsAttribute.cs
- Dump.cs
- SyndicationDeserializer.cs
- CounterSampleCalculator.cs
- ProvidersHelper.cs
- ChangePassword.cs
- ColumnClickEvent.cs
- WebPartTransformer.cs
- DefaultBinder.cs
- DoubleAnimationClockResource.cs
- StylusPointPropertyInfoDefaults.cs
- CollectionChangeEventArgs.cs
- UTF32Encoding.cs
- DivideByZeroException.cs
- BackgroundFormatInfo.cs
- Ray3DHitTestResult.cs
- LocationSectionRecord.cs
- FunctionNode.cs
- Certificate.cs
- ClientRolePrincipal.cs
- GifBitmapDecoder.cs
- DataGridHeaderBorder.cs
- AssociatedControlConverter.cs
- HyperLinkColumn.cs
- Rule.cs
- FlatButtonAppearance.cs
- ContainerSelectorGlyph.cs
- ViewPort3D.cs
- X509CertificateValidator.cs
- WSSecurityOneDotOneReceiveSecurityHeader.cs
- PrimitiveXmlSerializers.cs
- GridToolTip.cs
- DataGridViewLinkColumn.cs
- PointAnimationBase.cs
- BoundingRectTracker.cs
- NetworkAddressChange.cs
- TextBoxBase.cs
- ToolboxService.cs
- _HelperAsyncResults.cs
- DBDataPermission.cs
- DataDocumentXPathNavigator.cs
- InvalidComObjectException.cs
- DesignerUtility.cs
- CacheMemory.cs
- CapacityStreamGeometryContext.cs
- EntityClientCacheEntry.cs
- QuerySelectOp.cs
- FrameworkElement.cs
- LineProperties.cs
- DefaultClaimSet.cs
- Base64Decoder.cs
- HuffModule.cs
- PasswordRecovery.cs
- ToolStripCollectionEditor.cs
- DropAnimation.xaml.cs
- TextParagraphView.cs
- ExchangeUtilities.cs
- DeviceSpecificDialogCachedState.cs
- Blend.cs
- ValueUtilsSmi.cs
- SqlDataSourceQueryEditor.cs
- TransformPattern.cs
- HtmlInputHidden.cs
- LessThan.cs
- BasePropertyDescriptor.cs
- OutKeywords.cs
- ExpandedProjectionNode.cs
- MarkedHighlightComponent.cs
- TextBlock.cs
- RuntimeConfigurationRecord.cs
- StateItem.cs
- ReaderContextStackData.cs