From 1e6221837fadd2376bf7153e2b904b9071538e7e Mon Sep 17 00:00:00 2001 From: Roma Marusyk Date: Wed, 9 Jan 2019 20:59:10 +0200 Subject: [PATCH] System.Runtime.Caching. Refactor DllImports Commit migrated from https://github.com/dotnet/corefx/commit/efe793dcfa40fbf64fffab55d2c584e408677f6c --- .../Interop.RegNotifyChangeKeyValue.cs | 15 +++ .../Windows/advapi32/Interop.RegOpenKeyEx.cs | 16 +++ .../src/System.Runtime.Caching.csproj | 8 +- .../System/Runtime/Caching/CacheExpires.cs | 99 +++++++------- .../Runtime/Caching/CacheMemoryMonitor.cs | 2 +- .../src/System/Runtime/Caching/CacheUsage.cs | 122 +++++++++--------- .../System/Runtime/Caching/ChangeMonitor.cs | 7 +- .../src/System/Runtime/Caching/Dbg.cs | 88 +------------ .../src/System/Runtime/Caching/MemoryCache.cs | 3 +- .../Runtime/Caching/MemoryCacheEntry.cs | 3 +- .../Caching/MemoryCacheEntryChangeMonitor.cs | 3 +- .../Caching/MemoryCacheKeyEqualityComparer.cs | 6 +- .../Runtime/Caching/MemoryCacheStore.cs | 6 +- .../System/Runtime/Caching/MemoryMonitor.cs | 8 +- .../Runtime/Caching/PhysicalMemoryMonitor.cs | 1 + 15 files changed, 174 insertions(+), 213 deletions(-) create mode 100644 src/libraries/Common/src/Interop/Windows/advapi32/Interop.RegNotifyChangeKeyValue.cs create mode 100644 src/libraries/Common/src/Interop/Windows/advapi32/Interop.RegOpenKeyEx.cs diff --git a/src/libraries/Common/src/Interop/Windows/advapi32/Interop.RegNotifyChangeKeyValue.cs b/src/libraries/Common/src/Interop/Windows/advapi32/Interop.RegNotifyChangeKeyValue.cs new file mode 100644 index 00000000000..8f28bb3d526 --- /dev/null +++ b/src/libraries/Common/src/Interop/Windows/advapi32/Interop.RegNotifyChangeKeyValue.cs @@ -0,0 +1,15 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Runtime.InteropServices; +using Microsoft.Win32.SafeHandles; + +internal partial class Interop +{ + internal partial class Advapi32 + { + [DllImport(Libraries.Advapi32, ExactSpelling = true, SetLastError = true)] + internal static extern int RegNotifyChangeKeyValue(SafeRegistryHandle hKey, bool bWatchSubtree, uint dwNotifyFilter, SafeWaitHandle hEvent, bool fAsynchronous); + } +} diff --git a/src/libraries/Common/src/Interop/Windows/advapi32/Interop.RegOpenKeyEx.cs b/src/libraries/Common/src/Interop/Windows/advapi32/Interop.RegOpenKeyEx.cs new file mode 100644 index 00000000000..6098d0b1e4a --- /dev/null +++ b/src/libraries/Common/src/Interop/Windows/advapi32/Interop.RegOpenKeyEx.cs @@ -0,0 +1,16 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Runtime.InteropServices; +using Microsoft.Win32.SafeHandles; + +internal partial class Interop +{ + internal partial class Advapi32 + { + [DllImport(Libraries.Advapi32, CharSet = CharSet.Auto, BestFitMapping = false, SetLastError = true)] + internal static extern int RegOpenKeyEx(IntPtr hKey, string lpSubKey, int ulOptions, int samDesired, out SafeRegistryHandle phkResult); + } +} diff --git a/src/libraries/System.Runtime.Caching/src/System.Runtime.Caching.csproj b/src/libraries/System.Runtime.Caching/src/System.Runtime.Caching.csproj index b30cb9e66d6..6b1a5f4b0f0 100644 --- a/src/libraries/System.Runtime.Caching/src/System.Runtime.Caching.csproj +++ b/src/libraries/System.Runtime.Caching/src/System.Runtime.Caching.csproj @@ -1,4 +1,4 @@ - + System.Runtime.Caching {A7B6FB6E-F484-42D7-8A5E-F7D0DCC03829} @@ -56,6 +56,12 @@ + + Common\Interop\Windows\Advapi32\Interop.RegNotifyChangeKeyValue.cs + + + Common\Interop\Windows\Advapi32\Interop.RegOpenKeyEx.cs + Common\Interop\Windows\Kernel32\Interop.GlobalMemoryStatusEx.cs diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheExpires.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheExpires.cs index 6ebfe14705b..8896716d5a0 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheExpires.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheExpires.cs @@ -4,6 +4,7 @@ using System; using System.Collections; +using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using System.Security; @@ -24,9 +25,9 @@ namespace System.Runtime.Caching internal ExpiresEntryRef(int pageIndex, int entryIndex) { - Dbg.Assert((pageIndex & 0x00ffffff) == pageIndex, "(pageIndex & 0x00ffffff) == pageIndex"); - Dbg.Assert((entryIndex & ENTRY_MASK) == entryIndex, "(entryIndex & ENTRY_MASK) == entryIndex"); - Dbg.Assert(entryIndex != 0 || pageIndex == 0, "entryIndex != 0 || pageIndex == 0"); + Debug.Assert((pageIndex & 0x00ffffff) == pageIndex, "(pageIndex & 0x00ffffff) == pageIndex"); + Debug.Assert((entryIndex & ENTRY_MASK) == entryIndex, "(entryIndex & ENTRY_MASK) == entryIndex"); + Debug.Assert(entryIndex != 0 || pageIndex == 0, "entryIndex != 0 || pageIndex == 0"); _ref = ((((uint)pageIndex) << PAGE_SHIFT) | (((uint)(entryIndex)) & ENTRY_MASK)); } @@ -155,9 +156,9 @@ namespace System.Runtime.Caching private void InitZeroPages() { - Dbg.Assert(_cPagesInUse == 0, "_cPagesInUse == 0"); - Dbg.Assert(_cEntriesInUse == 0, "_cEntriesInUse == 0"); - Dbg.Assert(_cEntriesInFlush == 0, "_cEntriesInFlush == 0"); + Debug.Assert(_cPagesInUse == 0, "_cPagesInUse == 0"); + Debug.Assert(_cEntriesInUse == 0, "_cEntriesInUse == 0"); + Debug.Assert(_cEntriesInFlush == 0, "_cEntriesInFlush == 0"); _pages = null; _minEntriesInUse = -1; @@ -219,13 +220,13 @@ namespace System.Runtime.Caching private void AddToListHead(int pageIndex, ref ExpiresPageList list) { - Dbg.Assert((list._head == -1) == (list._tail == -1), "(list._head == -1) == (list._tail == -1)"); + Debug.Assert((list._head == -1) == (list._tail == -1), "(list._head == -1) == (list._tail == -1)"); (_pages[(pageIndex)]._pagePrev) = -1; (_pages[(pageIndex)]._pageNext) = list._head; if (list._head != -1) { - Dbg.Assert((_pages[(list._head)]._pagePrev) == -1, "PagePrev(list._head) == -1"); + Debug.Assert((_pages[(list._head)]._pagePrev) == -1, "PagePrev(list._head) == -1"); (_pages[(list._head)]._pagePrev) = pageIndex; } else @@ -238,13 +239,13 @@ namespace System.Runtime.Caching private void AddToListTail(int pageIndex, ref ExpiresPageList list) { - Dbg.Assert((list._head == -1) == (list._tail == -1), "(list._head == -1) == (list._tail == -1)"); + Debug.Assert((list._head == -1) == (list._tail == -1), "(list._head == -1) == (list._tail == -1)"); (_pages[(pageIndex)]._pageNext) = -1; (_pages[(pageIndex)]._pagePrev) = list._tail; if (list._tail != -1) { - Dbg.Assert((_pages[(list._tail)]._pageNext) == -1, "PageNext(list._tail) == -1"); + Debug.Assert((_pages[(list._tail)]._pageNext) == -1, "PageNext(list._tail) == -1"); (_pages[(list._tail)]._pageNext) = pageIndex; } else @@ -257,7 +258,7 @@ namespace System.Runtime.Caching private int RemoveFromListHead(ref ExpiresPageList list) { - Dbg.Assert(list._head != -1, "list._head != -1"); + Debug.Assert(list._head != -1, "list._head != -1"); int oldHead = list._head; RemoveFromList(oldHead, ref list); @@ -266,27 +267,27 @@ namespace System.Runtime.Caching private void RemoveFromList(int pageIndex, ref ExpiresPageList list) { - Dbg.Assert((list._head == -1) == (list._tail == -1), "(list._head == -1) == (list._tail == -1)"); + Debug.Assert((list._head == -1) == (list._tail == -1), "(list._head == -1) == (list._tail == -1)"); if ((_pages[(pageIndex)]._pagePrev) != -1) { - Dbg.Assert((_pages[((_pages[(pageIndex)]._pagePrev))]._pageNext) == pageIndex, "PageNext(PagePrev(pageIndex)) == pageIndex"); + Debug.Assert((_pages[((_pages[(pageIndex)]._pagePrev))]._pageNext) == pageIndex, "PageNext(PagePrev(pageIndex)) == pageIndex"); (_pages[((_pages[(pageIndex)]._pagePrev))]._pageNext) = (_pages[(pageIndex)]._pageNext); } else { - Dbg.Assert(list._head == pageIndex, "list._head == pageIndex"); + Debug.Assert(list._head == pageIndex, "list._head == pageIndex"); list._head = (_pages[(pageIndex)]._pageNext); } if ((_pages[(pageIndex)]._pageNext) != -1) { - Dbg.Assert((_pages[((_pages[(pageIndex)]._pageNext))]._pagePrev) == pageIndex, "PagePrev(PageNext(pageIndex)) == pageIndex"); + Debug.Assert((_pages[((_pages[(pageIndex)]._pageNext))]._pagePrev) == pageIndex, "PagePrev(PageNext(pageIndex)) == pageIndex"); (_pages[((_pages[(pageIndex)]._pageNext))]._pagePrev) = (_pages[(pageIndex)]._pagePrev); } else { - Dbg.Assert(list._tail == pageIndex, "list._tail == pageIndex"); + Debug.Assert(list._tail == pageIndex, "list._tail == pageIndex"); list._tail = (_pages[(pageIndex)]._pagePrev); } @@ -296,8 +297,8 @@ namespace System.Runtime.Caching private void MoveToListHead(int pageIndex, ref ExpiresPageList list) { - Dbg.Assert(list._head != -1, "list._head != -1"); - Dbg.Assert(list._tail != -1, "list._tail != -1"); + Debug.Assert(list._head != -1, "list._head != -1"); + Debug.Assert(list._tail != -1, "list._tail != -1"); if (list._head == pageIndex) return; @@ -309,8 +310,8 @@ namespace System.Runtime.Caching private void MoveToListTail(int pageIndex, ref ExpiresPageList list) { - Dbg.Assert(list._head != -1, "list._head != -1"); - Dbg.Assert(list._tail != -1, "list._tail != -1"); + Debug.Assert(list._head != -1, "list._head != -1"); + Debug.Assert(list._tail != -1, "list._tail != -1"); if (list._tail == pageIndex) { @@ -330,8 +331,8 @@ namespace System.Runtime.Caching else { int capacity = _cPagesInUse * NUM_ENTRIES; - Dbg.Assert(capacity > 0, "capacity > 0"); - Dbg.Assert(MIN_LOAD_FACTOR < 1.0, "MIN_LOAD_FACTOR < 1.0"); + Debug.Assert(capacity > 0, "capacity > 0"); + Debug.Assert(MIN_LOAD_FACTOR < 1.0, "MIN_LOAD_FACTOR < 1.0"); _minEntriesInUse = (int)(capacity * MIN_LOAD_FACTOR); @@ -344,12 +345,12 @@ namespace System.Runtime.Caching private void RemovePage(int pageIndex) { - Dbg.Assert((((_pages[(pageIndex)]._entries))[0]._cFree) == NUM_ENTRIES, "FreeEntryCount(EntriesI(pageIndex)) == NUM_ENTRIES"); + Debug.Assert((((_pages[(pageIndex)]._entries))[0]._cFree) == NUM_ENTRIES, "FreeEntryCount(EntriesI(pageIndex)) == NUM_ENTRIES"); RemoveFromList(pageIndex, ref _freeEntryList); AddToListHead(pageIndex, ref _freePageList); - Dbg.Assert((_pages[(pageIndex)]._entries) != null, "EntriesI(pageIndex) != null"); + Debug.Assert((_pages[(pageIndex)]._entries) != null, "EntriesI(pageIndex) != null"); (_pages[(pageIndex)]._entries) = null; _cPagesInUse--; @@ -365,7 +366,7 @@ namespace System.Runtime.Caching private ExpiresEntryRef GetFreeExpiresEntry() { - Dbg.Assert(_freeEntryList._head >= 0, "_freeEntryList._head >= 0"); + Debug.Assert(_freeEntryList._head >= 0, "_freeEntryList._head >= 0"); int pageIndex = _freeEntryList._head; ExpiresEntry[] entries = (_pages[(pageIndex)]._entries); @@ -375,7 +376,7 @@ namespace System.Runtime.Caching ((entries)[0]._cFree)--; if (((entries)[0]._cFree) == 0) { - Dbg.Assert(((entries)[0]._next).IsInvalid, "FreeEntryHead(entries).IsInvalid"); + Debug.Assert(((entries)[0]._next).IsInvalid, "FreeEntryHead(entries).IsInvalid"); RemoveFromList(pageIndex, ref _freeEntryList); } return new ExpiresEntryRef(pageIndex, entryIndex); @@ -386,7 +387,7 @@ namespace System.Runtime.Caching ExpiresEntry[] entries = (_pages[(entryRef.PageIndex)]._entries); int entryIndex = entryRef.Index; - Dbg.Assert(entries[entryIndex]._cacheEntry == null, "entries[entryIndex]._cacheEntry == null"); + Debug.Assert(entries[entryIndex]._cacheEntry == null, "entries[entryIndex]._cacheEntry == null"); entries[entryIndex]._cFree = 0; entries[entryIndex]._next = ((entries)[0]._next); @@ -407,9 +408,9 @@ namespace System.Runtime.Caching private void Expand() { - Dbg.Assert(_cPagesInUse * NUM_ENTRIES == _cEntriesInUse, "_cPagesInUse * NUM_ENTRIES == _cEntriesInUse"); - Dbg.Assert(_freeEntryList._head == -1, "_freeEntryList._head == -1"); - Dbg.Assert(_freeEntryList._tail == -1, "_freeEntryList._tail == -1"); + Debug.Assert(_cPagesInUse * NUM_ENTRIES == _cEntriesInUse, "_cPagesInUse * NUM_ENTRIES == _cEntriesInUse"); + Debug.Assert(_freeEntryList._head == -1, "_freeEntryList._head == -1"); + Debug.Assert(_freeEntryList._tail == -1, "_freeEntryList._tail == -1"); if (_freePageList._head == -1) { @@ -423,13 +424,13 @@ namespace System.Runtime.Caching oldLength = _pages.Length; } - Dbg.Assert(_cPagesInUse == oldLength, "_cPagesInUse == oldLength"); - Dbg.Assert(_cEntriesInUse == oldLength * NUM_ENTRIES, "_cEntriesInUse == oldLength * ExpiresEntryRef.NUM_ENTRIES"); + Debug.Assert(_cPagesInUse == oldLength, "_cPagesInUse == oldLength"); + Debug.Assert(_cEntriesInUse == oldLength * NUM_ENTRIES, "_cEntriesInUse == oldLength * ExpiresEntryRef.NUM_ENTRIES"); int newLength = oldLength * 2; newLength = Math.Max(oldLength + MIN_PAGES_INCREMENT, newLength); newLength = Math.Min(newLength, oldLength + MAX_PAGES_INCREMENT); - Dbg.Assert(newLength > oldLength, "newLength > oldLength"); + Debug.Assert(newLength > oldLength, "newLength > oldLength"); ExpiresPage[] newPages = new ExpiresPage[newLength]; @@ -476,9 +477,9 @@ namespace System.Runtime.Caching if (_cEntriesInUse >= _minEntriesInUse || _blockReduce) return; - Dbg.Assert(_freeEntryList._head != -1, "_freeEntryList._head != -1"); - Dbg.Assert(_freeEntryList._tail != -1, "_freeEntryList._tail != -1"); - Dbg.Assert(_freeEntryList._head != _freeEntryList._tail, "_freeEntryList._head != _freeEntryList._tail"); + Debug.Assert(_freeEntryList._head != -1, "_freeEntryList._head != -1"); + Debug.Assert(_freeEntryList._tail != -1, "_freeEntryList._tail != -1"); + Debug.Assert(_freeEntryList._head != _freeEntryList._tail, "_freeEntryList._head != _freeEntryList._tail"); int meanFree = (int)(NUM_ENTRIES - (NUM_ENTRIES * MIN_LOAD_FACTOR)); int pageIndexLast = _freeEntryList._tail; @@ -513,7 +514,7 @@ namespace System.Runtime.Caching break; entries = (_pages[(_freeEntryList._tail)]._entries); - Dbg.Assert(((entries)[0]._cFree) > 0, "FreeEntryCount(entries) > 0"); + Debug.Assert(((entries)[0]._cFree) > 0, "FreeEntryCount(entries) > 0"); int availableFreeEntries = (_cPagesInUse * NUM_ENTRIES) - ((entries)[0]._cFree) - _cEntriesInUse; if (availableFreeEntries < (NUM_ENTRIES - ((entries)[0]._cFree))) break; @@ -523,9 +524,9 @@ namespace System.Runtime.Caching if (entries[i]._cacheEntry == null) continue; - Dbg.Assert(_freeEntryList._head != _freeEntryList._tail, "_freeEntryList._head != _freeEntryList._tail"); + Debug.Assert(_freeEntryList._head != _freeEntryList._tail, "_freeEntryList._head != _freeEntryList._tail"); ExpiresEntryRef newRef = GetFreeExpiresEntry(); - Dbg.Assert(newRef.PageIndex != _freeEntryList._tail, "newRef.PageIndex != _freeEntryList._tail"); + Debug.Assert(newRef.PageIndex != _freeEntryList._tail, "newRef.PageIndex != _freeEntryList._tail"); MemoryCacheEntry cacheEntry = entries[i]._cacheEntry; @@ -551,7 +552,7 @@ namespace System.Runtime.Caching return; ExpiresEntryRef entryRef = cacheEntry.ExpiresEntryRef; - Dbg.Assert((cacheEntry.ExpiresBucket == 0xff) == entryRef.IsInvalid, "(cacheEntry.ExpiresBucket == 0xff) == entryRef.IsInvalid"); + Debug.Assert((cacheEntry.ExpiresBucket == 0xff) == entryRef.IsInvalid, "(cacheEntry.ExpiresBucket == 0xff) == entryRef.IsInvalid"); if (cacheEntry.ExpiresBucket != 0xff || !entryRef.IsInvalid) return; @@ -561,8 +562,8 @@ namespace System.Runtime.Caching } ExpiresEntryRef freeRef = GetFreeExpiresEntry(); - Dbg.Assert(cacheEntry.ExpiresBucket == 0xff, "cacheEntry.ExpiresBucket == 0xff"); - Dbg.Assert(cacheEntry.ExpiresEntryRef.IsInvalid, "cacheEntry.ExpiresEntryRef.IsInvalid"); + Debug.Assert(cacheEntry.ExpiresBucket == 0xff, "cacheEntry.ExpiresBucket == 0xff"); + Debug.Assert(cacheEntry.ExpiresEntryRef.IsInvalid, "cacheEntry.ExpiresEntryRef.IsInvalid"); cacheEntry.ExpiresBucket = _bucket; cacheEntry.ExpiresEntryRef = freeRef; @@ -637,7 +638,7 @@ namespace System.Runtime.Caching ExpiresEntry[] entries = (_pages[(entryRef.PageIndex)]._entries); int entryIndex = entryRef.Index; - Dbg.Assert(cacheEntry == entries[entryIndex]._cacheEntry); + Debug.Assert(cacheEntry == entries[entryIndex]._cacheEntry); RemoveCount(entries[entryIndex]._utcExpires); AddCount(utcExpires); @@ -656,7 +657,7 @@ namespace System.Runtime.Caching if (_cEntriesInUse == 0 || GetExpiresCount(utcNow) == 0) return 0; - Dbg.Assert(_cEntriesInFlush == 0, "_cEntriesInFlush == 0"); + Debug.Assert(_cEntriesInFlush == 0, "_cEntriesInFlush == 0"); ExpiresEntryRef inFlushHead = ExpiresEntryRef.INVALID; @@ -674,7 +675,7 @@ namespace System.Runtime.Caching lock (this) { - Dbg.Assert(_blockReduce == false, "_blockReduce == false"); + Debug.Assert(_blockReduce == false, "_blockReduce == false"); if (_cEntriesInUse == 0 || GetExpiresCount(utcNow) == 0) return 0; @@ -741,7 +742,7 @@ namespace System.Runtime.Caching } } - Dbg.Assert(!inFlushHead.IsInvalid, "!inFlushHead.IsInvalid"); + Debug.Assert(!inFlushHead.IsInvalid, "!inFlushHead.IsInvalid"); MemoryCacheStore cacheStore = _cacheExpires.MemoryCacheStore; ExpiresEntryRef current = inFlushHead; @@ -755,7 +756,7 @@ namespace System.Runtime.Caching cacheEntry = entries[entryIndex]._cacheEntry; entries[entryIndex]._cacheEntry = null; - Dbg.Assert(cacheEntry.ExpiresEntryRef.IsInvalid, "cacheEntry.ExpiresEntryRef.IsInvalid"); + Debug.Assert(cacheEntry.ExpiresEntryRef.IsInvalid, "cacheEntry.ExpiresEntryRef.IsInvalid"); cacheStore.Remove(cacheEntry, cacheEntry, CacheEntryRemovedReason.Expired); current = next; @@ -784,7 +785,7 @@ namespace System.Runtime.Caching current = next; } - Dbg.Assert(_cEntriesInFlush == 0, "_cEntriesInFlush == 0"); + Debug.Assert(_cEntriesInFlush == 0, "_cEntriesInFlush == 0"); _blockReduce = false; Reduce(); @@ -824,7 +825,7 @@ namespace System.Runtime.Caching internal CacheExpires(MemoryCacheStore cacheStore) { - Dbg.Assert(NUMBUCKETS < byte.MaxValue); + Debug.Assert(NUMBUCKETS < byte.MaxValue); DateTime utcNow = DateTime.UtcNow; diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheMemoryMonitor.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheMemoryMonitor.cs index 863bec4aebf..700f421d879 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheMemoryMonitor.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheMemoryMonitor.cs @@ -175,7 +175,7 @@ namespace System.Runtime.Caching // the SizedRef is only updated after a Gen2 Collection // increment the index (it's either 1 or 0) - Dbg.Assert(SAMPLE_COUNT == 2); + Debug.Assert(SAMPLE_COUNT == 2); _idx = _idx ^ 1; // remember the sample time _cacheSizeSampleTimes[_idx] = DateTime.UtcNow; diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheUsage.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheUsage.cs index 6d9e57d383d..7a4083642aa 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheUsage.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheUsage.cs @@ -4,6 +4,7 @@ using System; using System.Collections; +using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using System.Security; @@ -24,9 +25,9 @@ namespace System.Runtime.Caching internal UsageEntryRef(int pageIndex, int entryIndex) { - Dbg.Assert((pageIndex & 0x00ffffff) == pageIndex, "(pageIndex & 0x00ffffff) == pageIndex"); - Dbg.Assert((Math.Abs(entryIndex) & ENTRY_MASK) == (Math.Abs(entryIndex)), "(Math.Abs(entryIndex) & ENTRY_MASK) == Math.Abs(entryIndex)"); - Dbg.Assert(entryIndex != 0 || pageIndex == 0, "entryIndex != 0 || pageIndex == 0"); + Debug.Assert((pageIndex & 0x00ffffff) == pageIndex, "(pageIndex & 0x00ffffff) == pageIndex"); + Debug.Assert((Math.Abs(entryIndex) & ENTRY_MASK) == (Math.Abs(entryIndex)), "(Math.Abs(entryIndex) & ENTRY_MASK) == Math.Abs(entryIndex)"); + Debug.Assert(entryIndex != 0 || pageIndex == 0, "entryIndex != 0 || pageIndex == 0"); _ref = ((((uint)pageIndex) << PAGE_SHIFT) | (((uint)(entryIndex)) & ENTRY_MASK)); } @@ -69,7 +70,7 @@ namespace System.Runtime.Caching get { int result = (int)(sbyte)(_ref & ENTRY_MASK); - Dbg.Assert(result > 0, "result > 0"); + Debug.Assert(result > 0, "result > 0"); return result; } } @@ -79,7 +80,7 @@ namespace System.Runtime.Caching get { int result = (int)(sbyte)(_ref & ENTRY_MASK); - Dbg.Assert(result < 0, "result < 0"); + Debug.Assert(result < 0, "result < 0"); return -result; } } @@ -184,12 +185,12 @@ namespace System.Runtime.Caching private void InitZeroPages() { - Dbg.Assert(_cPagesInUse == 0, "_cPagesInUse == 0"); - Dbg.Assert(_cEntriesInUse == 0, "_cEntriesInUse == 0"); - Dbg.Assert(_cEntriesInFlush == 0, "_cEntriesInFlush == 0"); - Dbg.Assert(_lastRefHead.IsInvalid, "_lastRefHead.IsInvalid"); - Dbg.Assert(_lastRefTail.IsInvalid, "_lastRefTail.IsInvalid"); - Dbg.Assert(_addRef2Head.IsInvalid, "_addRef2Head.IsInvalid"); + Debug.Assert(_cPagesInUse == 0, "_cPagesInUse == 0"); + Debug.Assert(_cEntriesInUse == 0, "_cEntriesInUse == 0"); + Debug.Assert(_cEntriesInFlush == 0, "_cEntriesInFlush == 0"); + Debug.Assert(_lastRefHead.IsInvalid, "_lastRefHead.IsInvalid"); + Debug.Assert(_lastRefTail.IsInvalid, "_lastRefTail.IsInvalid"); + Debug.Assert(_addRef2Head.IsInvalid, "_addRef2Head.IsInvalid"); _pages = null; _minEntriesInUse = -1; @@ -201,13 +202,13 @@ namespace System.Runtime.Caching private void AddToListHead(int pageIndex, ref UsagePageList list) { - Dbg.Assert((list._head == -1) == (list._tail == -1), "(list._head == -1) == (list._tail == -1)"); + Debug.Assert((list._head == -1) == (list._tail == -1), "(list._head == -1) == (list._tail == -1)"); (_pages[(pageIndex)]._pagePrev) = -1; (_pages[(pageIndex)]._pageNext) = list._head; if (list._head != -1) { - Dbg.Assert((_pages[(list._head)]._pagePrev) == -1, "PagePrev(list._head) == -1"); + Debug.Assert((_pages[(list._head)]._pagePrev) == -1, "PagePrev(list._head) == -1"); (_pages[(list._head)]._pagePrev) = pageIndex; } else @@ -220,13 +221,13 @@ namespace System.Runtime.Caching private void AddToListTail(int pageIndex, ref UsagePageList list) { - Dbg.Assert((list._head == -1) == (list._tail == -1), "(list._head == -1) == (list._tail == -1)"); + Debug.Assert((list._head == -1) == (list._tail == -1), "(list._head == -1) == (list._tail == -1)"); (_pages[(pageIndex)]._pageNext) = -1; (_pages[(pageIndex)]._pagePrev) = list._tail; if (list._tail != -1) { - Dbg.Assert((_pages[(list._tail)]._pageNext) == -1, "PageNext(list._tail) == -1"); + Debug.Assert((_pages[(list._tail)]._pageNext) == -1, "PageNext(list._tail) == -1"); (_pages[(list._tail)]._pageNext) = pageIndex; } else @@ -239,7 +240,7 @@ namespace System.Runtime.Caching private int RemoveFromListHead(ref UsagePageList list) { - Dbg.Assert(list._head != -1, "list._head != -1"); + Debug.Assert(list._head != -1, "list._head != -1"); int oldHead = list._head; RemoveFromList(oldHead, ref list); @@ -248,27 +249,27 @@ namespace System.Runtime.Caching private void RemoveFromList(int pageIndex, ref UsagePageList list) { - Dbg.Assert((list._head == -1) == (list._tail == -1), "(list._head == -1) == (list._tail == -1)"); + Debug.Assert((list._head == -1) == (list._tail == -1), "(list._head == -1) == (list._tail == -1)"); if ((_pages[(pageIndex)]._pagePrev) != -1) { - Dbg.Assert((_pages[((_pages[(pageIndex)]._pagePrev))]._pageNext) == pageIndex, "PageNext(PagePrev(pageIndex)) == pageIndex"); + Debug.Assert((_pages[((_pages[(pageIndex)]._pagePrev))]._pageNext) == pageIndex, "PageNext(PagePrev(pageIndex)) == pageIndex"); (_pages[((_pages[(pageIndex)]._pagePrev))]._pageNext) = (_pages[(pageIndex)]._pageNext); } else { - Dbg.Assert(list._head == pageIndex, "list._head == pageIndex"); + Debug.Assert(list._head == pageIndex, "list._head == pageIndex"); list._head = (_pages[(pageIndex)]._pageNext); } if ((_pages[(pageIndex)]._pageNext) != -1) { - Dbg.Assert((_pages[((_pages[(pageIndex)]._pageNext))]._pagePrev) == pageIndex, "PagePrev(PageNext(pageIndex)) == pageIndex"); + Debug.Assert((_pages[((_pages[(pageIndex)]._pageNext))]._pagePrev) == pageIndex, "PagePrev(PageNext(pageIndex)) == pageIndex"); (_pages[((_pages[(pageIndex)]._pageNext))]._pagePrev) = (_pages[(pageIndex)]._pagePrev); } else { - Dbg.Assert(list._tail == pageIndex, "list._tail == pageIndex"); + Debug.Assert(list._tail == pageIndex, "list._tail == pageIndex"); list._tail = (_pages[(pageIndex)]._pagePrev); } @@ -278,8 +279,8 @@ namespace System.Runtime.Caching private void MoveToListHead(int pageIndex, ref UsagePageList list) { - Dbg.Assert(list._head != -1, "list._head != -1"); - Dbg.Assert(list._tail != -1, "list._tail != -1"); + Debug.Assert(list._head != -1, "list._head != -1"); + Debug.Assert(list._tail != -1, "list._tail != -1"); if (list._head == pageIndex) return; @@ -290,8 +291,8 @@ namespace System.Runtime.Caching private void MoveToListTail(int pageIndex, ref UsagePageList list) { - Dbg.Assert(list._head != -1, "list._head != -1"); - Dbg.Assert(list._tail != -1, "list._tail != -1"); + Debug.Assert(list._head != -1, "list._head != -1"); + Debug.Assert(list._tail != -1, "list._tail != -1"); if (list._tail == pageIndex) return; @@ -309,8 +310,8 @@ namespace System.Runtime.Caching else { int capacity = _cPagesInUse * NUM_ENTRIES; - Dbg.Assert(capacity > 0, "capacity > 0"); - Dbg.Assert(MIN_LOAD_FACTOR < 1.0, "MIN_LOAD_FACTOR < 1.0"); + Debug.Assert(capacity > 0, "capacity > 0"); + Debug.Assert(MIN_LOAD_FACTOR < 1.0, "MIN_LOAD_FACTOR < 1.0"); _minEntriesInUse = (int)(capacity * MIN_LOAD_FACTOR); @@ -323,12 +324,12 @@ namespace System.Runtime.Caching private void RemovePage(int pageIndex) { - Dbg.Assert((((_pages[(pageIndex)]._entries))[0]._cFree) == NUM_ENTRIES, "FreeEntryCount(EntriesI(pageIndex)) == NUM_ENTRIES"); + Debug.Assert((((_pages[(pageIndex)]._entries))[0]._cFree) == NUM_ENTRIES, "FreeEntryCount(EntriesI(pageIndex)) == NUM_ENTRIES"); RemoveFromList(pageIndex, ref _freeEntryList); AddToListHead(pageIndex, ref _freePageList); - Dbg.Assert((_pages[(pageIndex)]._entries) != null, "EntriesI(pageIndex) != null"); + Debug.Assert((_pages[(pageIndex)]._entries) != null, "EntriesI(pageIndex) != null"); (_pages[(pageIndex)]._entries) = null; _cPagesInUse--; @@ -344,7 +345,7 @@ namespace System.Runtime.Caching private UsageEntryRef GetFreeUsageEntry() { - Dbg.Assert(_freeEntryList._head >= 0, "_freeEntryList._head >= 0"); + Debug.Assert(_freeEntryList._head >= 0, "_freeEntryList._head >= 0"); int pageIndex = _freeEntryList._head; UsageEntry[] entries = (_pages[(pageIndex)]._entries); @@ -354,7 +355,7 @@ namespace System.Runtime.Caching ((entries)[0]._cFree)--; if (((entries)[0]._cFree) == 0) { - Dbg.Assert(((entries)[0]._ref1._next).IsInvalid, "FreeEntryHead(entries).IsInvalid"); + Debug.Assert(((entries)[0]._ref1._next).IsInvalid, "FreeEntryHead(entries).IsInvalid"); RemoveFromList(pageIndex, ref _freeEntryList); } return new UsageEntryRef(pageIndex, entryIndex); @@ -362,12 +363,12 @@ namespace System.Runtime.Caching private void AddUsageEntryToFreeList(UsageEntryRef entryRef) { - Dbg.Assert(entryRef.IsRef1, "entryRef.IsRef1"); + Debug.Assert(entryRef.IsRef1, "entryRef.IsRef1"); UsageEntry[] entries = (_pages[(entryRef.PageIndex)]._entries); int entryIndex = entryRef.Ref1Index; - Dbg.Assert(entries[entryIndex]._cacheEntry == null, "entries[entryIndex]._cacheEntry == null"); + Debug.Assert(entries[entryIndex]._cacheEntry == null, "entries[entryIndex]._cacheEntry == null"); entries[entryIndex]._utcDate = DateTime.MinValue; entries[entryIndex]._ref1._prev = UsageEntryRef.INVALID; entries[entryIndex]._ref2._next = UsageEntryRef.INVALID; @@ -391,9 +392,9 @@ namespace System.Runtime.Caching private void Expand() { - Dbg.Assert(_cPagesInUse * NUM_ENTRIES == _cEntriesInUse, "_cPagesInUse * NUM_ENTRIES == _cEntriesInUse"); - Dbg.Assert(_freeEntryList._head == -1, "_freeEntryList._head == -1"); - Dbg.Assert(_freeEntryList._tail == -1, "_freeEntryList._tail == -1"); + Debug.Assert(_cPagesInUse * NUM_ENTRIES == _cEntriesInUse, "_cPagesInUse * NUM_ENTRIES == _cEntriesInUse"); + Debug.Assert(_freeEntryList._head == -1, "_freeEntryList._head == -1"); + Debug.Assert(_freeEntryList._tail == -1, "_freeEntryList._tail == -1"); if (_freePageList._head == -1) { @@ -407,13 +408,13 @@ namespace System.Runtime.Caching oldLength = _pages.Length; } - Dbg.Assert(_cPagesInUse == oldLength, "_cPagesInUse == oldLength"); - Dbg.Assert(_cEntriesInUse == oldLength * NUM_ENTRIES, "_cEntriesInUse == oldLength * ExpiresEntryRef.NUM_ENTRIES"); + Debug.Assert(_cPagesInUse == oldLength, "_cPagesInUse == oldLength"); + Debug.Assert(_cEntriesInUse == oldLength * NUM_ENTRIES, "_cEntriesInUse == oldLength * ExpiresEntryRef.NUM_ENTRIES"); int newLength = oldLength * 2; newLength = Math.Max(oldLength + MIN_PAGES_INCREMENT, newLength); newLength = Math.Min(newLength, oldLength + MAX_PAGES_INCREMENT); - Dbg.Assert(newLength > oldLength, "newLength > oldLength"); + Debug.Assert(newLength > oldLength, "newLength > oldLength"); UsagePage[] newPages = new UsagePage[newLength]; @@ -460,9 +461,9 @@ namespace System.Runtime.Caching if (_cEntriesInUse >= _minEntriesInUse || _blockReduce) return; - Dbg.Assert(_freeEntryList._head != -1, "_freeEntryList._head != -1"); - Dbg.Assert(_freeEntryList._tail != -1, "_freeEntryList._tail != -1"); - Dbg.Assert(_freeEntryList._head != _freeEntryList._tail, "_freeEntryList._head != _freeEntryList._tail"); + Debug.Assert(_freeEntryList._head != -1, "_freeEntryList._head != -1"); + Debug.Assert(_freeEntryList._tail != -1, "_freeEntryList._tail != -1"); + Debug.Assert(_freeEntryList._head != _freeEntryList._tail, "_freeEntryList._head != _freeEntryList._tail"); int meanFree = (int)(NUM_ENTRIES - (NUM_ENTRIES * MIN_LOAD_FACTOR)); int pageIndexLast = _freeEntryList._tail; @@ -495,7 +496,7 @@ namespace System.Runtime.Caching break; entries = (_pages[(_freeEntryList._tail)]._entries); - Dbg.Assert(((entries)[0]._cFree) > 0, "FreeEntryCount(entries) > 0"); + Debug.Assert(((entries)[0]._cFree) > 0, "FreeEntryCount(entries) > 0"); int availableFreeEntries = (_cPagesInUse * NUM_ENTRIES) - ((entries)[0]._cFree) - _cEntriesInUse; if (availableFreeEntries < (NUM_ENTRIES - ((entries)[0]._cFree))) break; @@ -505,16 +506,16 @@ namespace System.Runtime.Caching if (entries[i]._cacheEntry == null) continue; - Dbg.Assert(_freeEntryList._head != _freeEntryList._tail, "_freeEntryList._head != _freeEntryList._tail"); + Debug.Assert(_freeEntryList._head != _freeEntryList._tail, "_freeEntryList._head != _freeEntryList._tail"); UsageEntryRef newRef1 = GetFreeUsageEntry(); UsageEntryRef newRef2 = (new UsageEntryRef((newRef1).PageIndex, -(newRef1).Ref1Index)); - Dbg.Assert(newRef1.PageIndex != _freeEntryList._tail, "newRef1.PageIndex != _freeEntryList._tail"); + Debug.Assert(newRef1.PageIndex != _freeEntryList._tail, "newRef1.PageIndex != _freeEntryList._tail"); UsageEntryRef oldRef1 = new UsageEntryRef(_freeEntryList._tail, i); UsageEntryRef oldRef2 = (new UsageEntryRef((oldRef1).PageIndex, -(oldRef1).Ref1Index)); MemoryCacheEntry cacheEntry = entries[i]._cacheEntry; - Dbg.Assert(cacheEntry.UsageEntryRef == oldRef1, "cacheEntry.UsageEntryRef == oldRef1"); + Debug.Assert(cacheEntry.UsageEntryRef == oldRef1, "cacheEntry.UsageEntryRef == oldRef1"); cacheEntry.UsageEntryRef = newRef1; UsageEntry[] newEntries = (_pages[(newRef1.PageIndex)]._entries); @@ -523,7 +524,7 @@ namespace System.Runtime.Caching ((entries)[0]._cFree)++; UsageEntryRef prev = newEntries[newRef1.Ref1Index]._ref1._prev; - Dbg.Assert(prev != oldRef2, "prev != oldRef2"); + Debug.Assert(prev != oldRef2, "prev != oldRef2"); UsageEntryRef next = newEntries[newRef1.Ref1Index]._ref1._next; if (next == oldRef2) @@ -541,7 +542,7 @@ namespace System.Runtime.Caching } next = newEntries[newRef1.Ref1Index]._ref2._next; - Dbg.Assert(next != oldRef1, "next != oldRef1"); + Debug.Assert(next != oldRef1, "next != oldRef1"); { if ((prev).IsRef1) { (_pages[((prev).PageIndex)]._entries)[(prev).Ref1Index]._ref1._next = (newRef2); } else if ((prev).IsRef2) { (_pages[((prev).PageIndex)]._entries)[(prev).Ref2Index]._ref2._next = (newRef2); } else { _lastRefHead = (newRef2); } }; { if ((next).IsRef1) { (_pages[((next).PageIndex)]._entries)[(next).Ref1Index]._ref1._prev = (newRef2); } else if ((next).IsRef2) { (_pages[((next).PageIndex)]._entries)[(next).Ref2Index]._ref2._prev = (newRef2); } else { _lastRefTail = (newRef2); } }; @@ -553,7 +554,6 @@ namespace System.Runtime.Caching } RemovePage(_freeEntryList._tail); - Dbg.Validate("CacheValidateUsage", this); } } @@ -569,7 +569,7 @@ namespace System.Runtime.Caching UsageEntryRef freeRef1 = GetFreeUsageEntry(); UsageEntryRef freeRef2 = (new UsageEntryRef((freeRef1).PageIndex, -(freeRef1).Ref1Index)); - Dbg.Assert(cacheEntry.UsageEntryRef.IsInvalid, "cacheEntry.UsageEntryRef.IsInvalid"); + Debug.Assert(cacheEntry.UsageEntryRef.IsInvalid, "cacheEntry.UsageEntryRef.IsInvalid"); cacheEntry.UsageEntryRef = freeRef1; UsageEntry[] entries = (_pages[(freeRef1.PageIndex)]._entries); @@ -624,7 +624,7 @@ namespace System.Runtime.Caching private void RemoveEntryFromLastRefList(UsageEntryRef entryRef) { - Dbg.Assert(entryRef.IsRef1, "entryRef.IsRef1"); + Debug.Assert(entryRef.IsRef1, "entryRef.IsRef1"); UsageEntry[] entries = (_pages[(entryRef.PageIndex)]._entries); int entryIndex = entryRef.Ref1Index; @@ -729,8 +729,8 @@ namespace System.Runtime.Caching if (_cEntriesInUse == 0) return 0; - Dbg.Assert(maxFlush > 0, "maxFlush is not greater than 0, instead is " + maxFlush); - Dbg.Assert(_cEntriesInFlush == 0, "_cEntriesInFlush == 0"); + Debug.Assert(maxFlush > 0, "maxFlush is not greater than 0, instead is " + maxFlush); + Debug.Assert(_cEntriesInFlush == 0, "_cEntriesInFlush == 0"); UsageEntryRef inFlushHead = UsageEntryRef.INVALID; @@ -747,7 +747,7 @@ namespace System.Runtime.Caching lock (this) { - Dbg.Assert(_blockReduce == false, "_blockReduce == false"); + Debug.Assert(_blockReduce == false, "_blockReduce == false"); if (_cEntriesInUse == 0) return 0; @@ -756,7 +756,7 @@ namespace System.Runtime.Caching for (prev = _lastRefTail; _cEntriesInFlush < maxFlush && !prev.IsInvalid; prev = prevNext) { - Dbg.Assert(_cEntriesInUse > 0, "_cEntriesInUse > 0"); + Debug.Assert(_cEntriesInUse > 0, "_cEntriesInUse > 0"); prevNext = (_pages[(prev.PageIndex)]._entries)[prev.Ref2Index]._ref2._prev; while (prevNext.IsRef1) @@ -770,7 +770,7 @@ namespace System.Runtime.Caching if (!force) { utcDate = entries[entryIndex]._utcDate; - Dbg.Assert(utcDate != DateTime.MinValue, "utcDate != DateTime.MinValue"); + Debug.Assert(utcDate != DateTime.MinValue, "utcDate != DateTime.MinValue"); if (utcNow - utcDate <= CacheUsage.NEWADD_INTERVAL && utcNow >= utcDate) continue; @@ -778,7 +778,7 @@ namespace System.Runtime.Caching UsageEntryRef prev1 = (new UsageEntryRef((prev).PageIndex, (prev).Ref2Index)); cacheEntry = entries[entryIndex]._cacheEntry; - Dbg.Assert(cacheEntry.UsageEntryRef == prev1, "cacheEntry.UsageEntryRef == prev1"); + Debug.Assert(cacheEntry.UsageEntryRef == prev1, "cacheEntry.UsageEntryRef == prev1"); Dbg.Trace("CacheUsageFlushUnderUsedItem", "Flushing underused items, item=" + cacheEntry.Key + ", bucket=" + _bucket); cacheEntry.UsageEntryRef = UsageEntryRef.INVALID; @@ -808,7 +808,7 @@ namespace System.Runtime.Caching _cacheUsage.MemoryCacheStore.UnblockInsert(); } - Dbg.Assert(!inFlushHead.IsInvalid, "!inFlushHead.IsInvalid"); + Debug.Assert(!inFlushHead.IsInvalid, "!inFlushHead.IsInvalid"); MemoryCacheStore cacheStore = _cacheUsage.MemoryCacheStore; UsageEntryRef current = inFlushHead; @@ -822,7 +822,7 @@ namespace System.Runtime.Caching cacheEntry = entries[entryIndex]._cacheEntry; entries[entryIndex]._cacheEntry = null; - Dbg.Assert(cacheEntry.UsageEntryRef.IsInvalid, "cacheEntry.UsageEntryRef.IsInvalid"); + Debug.Assert(cacheEntry.UsageEntryRef.IsInvalid, "cacheEntry.UsageEntryRef.IsInvalid"); cacheStore.Remove(cacheEntry, cacheEntry, CacheEntryRemovedReason.Evicted); current = next; @@ -848,7 +848,7 @@ namespace System.Runtime.Caching current = next; } - Dbg.Assert(_cEntriesInFlush == 0, "_cEntriesInFlush == 0"); + Debug.Assert(_cEntriesInFlush == 0, "_cEntriesInFlush == 0"); _blockReduce = false; Reduce(); @@ -902,7 +902,7 @@ namespace System.Runtime.Caching internal void Add(MemoryCacheEntry cacheEntry) { byte bucket = cacheEntry.UsageBucket; - Dbg.Assert(bucket != 0xff, "bucket != 0xff"); + Debug.Assert(bucket != 0xff, "bucket != 0xff"); _buckets[bucket].AddCacheEntry(cacheEntry); } diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/ChangeMonitor.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/ChangeMonitor.cs index 388eb6f4ea5..1d5def317c6 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/ChangeMonitor.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/ChangeMonitor.cs @@ -6,6 +6,7 @@ using System; using System.Runtime.Caching.Resources; using System.Diagnostics.CodeAnalysis; using System.Threading; +using System.Diagnostics; // Every member of this class is thread-safe. // @@ -143,7 +144,7 @@ namespace System.Runtime.Caching _flags[INITIALIZED] = true; // If the dependency has already changed, or someone tried to dispose us, then call Dispose now. - Dbg.Assert(_flags[INITIALIZED], "It is critical that INITIALIZED is set before CHANGED is checked below"); + Debug.Assert(_flags[INITIALIZED], "It is critical that INITIALIZED is set before CHANGED is checked below"); if (_flags[CHANGED]) { Dispose(); @@ -160,7 +161,7 @@ namespace System.Runtime.Caching OnChangedHelper(state); // OnChanged will also invoke Dispose, but only after initialization is complete - Dbg.Assert(_flags[CHANGED], "It is critical that CHANGED is set before INITIALIZED is checked below."); + Debug.Assert(_flags[CHANGED], "It is critical that CHANGED is set before INITIALIZED is checked below."); if (_flags[INITIALIZED]) { DisposeHelper(); @@ -207,7 +208,7 @@ namespace System.Runtime.Caching OnChangedHelper(null); // If not initialized, throw, so the derived class understands that it must call InitializeComplete before Dispose. - Dbg.Assert(_flags[CHANGED], "It is critical that CHANGED is set before INITIALIZED is checked below."); + Debug.Assert(_flags[CHANGED], "It is critical that CHANGED is set before INITIALIZED is checked below."); if (!_flags[INITIALIZED]) { throw new InvalidOperationException(SR.Init_not_complete); diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Dbg.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Dbg.cs index 6b95ddd15a7..6dab52668ff 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Dbg.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Dbg.cs @@ -39,86 +39,12 @@ namespace System.Runtime.Caching [DllImport("kernel32.dll")] internal extern static void DebugBreak(); - [DllImport("kernel32.dll")] - internal extern static int GetCurrentProcessId(); - - [DllImport("kernel32.dll")] - internal extern static int GetCurrentThreadId(); - - [DllImport("kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)] - internal extern static IntPtr GetCurrentProcess(); - [DllImport("kernel32.dll")] internal extern static bool IsDebuggerPresent(); - [DllImport("kernel32.dll", SetLastError=true)] - internal extern static bool TerminateProcess(HandleRef processHandle, int exitCode); - - internal const int PM_NOREMOVE = 0x0000; - internal const int PM_REMOVE = 0x0001; - - [StructLayout(LayoutKind.Sequential)] - internal struct MSG { - internal IntPtr hwnd; - internal int message; - internal IntPtr wParam; - internal IntPtr lParam; - internal int time; - internal int pt_x; - internal int pt_y; - } - //[DllImport("user32.dll", CharSet=CharSet.Auto)] //internal extern static bool PeekMessage([In, Out] ref MSG msg, HandleRef hwnd, int msgMin, int msgMax, int remove); - internal const int - MB_OK = 0x00000000, - MB_OKCANCEL = 0x00000001, - MB_ABORTRETRYIGNORE = 0x00000002, - MB_YESNOCANCEL = 0x00000003, - MB_YESNO = 0x00000004, - MB_RETRYCANCEL = 0x00000005, - MB_ICONHAND = 0x00000010, - MB_ICONQUESTION = 0x00000020, - MB_ICONEXCLAMATION = 0x00000030, - MB_ICONASTERISK = 0x00000040, - MB_USERICON = 0x00000080, - MB_ICONWARNING = 0x00000030, - MB_ICONERROR = 0x00000010, - MB_ICONINFORMATION = 0x00000040, - MB_DEFBUTTON1 = 0x00000000, - MB_DEFBUTTON2 = 0x00000100, - MB_DEFBUTTON3 = 0x00000200, - MB_DEFBUTTON4 = 0x00000300, - MB_APPLMODAL = 0x00000000, - MB_SYSTEMMODAL = 0x00001000, - MB_TASKMODAL = 0x00002000, - MB_HELP = 0x00004000, - MB_NOFOCUS = 0x00008000, - MB_SETFOREGROUND = 0x00010000, - MB_DEFAULT_DESKTOP_ONLY = 0x00020000, - MB_TOPMOST = 0x00040000, - MB_RIGHT = 0x00080000, - MB_RTLREADING = 0x00100000, - MB_SERVICE_NOTIFICATION = 0x00200000, - MB_SERVICE_NOTIFICATION_NT3X = 0x00040000, - MB_TYPEMASK = 0x0000000F, - MB_ICONMASK = 0x000000F0, - MB_DEFMASK = 0x00000F00, - MB_MODEMASK = 0x00003000, - MB_MISCMASK = 0x0000C000; - - internal const int - IDOK = 1, - IDCANCEL = 2, - IDABORT = 3, - IDRETRY = 4, - IDIGNORE = 5, - IDYES = 6, - IDNO = 7, - IDCLOSE = 8, - IDHELP = 9; - //[DllImport("user32.dll", CharSet=CharSet.Auto, BestFitMapping=false)] //internal extern static int MessageBox(HandleRef hWnd, string text, string caption, int type); @@ -142,12 +68,6 @@ namespace System.Runtime.Caching internal const int REG_NOTIFY_CHANGE_NAME = 1; internal const int REG_NOTIFY_CHANGE_LAST_SET = 4; - - [DllImport("advapi32.dll", CharSet=CharSet.Auto, BestFitMapping=false, SetLastError=true)] - internal extern static int RegOpenKeyEx(IntPtr hKey, string lpSubKey, int ulOptions, int samDesired, out SafeRegistryHandle hkResult); - - [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true)] - internal extern static int RegNotifyChangeKeyValue(SafeRegistryHandle hKey, bool watchSubTree, uint notifyFilter, SafeWaitHandle regEvent, bool async); } private enum TagValue { @@ -167,7 +87,6 @@ namespace System.Runtime.Caching private const string TAG_DEBUG_PREFIX = "DebugPrefix"; private const string TAG_DEBUG_THREAD_PREFIX = "DebugThreadPrefix"; - private const string PRODUCT = "Microsoft .NET Framework"; private const string COMPONENT = "System.Web"; private static string s_regKeyName = @"Software\Microsoft\ASP.NET\Debug"; @@ -422,7 +341,7 @@ namespace System.Runtime.Caching } // Open the reg key - int result = NativeMethods.RegOpenKeyEx(NativeMethods.HKEY_LOCAL_MACHINE, s_listenKeyName, 0, NativeMethods.KEY_READ, out s_regHandle); + int result = Interop.Advapi32.RegOpenKeyEx(NativeMethods.HKEY_LOCAL_MACHINE, s_listenKeyName, 0, NativeMethods.KEY_READ, out s_regHandle); if (result != 0) { StopRegistryMonitor(); @@ -430,7 +349,7 @@ namespace System.Runtime.Caching } // Listen for changes. - result = NativeMethods.RegNotifyChangeKeyValue( + result = Interop.Advapi32.RegNotifyChangeKeyValue( s_regHandle, true, NativeMethods.REG_NOTIFY_CHANGE_NAME | NativeMethods.REG_NOTIFY_CHANGE_LAST_SET, @@ -817,7 +736,7 @@ A=Exit process R=Debug I=Continue"; } else { - Debugger.Break(); + Debugger.Break(); } #endif } @@ -1020,4 +939,3 @@ A=Exit process R=Debug I=Continue"; } } } - diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCache.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCache.cs index 9188fe2018d..c11f7b452ad 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCache.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCache.cs @@ -13,6 +13,7 @@ using System.Configuration; using System.Diagnostics.CodeAnalysis; using System.Security; using System.Threading; +using System.Diagnostics; namespace System.Runtime.Caching { @@ -130,7 +131,7 @@ namespace System.Runtime.Caching } break; case CacheEntryRemovedReason.Evicted: - Dbg.Fail("Reason should never be CacheEntryRemovedReason.Evicted since the entry was inserted as NotRemovable."); + Debug.Fail("Reason should never be CacheEntryRemovedReason.Evicted since the entry was inserted as NotRemovable."); return; default: // do nothing if reason is Removed or CacheSpecificEviction diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheEntry.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheEntry.cs index f0725e8da62..c40814d3e4b 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheEntry.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheEntry.cs @@ -6,6 +6,7 @@ using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Threading; @@ -258,7 +259,7 @@ namespace System.Runtime.Caching // set to null so RemoveDependent does not attempt to access it, since we're not // using a copy of the KeyCollection. _fields._dependents = null; - Dbg.Assert(_fields._dependents == null, "_fields._dependents == null"); + Debug.Assert(_fields._dependents == null, "_fields._dependents == null"); } } if (deps != null) diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheEntryChangeMonitor.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheEntryChangeMonitor.cs index 08288f09380..8ab62f589bc 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheEntryChangeMonitor.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheEntryChangeMonitor.cs @@ -9,6 +9,7 @@ using System.Collections.ObjectModel; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Text; +using System.Diagnostics; namespace System.Runtime.Caching { @@ -136,7 +137,7 @@ namespace System.Runtime.Caching internal MemoryCacheEntryChangeMonitor(ReadOnlyCollection keys, string regionName, MemoryCache cache) { - Dbg.Assert(keys != null && keys.Count > 0, "keys != null && keys.Count > 0"); + Debug.Assert(keys != null && keys.Count > 0, "keys != null && keys.Count > 0"); _keys = keys; _regionName = regionName; InitDisposableMembers(cache); diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheKeyEqualityComparer.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheKeyEqualityComparer.cs index 158b6464813..84c6b1be50d 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheKeyEqualityComparer.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheKeyEqualityComparer.cs @@ -2,8 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; using System.Collections; +using System.Diagnostics; namespace System.Runtime.Caching { @@ -11,8 +11,8 @@ namespace System.Runtime.Caching { bool IEqualityComparer.Equals(object x, object y) { - Dbg.Assert(x != null && x is MemoryCacheKey); - Dbg.Assert(y != null && y is MemoryCacheKey); + Debug.Assert(x != null && x is MemoryCacheKey); + Debug.Assert(y != null && y is MemoryCacheKey); MemoryCacheKey a, b; a = (MemoryCacheKey)x; diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheStore.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheStore.cs index 914c8094c48..2ff7804149a 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheStore.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheStore.cs @@ -102,7 +102,7 @@ namespace System.Runtime.Caching _usage.Remove(entry); } - Dbg.Assert(entry.State == EntryState.RemovingFromCache, "entry.State = EntryState.RemovingFromCache"); + Debug.Assert(entry.State == EntryState.RemovingFromCache, "entry.State = EntryState.RemovingFromCache"); entry.State = EntryState.RemovedFromCache; if (!delayRelease) @@ -275,7 +275,7 @@ namespace System.Runtime.Caching // MemoryCacheStatistics has been disposed, and therefore nobody should be using // _insertBlock except for potential threads in WaitInsertBlock (which won't care if we call Close). - Dbg.Assert(_useInsertBlock == false, "_useInsertBlock == false"); + Debug.Assert(_useInsertBlock == false, "_useInsertBlock == false"); _insertBlock.Close(); // Don't need to call GC.SuppressFinalize(this) for sealed types without finalizers. @@ -372,7 +372,7 @@ namespace System.Runtime.Caching internal long TrimInternal(int percent) { - Dbg.Assert(percent <= 100, "percent <= 100"); + Debug.Assert(percent <= 100, "percent <= 100"); int count = Count; int toTrim = 0; diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryMonitor.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryMonitor.cs index 37294bba912..2133aec5a68 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryMonitor.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryMonitor.cs @@ -6,7 +6,7 @@ using System; using System.Collections.Specialized; using System.Security; using System.Runtime.InteropServices; - +using System.Diagnostics; namespace System.Runtime.Caching { @@ -60,9 +60,9 @@ namespace System.Runtime.Caching protected void InitHistory() { - Dbg.Assert(_pressureHigh > 0, "_pressureHigh > 0"); - Dbg.Assert(_pressureLow > 0, "_pressureLow > 0"); - Dbg.Assert(_pressureLow <= _pressureHigh, "_pressureLow <= _pressureHigh"); + Debug.Assert(_pressureHigh > 0, "_pressureHigh > 0"); + Debug.Assert(_pressureLow > 0, "_pressureLow > 0"); + Debug.Assert(_pressureLow <= _pressureHigh, "_pressureLow <= _pressureHigh"); int pressure = GetCurrentPressure(); diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/PhysicalMemoryMonitor.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/PhysicalMemoryMonitor.cs index c3cb2f4d3ab..dda6b6b69bf 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/PhysicalMemoryMonitor.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/PhysicalMemoryMonitor.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; +using System.Diagnostics; using System.Runtime.Caching.Configuration; using System.Runtime.InteropServices; using System.Security; -- 2.34.1