Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Compiler / BoundConstants.cs / 1305376 / BoundConstants.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.Collections.Generic; using System.Diagnostics; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Dynamic.Utils; #if SILVERLIGHT using System.Core; #endif namespace System.Linq.Expressions.Compiler { ////// This type tracks "runtime" constants--live objects that appear in /// ConstantExpression nodes and must be bound to the delegate. /// internal sealed class BoundConstants { ////// Constants can emit themselves as different types /// For caching purposes, we need to treat each distinct Type as a /// seperate thing to cache. (If we have to cast it on the way out, it /// ends up using a JIT temp and defeats the purpose of caching the /// value in a local) /// private struct TypedConstant : IEquatable{ internal readonly object Value; internal readonly Type Type; internal TypedConstant(object value, Type type) { Value = value; Type = type; } public override int GetHashCode() { return RuntimeHelpers.GetHashCode(Value) ^ Type.GetHashCode(); } public bool Equals(TypedConstant other) { return object.ReferenceEquals(Value, other.Value) && Type.Equals(other.Type); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2231:OverloadOperatorEqualsOnOverridingValueTypeEquals")] public override bool Equals(object obj) { return (obj is TypedConstant) && Equals((TypedConstant)obj); } } /// /// The list of constants in the order they appear in the constant array /// private readonly List
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SQLDecimalStorage.cs
- ProcessingInstructionAction.cs
- ListViewAutomationPeer.cs
- Vector3DCollectionConverter.cs
- RowBinding.cs
- unitconverter.cs
- DataObjectPastingEventArgs.cs
- SerializationAttributes.cs
- FlowLayout.cs
- Environment.cs
- JulianCalendar.cs
- PointCollectionValueSerializer.cs
- StrongNameUtility.cs
- XmlNamespaceManager.cs
- QilUnary.cs
- VirtualPathUtility.cs
- IOThreadTimer.cs
- ByteAnimation.cs
- wgx_sdk_version.cs
- XmlMemberMapping.cs
- InstanceContextManager.cs
- LiteralControl.cs
- COM2EnumConverter.cs
- mactripleDES.cs
- OracleFactory.cs
- ThreadAbortException.cs
- DataGridViewComboBoxCell.cs
- PackUriHelper.cs
- MediaScriptCommandRoutedEventArgs.cs
- QuotaThrottle.cs
- TextViewBase.cs
- OleDbEnumerator.cs
- MeshGeometry3D.cs
- Property.cs
- RelationshipDetailsRow.cs
- XamlWrappingReader.cs
- MessageBox.cs
- WorkflowDesignerColors.cs
- PackWebRequest.cs
- SourceItem.cs
- EmbeddedMailObject.cs
- DataGridViewHeaderCell.cs
- Int64AnimationBase.cs
- FrameworkContextData.cs
- TypeConverterAttribute.cs
- PrivateFontCollection.cs
- TextParagraphView.cs
- CreateUserWizard.cs
- XmlSchemaAttribute.cs
- ToolStripPanelRow.cs
- HttpGetProtocolReflector.cs
- MenuAdapter.cs
- ConfigurationCollectionAttribute.cs
- TypeLibConverter.cs
- ScriptBehaviorDescriptor.cs
- PagerSettings.cs
- DataGridRowAutomationPeer.cs
- ConditionCollection.cs
- EdgeProfileValidation.cs
- WebScriptMetadataMessageEncoderFactory.cs
- FontUnitConverter.cs
- ConfigurationProperty.cs
- FrameworkElementFactoryMarkupObject.cs
- ErrorHandler.cs
- SemanticAnalyzer.cs
- TrackBar.cs
- DataListItemEventArgs.cs
- OpenTypeLayout.cs
- TaskFileService.cs
- SynchronizationContext.cs
- XPathMessageFilterTable.cs
- WindowsFormsSectionHandler.cs
- ControlPaint.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- MethodCallConverter.cs
- X509Chain.cs
- RecordsAffectedEventArgs.cs
- WebPartEditorApplyVerb.cs
- FontStretches.cs
- SystemIcons.cs
- ObjectView.cs
- ControlUtil.cs
- Section.cs
- JapaneseCalendar.cs
- PathGeometry.cs
- XmlSecureResolver.cs
- TagMapCollection.cs
- PageSetupDialog.cs
- Validator.cs
- DrawingVisualDrawingContext.cs
- SecurityException.cs
- UInt16Converter.cs
- TableRow.cs
- _StreamFramer.cs
- SerialStream.cs
- ExtractorMetadata.cs
- Buffer.cs
- MetaData.cs
- ToolStripContainerActionList.cs
- FormViewUpdatedEventArgs.cs