Reverse ctors chaining for few SPC types to avoid calling complex ctors unnecessary...
authorMarek Safar <marek.safar@gmail.com>
Thu, 26 Nov 2020 11:48:41 +0000 (12:48 +0100)
committerGitHub <noreply@github.com>
Thu, 26 Nov 2020 11:48:41 +0000 (06:48 -0500)
src/libraries/System.Private.CoreLib/src/System/Text/UTF8Encoding.cs
src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/FutureFactory.cs
src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/TaskFactory.cs

index 534b0e3..2c7aed9 100644 (file)
@@ -69,13 +69,14 @@ namespace System.Text
         private readonly bool _isThrowException;
 
 
-        public UTF8Encoding() : this(false)
+        public UTF8Encoding() :
+            base(UTF8_CODEPAGE)
         {
         }
 
 
         public UTF8Encoding(bool encoderShouldEmitUTF8Identifier) :
-            base(UTF8_CODEPAGE)
+            this()
         {
             _emitUTF8Identifier = encoderShouldEmitUTF8Identifier;
         }
index 0e9090a..cfb1eb4 100644 (file)
@@ -64,7 +64,6 @@ namespace System.Threading.Tasks
         /// cref="System.Threading.Tasks.TaskScheduler.Current">TaskScheduler.Current</see>).
         /// </remarks>
         public TaskFactory()
-            : this(default, TaskCreationOptions.None, TaskContinuationOptions.None, null)
         {
         }
 
@@ -85,8 +84,8 @@ namespace System.Threading.Tasks
         /// cref="System.Threading.Tasks.TaskScheduler.Current">TaskScheduler.Current</see>).
         /// </remarks>
         public TaskFactory(CancellationToken cancellationToken)
-            : this(cancellationToken, TaskCreationOptions.None, TaskContinuationOptions.None, null)
         {
+            m_defaultCancellationToken = cancellationToken;
         }
 
         /// <summary>
@@ -109,8 +108,8 @@ namespace System.Threading.Tasks
         /// cref="System.Threading.Tasks.TaskScheduler.Current">TaskScheduler.Current</see>).
         /// </remarks>
         public TaskFactory(TaskScheduler? scheduler) // null means to use TaskScheduler.Current
-            : this(default, TaskCreationOptions.None, TaskContinuationOptions.None, scheduler)
         {
+            m_defaultScheduler = scheduler;
         }
 
         /// <summary>
@@ -140,8 +139,12 @@ namespace System.Threading.Tasks
         /// cref="System.Threading.Tasks.TaskScheduler.Current">TaskScheduler.Current</see>).
         /// </remarks>
         public TaskFactory(TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions)
-            : this(default, creationOptions, continuationOptions, null)
         {
+            TaskFactory.CheckMultiTaskContinuationOptions(continuationOptions);
+            TaskFactory.CheckCreationOptions(creationOptions);
+
+            m_defaultCreationOptions = creationOptions;
+            m_defaultContinuationOptions = continuationOptions;
         }
 
         /// <summary>
@@ -180,14 +183,10 @@ namespace System.Threading.Tasks
         /// cref="System.Threading.Tasks.TaskScheduler.Current">TaskScheduler.Current</see>).
         /// </remarks>
         public TaskFactory(CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions, TaskScheduler? scheduler)
+            : this(creationOptions, continuationOptions)
         {
-            TaskFactory.CheckMultiTaskContinuationOptions(continuationOptions);
-            TaskFactory.CheckCreationOptions(creationOptions);
-
             m_defaultCancellationToken = cancellationToken;
             m_defaultScheduler = scheduler;
-            m_defaultCreationOptions = creationOptions;
-            m_defaultContinuationOptions = continuationOptions;
         }
 
         /* Properties */
index 2326611..a9b1bf0 100644 (file)
@@ -70,7 +70,6 @@ namespace System.Threading.Tasks
         /// cref="System.Threading.Tasks.TaskScheduler.Current">TaskScheduler.Current</see>).
         /// </remarks>
         public TaskFactory()
-            : this(default, TaskCreationOptions.None, TaskContinuationOptions.None, null)
         {
         }
 
@@ -91,8 +90,8 @@ namespace System.Threading.Tasks
         /// cref="System.Threading.Tasks.TaskScheduler.Current">TaskScheduler.Current</see>).
         /// </remarks>
         public TaskFactory(CancellationToken cancellationToken)
-            : this(cancellationToken, TaskCreationOptions.None, TaskContinuationOptions.None, null)
         {
+            m_defaultCancellationToken = cancellationToken;
         }
 
         /// <summary>
@@ -115,8 +114,8 @@ namespace System.Threading.Tasks
         /// cref="System.Threading.Tasks.TaskScheduler.Current">TaskScheduler.Current</see>).
         /// </remarks>
         public TaskFactory(TaskScheduler? scheduler) // null means to use TaskScheduler.Current
-            : this(default, TaskCreationOptions.None, TaskContinuationOptions.None, scheduler)
         {
+            m_defaultScheduler = scheduler;
         }
 
         /// <summary>
@@ -146,8 +145,12 @@ namespace System.Threading.Tasks
         /// cref="System.Threading.Tasks.TaskScheduler.Current">TaskScheduler.Current</see>).
         /// </remarks>
         public TaskFactory(TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions)
-            : this(default, creationOptions, continuationOptions, null)
         {
+            CheckMultiTaskContinuationOptions(continuationOptions);
+            CheckCreationOptions(creationOptions);
+
+            m_defaultCreationOptions = creationOptions;
+            m_defaultContinuationOptions = continuationOptions;
         }
 
         /// <summary>
@@ -186,14 +189,10 @@ namespace System.Threading.Tasks
         /// cref="System.Threading.Tasks.TaskScheduler.Current">TaskScheduler.Current</see>).
         /// </remarks>
         public TaskFactory(CancellationToken cancellationToken, TaskCreationOptions creationOptions, TaskContinuationOptions continuationOptions, TaskScheduler? scheduler)
+            : this(creationOptions, continuationOptions)
         {
-            CheckMultiTaskContinuationOptions(continuationOptions);
-            CheckCreationOptions(creationOptions);
-
             m_defaultCancellationToken = cancellationToken;
             m_defaultScheduler = scheduler;
-            m_defaultCreationOptions = creationOptions;
-            m_defaultContinuationOptions = continuationOptions;
         }
 
         internal static void CheckCreationOptions(TaskCreationOptions creationOptions)