protected override void OverrideAnotherInternal(StoreDynamicDataStateProvider overrideCandidate, out bool CompletelyOverrides) { var otherStoreFieldProvider = (StoreFieldStateProvider)overrideCandidate; if (otherStoreFieldProvider._FieldDefinition.MetadataToken != _FieldDefinition.MetadataToken) { CompletelyOverrides = false; return; } otherStoreFieldProvider.ObjectNodes = otherStoreFieldProvider.ObjectNodes.Except(this.ObjectNodes).ToList(); CompletelyOverrides = otherStoreFieldProvider.ObjectNodes.Count == 0; }
protected override void OverrideAnotherInternal(StoreDynamicDataStateProvider overrideCandidate, out bool completelyOverrides) { if (!IsRelatedToOtherStore(overrideCandidate)) { completelyOverrides = false; return; } ObjectUsingStateProvider overrideCandidateAsObjectUsing = (ObjectUsingStateProvider)overrideCandidate; overrideCandidateAsObjectUsing.ObjectNodes = overrideCandidateAsObjectUsing.ObjectNodes.Except(ObjectNodes).ToList(); completelyOverrides = overrideCandidateAsObjectUsing.objectNodes.Count == 0; }
internal void OverrideAnother(StoreDynamicDataStateProvider partiallyOverrided, out bool completelyOverrides) { if (partiallyOverrided.GetType() != this.GetType()) { completelyOverrides = false; return; } if (partiallyOverrided.StoreNode == StoreNode) { completelyOverrides = true; return; } OverrideAnotherInternal(partiallyOverrided, out completelyOverrides); }
public static IEnumerable <StoreDynamicDataStateProvider> GetMatchingStateProvider(InstructionNode storeNode) { StoreDynamicDataStateProvider singleStateProvider = GetSingleMatchingStateProvider(storeNode); if (singleStateProvider != null) { return(new[] { singleStateProvider }); } if (CodeGroups.StIndCodes.Contains(storeNode.Instruction.OpCode.Code)) { return(StoreToAddressFactory.GetStoreToAddressStateProvider(storeNode)); } return(null); }
protected override bool IsRelatedToOtherStore(StoreDynamicDataStateProvider otherStateProvider) { return(((StoreFieldStateProvider)otherStateProvider)._FieldDefinition.MetadataToken == _FieldDefinition.MetadataToken); }
protected override void OverrideAnotherInternal(StoreDynamicDataStateProvider overrideCandidate, out bool completelyOverrides) { completelyOverrides = ((StoreArgumentStateProvider)overrideCandidate).ArgumentNode.ArgIndex == ArgumentNode.ArgIndex && overrideCandidate.StoreNode.Method == StoreNode.Method; }
protected abstract void OverrideAnotherInternal(StoreDynamicDataStateProvider overrideCandidate, out bool completelyOverrides);
protected abstract bool IsRelatedToOtherStore(StoreDynamicDataStateProvider otherStateProvider);
protected override void OverrideAnotherInternal(StoreDynamicDataStateProvider overrideCandidate, out bool completelyOverrides) { completelyOverrides = ((StoreLocationStateProvider)overrideCandidate).LocStoreNode.LocIndex == LocStoreNode.LocIndex && overrideCandidate.StoreNode.Method == StoreNode.Method; }
protected override bool IsRelatedToOtherStore(StoreDynamicDataStateProvider otherStateProvider) { var stElemProivder = (StElemStateProvider)otherStateProvider; return(!stElemProivder._IndexArgs.SequenceEqual(this._IndexArgs)); }
protected override void OverrideAnotherInternal(StoreDynamicDataStateProvider overrideCandidate, out bool completelyOverrides) { var otherStoreStaticField = (StoreStaticFieldStateProvider)overrideCandidate; completelyOverrides = this._FieldDefinition.MetadataToken == otherStoreStaticField._FieldDefinition.MetadataToken; }