Tanner Gooding [Tue, 4 Dec 2018 13:51:50 +0000 (05:51 -0800)]
Fixing the Vector64/128/256<T>.ToString(string) methods to pass `null` for the formatProvider (dotnet/coreclr#21350)
Commit migrated from https://github.com/dotnet/coreclr/commit/
02274cb31cca8530480e6087564abe78a72d198d
Steve MacLean [Tue, 4 Dec 2018 07:27:31 +0000 (02:27 -0500)]
Remove *LoadContextHostBinder (dotnet/coreclr#21342)
Commit migrated from https://github.com/dotnet/coreclr/commit/
248d54d6990677efcfcdeecd63539e72219c9d60
Jan Kotas [Mon, 3 Dec 2018 20:57:56 +0000 (12:57 -0800)]
Sort System.Private.CoreLib.csproj
Commit migrated from https://github.com/dotnet/coreclr/commit/
397aaccb5104844998c3bcf6e9245cc81127e1e2
Jan Kotas [Mon, 3 Dec 2018 18:26:14 +0000 (10:26 -0800)]
Add RuntimeFeature.IsDynamicCodeSupported/IsDynamicCodeCompiled
Contributes to dotnet/corefxdotnet/coreclr#29258
Commit migrated from https://github.com/dotnet/coreclr/commit/
3c5ec8aafd6edacdbf42f9a3aaf1494bf2860204
Stephen Toub [Tue, 4 Dec 2018 01:39:02 +0000 (20:39 -0500)]
Finish (mostly) erradicating StringBuilder marshaling from corefx (dotnet/coreclr#33780)
* Finish (mostly) erradicating StringBuilder marshaling from corefx
This should finish my quest of removing StringBuilder marshaling from coreclr and corefx, which I've strived to do because it often adds unnecessary overhead and often is done incorrectly because of intricacies in how the marshaling works; while not using it often leads to `unsafe` code at call sites, there's much less magic, and it affords the ability to optimize more if desired.
There are still three remaining [Out] StringBuilder's in Interop.Odbc.cs, which I've not removed because tests are limited and the call graph to these is non-trivial with StringBuilders passed through. There may also be a few straggling DllImports I missed while scouring interop that's not following our guidelines of being in src\Common\.
Other than those, the remaining StringBuilder usage I found in DllImports was for [In] only, and in those cases it's reasonable, as the call sites are building up StringBuilders and then passing them off to the call sites; converting those to use `char*` or similar could actually make them more expensive. I did, however, ensure they were properly annotated as [In], in order to make the intent clear and avoid potential marshaling costs for the unnecessary [Out] direction.
Where I was touching a function in one of these stray interop files that was duplicated elsewhere, I also consolidated it to a centralized location, but I've not in this PR done the cleanup work for the rest of the files.
* Address PR feedback
* Address further feedback
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
2755ed0f497f68a9a879b174ef81747f09e9be43
Jan Kotas [Tue, 4 Dec 2018 00:11:29 +0000 (16:11 -0800)]
Refactor all FCalls out of AppDomain.cs (dotnet/coreclr#21337)
This saves the unmanaged->managed->unmanaged trip to initialize the assembly binder.
Includes small bits of unrelated cleanup.
Commit migrated from https://github.com/dotnet/coreclr/commit/
3b47496ef2656333684526cf71478253a207c1a5
Egor Bogatov [Mon, 3 Dec 2018 22:56:38 +0000 (01:56 +0300)]
Vectorize some Guid APIs (ctor, TryWriteBytes) (dotnet/coreclr#21336)
* Optimize some Guid APIs
* get rid of WriteByteHelper
* use TryWrite instead of Write
* Optimize ctor `Guid(ReadOnlySpan<byte> b)` and remove `Equals` optimization (move to separate PR).
Commit migrated from https://github.com/dotnet/coreclr/commit/
248449d08f5436fbeb140a6011e412f2fea4621f
Egor Chesakov [Mon, 3 Dec 2018 22:51:28 +0000 (14:51 -0800)]
Remove Hostx86/arm CrossGen from building and Simplify build.sh command line arguments for Linux/arm cross build (Part 2) (dotnet/coreclr#21034)
* Stop building and publishing Hostx86/arm crossgen on Linux/arm
* Remove -crosscomponent argument and stop using CAC_ROOTFS_DIR environment variable in build.sh
* Simplify the related logic in build.sh
* Don't need to specify crosscomponent in tests/scripts/run-pmi-diffs.py
* Don't set CAC_ROOTFS_DIR in buildpipeline, Jenkins files and in tests/scripts/run-pmi-diffs.py
* Adjust documentation
Commit migrated from https://github.com/dotnet/coreclr/commit/
20c6bc555319aa635e0e490c82aebf0bb370d6c1
Carol Eidt [Mon, 3 Dec 2018 20:52:20 +0000 (12:52 -0800)]
Merge pull request dotnet/coreclr#21264 from fiigii/x64only
Implement 64-bit-only hardware intrinsic
Commit migrated from https://github.com/dotnet/coreclr/commit/
a089f64a7ad55a8ce0b3203b1bf87040775dff01
Jarret Shook [Mon, 3 Dec 2018 20:46:35 +0000 (12:46 -0800)]
Correct platorm reach for the Official build (dotnet/coreclr#21310)
* Correct platorm reach for the Official build
Does the following:
1. Sets up a ci rule for master and a pr rule for master
2. Corrects the OSX queues
3. Corrects ubuntu internal queue
4. Converts all linux jobs to build using containers
5. Only runs official builds on: Pri1, release, bringing us to parity with old process
6. Fixes centos build-test
7. Adds a super-annoying groupname tag that avoids name mangling.
* make sure we only add triggers for internal builds
* Fix syntax
* Missing :
* Remove pr/ci
* Fix internal queue name
* Correct Public/internal choices.
* Add crossgen as well
* Correct indentation
* Correct checked pri1 tests
* Address pr feedback
* Add todo comments
Commit migrated from https://github.com/dotnet/coreclr/commit/
5632c9e3ac7f9dd6b858f175b2cf97963be996c4
Rui [Mon, 3 Dec 2018 20:33:51 +0000 (15:33 -0500)]
Clarify use of LoadFromAssemblyName method (dotnet/coreclr#21256)
Commit migrated from https://github.com/dotnet/coreclr/commit/
f8b4745ae754774ebf2a802ef1fd1f2bf6dbd024
Tomáš Rylek [Mon, 3 Dec 2018 19:33:49 +0000 (20:33 +0100)]
Improvements for naked R2RDump output (dotnet/coreclr#21317)
The initial impulse for this change was removing native offsets
from debug info that caused noise in naked R2R comparisons. Fixing
this required propagation of DumpOptions to some more call sites
prompting me to unify dumping logic to always use TextWriter
as the output medium. I have also fixed some minor bugs I noticed
around the naked disassembly.
Thanks
Tomas
Commit migrated from https://github.com/dotnet/coreclr/commit/
940ed217fd424f645227acd3d9fac0caf28ec47b
dotnet-maestro-bot [Mon, 3 Dec 2018 18:53:23 +0000 (10:53 -0800)]
Update BuildTools, CoreClr, CoreFx, CoreSetup to preview1-03430-01, preview-27203-03, preview.18603.1, preview-27203-01, respectively (dotnet/coreclr#21291)
Commit migrated from https://github.com/dotnet/coreclr/commit/
cb8557de0c07126473172483aee08cabcb6d67a7
Andy Ayers [Mon, 3 Dec 2018 18:46:52 +0000 (10:46 -0800)]
JIT: fix overly aggressive type propagation from returns (dotnet/coreclr#21316)
For quite a while now the jit has been propagating return types from
callees to the return spill temp. However this is only safe when the
callee has a single return site (or all return sites return the same
type).
Because return spill temps often end up getting assigned to still more
temps we haven't seen this overly aggressive type propgagation lead to
bugs, but now that we're tracking single def temps and doing more type
propagation during the late devirtualization callback, the fact that
these types are wrong has been exposed and can lead to incorrect
devirtualization.
The fix is to only consider the return spill temp as single def if the
callee has a single return site, and to check that the return spill temp
is single def before trying to propagate the type.
Fixes dotnet/coreclr#21295.
Commit migrated from https://github.com/dotnet/coreclr/commit/
562ae44982171945f85a1134a6ef9d24989e8882
Andrew Au [Mon, 3 Dec 2018 18:17:20 +0000 (10:17 -0800)]
Make sure the debug registers are available in the SavedRedirectContext (dotnet/coreclr#21293)
Commit migrated from https://github.com/dotnet/coreclr/commit/
b285e42989730fc6c2a75478ede4348f18bc93b3
Steve MacLean [Mon, 3 Dec 2018 17:49:31 +0000 (12:49 -0500)]
Remove IsNeutralDomain() (dotnet/coreclr#21318)
* Remove IsNeutralDomain()
* PR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
411f9787617f6bdc64c8393a51ac3b7a0d6e35f4
Rafael Lillo [Mon, 3 Dec 2018 17:19:14 +0000 (15:19 -0200)]
Fixes abbreviated genitive (dotnet/coreclr#21230)
* fixes abbreviation
* reverse .gitignore
* remove token lenght
Commit migrated from https://github.com/dotnet/coreclr/commit/
f54494af07aec0d927962846eb4394c118a2fef8
Ilia [Mon, 3 Dec 2018 15:25:24 +0000 (18:25 +0300)]
Don't typedef intptr_t/uintptr_t when PAL_STDCPP_COMPAT is defined (dotnet/coreclr#21165)
Bug: 20766
Commit migrated from https://github.com/dotnet/coreclr/commit/
9ac85011e216b760adc520444a2b3400bfdc3d91
Michal Strehovský [Mon, 3 Dec 2018 08:15:26 +0000 (09:15 +0100)]
Make RyuJIT tolerate null CLASSID_RUNTIME_TYPE (dotnet/coreclr#21331)
If we're compiling a class library that has no concept of reflection (and runtime types), EE cannot provide a class handle for this class. Make RyuJIT tolerant to null coming back.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ddfe59dd1fc4f5b9fc8622c19bd1bab46dcc5534
Ben Adams [Mon, 3 Dec 2018 06:46:26 +0000 (06:46 +0000)]
Store CurrentThread in ThreadStatic (dotnet/coreclr#21328)
Commit migrated from https://github.com/dotnet/coreclr/commit/
5a7f3c6a303f162ec1f87e2dcc629da4dd1a7721
Russ Keldorph [Mon, 3 Dec 2018 00:40:18 +0000 (16:40 -0800)]
Revert [publish symbols on FreeBSD (dotnet/coreclr#21179)] (dotnet/coreclr#21329)
This reverts commit dotnet/coreclr@
6120021023647ff881d791a033dba38a94fd1c2c.
Commit migrated from https://github.com/dotnet/coreclr/commit/
019d2ba578c7f710319d03fe409e871e1fb90058
Jan Kotas [Sat, 1 Dec 2018 21:09:21 +0000 (13:09 -0800)]
Rename CorElementType enum members to match the others definitions (dotnet/coreclr#21324)
Commit migrated from https://github.com/dotnet/coreclr/commit/
ca56b02af77616c9a5eae93e1c2d3bf1f465d69a
Maoni Stephens [Sat, 1 Dec 2018 20:38:36 +0000 (12:38 -0800)]
added info about the new .NET memory book (dotnet/coreclr#21326)
Commit migrated from https://github.com/dotnet/coreclr/commit/
1d5ba868d0cbeaab5ff3ec795d0562a39d0f7655
Jan Vorlicek [Sat, 1 Dec 2018 09:31:35 +0000 (10:31 +0100)]
Enable COM interop for collectible classes (dotnet/coreclr#20919)
* Enable COM interop for collectible classes
* Modify DispatchInfo to use LoaderAllocator handles
The DispatchMemberInfo was using global handles to refer to the managed
MemberInfo instances. That doesn't work with unloadability.
This change modifies it to use handles allocated from LoaderAllocator.
* Disable COM interop for WinRT types
* Remove collectible check from IsTypeVisibleFromCom. That fixes three
new COM interop tests
* Add collectible check to GetComClassFactory when we check for
unsupported interop with WinRT
* Add COM unloadability tests
Add two tests to test COM unloadability:
* One for using native COM server from managed COM client
* One for using managed COM objects from native client
* Add unloading test for IUnknownTest
* Disable NETClientPrimitivesInALC on Win ARM
The NETClientPrimitives is disabled there too.
Commit migrated from https://github.com/dotnet/coreclr/commit/
4c461d754ff29d1ba37c145676c397062378d1c0
Aaron Robinson [Sat, 1 Dec 2018 03:30:37 +0000 (19:30 -0800)]
Change target 'Target' and position in build steps for response file generation (dotnet/coreclr#21315)
Commit migrated from https://github.com/dotnet/coreclr/commit/
9fca919fdc8f20f80d923088620ec026196785bf
Fei Peng [Thu, 29 Nov 2018 00:25:48 +0000 (16:25 -0800)]
Migrate 64-bit-only intrinsic tests to new APIs
Commit migrated from https://github.com/dotnet/coreclr/commit/
3bc3c61522c3a6c5663d5b4f9f535c4b3bc22a78
Fei Peng [Thu, 15 Nov 2018 23:00:26 +0000 (15:00 -0800)]
Migrate FormattingHelpers.CountDigits to using Lzcnt.X64
Commit migrated from https://github.com/dotnet/coreclr/commit/
4742ebfbae24b37d0690d494756a60b53b022fb6
Fei Peng [Thu, 29 Nov 2018 00:25:14 +0000 (16:25 -0800)]
Implement 64-bit-only intrinsic
Commit migrated from https://github.com/dotnet/coreclr/commit/
8ba34880cc4e5d87e305bda16d88f80d929b877e
Steve MacLean [Fri, 30 Nov 2018 23:15:26 +0000 (18:15 -0500)]
Fix crossgen segfault
Commit migrated from https://github.com/dotnet/coreclr/commit/
0a362622d21a5eb619e91cb9e045884072f4a5a3
Steve MacLean [Fri, 30 Nov 2018 22:18:46 +0000 (17:18 -0500)]
Address PR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
52e3f4f7ac60c2e3ba19a01e6f666de4388cf1e8
Steve MacLean [Fri, 30 Nov 2018 03:14:11 +0000 (22:14 -0500)]
Remove dead code
Commit migrated from https://github.com/dotnet/coreclr/commit/
bab59b646768fc4dec6fa540af7c7c61c206466c
Carol Eidt [Fri, 30 Nov 2018 23:30:03 +0000 (15:30 -0800)]
Merge pull request dotnet/coreclr#21311 from CarolEidt/FixLvaUpdateClassDump
Fix dump in LvaUpdateClass
Commit migrated from https://github.com/dotnet/coreclr/commit/
93000363bb5bad3e545bc59c43fbaea275985fb7
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
Fei Peng [Thu, 15 Nov 2018 22:44:55 +0000 (14:44 -0800)]
Remove legacy 64-bit intrinsic APIs
Commit migrated from https://github.com/dotnet/coreclr/commit/
92498ca4e16abb01ead0db9d7fb2ba27da05e63b
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
Carol Eidt [Fri, 30 Nov 2018 20:42:15 +0000 (12:42 -0800)]
Fix dump in LvaUpdateClass
It was failing, presumably because of too many or too large args, so break it up a abit.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e5be39cda1772b68e403210e60dd4253be0a6717
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Fei Peng [Thu, 29 Nov 2018 23:02:24 +0000 (15:02 -0800)]
Add SuperPMI code for the new getMethodNameFromMetadata
Commit migrated from https://github.com/dotnet/coreclr/commit/
1ebec7911d417205e6cfcae663e37fe843ce858b
Fei Peng [Wed, 21 Nov 2018 01:05:25 +0000 (17:05 -0800)]
Update JIT/EE getMethodNameFromMetadata to get enclosing class name
Commit migrated from https://github.com/dotnet/coreclr/commit/
bc62955491a970934e0b67d0d91c7f4148e40c89
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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