Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
If DangerousAddRef returns rather than throws, its argument will be true, so there's no need to branch on it.
|
|
|
|
class (#9640)
|
|
* Improve string.Equals OrdinalIgnoreCase performance for matching chars
* Added code comment
|
|
Revert "Fast-path for ASCII & UTF8 Encoding ASCII data (#9187)"
|
|
Delay Random allocation in ConcurrentStack
|
|
This reverts commit 77e676be9fab34471c4ae9f16a7a51a06bd470ee.
|
|
|
|
|
|
|
|
Add/Expose String.EndsWith(char) and String.StartsWith(char)
|
|
Performance improvement: Make ConcurrentDictionary with Enum values also profit from atomic writes.
|
|
Remove more dead native defines
|
|
|
|
|
|
|
|
Remove dead code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Added overloads for String.Replace so that they now accept
StringComparison and CultureInfo as input parameters.
|
|
Rejit support for R2R
|
|
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.
|
|
|
|
|
|
Rename JitHelpers.ContainsReferences<T>() to RuntimeHelpers.IsReferenceOrContainsReferences<T>() and make it public.
Work towards https://github.com/dotnet/corefx/issues/14047
|
|
Remove unused const in ArraySortHelper
|
|
* List Clear+Remove
* Tail call Array.Clear
|
|
|
|
Reduce Task and async method overheads
|
|
* 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.
|
|
- 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
|
|
- 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.
|
|
CoreCLR does not have CAS, and so we can conveniently use it to mark methods with StackCrawlMark to
decouple it from NoInlining. The original purpose of DynamicSecurityMethod was to disable inlining
of the caller and to insert CAS security checks, so we are basically just keeping the first part.
Fixes #8102
|
|
|
|
|
|
added all three versions for EndsWith(char): char, char + bool + culture, char + comparison
added all three versions of StartsWith(char): char, char + bool + culture, char + comparison
Added references to the new public apis
|
|
|
|
* GcHandle Perf Tweaks
|
|
* Revert earlier CAS changes to Eventing/** and put under !if !CORECLR
|
|
|
|
|
|
|
|
|
|
It is required by WinRT/COM interop. Fixes #9401.
|