From 10f10a8e42625b3c22350367ade18d0625bc0841 Mon Sep 17 00:00:00 2001 From: Wraith2 Date: Sun, 12 Jan 2020 02:09:35 +0000 Subject: [PATCH] strongly type lock token to avoid boxing --- .../Microsoft/Data/ProviderBase/DbConnectionInternal.cs | 6 +++--- .../Microsoft/Data/ProviderBase/DbConnectionInternal.cs | 2 +- .../Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs | 7 +++---- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Common/src/Microsoft/Data/ProviderBase/DbConnectionInternal.cs b/src/Microsoft.Data.SqlClient/netcore/src/Common/src/Microsoft/Data/ProviderBase/DbConnectionInternal.cs index 1ac82b68cc..b44d4251ae 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Common/src/Microsoft/Data/ProviderBase/DbConnectionInternal.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Common/src/Microsoft/Data/ProviderBase/DbConnectionInternal.cs @@ -203,12 +203,12 @@ virtual protected void PrepareForCloseConnection() // By default, there is no preparation required } - virtual protected object ObtainAdditionalLocksForClose() + virtual protected bool ObtainAdditionalLocksForClose() { - return null; // no additional locks in default implementation + return false; // no additional locks in default implementation } - virtual protected void ReleaseAdditionalLocksForClose(object lockToken) + virtual protected void ReleaseAdditionalLocksForClose(bool lockToken) { // no additional locks in default implementation } diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/ProviderBase/DbConnectionInternal.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/ProviderBase/DbConnectionInternal.cs index 39a6f0c3dd..2568e2a081 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/ProviderBase/DbConnectionInternal.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/ProviderBase/DbConnectionInternal.cs @@ -252,7 +252,7 @@ internal virtual void CloseConnection(DbConnection owningObject, DbConnectionFac // Lock to prevent race condition with cancellation lock (this) { - object lockToken = ObtainAdditionalLocksForClose(); + bool lockToken = ObtainAdditionalLocksForClose(); try { PrepareForCloseConnection(); diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs index c4b3fcd910..1dade03a64 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlInternalConnectionTds.cs @@ -1758,7 +1758,7 @@ private void AttemptOneLogin( // PREPARED COMMAND METHODS //////////////////////////////////////////////////////////////////////////////////////// - protected override object ObtainAdditionalLocksForClose() + protected override bool ObtainAdditionalLocksForClose() { bool obtainParserLock = !ThreadHasParserLockForClose; Debug.Assert(obtainParserLock || _parserLock.ThreadMayHaveLock(), "Thread claims to have lock, but lock is not taken"); @@ -1770,10 +1770,9 @@ protected override object ObtainAdditionalLocksForClose() return obtainParserLock; } - protected override void ReleaseAdditionalLocksForClose(object lockToken) + protected override void ReleaseAdditionalLocksForClose(bool lockToken) { - Debug.Assert(lockToken is bool, "Lock token should be boolean"); - if ((bool)lockToken) + if (lockToken) { ThreadHasParserLockForClose = false; _parserLock.Release();