platform/upstream/coreclr.git
7 years agoMerge pull request #9572 from AndyAyersMS/FixTailCallStress
Andy Ayers [Tue, 14 Feb 2017 04:38:56 +0000 (20:38 -0800)]
Merge pull request #9572 from AndyAyersMS/FixTailCallStress

Jit: fix gtIsRecursiveCall

7 years agoMerge pull request #9573 from dotnet-bot/master-UpdateDependencies
Gaurav Khanna [Tue, 14 Feb 2017 04:12:26 +0000 (20:12 -0800)]
Merge pull request #9573 from dotnet-bot/master-UpdateDependencies

Update CoreFx to beta-25014-01 (master)

7 years agoMerge pull request #9567 from fiigii/master
Sivarv [Tue, 14 Feb 2017 03:54:27 +0000 (19:54 -0800)]
Merge pull request #9567 from fiigii/master

Directly support Min/Max intrinsic for Vector<T> on SSE3_4 and above targets

7 years agoUpdate CoreFx to beta-25014-01
dotnet-bot [Tue, 14 Feb 2017 02:59:38 +0000 (02:59 +0000)]
Update CoreFx to beta-25014-01

7 years agoJit: fix gtIsRecursiveCall
Andy Ayers [Tue, 14 Feb 2017 02:38:14 +0000 (18:38 -0800)]
Jit: fix gtIsRecursiveCall

When called from the inline compiler, this needs to look at the root
method's handle, not the inlined method's handle.

Fixes #9568.

7 years agoMerge pull request #9298 from noahfalk/r2r
noahfalk [Tue, 14 Feb 2017 01:51:40 +0000 (17:51 -0800)]
Merge pull request #9298 from noahfalk/r2r

Rejit support for R2R

7 years agoDirectly support Min/Max intrinsic for Vector<T> on SSE3_4 and above targets
Fei Peng [Tue, 14 Feb 2017 00:07:56 +0000 (16:07 -0800)]
Directly support Min/Max intrinsic for Vector<T> on SSE3_4 and above targets

7 years agoMerge pull request #9483 from dotnet-bot/master-UpdateDependencies
William Godbe [Tue, 14 Feb 2017 01:23:55 +0000 (17:23 -0800)]
Merge pull request #9483 from dotnet-bot/master-UpdateDependencies

Update CoreClr, CoreFx to beta-25013-09, beta-25013-01, respectively (master)

7 years agoMerge pull request #9551 from danmosemsft/dead2
Dan Moseley [Tue, 14 Feb 2017 00:56:52 +0000 (16:56 -0800)]
Merge pull request #9551 from danmosemsft/dead2

Remove dead source files in vm\**

7 years agoMerge pull request #9564 from pgavlin/ReportCodeSize
Pat Gavlin [Tue, 14 Feb 2017 00:56:08 +0000 (16:56 -0800)]
Merge pull request #9564 from pgavlin/ReportCodeSize

Report code and GC info size in the JIT time log.

7 years agoMerge pull request #9560 from JosephTremoulet/TypeToTypeVN
Joseph Tremoulet [Mon, 13 Feb 2017 23:38:50 +0000 (18:38 -0500)]
Merge pull request #9560 from JosephTremoulet/TypeToTypeVN

Value number TypeHandleToRuntimeType helper

7 years agoUpdate CoreClr, CoreFx to beta-25013-09, beta-25013-01, respectively
dotnet-bot [Mon, 13 Feb 2017 23:36:44 +0000 (23:36 +0000)]
Update CoreClr, CoreFx to beta-25013-09, beta-25013-01, respectively

7 years agoFix build break
danmosemsft [Mon, 13 Feb 2017 23:03:15 +0000 (15:03 -0800)]
Fix build break

7 years agoMerge pull request #9562 from AndyAyersMS/FixMagicTypeEquality
Andy Ayers [Mon, 13 Feb 2017 22:52:47 +0000 (14:52 -0800)]
Merge pull request #9562 from AndyAyersMS/FixMagicTypeEquality

Jit: fix for broken type equality optimization

