platform/upstream/dotnet/runtime.git
5 years agoFix ILStubCache allocation for collectible assemblies (dotnet/coreclr#21188)
Jan Vorlicek [Wed, 28 Nov 2018 05:36:59 +0000 (06:36 +0100)]
Fix ILStubCache allocation for collectible assemblies (dotnet/coreclr#21188)

The ILStubCache was being allocated per domain unless the domain was a
compilation AppDomain. This is wrong for collectible assemblies, since
after an assembly is collected, the cache keeps stale entries referring
to already deleted MethodTables.
The fix is to make ILStubChange per LoaderAllocator instead (and keep
the per module instances for compilation AppDomain).

Commit migrated from https://github.com/dotnet/coreclr/commit/8aa0869eb9153429091fdba49469d89ec33092cb

5 years agoMerge pull request dotnet/coreclr#21234 from BruceForstall/Disable630880
Bruce Forstall [Wed, 28 Nov 2018 03:39:04 +0000 (19:39 -0800)]
Merge pull request dotnet/coreclr#21234 from BruceForstall/Disable630880

Disable test Dev10_630880

Commit migrated from https://github.com/dotnet/coreclr/commit/c7c166e33c807d938367d0364850fe7af1c7b835

5 years agoMove all the math functions undef #ifndef PAL_STDCPP_COMPAT (dotnet/coreclr#21170)
Ilia [Wed, 28 Nov 2018 01:34:29 +0000 (04:34 +0300)]
Move all the math functions undef #ifndef PAL_STDCPP_COMPAT (dotnet/coreclr#21170)

Bug: 20786

Commit migrated from https://github.com/dotnet/coreclr/commit/8ec20d2b0d500ad62ea18373a7ab581945c9c655

5 years agoDisable test Dev10_630880
Bruce Forstall [Wed, 28 Nov 2018 01:04:36 +0000 (17:04 -0800)]
Disable test Dev10_630880

It was made obsolete by https://github.com/dotnet/coreclr/pull/21157

Commit migrated from https://github.com/dotnet/coreclr/commit/4fb76de35184fb80054f29779f51af82a4aa7ad8

5 years agoDisable failing Linux/arm32 corefx tests (dotnet/coreclr#21225)
Bruce Forstall [Wed, 28 Nov 2018 00:33:25 +0000 (16:33 -0800)]
Disable failing Linux/arm32 corefx tests (dotnet/coreclr#21225)

* Disable failing Linux/arm32 corefx tests

Commit migrated from https://github.com/dotnet/coreclr/commit/8f16d66c9c6544f3cc2e234eda242e11ca4ad89d

5 years agoUpdate changing-corelib.md (dotnet/coreclr#21220)
Dan Moseley [Tue, 27 Nov 2018 21:24:57 +0000 (13:24 -0800)]
Update changing-corelib.md (dotnet/coreclr#21220)

* Update changing-corelib.md

@jkotas

* Update changing-corelib.md

Commit migrated from https://github.com/dotnet/coreclr/commit/c98155df54da9247e598068cc956dfe9aede610e

5 years agoDiff-able disassembly fixes (dotnet/coreclr#20863)
Pent Ploompuu [Tue, 27 Nov 2018 21:24:30 +0000 (23:24 +0200)]
Diff-able disassembly fixes (dotnet/coreclr#20863)

Commit migrated from https://github.com/dotnet/coreclr/commit/3766ae3f90fa8cb9bc5ae28370b45053ce85248b

5 years agoMerge pull request dotnet/coreclr#21151 from CarolEidt/Fix21080
Carol Eidt [Tue, 27 Nov 2018 19:12:52 +0000 (11:12 -0800)]
Merge pull request dotnet/coreclr#21151 from CarolEidt/Fix21080

Use LclFld for full-width cpblk of different types

Commit migrated from https://github.com/dotnet/coreclr/commit/2fa65846af4b98293b407656fa7d0837c390215f

5 years agoUse local array in ConcurrentQueue<T> for small perf improvement (dotnet/coreclr...
Stephen Toub [Tue, 27 Nov 2018 14:27:06 +0000 (09:27 -0500)]
Use local array in ConcurrentQueue<T> for small perf improvement (dotnet/coreclr#21192)

Enqueue/TryDequeue/TryPeek are all repeatedly accessing the same array from a readonly field.  Changing them to instead access that same array but from a cached local results in an ~10% throughput boost on a microbenchmark that does uncontended reads/writes of objects from/to the queue. (I also tried using a ref local to point directly to the target slot in the array, but that actually resulted in a measurable regression.)

Commit migrated from https://github.com/dotnet/coreclr/commit/e41401ed9c1070971d2062e971fed14d1747be78

5 years agoImprove perf for Index based span indexers (dotnet/coreclr#21196)
Andy Ayers [Tue, 27 Nov 2018 08:36:35 +0000 (00:36 -0800)]
Improve perf for Index based span indexers (dotnet/coreclr#21196)

First, evaluate the actual index before invoking the underlying int indexer,
so that the jit doesn't think the span is address taken.

Second, improve the jit's ability to remove some redundant comparisons like
those that arise in computing the actual index.

Commit migrated from https://github.com/dotnet/coreclr/commit/b01b2b8030f363368530b8a1395d604179e8d0e4

5 years agoFix a use after free for Managed Data BP (dotnet/coreclr#21205)
Chuck Ries [Tue, 27 Nov 2018 06:06:34 +0000 (22:06 -0800)]
Fix a use after free for Managed Data BP (dotnet/coreclr#21205)

ShimProxyCallback::DataBreakpoint::DataBreakpointEvent was holding onto a bare
BYTE* for the CONTEXT rather than copying the buffer and taking ownership. Due to
lifetime, this resulted in a use after free. Apparently in retail code we got lucky
and this worked enough of the time that we never noticed it.

Commit migrated from https://github.com/dotnet/coreclr/commit/870267fac0b16ac246d6ba01f49ba4c6acd2319c

5 years agoFix Rune.ToUpper / ToLower under GlobalizationMode.Invariant (dotnet/coreclr#21203)
Levi Broderick [Tue, 27 Nov 2018 05:08:10 +0000 (21:08 -0800)]
Fix Rune.ToUpper / ToLower under GlobalizationMode.Invariant (dotnet/coreclr#21203)

Commit migrated from https://github.com/dotnet/coreclr/commit/6af3c5dd51a2e6411d32fdbf2645ec0ea68b36ff

5 years agoDisable noncollectible alc finalization (dotnet/coreclr#21189)
Jan Vorlicek [Tue, 27 Nov 2018 03:15:45 +0000 (04:15 +0100)]
Disable noncollectible alc finalization (dotnet/coreclr#21189)

* Disable noncollectible AssemblyLoadContext finalization

The constructor of AssemblyLoadContext was missing a call to
GC.SuppressFinalize for non-collectible AssemblyLoadContext. That means
that the finalizer can be executed and unloading being initialized even
for non-collectible AssemblyLoadContext.
This change fixes that.

* SuppressFinalize non-collectible AssemblyLoadContext

The finalizer for the non-collectible AssemblyLoadContext is never
called and so it should not be in the finalization queue.

* Handle finalizer call without constructor executed

Check if the constructor was executed before we run the finalizer code.

Commit migrated from https://github.com/dotnet/coreclr/commit/ac732ffb6d2ff4d2bec72ac5ca0785ace4ace20a

5 years agoDisable domain neutral loading (dotnet/coreclr#21156)
Jan Kotas [Tue, 27 Nov 2018 01:55:10 +0000 (17:55 -0800)]
Disable domain neutral loading (dotnet/coreclr#21156)

Commit migrated from https://github.com/dotnet/coreclr/commit/c928bf4f3cf411bc775d5ec5098a122eada48ba9

5 years agoDeleting a format.patch file that got checked in (dotnet/coreclr#21202)
Tanner Gooding [Tue, 27 Nov 2018 01:54:36 +0000 (17:54 -0800)]
Deleting a format.patch file that got checked in (dotnet/coreclr#21202)

Commit migrated from https://github.com/dotnet/coreclr/commit/19b6763f5dd71aee1d99d129f6009aee398aaf60

5 years agoUpdate documentation for changing CoreLib (dotnet/coreclr#21201)
Jan Kotas [Tue, 27 Nov 2018 01:06:35 +0000 (17:06 -0800)]
Update documentation for changing CoreLib (dotnet/coreclr#21201)

Commit migrated from https://github.com/dotnet/coreclr/commit/355e1895793ced0583b1b688c5b0491074bfeafe

5 years agoUse LclFld for full-width cpblk of different types
Carol Eidt [Wed, 21 Nov 2018 22:12:03 +0000 (14:12 -0800)]
Use LclFld for full-width cpblk of different types

This issue arose because the source tree was a struct with a single double field, and the destination was a struct with a single long field. Copy prop replaced the lclVar in the source, which was under a `IND(ADDR)` with a lclVar that was not address taken, although it was marked `GTF_DONT_CSE`. Replacing the src tree with a `GT_LCL_FLD` addresses this issue.

Also, ensure that the target is marked `DoNotEnregister` if it isn't referenced as the same size/type.

Fix dotnet/coreclr#21080
Fix dotnet/coreclr#21064

Commit migrated from https://github.com/dotnet/coreclr/commit/0c08dc461f4dd7ac418a475264129d2c57536955

5 years agoMerge pull request dotnet/coreclr#21184 from mikedn/load-norm
Brian Sullivan [Tue, 27 Nov 2018 00:31:37 +0000 (16:31 -0800)]
Merge pull request dotnet/coreclr#21184 from mikedn/load-norm

Fix normalize on load handling in assertion propagation

Commit migrated from https://github.com/dotnet/coreclr/commit/a04233f12ff63f99b7affe2936567c1157e6502e

5 years agoFix Azure DevOps endpoint (dotnet/coreclr#21038)
Morgan Brown [Mon, 26 Nov 2018 22:46:36 +0000 (14:46 -0800)]
Fix Azure DevOps endpoint (dotnet/coreclr#21038)

* Delete incorrect resources section

Remove reference to arcade repo

Commit migrated from https://github.com/dotnet/coreclr/commit/c24e4767ab2435c7b032af6ed24fae9bcd03ff72

5 years agoUpdating runtest.py to support printing coredump information (dotnet/coreclr#21149)
Tanner Gooding [Mon, 26 Nov 2018 21:27:46 +0000 (13:27 -0800)]
Updating runtest.py to support printing coredump information (dotnet/coreclr#21149)

* Updating runtest.py to support printing coredump information

* Adding some comments to the coredump collection methods in runtest.py

Commit migrated from https://github.com/dotnet/coreclr/commit/63cde8f0f419b45426bc9ba9aa06962ced03daf8

5 years agoFixing a few small issues with the SIMD vs SIMD HWIntrinsics (dotnet/coreclr#21097)
Tanner Gooding [Mon, 26 Nov 2018 19:44:51 +0000 (11:44 -0800)]
Fixing a few small issues with the SIMD vs SIMD HWIntrinsics (dotnet/coreclr#21097)

* Fixing the simdHandleCache to add entries for Vector64FloatHandle and Vector128FloatHandle

* Fixing two places that were calling just OperIsSIMD() rather than OperIsSIMDorSimdHWintrinsic()

Commit migrated from https://github.com/dotnet/coreclr/commit/570bda3870a8c3b479384b21e1e1bdd427fdd3a1

5 years agoMerge pull request dotnet/coreclr#21194 from mmitche/fix-debug-checked
Matt Mitchell [Mon, 26 Nov 2018 19:38:31 +0000 (11:38 -0800)]
Merge pull request dotnet/coreclr#21194 from mmitche/fix-debug-checked

Don't attempt to sign xstate in debug/checked builds

Commit migrated from https://github.com/dotnet/coreclr/commit/e7d079a2533d226b1fad301a0fbf7ba3ab25d0de

5 years agoRemove TypedReference.MakeTypedReference readonly restriction (dotnet/coreclr#21193)
Stephen Toub [Mon, 26 Nov 2018 19:08:38 +0000 (14:08 -0500)]
Remove TypedReference.MakeTypedReference readonly restriction (dotnet/coreclr#21193)

TypedReference.MakeTypedReference validates that the fields aren't readonly, which limits our ability to make fields readonly in core while maintaining BinaryFormatter compatibility.  This restriction isn't useful for a variety of reasons, though: reflection allows readonly fields to be set, but more importantly, TypedReference.SetTypedReference has always thrown NotSupportedException, so it's not even actually usable.

This change just removes the readonly check from MakeTypedReference.

Commit migrated from https://github.com/dotnet/coreclr/commit/a6729dab35fde5d50fb12b06aeb77d3e1f3be872

5 years agoMerge pull request dotnet/coreclr#21164 from kvochko/no_hw_intrinsics_x86
Carol Eidt [Mon, 26 Nov 2018 19:04:56 +0000 (11:04 -0800)]
Merge pull request dotnet/coreclr#21164 from kvochko/no_hw_intrinsics_x86

[x86] Do not support hardware intrinsics on x86 unix

Commit migrated from https://github.com/dotnet/coreclr/commit/4a9b5737d8e28093a14d885f735f3eb20722c8e2

5 years agoHandle the remaining known issues (modulo snan) with the double/single parsing logic...
Tanner Gooding [Mon, 26 Nov 2018 19:01:04 +0000 (11:01 -0800)]
Handle the remaining known issues (modulo snan) with the double/single parsing logic (dotnet/coreclr#21036)

* Fixing the double/single parser to return negative zero for `-0`

* Updating the Utf8Parser to allow exponents of arbitrary length

* Updating the double/single parser to support case-insensitive and signed infinity/nan

* Ensure TryParseAsSpecialFloatingPoint handles the case where we have an empty source

* Fixing the number parser to allow `-0` for decimal and to not parse '++infini'

Commit migrated from https://github.com/dotnet/coreclr/commit/1ebc1a9deb24bdb82a0a28afb2f6e853bfa0bf8f

5 years agoTar arm build outputs to workaround unicode issues (dotnet/coreclr#21127)
Michelle McDaniel [Mon, 26 Nov 2018 16:31:30 +0000 (08:31 -0800)]
Tar arm build outputs to workaround unicode issues (dotnet/coreclr#21127)

Commit migrated from https://github.com/dotnet/coreclr/commit/a1e65761b6cd64b391c2f0ee4da1b219f93c5d33

5 years agoDon't attempt to sign xstate in debug/checked builds
Matt Mitchell [Mon, 26 Nov 2018 16:18:03 +0000 (08:18 -0800)]
Don't attempt to sign xstate in debug/checked builds

Commit migrated from https://github.com/dotnet/coreclr/commit/119c45de4b2972e48bf642103fb502822a9d8bdd

5 years agoDon't generate copy assertions for normalize on load variables
Mike Danes [Sun, 25 Nov 2018 09:22:08 +0000 (11:22 +0200)]
Don't generate copy assertions for normalize on load variables

Commit migrated from https://github.com/dotnet/coreclr/commit/8e6fa5df402299d833f382679ecf31687f7237a2

5 years agoAdd test for 18867
Mike Danes [Sun, 25 Nov 2018 08:44:31 +0000 (10:44 +0200)]
Add test for 18867

Commit migrated from https://github.com/dotnet/coreclr/commit/8cfbd3381e658485477522ba47d00e19057e0d72

5 years agoFix Interop/PInvoke/Miscellaneous/HandleRef tests under GCStress (dotnet/coreclr...
Jeremy Koritzinsky [Sun, 25 Nov 2018 00:35:17 +0000 (18:35 -0600)]
Fix Interop/PInvoke/Miscellaneous/HandleRef tests under GCStress (dotnet/coreclr#21131)

* Add GC.KeepAlive call in the IL stub when marshalling a HandleRef.

* Add a GC.KeepAlive call for the BoxedInt since it isn't kept alive when running GC Stress

* Reference HandleRef._handle via the binder instead of by field offset arithmetic

* Alignment

* Use Marshal.Alloc/FreeHGlobal instead of the weird no-pinning machinery that was failing before

* Update HandleRefTest.cs

Commit migrated from https://github.com/dotnet/coreclr/commit/d07633f53b51a30d294c4afe2b0b7ba5b563c134

5 years agoFixing typo (dotnet/coreclr#21081)
Ayende Rahien [Sat, 24 Nov 2018 15:18:36 +0000 (17:18 +0200)]
Fixing typo (dotnet/coreclr#21081)

Commit migrated from https://github.com/dotnet/coreclr/commit/84a62b1925adee9b8979b36f52834d0cca5d0469

5 years agoRefactor AppDomain.IsAppXModel and a few other AppDomain methods (dotnet/coreclr...
Jan Kotas [Sat, 24 Nov 2018 15:00:36 +0000 (07:00 -0800)]
Refactor AppDomain.IsAppXModel and a few other AppDomain methods (dotnet/coreclr#21181)

Contributes to dotnet/coreclr#21028

Commit migrated from https://github.com/dotnet/coreclr/commit/5be7421c75b2bea031ecac44a9c8e304eb4d1850

5 years agoMove AppDomain local data store to AppContext and cleanup AppContext (dotnet/coreclr...
Jan Kotas [Sat, 24 Nov 2018 14:59:54 +0000 (06:59 -0800)]
Move AppDomain local data store to AppContext and cleanup AppContext (dotnet/coreclr#21180)

Contributes to dotnet/coreclr#21028

Commit migrated from https://github.com/dotnet/coreclr/commit/55d1363ac36735008dee4d11e10934b8ee94e80b

5 years agoDon't assume objects don't escape in pure helpers.
Eugene Rozenfeld [Fri, 23 Nov 2018 22:55:02 +0000 (14:55 -0800)]
Don't assume objects don't escape in pure helpers.

We can't assume objects don't escape in helpers marked as pure for the following reasons:

1. The helpers may call user code that may make objects escape, e.g.,
https://github.com/dotnet/coreclr/blob/dotnet/coreclr@c94d8e68222d931d4bb1c4eb9a52b4b056e85f12/src/vm/jithelpers.cpp#L2371

2. The helpers usually protect gc pointers with GCPROTECT_BEGIN() so the pointers are reported as normal pointers to the gc.
Pointers to stack-allocated objects need to be reported as interior so they have to be protected with
GCPROTECT_BEGININTERIOR().

3. The helpers may cause these asserts in ValidateInner on stack-allocated objects:
https://github.com/dotnet/coreclr/blob/dotnet/coreclr@c94d8e68222d931d4bb1c4eb9a52b4b056e85f12/src/vm/object.cpp#L723
https://github.com/dotnet/coreclr/blob/dotnet/coreclr@c94d8e68222d931d4bb1c4eb9a52b4b056e85f12/src/vm/object.cpp#L730

Commit migrated from https://github.com/dotnet/coreclr/commit/65f88672f888e893a44f21b59ecfd87f4d17e499

5 years agoFix debugger collectible thread statics access (dotnet/coreclr#21175)
Jan Vorlicek [Fri, 23 Nov 2018 18:14:03 +0000 (19:14 +0100)]
Fix debugger collectible thread statics access (dotnet/coreclr#21175)

The CordbClass::GetStaticFieldValue2 was missing support for accessing
thread statics in collectible classes. Fortunately the fix was simple,
we can use the same code path as for non-collectible thread statics.

Commit migrated from https://github.com/dotnet/coreclr/commit/b5c9edd9ea63639328ec587003f97922b80ef029

5 years agoUpdate CoreClr, CoreFx, CoreSetup, PgoData to preview-27123-02, preview.18573.2,...
dotnet-maestro-bot [Fri, 23 Nov 2018 17:34:42 +0000 (09:34 -0800)]
Update CoreClr, CoreFx, CoreSetup, PgoData to preview-27123-02, preview.18573.2, preview-27123-01, master-20181123-0042, respectively (dotnet/coreclr#21158)

Commit migrated from https://github.com/dotnet/coreclr/commit/c385d44dcdc62118a4556f002516db1b5bdcdf37

5 years agoTypos (dotnet/coreclr#21171)
John Doe [Thu, 22 Nov 2018 22:23:46 +0000 (14:23 -0800)]
Typos (dotnet/coreclr#21171)

* accesible -> accessible

* acheive -> achieve

* actutl -> actual

* appied -> applied

* apropriate -> appropriate

* aprox -> approx

* aquired -> acquired

* argumemts -> arguments

* Argumens -> Arguments

* argumetn -> argument

Commit migrated from https://github.com/dotnet/coreclr/commit/445f68f3668daa527adad6f2bdd1311f2607ca71

5 years agoDelete System.AppDomainSetup (dotnet/coreclr#21157)
Jan Kotas [Thu, 22 Nov 2018 22:22:40 +0000 (14:22 -0800)]
Delete System.AppDomainSetup (dotnet/coreclr#21157)

* Delete System.AppDomainSetup

Contributes to dotnet/coreclr#21028

* Add test hook for null entry assembly

* Validate that the binder paths are absolute

Commit migrated from https://github.com/dotnet/coreclr/commit/e54dffef08c22a94962aacd93d4793b377cac632

5 years agoMark the String.Empty field as Intrinsic (dotnet/coreclr#21162)
Michal Strehovský [Thu, 22 Nov 2018 18:09:37 +0000 (19:09 +0100)]
Mark the String.Empty field as Intrinsic (dotnet/coreclr#21162)

This is required so that the CPAOT compiler can recognize this field as a RyuJIT intrinsic.

Commit migrated from https://github.com/dotnet/coreclr/commit/f80f9d5435155cc7a36fbaefa3c8d7da7cc309aa

5 years agoNarrow the assert in fgLateDevirtualization (dotnet/coreclr#21163)
Michal Strehovský [Thu, 22 Nov 2018 17:38:16 +0000 (18:38 +0100)]
Narrow the assert in fgLateDevirtualization (dotnet/coreclr#21163)

As suggested by Andy in dotnet/corertdotnet/coreclr#6601.

Commit migrated from https://github.com/dotnet/coreclr/commit/00279ca6204b581fed9347a24929f28d74737384

5 years agoDo not support HW intrinsics on x86 linux
Andrey Kvochko [Thu, 22 Nov 2018 12:27:01 +0000 (15:27 +0300)]
Do not support HW intrinsics on x86 linux

Commit migrated from https://github.com/dotnet/coreclr/commit/7fb22aae05b15b8e3227d4349f1025b630bb86fb

5 years agoSequel to NativeLibrary API (dotnet/coreclr#21148)
Swaroop Sridhar [Thu, 22 Nov 2018 09:24:08 +0000 (01:24 -0800)]
Sequel to NativeLibrary API (dotnet/coreclr#21148)

Small changes to address furhter feedback:
 - Perform argument validation in the Marshall.cs instead of DllImport helpers
 - Improve doc comments.

Commit migrated from https://github.com/dotnet/coreclr/commit/5e4e286ea2bffa4a5cb2467721ed89f27959d253

5 years agoUpdate CoreClr, CoreFx, CoreSetup to preview-27121-03, preview.18571.3, preview-27121...
dotnet-maestro-bot [Thu, 22 Nov 2018 00:51:45 +0000 (16:51 -0800)]
Update CoreClr, CoreFx, CoreSetup to preview-27121-03, preview.18571.3, preview-27121-03, respectively (dotnet/coreclr#21142)

Commit migrated from https://github.com/dotnet/coreclr/commit/f572782d55b65f06306dfce7aed07c84e6671756

5 years agoSingle stepping out of the unsafe places (dotnet/coreclr#21135)
Andrew Au [Thu, 22 Nov 2018 00:17:06 +0000 (16:17 -0800)]
Single stepping out of the unsafe places (dotnet/coreclr#21135)

Commit migrated from https://github.com/dotnet/coreclr/commit/76bbf5c2b5732d31efac050f47f577c98675ff4a

5 years agoMerge pull request dotnet/coreclr#21146 from AaronRobinsonMSFT/comtoclrworker_av
Aaron Robinson [Wed, 21 Nov 2018 21:59:57 +0000 (13:59 -0800)]
Merge pull request dotnet/coreclr#21146 from AaronRobinsonMSFT/comtoclrworker_av

COMToCLRWorker AV

Commit migrated from https://github.com/dotnet/coreclr/commit/e96e4f75b2a3f67519d9419faee002be67cc8d95

5 years agoMinor clean up in COMToCLRWorker
Aaron Robinson [Wed, 21 Nov 2018 19:21:24 +0000 (11:21 -0800)]
Minor clean up in COMToCLRWorker

Commit migrated from https://github.com/dotnet/coreclr/commit/0f38161b1323d5fb20289290f0ef8e4d1b7188ce

5 years agoIntroduce Marshall.LoadLibrary API (dotnet/coreclr#20871)
Swaroop Sridhar [Wed, 21 Nov 2018 19:42:01 +0000 (11:42 -0800)]
Introduce Marshall.LoadLibrary API (dotnet/coreclr#20871)

Implement Native LoadLibrary API

This change commits the following changes:
1) Refactoring DllImport code to reuse LodLibrary by search for
   pInvoke and LoadLibrary cases
2) Implement the new Native Library API in System.Runtime.Interop.Marshall
3) Add tests for the new APIs

Commit migrated from https://github.com/dotnet/coreclr/commit/175ba1c0794958bb7d006544b87e00675de742fc

5 years agoDisable object stack allocation verification under GCStress.
Eugene Rozenfeld [Mon, 19 Nov 2018 21:25:56 +0000 (13:25 -0800)]
Disable object stack allocation verification under GCStress.

ObjectStackAllocationTests use GC.GetAllocatedBytesForCurrentThread to
verify object stack allocations. Under GCStress the vm may initiate additional
heap allocations in GCHeap::StressHeap (see the call to 'pGenGCHeap->allocate' below).

This change re-enables ObjectStackAllocationTests and updates then to not verify stack allocations under GCStress.
It's useful to run the tests even without the verification to catch crashes, gc asserts, etc.

```
if (Interlocked::Increment(&OneAtATime) == 0 &&
        !TrackAllocations()) // Messing with object sizes can confuse the profiler (see ICorProfilerInfo::GetObjectSize)
    {
        StringObject* str;

        // If the current string is used up
        if (HndFetchHandle(m_StressObjs[m_CurStressObj]) == 0)
        {
            // Populate handles with strings
            int i = m_CurStressObj;
            while(HndFetchHandle(m_StressObjs[i]) == 0)
            {
                _ASSERTE(m_StressObjs[i] != 0);
                unsigned strLen = (LARGE_OBJECT_SIZE - 32) / sizeof(WCHAR);
                unsigned strSize = PtrAlign(StringObject::GetSize(strLen));

                // update the cached type handle before allocating
                SetTypeHandleOnThreadForAlloc(TypeHandle(g_pStringClass));
                str = (StringObject*) pGenGCHeap->allocate (strSize, acontext);
                if (str)
                {
                    str->SetMethodTable (g_pStringClass);
                    str->SetStringLength (strLen);

                    HndAssignHandle(m_StressObjs[i], ObjectToOBJECTREF(str));
                }
                i = (i + 1) % NUM_HEAP_STRESS_OBJS;
                if (i == m_CurStressObj) break;
            }

            // advance the current handle to the next string
            m_CurStressObj = (m_CurStressObj + 1) % NUM_HEAP_STRESS_OBJS;
        }

        // Get the current string
        str = (StringObject*) OBJECTREFToObject(HndFetchHandle(m_StressObjs[m_CurStressObj]));
        if (str)
        {
            // Chop off the end of the string and form a new object out of it.
            // This will 'free' an object at the begining of the heap, which will
            // force data movement.  Note that we can only do this so many times.
            // before we have to move on to the next string.
            unsigned sizeOfNewObj = (unsigned)Align(min_obj_size * 31);
            if (str->GetStringLength() > sizeOfNewObj / sizeof(WCHAR))
            {
                unsigned sizeToNextObj = (unsigned)Align(size(str));
                uint8_t* freeObj = ((uint8_t*) str) + sizeToNextObj - sizeOfNewObj;
                pGenGCHeap->make_unused_array (freeObj, sizeOfNewObj);
                str->SetStringLength(str->GetStringLength() - (sizeOfNewObj / sizeof(WCHAR)));
            }
            else
            {
                // Let the string itself become garbage.
                // will be realloced next time around
                HndAssignHandle(m_StressObjs[m_CurStressObj], 0);
            }
        }
    }
    Interlocked::Decrement(&OneAtATime);
```

Commit migrated from https://github.com/dotnet/coreclr/commit/5ef00810b53dcb7cbc4f2cb152ca6af971284e82

5 years agoCheck for null on COM to CLR call if error occurs during thread instance get.
Aaron Robinson [Wed, 21 Nov 2018 19:07:41 +0000 (11:07 -0800)]
Check for null on COM to CLR call if error occurs during thread instance get.

Commit migrated from https://github.com/dotnet/coreclr/commit/fac2d42c8c1546c87317675728e048961004a2ee

5 years agoChange System.Object to ClassInterface.None (dotnet/coreclr#21137)
Jan Kotas [Wed, 21 Nov 2018 18:24:11 +0000 (10:24 -0800)]
Change System.Object to ClassInterface.None (dotnet/coreclr#21137)

* Change System.Object to ClassInterface.None

Prevents .NET Framework legacy interfaces from leaking out.

Fixes https://github.com/dotnet/corefx/issues/33638

* Use AutoDispatch for System.Object

Commit migrated from https://github.com/dotnet/coreclr/commit/2079632dfbde7fd398375c201f37533209c4bc21

5 years agoFix Unix ARM JIT_MemCpy and JIT_MemSet (dotnet/coreclr#21141)
Jan Vorlicek [Wed, 21 Nov 2018 18:20:01 +0000 (19:20 +0100)]
Fix Unix ARM JIT_MemCpy and JIT_MemSet (dotnet/coreclr#21141)

The functions were incorrectly using 4 byte loads to probe for
the address validity. While the comment on JIT_MemCpy requires
4 byte aligned address, it doesn't match the way JIT uses it and
the Windows version of the function works with unaligned addresses
too.
This bug was discovered as a crash in an application where the
JIT_MemCpy was called with count=2 and an address that was two
bytes below the end of a memory page where the following page
was not mapped.

Commit migrated from https://github.com/dotnet/coreclr/commit/9170c7f90a55befbd4b43db3a824479592a96eb7

5 years agoEnsuring that gc_stress and gc_stress_c are marked global when writing, but not when...
Tanner Gooding [Wed, 21 Nov 2018 16:37:35 +0000 (08:37 -0800)]
Ensuring that gc_stress and gc_stress_c are marked global when writing, but not when reading (dotnet/coreclr#21128)

Commit migrated from https://github.com/dotnet/coreclr/commit/844aa45629e683d546e98e4a8bb5dd660f8dacae

5 years agoDelete dead/unused code (dotnet/coreclr#21138)
Jan Kotas [Wed, 21 Nov 2018 16:23:30 +0000 (08:23 -0800)]
Delete dead/unused code (dotnet/coreclr#21138)

Commit migrated from https://github.com/dotnet/coreclr/commit/c94d8e68222d931d4bb1c4eb9a52b4b056e85f12

5 years agoUpdate CoreSetup, PgoData to preview-27121-02, master-20181121-0042, respectively...
dotnet-maestro-bot [Wed, 21 Nov 2018 12:20:33 +0000 (04:20 -0800)]
Update CoreSetup, PgoData to preview-27121-02, master-20181121-0042, respectively (dotnet/coreclr#21136)

Commit migrated from https://github.com/dotnet/coreclr/commit/83e33a4f720fbee1ab5d64805092993ab2911abf

5 years agoUpdate BuildTools, CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-03420...
dotnet-maestro-bot [Wed, 21 Nov 2018 07:26:39 +0000 (23:26 -0800)]
Update BuildTools, CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-03420-02, preview-27121-02, preview.18571.1, preview-27120-04, master-20181120-0045, master-20181120-0044, respectively (dotnet/coreclr#21045)

Commit migrated from https://github.com/dotnet/coreclr/commit/0197d4e9040c3081817d500150beb0f65cbc5672

5 years agoMerge pull request dotnet/coreclr#21129 from mmitche/sign-xstat
Matt Mitchell [Wed, 21 Nov 2018 02:13:59 +0000 (18:13 -0800)]
Merge pull request dotnet/coreclr#21129 from mmitche/sign-xstat

Sign api-ms-win-core-xstate-l2-1-0.dll

Commit migrated from https://github.com/dotnet/coreclr/commit/510d09aeaa974c980c7fe797b1cfc03467a84612

5 years agoExpose generic UnsafeQueueUserWorkItem (dotnet/coreclr#21125)
Stephen Toub [Wed, 21 Nov 2018 00:52:08 +0000 (19:52 -0500)]
Expose generic UnsafeQueueUserWorkItem (dotnet/coreclr#21125)

Commit migrated from https://github.com/dotnet/coreclr/commit/432cd0bc1410a1d2e721f729f93cbd27744ef354

5 years agoVectorize string.IndexOf(..., StringComparison.Ordinal) (dotnet/coreclr#21076)
Ben Adams [Wed, 21 Nov 2018 00:50:26 +0000 (00:50 +0000)]
Vectorize string.IndexOf(..., StringComparison.Ordinal) (dotnet/coreclr#21076)

* Vectorize string.IndexOf(..., StringComparison.Ordinal)

* Merge two IndexOf(..., int* matchLengthPtr)

* fix

2 callers expect value.Length == 0 to be tested first
3rd caller ReplaceCore doesn't allow a value.Length == 0 so moving it
first is ok

Commit migrated from https://github.com/dotnet/coreclr/commit/b526affff2190b05f3896933ea3dd3f6b02879dc

5 years agoVectorize Array.{Last}IndexOf<T>(...) for byte and char (dotnet/coreclr#21116)
Ben Adams [Wed, 21 Nov 2018 00:44:56 +0000 (00:44 +0000)]
Vectorize Array.{Last}IndexOf<T>(...) for byte and char (dotnet/coreclr#21116)

* Vectorize Array.IndexOf<T>(...) for byte and char

* Also LastIndexOf

Commit migrated from https://github.com/dotnet/coreclr/commit/ba7d5ce44419bb419562d50ed1c720a3465dbf11

5 years agoMerge pull request dotnet/coreclr#21058 from CarolEidt/FixVZeroUpper
Carol Eidt [Tue, 20 Nov 2018 23:58:41 +0000 (15:58 -0800)]
Merge pull request dotnet/coreclr#21058 from CarolEidt/FixVZeroUpper

Record AVX use for SIMD indirections

Commit migrated from https://github.com/dotnet/coreclr/commit/346167eac69662ff492e98429dc85d17fc117ee8

5 years agoSign api-ms-win-core-xstate-l2-1-0.dll
Matt Mitchell [Mon, 13 Aug 2018 18:15:05 +0000 (11:15 -0700)]
Sign api-ms-win-core-xstate-l2-1-0.dll
This file is only catalog signed in RS4.  Sign during the build. To achieve this copy the CRT binaries locally rather than referencing from the UCRT location directly.

Commit migrated from https://github.com/dotnet/coreclr/commit/557c8f0078b01a220077f02bc703c4a16c3e4e41

5 years agoRemove remaining StringBuilder marshaling use from Corelib (dotnet/coreclr#21120)
Stephen Toub [Tue, 20 Nov 2018 22:03:33 +0000 (17:03 -0500)]
Remove remaining StringBuilder marshaling use from Corelib (dotnet/coreclr#21120)

* Remove remaining StringBuilder marshaling use from Corelib

- Unix globalization functions were using StringBuilder.  Replaced them with stackallocs, as the max sizes were all relatively small.
- Registry methods were declared to use StringBuilder, but these weren't actually used by corelib, and in fact, corefx isn't using StringBuilder with them either.  I've changed the definitions for now to use char[] instead (all the call sites are passing in null), and I'll fix up some corefx usage separately.
- Resource-related functions were using StringBuilder, and have been replaced with stackallocs, given reasonably small max buffer sizes.
- ExpandEnvironmentVariables was using a StringBuilder, but it's rewritten equivalent code in corefx is not.  For now I've copied the corefx function over to coreclr to replace the different implementation, but we can look at subsequently consolidating them into one.

* Address PR feedback

Commit migrated from https://github.com/dotnet/coreclr/commit/a9b57bd4fe194b30b3c6e9a85a316fc218f474be

5 years agoRemove StringBuilder from HebrewNumber formatting (dotnet/coreclr#21122)
Stephen Toub [Tue, 20 Nov 2018 20:59:37 +0000 (15:59 -0500)]
Remove StringBuilder from HebrewNumber formatting (dotnet/coreclr#21122)

Rather than allocating a new StringBuilder, writing into that, getting its string, and then appending that string to another StringBuilder, we can just write directly to the original one.

Commit migrated from https://github.com/dotnet/coreclr/commit/5a0af055e4c39f4f49b7ff35141739dc3fda4f9f

5 years agoFix for dotnet/coreclr#21011: propagate GTF_DONT_CSE on comma returns
Eugene Rozenfeld [Tue, 20 Nov 2018 01:08:06 +0000 (17:08 -0800)]
Fix for dotnet/coreclr#21011: propagate GTF_DONT_CSE on comma returns

When a method returns a multi-reg struct, we set GTF_DONT_CSE on return local: https://github.com/dotnet/coreclr/blob/dotnet/coreclr@497419bf8f19c649d821295da7e225e55581cce9/src/jit/importer.cpp#L8783

Setting GTF_DONT_CSE blocks assertion propagation here:
https://github.com/dotnet/coreclr/blob/dotnet/coreclr@9d49bf1ec6f102b89e5c2885e8f9d3d77f2ec144/src/jit/assertionprop.cpp#L2845-L2848

In the test we have a synchronized method so we change the return node to
return a comma that include a call to HELPER.CORINFO_HELP_MON_EXIT.
If the rightmost comma expression doesn't have GTF_DONT_CSE,
assertion propagation is not blocked and we end up with this tree:

```
               [000040] -----+------                 /--*  CNS_INT   struct 0
               [000043] --C-G+------              /--*  COMMA     struct
               [000036] --C-G+------              |  \--*  CALL help void   HELPER.CORINFO_HELP_MON_EXIT
               [000032] L----+------ arg1 in x1   |     +--*  ADDR      long
               [000031] ----G+-N----              |     |  \--*  LCL_VAR   ubyte (AX) V03 tmp1
               [000033] -----+------ arg0 in x0   |     \--*  LCL_VAR   ref    V00 this
               [000041] -AC-G+------              *  COMMA     struct
               [000006] -----+-N----              |  /--*  LCL_VAR   struct V01 loc0
               [000039] -A---+------              \--*  ASG       struct (copy)
               [000037] D----+-N----                 \--*  LCL_VAR   struct V05 tmp3
```

Downstream phases can't handle struct zero return expressed as
```
               [000040] -----+------                 /--*  CNS_INT   struct 0
```

The fix is to propagate GTF_DONT_CSE to the rightmost comma expression
to block bad assertion propagation.

Fixes dotnet/coreclr#21011.

Commit migrated from https://github.com/dotnet/coreclr/commit/e80e04020c3281ec675817c4fff025a3e347353e

5 years agoFixing up some issues with the HWIntrinsic test templates (dotnet/coreclr#21104)
Tanner Gooding [Tue, 20 Nov 2018 20:01:25 +0000 (12:01 -0800)]
Fixing up some issues with the HWIntrinsic test templates (dotnet/coreclr#21104)

* Updating the VectorNotSupportedTest to throw on failure

* Updating the HWIntrinsic test templates to check success on a per-scenario basis

* Regenerating the templated HWIntrinsic tests

Commit migrated from https://github.com/dotnet/coreclr/commit/382874f3d574f256cda617cdc63916cecbf231aa

5 years agoReplace custom AnsiToLower with more efficient ToLowerAsciiInvariant (dotnet/coreclr...
Stephen Toub [Tue, 20 Nov 2018 19:58:47 +0000 (14:58 -0500)]
Replace custom AnsiToLower with more efficient ToLowerAsciiInvariant (dotnet/coreclr#21121)

Avoids all of the StringBuilder-related costs.

Commit migrated from https://github.com/dotnet/coreclr/commit/e5ff28022e99b391ca75867c1a378beee0e594f2

5 years agoDelete CORCOMPILE_IMPORT_TABLE_ENTRY (dotnet/coreclr#21109)
Jan Kotas [Tue, 20 Nov 2018 18:56:12 +0000 (10:56 -0800)]
Delete CORCOMPILE_IMPORT_TABLE_ENTRY (dotnet/coreclr#21109)

Commit migrated from https://github.com/dotnet/coreclr/commit/cc5df16d722aa9ffed9f8e4f236a5077753f8ca0

5 years agoLinux: FlushProcessWriteBuffers using membarrier when available (dotnet/coreclr#20949)
Tom Deseyn [Tue, 20 Nov 2018 18:52:46 +0000 (19:52 +0100)]
Linux: FlushProcessWriteBuffers using membarrier when available (dotnet/coreclr#20949)

* Linux: FlushProcessWriteBuffers using membarrier when available

* Ensure __NR_membarrier is defined for x64 portable build.

* Define __NR_membarrier on all portable architectures

Commit migrated from https://github.com/dotnet/coreclr/commit/baee9b6c7c666a33e3f924a05a5f56eae134fe46

5 years agoAdding some AggressiveInlining attributes to the Vector64/128/256 helper methods...
Tanner Gooding [Tue, 20 Nov 2018 15:56:52 +0000 (07:56 -0800)]
Adding some AggressiveInlining attributes to the Vector64/128/256 helper methods (dotnet/coreclr#21111)

Commit migrated from https://github.com/dotnet/coreclr/commit/dcc47ed99b31161c12b6ed51cf9f69e3116be6c1

5 years agoImprove async iterator exception stack traces (dotnet/coreclr#21103)
Stephen Toub [Tue, 20 Nov 2018 10:08:00 +0000 (05:08 -0500)]
Improve async iterator exception stack traces (dotnet/coreclr#21103)

- The current stack trace prettying logic assumes that a method only has one StateMachineAttribute, but that's no longer true with async iterators, which (at least with the current implementation) can have both an AsyncStateMachineAttribute and an IteratorStateMachineAttribute.  As such, we change the prettying logic to look through all StateMachineAttributes rather than stopping at the first one.
- ManualResetValueTaskSourceCore.GetResult is responsible for propagating exceptions, but it's infrastructure and isn't particularly meaningful in a call stack.   Hide it from the stack trace, as we do for other such GetResult methods in Task and ValueTask.

Commit migrated from https://github.com/dotnet/coreclr/commit/aa4197400ed4ea1d4ffb421e55712a01b40673fa

5 years agoMake code in `getTargetMethodDesc` more reliable. (dotnet/coreclr#21101)
Sergey Andreenko [Tue, 20 Nov 2018 05:53:14 +0000 (21:53 -0800)]
Make code in `getTargetMethodDesc` more reliable. (dotnet/coreclr#21101)

* Make code in `getTargetMethodDesc` more reliable.

Fixes DevDiv_723667.

* change the condition to make sure that we do not have false true cases.

Commit migrated from https://github.com/dotnet/coreclr/commit/417fea5c5b358a79c6d096a887a89c12ec3ece2e

5 years agoformat spmi sources (dotnet/coreclr#21094)
Sergey Andreenko [Tue, 20 Nov 2018 05:39:49 +0000 (21:39 -0800)]
format spmi sources (dotnet/coreclr#21094)

We do not do it automatically because we do not change it often.

Commit migrated from https://github.com/dotnet/coreclr/commit/1cf1282c22c4a8bbe8656ca6020817b84cf48a4b

5 years ago Cleanup System.Reflection.Emit code and delete dead code (dotnet/coreclr#21086)
Hugh Bellamy [Tue, 20 Nov 2018 05:31:30 +0000 (05:31 +0000)]
 Cleanup System.Reflection.Emit code and delete dead code (dotnet/coreclr#21086)

* Cleanup System.Reflection.Emit code

* Delete dead code from System.Reflection.Emit

Commit migrated from https://github.com/dotnet/coreclr/commit/3eeb737b30fac70b4f1f2e13ec504a0709ae8dce

5 years agoUpdate xunit version to match corefx (dotnet/coreclr#21098)
Jan Kotas [Tue, 20 Nov 2018 05:30:40 +0000 (21:30 -0800)]
Update xunit version to match corefx (dotnet/coreclr#21098)

* Update xunit version to match corefx

Fixes https://github.com/dotnet/corefx/issues/33587

* Disabled outdated test

Commit migrated from https://github.com/dotnet/coreclr/commit/a530d79ea764ef40e3abc3607a7b9a59c0d1dd62

5 years agoAdd asserts for the types of the Span indexers. (dotnet/coreclr#21037)
Carol Eidt [Tue, 20 Nov 2018 03:43:03 +0000 (19:43 -0800)]
Add asserts for the types of the Span indexers. (dotnet/coreclr#21037)

Also, add a test for dotnet/coreclr#20958

Commit migrated from https://github.com/dotnet/coreclr/commit/398c3bc97d5297df9773284a03e425f90c40bcf0

5 years agoFix search for headers and libraries via LLVM_HOME (dotnet/coreclr#21084)
Omair Majid [Tue, 20 Nov 2018 00:32:13 +0000 (19:32 -0500)]
Fix search for headers and libraries via LLVM_HOME (dotnet/coreclr#21084)

Commit b89e2305 (PR dotnet/coreclr#18873) renamed WITH_LLDB_LIBS to LLDB_LIB_DIR and
WITH_LLDB_INCLUDES to LLDB_INCLUDE_DIR. But it forgot to update the
usage of these variables in some find_library and find_path calls.

As a result, setting LLVM_HOME is no longer enough to compile coreclr on
platforms with non-standard locations for lldb. This commit fixes that.

Commit migrated from https://github.com/dotnet/coreclr/commit/38d357050aaf50d6346fb4c1490cb515606791c8

5 years agoFix Getting Max Japanese Era (dotnet/coreclr#21087)
Tarek Mahmoud Sayed [Mon, 19 Nov 2018 20:50:33 +0000 (12:50 -0800)]
Fix Getting Max Japanese Era (dotnet/coreclr#21087)

We were using the ICU API ucal_getLimit and askin gto get the maximum value of the Japanese eras. it looks this API is just return the era matching the current system clock which prevent returning any future defined era in the system (which ICU 63.1 can support with some environment variable).
We raised the issue to the ICU owners but would be better just to get the era of Gregorian year 9999 which always should return the max era anyway.

Commit migrated from https://github.com/dotnet/coreclr/commit/8fd089e6600befc4cf25ae9f95529429e4763773

5 years agoDisable stale sockets test (dotnet/coreclr#21083)
Stephen Toub [Mon, 19 Nov 2018 20:45:25 +0000 (15:45 -0500)]
Disable stale sockets test (dotnet/coreclr#21083)

Commit migrated from https://github.com/dotnet/coreclr/commit/23b0e8e44ca47f114622817f7de4471eba56b962

5 years agoCleanup RtType.cs code
Hugh Bellamy [Sat, 17 Nov 2018 19:05:39 +0000 (19:05 +0000)]
Cleanup RtType.cs code

Commit migrated from https://github.com/dotnet/coreclr/commit/14e7c2911723386e50bc1e12b0c1dd5531c41653

5 years agoFix Type.GetInterface for null namespace and non-null interface namespace
Hugh Bellamy [Sat, 17 Nov 2018 18:45:30 +0000 (18:45 +0000)]
Fix Type.GetInterface for null namespace and non-null interface namespace

Commit migrated from https://github.com/dotnet/coreclr/commit/133e88ab92e40c0f6c34fd4c16f014d493001a26

5 years agoAdd headers to crossgen, cee_crossgen, corzap_crossgen vcxproj files (dotnet/coreclr...
Jacek Blaszczynski [Mon, 19 Nov 2018 11:29:11 +0000 (12:29 +0100)]
Add headers to crossgen, cee_crossgen, corzap_crossgen vcxproj files (dotnet/coreclr#20082)

Commit migrated from https://github.com/dotnet/coreclr/commit/31cb6d2e899b818ab72fd8c02ae3d9e69312e661

5 years agoMake type comparisons more general purpose (dotnet/coreclr#20940)
Michal Strehovský [Mon, 19 Nov 2018 08:23:22 +0000 (09:23 +0100)]
Make type comparisons more general purpose (dotnet/coreclr#20940)

This has two parts:

## Part 1
CoreRT represents native type handles differently from CoreCLR - on CoreCLR, `RuntimeTypeHandle` is a wrapper over `RuntimeType` and RyuJIT is aware of that. On CoreRT, `RuntimeTypeHandle` wraps the native type handle, not a `RuntimeType`.

The knowledge is hardcoded in importer when importing the sequence "ldtoken foo / call Type.GetTypeFromHandle" - importer just removes the call and bashes the result of ldtoken to be a reference type. CoreRT had to avoid reporting `Type.GetTypeFromHandle` as an intrinsic because of that.

I'm adding another helper that lets RyuJIT avoid hardcoding that knowledge. Instead of just bashing the return type, we swap the helper call.

## Part 2

Native type handle equality checks need to go through a helper, unless the EE side says it's okay to compare native type handles directly.

Commit migrated from https://github.com/dotnet/coreclr/commit/497419bf8f19c649d821295da7e225e55581cce9

5 years agoSingle pass Vectorize Span<byte>.IndexOfAny(..., ReadOnlySpan<byte>) for 2,3 lengths...
Ben Adams [Mon, 19 Nov 2018 06:18:57 +0000 (06:18 +0000)]
Single pass Vectorize Span<byte>.IndexOfAny(..., ReadOnlySpan<byte>) for 2,3 lengths (dotnet/coreclr#20738)

Commit migrated from https://github.com/dotnet/coreclr/commit/d76d97ffc9ba23e6eec30536c6f07756e08151f2

5 years agoAdd headers to all md*, v3binder*, and ceefgen vcxproj (dotnet/coreclr#20163)
Jacek Blaszczynski [Sun, 18 Nov 2018 20:08:31 +0000 (21:08 +0100)]
Add headers to all md*, v3binder*, and ceefgen vcxproj (dotnet/coreclr#20163)

Work toward dotnet/coreclr#14884

Commit migrated from https://github.com/dotnet/coreclr/commit/edbd34433f2624d92902931e8ee7f8b2148c0ede

5 years agoAdd ICustomMarshaler tests (dotnet/coreclr#19195)
Hugh Bellamy [Sun, 18 Nov 2018 18:31:28 +0000 (18:31 +0000)]
Add ICustomMarshaler tests (dotnet/coreclr#19195)

* Add ICustomMarshaler tests

Commit migrated from https://github.com/dotnet/coreclr/commit/52b9353a05890be9302111a8a0eec1cddc719945

5 years ago Fix incorrect exception thrown in Marshal.ReleaseComObject(null) (dotnet/coreclr...
Hugh Bellamy [Sun, 18 Nov 2018 04:08:27 +0000 (04:08 +0000)]
 Fix incorrect exception thrown in Marshal.ReleaseComObject(null) (dotnet/coreclr#21072)

Commit migrated from https://github.com/dotnet/coreclr/commit/e20a41cd511dfcc7e7bf40fbefd5afd923240e9a

5 years agoRemoving the legacy helper intrinsics and adding tests for their replacements (dotnet...
Tanner Gooding [Sat, 17 Nov 2018 18:24:58 +0000 (10:24 -0800)]
Removing the legacy helper intrinsics and adding tests for their replacements (dotnet/coreclr#20994)

* Removing helper intrinsics from the x86 APIs in S.P.Corelib

* Removing JIT support for the removed x86 helper intrinsics

* Removing the x86 HardwareIntrinsics tests for the removed helper APIs

* Fixing up existing usages to no longer use the removed x86 helper intrinsics

* Skip CoreFX tests dependent on the removed x86 helper intrinsics

* Adding a GenerateTests.csx and templates for the new shared helper intrinsics

* Generating the new shared helper intrinsics from their templates

* Disabling some tests for arm and arm64 that are failing due to an assert

Commit migrated from https://github.com/dotnet/coreclr/commit/29f8190aabac62ece90b666591b50aeb0605dd9d

5 years agoForce Unicode in test_location parameter in delete_existing_wrappers() (dotnet/corecl...
Egor Chesakov [Sat, 17 Nov 2018 18:20:13 +0000 (10:20 -0800)]
Force Unicode in test_location parameter in delete_existing_wrappers() (dotnet/coreclr#21056)

Commit migrated from https://github.com/dotnet/coreclr/commit/3d64a3b3c34866358072ce21579052f37f833050

5 years agoOptimization: Further reduce allocations in GetCustomAtttributes() paths (dotnet...
Nick Craver [Sat, 17 Nov 2018 08:11:54 +0000 (03:11 -0500)]
Optimization: Further reduce allocations in GetCustomAtttributes() paths (dotnet/coreclr#20795)

* Remove PseudoCustomAttribute allocations

Inside CustomAttribute, PseudoCustomAttribute is the mechanism used to return Attribute instances for what are really flags and such underneath in most cases. This is just an implentation detail, but this detail creates an intermediate array just for passing things around inside CustomAttribute...that's not necessary. This replaces the Attribute[] allocations with the ListBuilder<Attribute> struct for accumulating and relaying this attributes to parent methods.

Many overloads had a lot of duplicate coalescing code on this path as well...DRYed up that series of methods.

This change reduces allocation overhead for all calls by 40 bytes. In the case of a miss where none would be returned (e.g. .GetCustomAttributes<Attribute>() on a non-attributed class), this reduces allocations down to zero.

* CustomAttribute: split GetCustomAttributes into total and additive use cases

The split here was simple, but allocated an extra intermediate array for each parent type when searching for attributes in the inheritance case. Instead of doing that, we now move that to the second use case exclusively (which uses/returns the array created). The other use case adds to the ListBuilder<object> struct to accumulate through the inheritance hierarchy crawl (rather than an after-the-fact copy).

Note some parameter removals on the filter side...those weren't used already (and got in the way of this change).

* CustomAttributes: Cleanup of unused ops

Just removing the cruft that isn't actually used in here anymore (some of it in quite some time). Trivial amounts of speed gain, but every little bit helps!

* Param typo and red passing for GetCombinedList()

* Assume zero pseudo attributes by default (the most likely case)

Thsi eats the resize on the > 1 case, but that's so rare it's a net win to start with 0 here.

* Pseudo attributes: use out instead of return

A bit if a performance boost from the struct copy removal

* Pseudo attributes: switch to out everywhere and remove uneeded code paths

In relation to dotnet/coreclr#20795, these old calls seem to be for consistency but they're not likely to change and a comment (I think) accomplishes the same goal with less code...so here's a commit demonstrating it.

* Comment spacing for pseudo attribute fetching

Make it clear that pseudo attributes are a distinct thing (e.g. why not in *this* method) than the return line.

Commit migrated from https://github.com/dotnet/coreclr/commit/477c252380c28279cab68ebc3cdc0ae8075750b1

5 years agoExclude GC stress failure test. (dotnet/coreclr#21059)
Sergey Andreenko [Sat, 17 Nov 2018 01:38:00 +0000 (17:38 -0800)]
Exclude GC stress failure test. (dotnet/coreclr#21059)

Commit migrated from https://github.com/dotnet/coreclr/commit/c204be3145f59057574fe0e2b88c655e09363d15

5 years agoExclude tests from GCStress failing due to 21044 (dotnet/coreclr#21060)
Sergey Andreenko [Sat, 17 Nov 2018 00:51:12 +0000 (16:51 -0800)]
Exclude tests from GCStress failing due to 21044 (dotnet/coreclr#21060)

Commit migrated from https://github.com/dotnet/coreclr/commit/7f7d843101689e3999c645aa9b067f1057cf6b33

5 years agoMerge pull request dotnet/coreclr#21004 from BruceForstall/UpdateRuntestHelp
Bruce Forstall [Sat, 17 Nov 2018 00:42:58 +0000 (16:42 -0800)]
Merge pull request dotnet/coreclr#21004 from BruceForstall/UpdateRuntestHelp

Update help output of runtest.cmd/sh

Commit migrated from https://github.com/dotnet/coreclr/commit/54126e845196be5517aade591a13eb25b34c68a2

5 years agoAdd PInvoke/Decimal tests (dotnet/coreclr#19301)
Zeng Jiang [Sat, 17 Nov 2018 00:25:43 +0000 (08:25 +0800)]
Add PInvoke/Decimal tests (dotnet/coreclr#19301)

* Add PInvoke/Decimal Tests

* Remove tests that fail on both .NET Framework and .NET Core.

* Refactor away the Windows-only headers.

* Make Decimal tests build on Linux.

* Remove some dead code.

* Clean up formatting.

* Don't run Decimal <--> Currency tests off-Windows.

* Make calling conventions and parameter/return marshalling more explicit

Commit migrated from https://github.com/dotnet/coreclr/commit/4e23b22ee5cce5db9f8aafb4c6e3b17dbfe07567

5 years agoDelete unnecessary StackCrawlMarks in RtFieldInfo (dotnet/coreclr#21054)
Jan Kotas [Fri, 16 Nov 2018 21:00:41 +0000 (13:00 -0800)]
Delete unnecessary StackCrawlMarks in RtFieldInfo (dotnet/coreclr#21054)

Left over from Code Access Security

Fixes dotnet/coreclr#20965

Commit migrated from https://github.com/dotnet/coreclr/commit/480defd204b58fae05b692937295c6533673d3a2

5 years agoFix unloadability races (dotnet/coreclr#21024)
Jan Vorlicek [Fri, 16 Nov 2018 18:08:29 +0000 (19:08 +0100)]
Fix unloadability races (dotnet/coreclr#21024)

* Fix LoaderAllocator::AllocateHandle

When another thread wins the race in growing the handle table, the code
was not refreshing the slotsUsed local to the new up to date value. This
was leading to overwriting / reusing a live handle.
This change fixes it.

* Embed ThreadLocalBlock in Thread

Instead of allocating ThreadLocalBlock dynamically, embed it in the
Thread. That solves race issue between thread destruction and
LoaderAllocator destruction. The ThreadLocalBlock could have been
deleted during Thread shutdown while the LoaderAllocator's destruction
would be working with it.

Commit migrated from https://github.com/dotnet/coreclr/commit/488d2a70ba59c58b26aa3f4f988a42f6b8927146

5 years agoFix Formatting Japanese First Year on Linux (dotnet/coreclr#21039)
Tarek Mahmoud Sayed [Fri, 16 Nov 2018 17:02:02 +0000 (09:02 -0800)]
Fix Formatting Japanese First Year on Linux (dotnet/coreclr#21039)

When formatting the first year with Gannen symbol we are checking if the year is followed by single quote which this is the case on Windows but it is not neccessay the case on Linux

Commit migrated from https://github.com/dotnet/coreclr/commit/7f22a149708a9ad6a90b9a92b78c12a7f4ae9d41

5 years agoRecord AVX use for SIMD indirections
Carol Eidt [Fri, 16 Nov 2018 17:01:57 +0000 (09:01 -0800)]
Record AVX use for SIMD indirections

Commit migrated from https://github.com/dotnet/coreclr/commit/979bf6a24394c8bdb90ceab85179d93365c5cf45

5 years agoAdd workaround for https://github.com/dotnet/coreclr/issues/21051
Jan Kotas [Fri, 16 Nov 2018 07:11:28 +0000 (23:11 -0800)]
Add workaround for https://github.com/dotnet/coreclr/issues/21051

Commit migrated from https://github.com/dotnet/coreclr/commit/ce7b0d76090ea5306aad983d9e7b5178fcb7b9fb

5 years agoAdd explicit signatures for Span indexer
Jan Kotas [Fri, 16 Nov 2018 06:33:52 +0000 (22:33 -0800)]
Add explicit signatures for Span indexer

Fixes dotnet/coreclr#21032 and dotnet/coreclr#20958

Commit migrated from https://github.com/dotnet/coreclr/commit/fe59f7512ef3b218e8c2112d78aae5e3029cf331

5 years agoEliminate CMAKE dependency when not required (dotnet/coreclr#21040)
Dan Moseley [Fri, 16 Nov 2018 15:14:11 +0000 (07:14 -0800)]
Eliminate CMAKE dependency when not required (dotnet/coreclr#21040)

Commit migrated from https://github.com/dotnet/coreclr/commit/15c6593db2e28b4c2d2d72aaa58c65dcb12cfa9b