platform/upstream/dotnet/runtime.git
5 years agoReenable TypeEquivalence tests (dotnet/coreclr#21309)
Aaron Robinson [Fri, 30 Nov 2018 23:01:04 +0000 (15:01 -0800)]
Reenable TypeEquivalence tests (dotnet/coreclr#21309)

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

5 years agoEliminate the requirement that abort requires no lock held on the current thread...
Andrew Au [Fri, 30 Nov 2018 21:40:44 +0000 (13:40 -0800)]
Eliminate the requirement that abort requires no lock held on the current thread (dotnet/coreclr#21206)

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

5 years agoUpdate how CoreDisTools is discovered (dotnet/coreclr#21261)
Aaron Robinson [Fri, 30 Nov 2018 18:06:28 +0000 (10:06 -0800)]
Update how CoreDisTools is discovered (dotnet/coreclr#21261)

* Update Disassembler logic to search for CoreDisTools next to binary _or_ under the path specified by CORE_ROOT

* Update GCCover critical section

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

5 years agoA few more Enum perf improvements (dotnet/coreclr#21284)
Stephen Toub [Fri, 30 Nov 2018 15:16:25 +0000 (10:16 -0500)]
A few more Enum perf improvements (dotnet/coreclr#21284)

* A few more Enum perf improvements

I started out to just remove the unnecessary boxing allocation that happens when you do enum.ToString("D") or, if the value doesn't map to a named enum entry, just enum.ToString() (there's an internal boxing of the value that happens in addition to any boxing that happens of the enum itself).  As part of that, I added a ValueToString method that replaces the GetValue().ToString() calls that appear several times, and in writing that ValueToString, I opted to avoid pinning, instead using Unsafe.As.  Once I did that, I then removed pinning everywhere else it was being done, standardizing on Unsafe.As.

* Address PR feedback

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

5 years agoFix perf issues with GetCurrentThreadHomeHeapNumber (dotnet/coreclr#21150)
David Mason [Fri, 30 Nov 2018 09:25:57 +0000 (01:25 -0800)]
Fix perf issues with GetCurrentThreadHomeHeapNumber (dotnet/coreclr#21150)

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

5 years agoDisable TypeEquivalence tests due to flaky x86 build (dotnet/coreclr#21294)
Aaron Robinson [Fri, 30 Nov 2018 06:51:08 +0000 (22:51 -0800)]
Disable TypeEquivalence tests due to flaky x86 build (dotnet/coreclr#21294)

* Remove includes of SDK imports from prop and targets files

* Disable TypeEquivalence test due to failure on x86

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

5 years agoUndo accidental change
Jan Kotas [Fri, 30 Nov 2018 02:39:36 +0000 (18:39 -0800)]
Undo accidental change

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

5 years agoAdd EnumerateRunes() ref APIs and unit tests (dotnet/corefxdotnet/coreclr#33504)
Levi Broderick [Mon, 19 Nov 2018 23:07:08 +0000 (15:07 -0800)]
Add EnumerateRunes() ref APIs and unit tests (dotnet/corefxdotnet/coreclr#33504)

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/dade3835822d72b57e880e1eba79abb4ccfe9b28

5 years agoDelete CORECLR ifdef (dotnet/corertdotnet/coreclr#6610)
Jan Kotas [Sat, 24 Nov 2018 19:53:33 +0000 (11:53 -0800)]
Delete CORECLR ifdef (dotnet/corertdotnet/coreclr#6610)

This ifdef should not be needed anymore.

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/e5763719c9b61d0c28e1cca5cb28ec55ce6535b8

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

* accross -> across

* adress -> address

* Appartment -> Apartment

* persective -> perspective

* paramaterized -> parameterized

* Langage -> Language

* miminum -> minimum

* Curret -> Current

* currnet -> current

* definately -> definitely

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/6eb05cd76855ac929d0c0def670d6bba1133dfdf

5 years agoProperly report intrinsic fields (dotnet/corertdotnet/coreclr#6602)
Michal Strehovský [Thu, 22 Nov 2018 16:01:17 +0000 (17:01 +0100)]
Properly report intrinsic fields (dotnet/corertdotnet/coreclr#6602)

* Properly report intrinsic fields

We were hitting an assert in RyuJIT because we were reporting IntPtr.Zero as an intrinsic even if we were not trying to `CORINFO_ACCESS_GET`.

I fixed that part and also went ahead to port the rest of getFieldIntrinsic from CoreCLR. We'll need this anyway.

* Add intrinsic fields

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/e6e582cfca205692ef4e0cb9300abc6c9abab9e6

5 years agoMerge pull request dotnet/coreclr#21287 from hoyosjs/fix-tls-daccast
Juan Hoyos [Fri, 30 Nov 2018 02:19:08 +0000 (18:19 -0800)]
Merge pull request dotnet/coreclr#21287 from hoyosjs/fix-tls-daccast

Properly DACize TLB access for thread local statics

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

5 years agoAdded TryParse to StandardFormat (dotnet/coreclr#21216)
Alexej Liebenthal [Fri, 30 Nov 2018 00:58:38 +0000 (01:58 +0100)]
Added TryParse to StandardFormat (dotnet/coreclr#21216)

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

5 years agoDefer Initialization of FrameworkEventSource During EventPipeController Initializatio...
Brian Robbins [Fri, 30 Nov 2018 00:39:41 +0000 (16:39 -0800)]
Defer Initialization of FrameworkEventSource During EventPipeController Initialization (dotnet/coreclr#21255)

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

5 years agoUpdate CoreClr, CoreFx, CoreSetup, PgoData to preview-27129-03, preview.18579.2,...
dotnet-maestro-bot [Thu, 29 Nov 2018 23:09:56 +0000 (15:09 -0800)]
Update CoreClr, CoreFx, CoreSetup, PgoData to preview-27129-03, preview.18579.2, preview-27129-02, master-20181124-0042, respectively (dotnet/coreclr#21178)

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

5 years agoProperly DACize TLB access for thread local statics
Juan Sebastian Hoyos Ayala [Thu, 29 Nov 2018 23:06:21 +0000 (15:06 -0800)]
Properly DACize TLB access for thread local statics

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

5 years agoConsolidate validation code in Enum.ToObject overloads (dotnet/coreclr#21280)
Stephen Toub [Thu, 29 Nov 2018 21:01:02 +0000 (16:01 -0500)]
Consolidate validation code in Enum.ToObject overloads (dotnet/coreclr#21280)

Unnecessary duplication.  Moving it into a shared method has no measurable impact on ToObject performance, which is dominated by the boxing costs.

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

5 years agoImprove performance of Enum.{Try}Parse (dotnet/coreclr#21214)
Stephen Toub [Thu, 29 Nov 2018 20:59:30 +0000 (15:59 -0500)]
Improve performance of Enum.{Try}Parse (dotnet/coreclr#21214)

* Improve performance of Enum.{Try}Parse

In particular for the generic overloads, where this avoids all per-operation allocations when commonly used underlying types are used (for example, this improves when the underlying enum type is int but not double).

* Address PR feedback

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

5 years agoEnable type equivalence (dotnet/coreclr#21265)
Aaron Robinson [Thu, 29 Nov 2018 20:44:04 +0000 (12:44 -0800)]
Enable type equivalence (dotnet/coreclr#21265)

* Enable TypeEquivalence feature for Windows platform

* Basic test - verified test exercises TypeEquivalence code paths

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

5 years agoImplement the Count property, the IEquatable and IFormattable interfaces, and the...
Tanner Gooding [Thu, 29 Nov 2018 20:15:43 +0000 (12:15 -0800)]
Implement the Count property, the IEquatable and IFormattable interfaces, and the standard object overrides on Vector64/128/256<T> (dotnet/coreclr#21259)

* Exposing the Count property on Vector64/128/256<T>

* Implementing IEquatable, IFormattable, and the object overrides on Vector64/128/256<T>

* Use StringBuilderCache, HashCode, and the provided format specifier

* Use StringBuilderCache.GetStringAndRelease and get the correct element when formatting Vector64/128/256<T>

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

5 years agoAdd more advanced SafeArray tests (dotnet/coreclr#21063)
Jeremy Koritzinsky [Thu, 29 Nov 2018 19:57:36 +0000 (11:57 -0800)]
Add more advanced SafeArray tests (dotnet/coreclr#21063)

* Port simple SafeArray tests over from .NET Framework's test suite.

* Clean up native calling conventions.

* Add basic field array -> field SAFEARRAY* tests.

* Fix some hiding stdcall calling convention decorators.

* PR Feedback.

* Rewrite native part of SafeArray tests

* Wrote the managed side of the tests. Non-passing ones are currently commented out.

* Fix up tests and enable marshalling a string[] as a SAFEARRAY of LPSTR or LPWSTR.

* Add blittable records test with a return parameter.

* Add returning non-blittable record safearray test.

* Fix which typedef we're using

* Clean up

* Fix/cleanup RecordNative

* Replace "" with <> for platformdefines.h include.

* Use macro for calling convention.

* PR Feedback.

* Remove residual "Helpers.h" include.

* Fix remaining incorrect calling conventions.

* One more calling convention fix.

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

5 years agoFix build parallelism on Windows with NUMA (dotnet/coreclr#21278)
Jan Vorlicek [Thu, 29 Nov 2018 18:06:34 +0000 (19:06 +0100)]
Fix build parallelism on Windows with NUMA (dotnet/coreclr#21278)

When multiple NUMA nodes are enabled on the machine where coreclr is
built, we incorrectly detect the number of cores that we use for build
parallelism of the native part of the build (NumberOfCores) as only
a number in the last NUMA node.
The reason is that the `wmic cpu get NumberOfCores /value` returns
multiple lines, one per each NUMA node.
This change fixes it by summing values from all the lines.

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

5 years agoDon't treat the Vector64/128/256<T> helper methods as intrinsic if featureSIMD is...
Tanner Gooding [Thu, 29 Nov 2018 17:46:34 +0000 (09:46 -0800)]
Don't treat the Vector64/128/256<T> helper methods as intrinsic if featureSIMD is disabled (dotnet/coreclr#21274)

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

5 years agoMerge pull request dotnet/coreclr#21267 from BruceForstall/FixExclusion
Bruce Forstall [Thu, 29 Nov 2018 17:46:18 +0000 (09:46 -0800)]
Merge pull request dotnet/coreclr#21267 from BruceForstall/FixExclusion

Fix ObjectStackAllocationTests on Linux under minopts

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

5 years agopublish symbols on FreeBSD (dotnet/coreclr#21179)
Tomas Weinfurt [Thu, 29 Nov 2018 17:31:46 +0000 (09:31 -0800)]
publish symbols on FreeBSD (dotnet/coreclr#21179)

* enable build-id on FreeBSD

* start publishing symbols for freebsd

* enable FEATURE_PERFMAP on FreeBSD

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

5 years agoUpdating genSIMDZero to only use `xorps` (dotnet/coreclr#21249)
Tanner Gooding [Thu, 29 Nov 2018 15:59:27 +0000 (07:59 -0800)]
Updating genSIMDZero to only use `xorps` (dotnet/coreclr#21249)

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

5 years agoTrack single def locals in importer (dotnet/coreclr#21251)
Andy Ayers [Thu, 29 Nov 2018 08:32:55 +0000 (00:32 -0800)]
Track single def locals in importer (dotnet/coreclr#21251)

* Defer setting lvSingleDef until lvaMarkLocalVars

Since this information isn't used early on in the jit, defer setting this bit
until later.

* Track single-def locals in the importer

and use this information to enable type updates during late devirtualization.
This gets some cases where the exact type materializes late (perhaps via a
chain of copies).

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

5 years agoFix dotnet/coreclr#21209 (dotnet/coreclr#21237)
Swaroop Sridhar [Thu, 29 Nov 2018 07:09:30 +0000 (23:09 -0800)]
Fix dotnet/coreclr#21209 (dotnet/coreclr#21237)

This commit has two changes to Native Load Library Tests fix the failures in:
https://github.com/dotnet/coreclr/issues/21209

1) Windows: The test tried to load a DLL from Win32 directory which doesn't exist
   in Windows server 2016. So changed to use a file that exists.
2) Linux: Disable the test when run against packages -- because in this configuration
   the tests are built on Windows, and the native DLL is built separately and copied
   over to the CORE_ROOT directory instead of the test directory.
   [Several other tests are disabled with the comment "Issue building native DLL" on Linux]

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

5 years agoAdd IsCollectible property to Memberinfo and MethodInfo (dotnet/coreclr#21155)
John Salem [Thu, 29 Nov 2018 06:34:48 +0000 (22:34 -0800)]
Add IsCollectible property to Memberinfo and MethodInfo (dotnet/coreclr#21155)

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

5 years agoImprove Enum.ToString perf for [Flags] enums (dotnet/coreclr#21254)
Stephen Toub [Thu, 29 Nov 2018 04:04:08 +0000 (23:04 -0500)]
Improve Enum.ToString perf for [Flags] enums (dotnet/coreclr#21254)

Two main changes:
- Rather than using a StringBuilder to insert the strings for all of the consistuent values, we track the constituent values in a span, summing the expected length, and then new up a string and copy the results directly into it.
- When there's a single value that matches the supplied value, we just return the cached string rather than allocating a new one.

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

5 years agoRemove obsolete assert (dotnet/coreclr#21260)
Andrew Au [Thu, 29 Nov 2018 02:23:00 +0000 (18:23 -0800)]
Remove obsolete assert (dotnet/coreclr#21260)

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

5 years agoDelete code related to LoaderOptimization and SharedDomain (dotnet/coreclr#21031)
Jan Kotas [Thu, 29 Nov 2018 02:18:04 +0000 (18:18 -0800)]
Delete code related to LoaderOptimization and SharedDomain (dotnet/coreclr#21031)

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

5 years agoFix ObjectStackAllocationTests on Linux under minopts
Bruce Forstall [Thu, 29 Nov 2018 01:16:23 +0000 (17:16 -0800)]
Fix ObjectStackAllocationTests on Linux under minopts

Fix the capitalization of COMPlus_JITMinOpts variable, which
is case-sensitive on Linux.

Fixes dotnet/coreclr#21266

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

5 years agoQueue ValueTaskAwaiter IAsyncStateMachineBox directly to ThreadPool (dotnet/coreclr...
Ben Adams [Wed, 28 Nov 2018 21:45:16 +0000 (21:45 +0000)]
Queue ValueTaskAwaiter IAsyncStateMachineBox directly to ThreadPool (dotnet/coreclr#21159)

* Queue ValueTaskAwaiter IAsyncStateMachineBox directly to ThreadPool

* Invert the dependency

* Move to UnsafeQueueUserWorkItem

* MRVTSC queue null or Deafult EC to UnsafeQUWI

* Revert MRVTSC change

* Add comment and validation

* Use s_invokeAsyncStateMachineBox for AsTask

* nits

* nits 2

* Rever ValueTask

* nits

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

5 years agoUpdate Helix queues used for testing
Russ Keldorph [Wed, 28 Nov 2018 18:43:50 +0000 (10:43 -0800)]
Update Helix queues used for testing

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

5 years agoMerge pull request dotnet/coreclr#21217 from AndyAyersMS/Fix21051
Andy Ayers [Wed, 28 Nov 2018 20:51:46 +0000 (12:51 -0800)]
Merge pull request dotnet/coreclr#21217 from AndyAyersMS/Fix21051

JIT: retype some return expressions

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

5 years agoMerge pull request dotnet/coreclr#21226 from AndyAyersMS/HandleMoreGeneralIndirInJmpAddr
Andy Ayers [Wed, 28 Nov 2018 20:51:04 +0000 (12:51 -0800)]
Merge pull request dotnet/coreclr#21226 from AndyAyersMS/HandleMoreGeneralIndirInJmpAddr

JIT: handle general indir case for GT_JMP address

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

5 years agoSwitch to preemptive mode before calling COM (dotnet/coreclr#21238)
Jan Kotas [Wed, 28 Nov 2018 19:19:48 +0000 (11:19 -0800)]
Switch to preemptive mode before calling COM (dotnet/coreclr#21238)

* Switch to preemptive mode before calling COM

COM can call back the runtime via RCW that leads to contract violations

Fixes dotnet/coreclr#20373

* Fix one places

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

5 years ago Delete test dev10_630880 (dotnet/coreclr#21239)
Jan Kotas [Wed, 28 Nov 2018 19:18:54 +0000 (11:18 -0800)]
 Delete test dev10_630880 (dotnet/coreclr#21239)

* Revert "Disable test Dev10_630880"

This reverts commit dotnet/coreclr@4fb76de35184fb80054f29779f51af82a4aa7ad8.

* Delete test dev10_630880

This test has been exercising internal CoreLib details that have been deleted.

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

5 years agoMerge pull request dotnet/coreclr#21204 from briansull/issue_20185
Brian Sullivan [Wed, 28 Nov 2018 18:17:45 +0000 (10:17 -0800)]
Merge pull request dotnet/coreclr#21204 from briansull/issue_20185

Change VNUnpackExc to always write an exception set

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

5 years agoexclude tests\src\Interop\COM\NativeClients\Primitives from GCStress runs. (dotnet...
Sergey Andreenko [Wed, 28 Nov 2018 17:36:09 +0000 (09:36 -0800)]
exclude tests\src\Interop\COM\NativeClients\Primitives from GCStress runs. (dotnet/coreclr#21222)

* exclude tests\src\Interop\COM\NativeClients\Primitives.csproj from GCStress runs.

* fix alignment

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

5 years agoFixing up Utf8Parser.TryParseNumber to not fail for overly large exponents (dotnet...
Tanner Gooding [Wed, 28 Nov 2018 11:54:12 +0000 (03:54 -0800)]
Fixing up Utf8Parser.TryParseNumber to not fail for overly large exponents (dotnet/coreclr#21233)

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

5 years agoImplement the S.R.I.VectorXXX `get_Zero` and `As` helper methods as JIT intrinsics...
Tanner Gooding [Wed, 28 Nov 2018 11:52:43 +0000 (03:52 -0800)]
Implement the S.R.I.VectorXXX `get_Zero` and `As` helper methods as JIT intrinsics (dotnet/coreclr#21198)

* Remove ARM64_SIMD_StaticCast intrinsic and the x86 TwoTypeGeneric flag

* Implementing the `S.R.Intrinsic.VectorXXX.As` methods as runtime intrinsics

* Implementing the get_Zero method on the S.R.Intrinsic.VectorXXX types as runtime intrinsics

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

5 years agoImprove performance of cgroup access (dotnet/coreclr#21229)
Jan Vorlicek [Wed, 28 Nov 2018 08:55:35 +0000 (09:55 +0100)]
Improve performance of cgroup access (dotnet/coreclr#21229)

Currently, we create a CGroup instance on each request for getting
used or total physical memory. This has an extra cost of finding
filesystem paths of the current cgroup files. I have found that
if we do the initialization just once, the performance of getting
the used or total memory in a tight loop improves 22 times.

Accidentally, I was also looking into a perf regression in the
ByteMark.BenchBitOps test that was observed in the past, seemingly
related to the recent change to the way we get the used memory.
And I've found that the benchmark results improve two fold with
the change in this commit.

This change was made both in PAL and in the standalone GC.

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

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 agoCode review feedback
Brian Sullivan [Wed, 28 Nov 2018 00:40:58 +0000 (16:40 -0800)]
Code review feedback

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

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 agoJIT: handle general indir case for GT_JMP address
Andy Ayers [Tue, 27 Nov 2018 21:11:02 +0000 (13:11 -0800)]
JIT: handle general indir case for GT_JMP address

Some upcoming changes to reduce tiering overhead require that directly
invoked virtual methods be called indirectly via their slot, so that the
method body can be updated and callers patched up by patching the method
table slot.

Existing code for x64 implicitly assumes that a GT_JMP indirect target address
is near enough to the call site that a 32 bit RIP-relative displacement will
work. We can ensure this is true by always generating a reloc (and hence
potentially a jump stub) -- unless the target happens to fit in 32 bits and
so can be addressed absolutely.

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

5 years agoremove workaround comments
Andy Ayers [Tue, 27 Nov 2018 19:38:56 +0000 (11:38 -0800)]
remove workaround comments

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

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 agoJIT: retype some return expressions
Andy Ayers [Sat, 17 Nov 2018 18:26:25 +0000 (10:26 -0800)]
JIT: retype some return expressions

The jit is fairly tolerant of byref/native int mismatches for inline arguments
and return values. And some of the new unsafe helpers do this kind of
reinterpretation across call boundaries as well. This sometimes leads the jit
to lose track of byrefs.

A general fix for this is likely somewhat involved. For now we simply detect if
we're about to lose track of a byref when substituting a particular kind of
return expression, and retype the expression to a byref.

Fixes dotnet/coreclr#21051.

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

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 issue 20185
Brian Sullivan [Tue, 27 Nov 2018 00:19:44 +0000 (16:19 -0800)]
Fix issue 20185
Change VNUnpackExc to always write an exception set to pvnx

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

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