7 years agoMerge pull request #9563 from pgavlin/FixPrintCsvHeader
Pat Gavlin [Mon, 13 Feb 2017 22:42:40 +0000 (14:42 -0800)]
Merge pull request #9563 from pgavlin/FixPrintCsvHeader

Fix `JitTimeLog::PrintCsvHeader`.

7 years agoRejit support for R2R images
noahfalk [Mon, 13 Feb 2017 22:41:20 +0000 (14:41 -0800)]
Rejit support for R2R images

Two changes:
a) R2R code wasn't being reported to the Rejit Manager when it was used, this is a simple fix in prestub.cpp. This makes the ReJit API work.
b) The bulk of the changes handle adding support for an inlining table to R2R so that ICorProfilerInfo6::EnumNgenMethodsInliningThisMethod can supply that information to profilers.

This was only tested on Windows thus far, but there is no apparent reason this change would be OS specific.

7 years agoReport code and GC info size in the JIT time log.
Pat Gavlin [Mon, 13 Feb 2017 22:36:47 +0000 (14:36 -0800)]
Report code and GC info size in the JIT time log.

Just what it says on the tin.

7 years ago[x86/Linux] Fix incorrect update in HijackFrame::UpdateRegDisplay (#9448)
Jonghyun Park [Mon, 13 Feb 2017 22:19:14 +0000 (07:19 +0900)]
[x86/Linux] Fix incorrect update in HijackFrame::UpdateRegDisplay (#9448)

* [x86/Linux] Fix incorrect update in HijackFrame::UpdateRegDisplay

* Use ENUM_XXX_REGISTERS macro

7 years agoMerge pull request #9561 from wtgodbe/suseRuntimes
William Godbe [Mon, 13 Feb 2017 22:10:23 +0000 (14:10 -0800)]
Merge pull request #9561 from wtgodbe/suseRuntimes

Remove OpenSuse13.2 from runtime section in all Project.Jsons

7 years agoFix bytemark benchmark (#9497)
Andy Ayers [Mon, 13 Feb 2017 21:34:39 +0000 (13:34 -0800)]
Fix bytemark benchmark (#9497)

I misunderstood how bytemark uses the `adjust` parameter and inadvertently
enabled self-adjustment for the xunit-perf versions of these tests. Not
surprisingly the results showed crazy run to run variations.

Update these tests to set `adjust = 1` to stop the self-adjustment.

Iteration and loop counts tweaked so that each test runs for roughly
1 second on the perf machines.

7 years agoFix `JitTimeLog::PrintCsvHeader`.
Pat Gavlin [Mon, 13 Feb 2017 21:26:56 +0000 (13:26 -0800)]
Fix `JitTimeLog::PrintCsvHeader`.

This function attempts to suppress its output if the JIT time log is not
empty. Unfortunately, the method it uses to do this detection gives
incorrect results on Windows: as documented on MSDN, `ftell` will return
`0` for a file opened for appending until the first I/O operation on
that file occurs. This change fixes this by seeking to the end of the
file prior to `ftell`.

7 years agoRemove OpenSuse13.2 from runtime section in all Project.Jsons
wtgodbe [Mon, 13 Feb 2017 20:56:21 +0000 (12:56 -0800)]
Remove OpenSuse13.2 from runtime section in all Project.Jsons

7 years agoJit: fix for broken type equality optimization
Andy Ayers [Mon, 13 Feb 2017 19:05:02 +0000 (11:05 -0800)]
Jit: fix for broken type equality optimization

The jit relies on a particular tree remaining intact during importation
to optimize type equality tests commonly found in generics.

In #7909 the jit started aggressively spilling the evaluation stack before
calls, which broke up the trees needed for the optimizations.

In the special cases pertaining to type tests the trees can safely remain
intact because we know the calls can't interact with the computations on
the stack. Recognize these cases and selectively suppress spilling.

Closes #9552.

7 years ago[Unix] Add runparallel.sh (#9557)
Steve MacLean [Mon, 13 Feb 2017 20:14:17 +0000 (15:14 -0500)]
[Unix] Add runparallel.sh (#9557)

Initial draft of a run script capable of keeping
high core count Arm64 servers saturated

Uses xargs to submit and schedule jobs

7 years agoValue number TypeHandleToRuntimeType helper
Joseph Tremoulet [Mon, 13 Feb 2017 19:09:08 +0000 (14:09 -0500)]
Value number TypeHandleToRuntimeType helper

This is a pure helper w/o side-effects, so add it to the lists of
tractable helpers in value-numbering; this allows redundant calls to be
CSEd, and fixes #9552 so we can again optimize away type checks on type
parameters in generic code (a not-infrequent pattern).

7 years ago[Unix] twowaypipe unlink before mkfifo (#9505)
Steve MacLean [Mon, 13 Feb 2017 14:54:24 +0000 (09:54 -0500)]
[Unix] twowaypipe unlink before mkfifo (#9505)

Remove stale fifo when before mkfifo

This reduces bogus failures when corerun jobs were
killed with SIGKILL...

7 years ago[Arm64/Unix] Remove misleading stress message (#9507)
Steve MacLean [Mon, 13 Feb 2017 10:56:49 +0000 (05:56 -0500)]
[Arm64/Unix] Remove misleading stress message (#9507)

* [Arm64/Unix] Remove misleading stress message

7 years agoRemove dead validator.cpp
danmosemsft [Mon, 13 Feb 2017 05:08:46 +0000 (21:08 -0800)]
Remove dead validator.cpp

7 years agoRemove dead stackbuildersink.cpp
danmosemsft [Mon, 13 Feb 2017 05:05:29 +0000 (21:05 -0800)]
Remove dead stackbuildersink.cpp

7 years agoRemove dead rwlock.cpp
danmosemsft [Mon, 13 Feb 2017 05:04:15 +0000 (21:04 -0800)]
Remove dead rwlock.cpp

7 years agoRemove dead remoting.cpp
danmosemsft [Mon, 13 Feb 2017 05:01:16 +0000 (21:01 -0800)]
Remove dead remoting.cpp

7 years agoRemove dead objectclone.cpp
danmosemsft [Mon, 13 Feb 2017 05:00:22 +0000 (21:00 -0800)]
Remove dead objectclone.cpp

7 years agoRemove dead mixedmode.cpp
danmosemsft [Mon, 13 Feb 2017 04:58:49 +0000 (20:58 -0800)]
Remove dead mixedmode.cpp

7 years agoRemove dead message.cpp
danmosemsft [Mon, 13 Feb 2017 04:57:29 +0000 (20:57 -0800)]
Remove dead message.cpp

7 years agoRemove dead mdadac.cpp
danmosemsft [Mon, 13 Feb 2017 04:54:30 +0000 (20:54 -0800)]
Remove dead mdadac.cpp

7 years agoRemove dead mda.cpp
danmosemsft [Mon, 13 Feb 2017 04:53:44 +0000 (20:53 -0800)]
Remove dead mda.cpp

7 years agoRemove dead gchost.cpp
danmosemsft [Mon, 13 Feb 2017 04:52:42 +0000 (20:52 -0800)]
Remove dead gchost.cpp

7 years agoRemove dead crossdomaincalls.cpp
danmosemsft [Mon, 13 Feb 2017 04:51:31 +0000 (20:51 -0800)]
Remove dead crossdomaincalls.cpp

7 years agoRemove constrainedexecutionregion.cpp
danmosemsft [Mon, 13 Feb 2017 04:42:42 +0000 (20:42 -0800)]
Remove constrainedexecutionregion.cpp

7 years agoRemove commethodrental
danmosemsft [Mon, 13 Feb 2017 04:25:22 +0000 (20:25 -0800)]
Remove commethodrental

7 years agoRemove clrpriv* dead code
danmosemsft [Mon, 13 Feb 2017 04:21:08 +0000 (20:21 -0800)]
Remove clrpriv* dead code

7 years agoRemove dead assemblynamesconfigfactory etc files
danmosemsft [Mon, 13 Feb 2017 03:55:22 +0000 (19:55 -0800)]
Remove dead assemblynamesconfigfactory etc files

7 years agoRemove dead appdomainhelper* files
danmosemsft [Mon, 13 Feb 2017 03:55:22 +0000 (19:55 -0800)]
Remove dead appdomainhelper* files

7 years agoMerge pull request #9542 from danmosemsft/defines3
Dan Moseley [Mon, 13 Feb 2017 05:54:57 +0000 (21:54 -0800)]
Merge pull request #9542 from danmosemsft/defines3

Remove code corresponding to always defined symbols

7 years agoAddendum for FEATURE_FUSION
danmosemsft [Mon, 13 Feb 2017 03:17:39 +0000 (19:17 -0800)]
Addendum for FEATURE_FUSION

7 years agoAddendum for FEATURE_APPX_BINDER
danmosemsft [Mon, 13 Feb 2017 03:15:47 +0000 (19:15 -0800)]
Addendum for FEATURE_APPX_BINDER

7 years agoAddendum for FEATURE_CODEPAGES_FILE
danmosemsft [Mon, 13 Feb 2017 03:10:52 +0000 (19:10 -0800)]
Addendum for FEATURE_CODEPAGES_FILE

7 years agoMerge pull request #9516 from sdmaclea/PR-ARM64-FAILS
Russ Keldorph [Mon, 13 Feb 2017 01:49:30 +0000 (17:49 -0800)]
Merge pull request #9516 from sdmaclea/PR-ARM64-FAILS

[Arm64/Unix] Add list of known arm64 fails

7 years agoMerge pull request #9446 from seanshpark/stkalign_helpers
Bruce Forstall [Mon, 13 Feb 2017 01:24:21 +0000 (17:24 -0800)]
Merge pull request #9446 from seanshpark/stkalign_helpers

[x86/Linux] Fix stack alignment in helper stub

7 years agoMerge pull request #9543 from mskvortsov/fix-9536
Bruce Forstall [Mon, 13 Feb 2017 01:22:03 +0000 (17:22 -0800)]
Merge pull request #9543 from mskvortsov/fix-9536

[Windows/Arm32] Fix a build break

7 years agoRemove never defined FEATURE_FUSION
danmosemsft [Mon, 13 Feb 2017 00:51:48 +0000 (16:51 -0800)]
Remove never defined FEATURE_FUSION

7 years agoRemove remainder of FEATURE_CORECLR (tool missed some files, also comments)
danmosemsft [Sun, 12 Feb 2017 23:32:54 +0000 (15:32 -0800)]
Remove remainder of FEATURE_CORECLR (tool missed some files, also comments)

7 years agoComment for Gaurav
danmosemsft [Sun, 12 Feb 2017 22:31:56 +0000 (14:31 -0800)]
Comment for Gaurav

7 years agoRemove never defined FEATURE_CRYPTO
danmosemsft [Sun, 12 Feb 2017 22:30:52 +0000 (14:30 -0800)]
Remove never defined FEATURE_CRYPTO

7 years agoRemove never defined FEATURE_COMPRESSEDSTACK
danmosemsft [Sun, 12 Feb 2017 22:26:40 +0000 (14:26 -0800)]
Remove never defined FEATURE_COMPRESSEDSTACK

7 years agoRemove never defined FEATURE_COMINTEROP_WINRT_DESKTOP_HOST
danmosemsft [Sun, 12 Feb 2017 22:23:34 +0000 (14:23 -0800)]
Remove never defined FEATURE_COMINTEROP_WINRT_DESKTOP_HOST

7 years agoRemove never defined FEATURE_COMINTEROP_TLB_SUPPORT and files that require it to...
danmosemsft [Sun, 12 Feb 2017 20:46:46 +0000 (12:46 -0800)]
Remove never defined FEATURE_COMINTEROP_TLB_SUPPORT and files that require it to be defined

7 years agoRemove never defined FEATURE_COMINTEROP_REGISTRATION
danmosemsft [Sun, 12 Feb 2017 20:37:06 +0000 (12:37 -0800)]
Remove never defined FEATURE_COMINTEROP_REGISTRATION

7 years agoRemove never defined FEATURE_CODEPAGES_FILE and file
danmosemsft [Sun, 12 Feb 2017 20:28:16 +0000 (12:28 -0800)]
Remove never defined FEATURE_CODEPAGES_FILE and file

7 years agoRemove never defined FEATURE_CLICKONCE
danmosemsft [Sun, 12 Feb 2017 20:24:42 +0000 (12:24 -0800)]
Remove never defined FEATURE_CLICKONCE

7 years agoRemove never defined FEATURE_CER and header
danmosemsft [Sun, 12 Feb 2017 20:19:09 +0000 (12:19 -0800)]
Remove never defined FEATURE_CER and header

7 years agoRemove never defined FEATURE_APTCA
danmosemsft [Sun, 12 Feb 2017 20:14:01 +0000 (12:14 -0800)]
Remove never defined FEATURE_APTCA

7 years agoRemove never defined FEATURE_APPX_BINDER
danmosemsft [Sun, 12 Feb 2017 20:08:12 +0000 (12:08 -0800)]
Remove never defined FEATURE_APPX_BINDER

7 years agoRemove never defined FEATURE_APPDOMAINMANAGER_INITOPTIONS
danmosemsft [Sun, 12 Feb 2017 19:34:37 +0000 (11:34 -0800)]
Remove never defined FEATURE_APPDOMAINMANAGER_INITOPTIONS

7 years agoRemove always defined FEATURE_VERSIONING
danmosemsft [Sun, 12 Feb 2017 19:19:46 +0000 (11:19 -0800)]
Remove always defined FEATURE_VERSIONING

7 years agoRemove defined but wrapping dead code FEATURE_SYNTHETIC_CULTURES
danmosemsft [Sun, 12 Feb 2017 19:15:41 +0000 (11:15 -0800)]
Remove defined but wrapping dead code FEATURE_SYNTHETIC_CULTURES

7 years agoRemove always defined FEATURE_SYNCHRONIZATIONCONTEXT_WAIT
danmosemsft [Sun, 12 Feb 2017 19:12:36 +0000 (11:12 -0800)]
Remove always defined FEATURE_SYNCHRONIZATIONCONTEXT_WAIT

7 years agoRemove always defined FEATURE_SPAN_OF_T
danmosemsft [Sun, 12 Feb 2017 19:05:31 +0000 (11:05 -0800)]
Remove always defined FEATURE_SPAN_OF_T

7 years agoRemove never used FEATURE_NORM_IDNA_ONLY
danmosemsft [Sun, 12 Feb 2017 19:02:08 +0000 (11:02 -0800)]
Remove never used FEATURE_NORM_IDNA_ONLY

7 years agoRemove never used FEATURE_MERGE_CULTURE_SUPPORT_AND_ENGINE
danmosemsft [Sun, 12 Feb 2017 18:59:14 +0000 (10:59 -0800)]
Remove never used FEATURE_MERGE_CULTURE_SUPPORT_AND_ENGINE

7 years agoRemove always defined FEATURE_MAIN_CLR_MODULE_USES_CORE_NAME
danmosemsft [Sun, 12 Feb 2017 18:58:11 +0000 (10:58 -0800)]
Remove always defined FEATURE_MAIN_CLR_MODULE_USES_CORE_NAME

7 years agoRemove always defined FEATURE_HOST_ASSEMBLY_RESOLVER
danmosemsft [Sun, 12 Feb 2017 18:54:14 +0000 (10:54 -0800)]
Remove always defined FEATURE_HOST_ASSEMBLY_RESOLVER

7 years agoRemove always defined FEATURE_EXCEPTIONDISPATCHINFO
danmosemsft [Sun, 12 Feb 2017 18:46:48 +0000 (10:46 -0800)]
Remove always defined FEATURE_EXCEPTIONDISPATCHINFO

7 years agoRemove always defined FEATURE_EXCEPTION_NOTIFICATIONS
danmosemsft [Sun, 12 Feb 2017 18:43:35 +0000 (10:43 -0800)]
Remove always defined FEATURE_EXCEPTION_NOTIFICATIONS

7 years agoRemove never used FEATURE_ASYNC_IO
danmosemsft [Sun, 12 Feb 2017 18:36:01 +0000 (10:36 -0800)]
Remove never used FEATURE_ASYNC_IO

7 years agoFix indentation in cmake
danmosemsft [Sun, 12 Feb 2017 18:34:28 +0000 (10:34 -0800)]
Fix indentation in cmake

7 years agoAdd RuntimeHelpers.IsReferenceOrContainsReferences<T>() (#9541)
Jan Kotas [Mon, 13 Feb 2017 00:50:50 +0000 (16:50 -0800)]
Add RuntimeHelpers.IsReferenceOrContainsReferences<T>() (#9541)

Rename JitHelpers.ContainsReferences<T>() to RuntimeHelpers.IsReferenceOrContainsReferences<T>() and make it public.

Work towards https://github.com/dotnet/corefx/issues/14047

7 years agoMerge pull request #9544 from stephentoub/delete_unused_const
Stephen Toub [Sun, 12 Feb 2017 23:59:05 +0000 (18:59 -0500)]
Merge pull request #9544 from stephentoub/delete_unused_const

Remove unused const in ArraySortHelper

7 years agoOptimize List Clear+Remove (#9540)
Ben Adams [Sun, 12 Feb 2017 21:56:15 +0000 (21:56 +0000)]
Optimize List Clear+Remove (#9540)

* List Clear+Remove
* Tail call Array.Clear

7 years agoRemove unused const in ArraySortHelper
Stephen Toub [Sun, 12 Feb 2017 21:02:32 +0000 (16:02 -0500)]
Remove unused const in ArraySortHelper

7 years agoWindows/Arm32: Fix a build break.
Mikhael Skvortsov [Sun, 12 Feb 2017 19:57:59 +0000 (22:57 +0300)]
Windows/Arm32: Fix a build break.

7 years agoMerge pull request #9525 from danmosemsft/defines2
Dan Moseley [Sun, 12 Feb 2017 01:06:20 +0000 (17:06 -0800)]
Merge pull request #9525 from danmosemsft/defines2

Remove redundant defines from CoreCLR native code

7 years agoMerge pull request #9471 from stephentoub/task_perf
Stephen Toub [Sun, 12 Feb 2017 00:58:51 +0000 (19:58 -0500)]
Merge pull request #9471 from stephentoub/task_perf

Reduce Task and async method overheads

7 years agoFix checks for methods that use StackCrawlMark (#9537)
Jan Kotas [Sat, 11 Feb 2017 22:25:04 +0000 (14:25 -0800)]
Fix checks for methods that use StackCrawlMark (#9537)

* Fix checks for methods that use StackCrawlMark

My recent changed these methods to be marked using IsMdRequireSecObject instead, but some
places that have to check for it were not updated correctly.

7 years agoMerge pull request #9495 from pgavlin/OptConfig
Pat Gavlin [Sat, 11 Feb 2017 18:34:56 +0000 (10:34 -0800)]
Merge pull request #9495 from pgavlin/OptConfig

Add a flag to enable fine-grained optimize control.

7 years agoMerge pull request #9523 from jashook/up_arm64_timeout
Jarret Shook [Sat, 11 Feb 2017 17:04:43 +0000 (09:04 -0800)]
Merge pull request #9523 from jashook/up_arm64_timeout

Up the timeout for arm64 jobs that run tests.

7 years agoInadvertent inline redundant define in threadsuspend.cpp
danmosemsft [Sat, 11 Feb 2017 16:07:02 +0000 (08:07 -0800)]
Inadvertent inline redundant define in threadsuspend.cpp

7 years agoInadvertent inline redundant define in pal
danmosemsft [Sat, 11 Feb 2017 15:50:25 +0000 (07:50 -0800)]
Inadvertent inline redundant define in pal

7 years agoInadvertent inline redundant define in fxretarget.h
danmosemsft [Sat, 11 Feb 2017 15:45:34 +0000 (07:45 -0800)]
Inadvertent inline redundant define in fxretarget.h

7 years agoRevert inadvertent remove of #if FASTLOOP
danmosemsft [Sat, 11 Feb 2017 15:28:22 +0000 (07:28 -0800)]
Revert inadvertent remove of #if FASTLOOP

7 years agoDead comment
danmosemsft [Sat, 11 Feb 2017 15:23:01 +0000 (07:23 -0800)]
Dead comment

7 years agoRevert "Remove always defined FEATURE_CORESYSTEM"
danmosemsft [Sat, 11 Feb 2017 15:20:12 +0000 (07:20 -0800)]
Revert "Remove always defined FEATURE_CORESYSTEM"

This reverts commit 751771a8976f909af772e35c167bd7e3ffbe44c8.

7 years agoRevert "Remove more always defined FEATURE_CORESYSTEM"
danmosemsft [Sat, 11 Feb 2017 15:12:07 +0000 (07:12 -0800)]
Revert "Remove more always defined FEATURE_CORESYSTEM"

This reverts commit 52009b8919ba55690f21cdc8f04e012a53eb8ef4.

7 years agoMerge pull request #9437 from JosephTremoulet/UpdateFormat
Joseph Tremoulet [Sat, 11 Feb 2017 15:06:29 +0000 (10:06 -0500)]
Merge pull request #9437 from JosephTremoulet/UpdateFormat

Update format.py to use dotnet cli rc3

7 years agoPerf improvements to Task/Task<T>
Stephen Toub [Thu, 9 Feb 2017 22:01:56 +0000 (17:01 -0500)]
Perf improvements to Task/Task<T>

- Remove some unecessary intermediate functions, e.g. Execute(), manually inlining it into its one caller
- Make the common completion path (no exceptions, no cancellation, etc.) more inlineable, and avoid calling some functions (like AddExceptionsFromChildren) when we know they will be nops.
- Make FinishContinuations inlineable.  When there aren't any continuations, this shaves off a measurable percentage of time.  When there are, we're no worse off, as the FinishContinuations entrypoint gets inlined, so we still only have the one function call to RunContinuations.
- Make TaskCompletionSource.TrySetResult more inlineable.  It was just on the cusp, with an extra branch / call to IsCompleted putting it over the edge.  But the common path for calling TrySetResult is when the call will successfully transition, in which case we don't need the IsCompleted call; it's only necessary if/when we lose the race condition, in which case we can pay a bit more to call SpinUntilCompleted.
- Avoid some duplicate logging-related calls
- Remove AggressiveInlining from an ETW-related method that did not need it; the call sites can instead just check IsEnabled before calling it.
- Remove some unnecessary writes, casts, locals, etc., make some fields readonly
- Change CompareExchange to Exchange in Task.WhenAny completion

7 years agoStreamline AsyncTaskMethodBuilders
Stephen Toub [Thu, 9 Feb 2017 21:46:03 +0000 (16:46 -0500)]
Streamline AsyncTaskMethodBuilders

- Slim down AsyncTaskMethodBuilder`1.Task and make it aggressively inlined.  The common case we care to optimize for is synchronous completion, in which case the first access to Task will already fine m_task non-null, and we want that access inlined.
- Slim down AsyncTaskMethodBuilder`1.SetResult.  As with Task, we care most about the synchronous completion path, as when perf matters, most async method invocations complete synchronously.  The code path is streamlined so that the synchronous completion path can mostly be inlined.
- Replace some throws with ThrowHelper
- Mark GetTaskForResult as aggressive inlining.  It contains a lot of C# code, but for a given TResult, the JIT trims away the majority of the implementation.

7 years agoRevert "Remove always defined FEATURE_CORRUPTING_EXCEPTIONS"
danmosemsft [Sat, 11 Feb 2017 06:15:01 +0000 (22:15 -0800)]
Revert "Remove always defined FEATURE_CORRUPTING_EXCEPTIONS"

This reverts commit b0dab0d6de90a38dfbf0d6b2039a7b8f5269d802.

7 years agoMissed part of file delete
danmosemsft [Sat, 11 Feb 2017 06:04:44 +0000 (22:04 -0800)]
Missed part of file delete

7 years agoRemove always defined FEATURE_CORRUPTING_EXCEPTIONS
danmosemsft [Sat, 11 Feb 2017 05:53:12 +0000 (21:53 -0800)]
Remove always defined FEATURE_CORRUPTING_EXCEPTIONS

7 years agoRemove more always defined FEATURE_CORESYSTEM
danmosemsft [Sat, 11 Feb 2017 05:43:40 +0000 (21:43 -0800)]
Remove more always defined FEATURE_CORESYSTEM