Tanner Gooding [Fri, 7 Dec 2018 21:00:35 +0000 (13:00 -0800)]
Adding a note to the genBaseIntrinsic function header about operand assumptions (dotnet/coreclr#21439)
Commit migrated from https://github.com/dotnet/coreclr/commit/
be913c781de85aa3f4e0b952262f0f081c93eacb
Jan Vorlicek [Fri, 7 Dec 2018 19:13:43 +0000 (20:13 +0100)]
Fix some SOS commands after SharedDomain removal (dotnet/coreclr#21401)
The recent removal of SharedDomain has broken some SOS commands, like
Name2EE or bpmd. There was a code that was enumerating domains and
obtaining some information on them. And the shared domain pointer from
DacpAppDomainStoreData was being included in the list of domains. As it
is NULL now, we have failed to get the information and the domain
iteration loop was exited prematurely.
I have made SOS resilient to the possibility of missing shared domain.
On older runtimes, the shared domain is still being reported.
Commit migrated from https://github.com/dotnet/coreclr/commit/
af46c514824aacd4d439eb1891d3d392c6894476
Stephen Toub [Fri, 7 Dec 2018 18:56:32 +0000 (13:56 -0500)]
Add CancellationToken parameter to GetAsyncEnumerator (dotnet/coreclr#21397)
Commit migrated from https://github.com/dotnet/coreclr/commit/
811e34bc945ca1e294d64320cd3aba7866f8aeee
Stephen Toub [Fri, 7 Dec 2018 18:55:53 +0000 (13:55 -0500)]
Factor new AsyncIteratorStateMachineAttribute into TryResolveStateMachineMethod (dotnet/coreclr#21396)
Commit migrated from https://github.com/dotnet/coreclr/commit/
372f18e8befffe3f4f1ccb3c21aeaf41af2aa763
Carol Eidt [Fri, 7 Dec 2018 18:11:30 +0000 (10:11 -0800)]
Merge pull request dotnet/coreclr#21361 from fiigii/x64tests
Improve hardware intrinsic tests
Commit migrated from https://github.com/dotnet/coreclr/commit/
02d37e4b3f7a8d26949a827f9b0d6c0422b3670c
Jeremy Koritzinsky [Fri, 7 Dec 2018 17:55:37 +0000 (09:55 -0800)]
Add PNSE implementations of unsupported built-in custom marshalers to enable good error messages on PIAs that could possibly directly use them. (dotnet/coreclr#21429)
Commit migrated from https://github.com/dotnet/coreclr/commit/
78de81cf619c6e06a26860763dea761d928febd0
Bruce Forstall [Fri, 7 Dec 2018 16:10:00 +0000 (08:10 -0800)]
Disable ObjectStackAllocationTests for ARM32 (dotnet/coreclr#21421)
Issue dotnet/coreclr#21376
Commit migrated from https://github.com/dotnet/coreclr/commit/
1e929c65e76778b18a888c46643a56cf6a740408
Stephen Toub [Fri, 7 Dec 2018 09:56:40 +0000 (04:56 -0500)]
Fix Microsoft.IO.Redist compilation string.Create compilation failure
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
ff199cc9ac6cef3679918d2e88d5c19f8090593e
Carol Eidt [Fri, 7 Dec 2018 14:20:49 +0000 (06:20 -0800)]
Merge pull request dotnet/coreclr#21431 from fiigii/fixbmi
Fix a bug that disabled Bmi1/2.X64
Commit migrated from https://github.com/dotnet/coreclr/commit/
77a5a729dd1ce008d4da2bc3f3b5775e4664dd75
Michal Strehovský [Fri, 7 Dec 2018 10:46:27 +0000 (11:46 +0100)]
Work around an MCG bug (dotnet/corertdotnet/coreclr#6658)
This is blocking TFS integrations.
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
13f8624a5526d9e71c6b8383c68be0afded8d596
Jan Vorlicek [Fri, 7 Dec 2018 09:32:59 +0000 (10:32 +0100)]
Fix SOS thread statics display (dotnet/coreclr#21426)
I've noticed that when dumping an object with thread locals using SOS
dumpobj command, I never get the thread locals. I've stepped through the
code in SOS that displays thread statics and found that for some strange
reason, it dismisses threads where DomainLocalModule doesn't have
"initialized" flag set for the given class. However, when runtime
accesses thread statics, it just checks "allocated" flag set for the
given class in the ThreadLocalModule. Removing the extra check for
DomainLocalModule fixed the problem and now thread statics are displayed
properly.
Commit migrated from https://github.com/dotnet/coreclr/commit/
add9f313447c44db85944cbff0d633f8852b5b9f
Jan Vorlicek [Fri, 7 Dec 2018 09:20:48 +0000 (10:20 +0100)]
Disable obsolete collectible corefx tests (dotnet/coreclr#21428)
Now that the COM interop support for collectible classes is in, we need
to disable couple of corefx tests that were checking that it fails.
Commit migrated from https://github.com/dotnet/coreclr/commit/
35b5555b96b57e9f5a969580abb5dfdfeb735732
Andy Ayers [Fri, 7 Dec 2018 08:12:04 +0000 (00:12 -0800)]
JIT: block general cloning of candidate calls (dotnet/coreclr#21418)
Follow-up from dotnet/coreclr#21270 and dotnet/coreclr#21414.
Block general cloning from inadvertently cloning a candidate call.
Add a separate path for cloning calls that are inline and guarded
devirtualization candidates for use by guarded devirtualization.
Callers need to take extra steps after cloning one of these calls
to properly fix everything up.
Also fix up some issues in the large comment for the fat calli
transformation.
Commit migrated from https://github.com/dotnet/coreclr/commit/
08be98cd4d13102958b21d8ad4b067f6fee1abb4
Fei Peng [Fri, 7 Dec 2018 01:42:17 +0000 (17:42 -0800)]
Fix a bug that disabled Bmi1/2.X64
Commit migrated from https://github.com/dotnet/coreclr/commit/
4c9b4f0537bfeb97c3f749bc0bd5c4560f090e9c
Tanner Gooding [Fri, 7 Dec 2018 01:15:03 +0000 (17:15 -0800)]
Moving CreateScalarUnsafe, ToScalar, Vector128.ToVector256Unsafe, and Vector256.GetLower to be intrinsics (dotnet/coreclr#21351)
* Moving CreateScalarUnsafe, ToScalar, Vector128.ToVector256Unsafe, and Vector256.GetLower to be intrinsics
* Adding containment support to the helper intrinsics
Commit migrated from https://github.com/dotnet/coreclr/commit/
1c18b3290b825e66e973e147eda8c7cca3e539c6
Carol Eidt [Thu, 6 Dec 2018 21:50:19 +0000 (13:50 -0800)]
Merge pull request dotnet/coreclr#21314 from CarolEidt/DontPromoteHwVector
Don't struct-promote opaque vectors
Commit migrated from https://github.com/dotnet/coreclr/commit/
61da68e56ab0b3dd4865d34aee0ca243cc702c09
Michelle McDaniel [Thu, 6 Dec 2018 21:18:28 +0000 (13:18 -0800)]
Revert "Move the perf jobs to Windows.10.Amd64.ClientRS4.DevEx.15.8.Open (dotnet/coreclr#21258)" (dotnet/coreclr#21412)
This reverts commit dotnet/coreclr@
5bb1b41dd19bca8f25b6d048c27d6708b86326cb.
Commit migrated from https://github.com/dotnet/coreclr/commit/
82693d8f088d2a3c0cc8e2d2f7de0a86b18b4df9
Stephen Toub [Thu, 6 Dec 2018 21:11:49 +0000 (16:11 -0500)]
Use Span instead of manual copy in MetadataImport.GetUserString (dotnet/coreclr#21405)
* Use Span instead of manual copy in MetadataImport.GetUserString
* Address PR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
4ea2c295ac521272af399580006c55d295782b5a
Stephen Toub [Thu, 6 Dec 2018 21:11:33 +0000 (16:11 -0500)]
Remove char[] allocation from EventPipePayloadDecoder for strings (dotnet/coreclr#21407)
Commit migrated from https://github.com/dotnet/coreclr/commit/
5786b4b607038417a51c2990f7c3db4990126ef7
Stephen Toub [Thu, 6 Dec 2018 21:11:09 +0000 (16:11 -0500)]
Use string.Create in Path.GetRandomFilePath (dotnet/coreclr#21410)
* Use string.Create in Path.GetRandomFilePath
Removes a good chunk of the unsafe code.
* Address PR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
18ef23757624db629f3a414c29b8a795e12b05ba
Andy Ayers [Thu, 6 Dec 2018 20:58:48 +0000 (12:58 -0800)]
JIT: move indirect call transformations to a new source file (dotnet/coreclr#21414)
Follow-up from a review comment in dotnet/coreclr#21270.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6e9c14ee4a3085b7b2a5e34bb2e26d71dbfc2fec
Stephen Toub [Thu, 6 Dec 2018 19:27:42 +0000 (14:27 -0500)]
Replace a few new string(char, 1) with char.ToString(char) (dotnet/coreclr#21406)
Slightly cleaner, slightly faster.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d1433bca815a32a9cb77b12f6baf0a64c61b20cf
Russ Keldorph [Wed, 5 Dec 2018 23:58:32 +0000 (15:58 -0800)]
Work around apparent bug in CMD's FOR /L
Hopefully this will mean that official build failures during the actual build
phase will correctly be reported as failures. There could be other places that
need to change, but this is all we know of right now.
Fixes dotnet/coreclr#18788 (at least part of it)
Commit migrated from https://github.com/dotnet/coreclr/commit/
1c8dd79c74e8021f5e2fb9c05116e69848470c87
Stephen Toub [Thu, 6 Dec 2018 18:41:54 +0000 (13:41 -0500)]
Fix CancellationTokenRegistration.Token after CTS.Dispose (dotnet/coreclr#21394)
CTR.Token should never throw, but it's currently throwing an ObjectDisposedException if the associated CancellationTokenSource has been disposed.
Commit migrated from https://github.com/dotnet/coreclr/commit/
588faa52bd2269ca3158c2b0c9199b0b9f90ec11
Egor Chesakov [Thu, 6 Dec 2018 18:22:50 +0000 (10:22 -0800)]
Run MSBuild in parallel when submitting jobs to Helix (dotnet/coreclr#21390)
Commit migrated from https://github.com/dotnet/coreclr/commit/
2161d9d1789d28b1e56f4edff47572b12585a680
Jeremy Koritzinsky [Thu, 6 Dec 2018 17:56:21 +0000 (09:56 -0800)]
Port CustomMarshalers.dll to C# and .NET Core (dotnet/coreclr#21343)
* Import CustomMarshalers from corefx PR.
* Add tests for marshalling IEnumerator and IEnumerable using the System.Runtime.InteropServices.CustomMarshalers.
* Verify that the marshaller is used in the managed -> native direction in the tests.
* Remove #if's
* PR Feedback.
* Move ComHelpers.h into interop common headers.
* Add some template machinery to ensure that we don't accidentally pass in an incorrect type into DoQueryInterface.
* Add VariantClear
* Make marshalers internal and root them in ILLinkTrim.xml
* Revert enable-if machinery.
* Add tests for the pass-through unwrapping done by the EnumeratorToEnumVariantMarshaler.
* Remove some of my helper code.
* Added todo about exposing EnumerableToDispatchMarshaler.
* PR Feedback.
* Removed the last placement new.
* Use the runtime hooks to enable us to not have to publically expose the custom marshalers.
* Remove out of date comments.
Commit migrated from https://github.com/dotnet/coreclr/commit/
5955967d808d1d88ef927235276d3ca82b5d9363
Andy Ayers [Thu, 6 Dec 2018 17:03:31 +0000 (09:03 -0800)]
Guarded devirtualization foundations (dotnet/coreclr#21270)
Lay the groundwork for guarded devirtualization of virtual and interface
calls in the jit.
Introduce the notion of a guarded devirtualization candidate and identify
these if regular devirtualization fails. Use simple heuristics to produce
a class to guess for. Require that the method that would be invoked if the class
guess is correct be a plausible inline candidate.
Generalize the calli transformer to become an indirect call transformer.
This runs after importation because it needs to introduce control flow and
runs before inlining so that the new direct calls it introduces can be inlined.
Implement the transformation to duplicate the call site, devirtualize on the side
where the class is now known exactly, and turn the resulting direct call into an
inline candidate.
Add a motivation and design document.
Commit migrated from https://github.com/dotnet/coreclr/commit/
045f470f71cfcedf3eb7ff248f25bf29619d9a88
Egor Chesakov [Thu, 6 Dec 2018 03:41:47 +0000 (19:41 -0800)]
Use array syntax in eng/test-job.yml (dotnet/coreclr#21393)
Update eng/test-job.yml to use array syntax after changing from phase schema to job schema
Commit migrated from https://github.com/dotnet/coreclr/commit/
7454475cd4f5575d2a2db3879bb164609e8bd6ad
Jan Kotas [Thu, 6 Dec 2018 01:39:33 +0000 (17:39 -0800)]
Delete FEATURE_TREAT_NI_AS_MSIL_DURING_DIAGNOSTICS (dotnet/coreclr#21387)
Always defined in .NET Core
Commit migrated from https://github.com/dotnet/coreclr/commit/
2376cd18c8b9ff850092817ea31533e58a85369f
Jan Vorlicek [Thu, 6 Dec 2018 00:21:43 +0000 (01:21 +0100)]
Disable native image usage for collectible assemblies (dotnet/coreclr#21378)
* Disable native image usage for collectible assemblies
There are couple of issues with using native images as collectible
assemblies. The most important one is that statics handling is different
for collectible and non-collectible classes. Collectible classes have
statics stored in per class allocated blocks while the non-collectible ones
are all stored per module. So the code that accesses them needs to use
different offsets relative to a statics base address in each of these cases.
The crossgen generates just a single form of code that corresponds to the
non-collectible case and so such code cannot be used when a module is
loaded as collectible.
To mitigate that, we disable using the native code from crossgen-ed
assemblies and JIT all the code instead.
We may want to revisit this in the future and e.g. unify the statics
handling for collectible and non-collectible classes.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f940ccc633088d657e6d34c1e56bb0f0be4a4a73
Egor Chesakov [Wed, 5 Dec 2018 23:29:48 +0000 (15:29 -0800)]
Refactor genAllocLclFrame into two architecture-specific functions (dotnet/coreclr#21074)
Commit migrated from https://github.com/dotnet/coreclr/commit/
f5f19dbbc2612390d145bfa7c896784fbc643436
Michelle McDaniel [Wed, 5 Dec 2018 23:02:57 +0000 (15:02 -0800)]
Move the perf jobs to Windows.10.Amd64.ClientRS4.DevEx.15.8.Open (dotnet/coreclr#21258)
Commit migrated from https://github.com/dotnet/coreclr/commit/
5bb1b41dd19bca8f25b6d048c27d6708b86326cb
Brian Sullivan [Wed, 5 Dec 2018 22:26:55 +0000 (14:26 -0800)]
Merge pull request dotnet/coreclr#21322 from mikedn/div-small-int
Fix lclvar "cloning" in const division lowering
Commit migrated from https://github.com/dotnet/coreclr/commit/
fdf722ecdea2de7044795b51c3e0d212cc2d8f68
Jarret Shook [Wed, 5 Dec 2018 22:00:32 +0000 (14:00 -0800)]
Change from phases to jobs (dotnet/coreclr#21384)
* Initial change to use jobs/jobs.yml
* Fix If syntax
* Hopefully fix more syntax
* Change from jobs to job
* change from queue to pool
* change scope of container name
* Change build to sync and init tools inside build.sh
* Add workspace
Commit migrated from https://github.com/dotnet/coreclr/commit/
0ab2780c421f5b18549d9f215108e587e6fcbee6
Swaroop Sridhar [Wed, 5 Dec 2018 20:55:39 +0000 (12:55 -0800)]
Suppress a CMake Warning (dotnet/coreclr#21147)
* Suppress a CMake Warning
This change adds a local cmake_policy rule to suppress
warnings about libraries with unicode names.
```
CMake Warning (dev) at tests/src/Interop/PInvoke/DllImportPath/CMakeLists.txt:14 (add_library):
Policy CMP0037 is not set: Target names should not be reserved and should
match a validity pattern. Run "cmake --help-policy CMP0037" for policy
details. Use the cmake_policy command to set the policy and suppress this
warning.
The target name "DllImportPath_U�n�i�c�o�d�e" is reserved or
not valid for certain CMake features, such as generator expressions, and
may result in undefined behavior.
This warning is for project developers. Use -Wno-dev to suppress it.
```
* Update tests/src/Interop/PInvoke/DllImportPath/CMakeLists.txt
Co-Authored-By: swaroop-sridhar <Swaroop.Sridhar@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
31a132a9c58facbfde91de6119df8c4fbfa52d48
Jeremy Koritzinsky [Wed, 5 Dec 2018 18:04:52 +0000 (10:04 -0800)]
Add tests for marshalling RuntimeHandle types. (dotnet/coreclr#21091)
* Add tests for marshalling runtime handles.
* Remove DLL signature for impossible test
Commit migrated from https://github.com/dotnet/coreclr/commit/
a3304a1fc6a442efc54f2fc765e6877ffba14a5a
Steve MacLean [Wed, 5 Dec 2018 18:03:56 +0000 (13:03 -0500)]
Remove FromGAC & OnTPAList (dotnet/coreclr#21371)
* Remove FromGAC & OnTPAList
* PR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
339694220684c079698bb0e3656011b9522d26f3
Jan Kotas [Wed, 5 Dec 2018 16:01:02 +0000 (08:01 -0800)]
Revert Array enumerator behavior change (dotnet/coreclr#21368)
Fixes dotnet/coreclr#21046
Commit migrated from https://github.com/dotnet/coreclr/commit/
6496481b4eec064188a50bcf5132191273d088f6
Aaron Robinson [Wed, 5 Dec 2018 04:13:48 +0000 (20:13 -0800)]
Convert SDK projects into non-SDK projects (dotnet/coreclr#21369)
Commit migrated from https://github.com/dotnet/coreclr/commit/
e8d67d23b2edcb2200f2601ac74c421d98b6c97f
Sergey Andreenko [Wed, 5 Dec 2018 03:58:32 +0000 (19:58 -0800)]
Add repro for `(reg2 == REG_NEXT(reg1)) || (reg2 == REG_LR)` assert in `codegenarm64`. (dotnet/coreclr#21344)
* Add a repro.
* Exclude the failing test.
* fix formatting
Commit migrated from https://github.com/dotnet/coreclr/commit/
5e6cefa8887613fc18a8cc9be54f38c7907adca8
Steve MacLean [Wed, 5 Dec 2018 02:57:17 +0000 (21:57 -0500)]
Fix XML comments on *nux (dotnet/coreclr#21372)
Commit migrated from https://github.com/dotnet/coreclr/commit/
f794a0c783f36fa5f1f85060fce86dbf05e09cf0
Aaron Robinson [Wed, 5 Dec 2018 01:59:28 +0000 (17:59 -0800)]
Additional tests for type equivalence (dotnet/coreclr#21340)
* Additional tests for type equivalence
Commit migrated from https://github.com/dotnet/coreclr/commit/
ce6cdca8af8da8e1c60d955e2f168467f9809aaa
Stephen Toub [Wed, 5 Dec 2018 00:14:33 +0000 (19:14 -0500)]
Merge pull request dotnet/coreclr#21313 from stephentoub/asynciteratorattr
Add AsyncIteratorStateMachineAttribute
Commit migrated from https://github.com/dotnet/coreclr/commit/
3af62c9332b15792aaeed21f25bb69218812f962
Fei Peng [Wed, 5 Dec 2018 00:06:39 +0000 (16:06 -0800)]
Improve BMI2 MultiplyNoFlags APIs (dotnet/coreclr#21362)
Commit migrated from https://github.com/dotnet/coreclr/commit/
2217719e39762dc4bb1bb8094b4c4ab86229b004
Mike McLaughlin [Tue, 4 Dec 2018 20:51:50 +0000 (12:51 -0800)]
Update the symbol uploader/publisher to version 1.0.0-beta-63604-05. (dotnet/coreclr#21360)
Commit migrated from https://github.com/dotnet/coreclr/commit/
71255bc05db24f078f334ead245898b817c8a06e
Fei Peng [Tue, 4 Dec 2018 20:09:53 +0000 (12:09 -0800)]
Move more SSE2 intrinsic tests to template
Commit migrated from https://github.com/dotnet/coreclr/commit/
ddd6ddb6075e74d253146a99cf84fac77e18bb7e
Fei Peng [Tue, 4 Dec 2018 19:41:02 +0000 (11:41 -0800)]
Remove redundant checks in test templates
Commit migrated from https://github.com/dotnet/coreclr/commit/
86e6443684982ffd13f6cdfb4ead82f586063934
Stephen Toub [Tue, 4 Dec 2018 18:55:52 +0000 (13:55 -0500)]
Merge pull request dotnet/coreclr#21356 from stephentoub/xmlcomments
Fix lots of malformed XML comments
Commit migrated from https://github.com/dotnet/coreclr/commit/
2e7713437a42b6c9abd401368ae1004deed988be
dotnet-maestro-bot [Tue, 4 Dec 2018 17:52:55 +0000 (09:52 -0800)]
Update CoreClr, CoreFx, CoreSetup to preview-27204-02, preview.18604.2, preview-27204-02, respectively (dotnet/coreclr#21353)
Commit migrated from https://github.com/dotnet/coreclr/commit/
359d0ee4dab568d29bdc2d6b0bbae8439aa30815
Stephen Toub [Tue, 4 Dec 2018 16:30:19 +0000 (11:30 -0500)]
Delete dead code in Task<T>
Commit migrated from https://github.com/dotnet/coreclr/commit/
85f2d14b0c5c44f5669e50d3d6486fa9500aa103
Stephen Toub [Tue, 4 Dec 2018 16:28:52 +0000 (11:28 -0500)]
Enable building/validating XML comments in CoreLib
Commit migrated from https://github.com/dotnet/coreclr/commit/
fe1806b0b650fb9ec239b347d8eda72487f11aee
Stephen Toub [Tue, 4 Dec 2018 15:47:21 +0000 (10:47 -0500)]
Fix lots of malformed XML comments
These are causing errors in the source.dot.net build. Turning on DocumentationFile and suppressing 1591, 1573, and 0419, Corelib builds clean after these changes.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1b3dc3356cb6acd7025d50202b7003f0244fb7ed
dotnet-maestro-bot [Tue, 4 Dec 2018 13:52:04 +0000 (05:52 -0800)]
Update CoreClr, CoreFx, CoreSetup to preview-27204-01, preview.18604.1, preview-27203-03, respectively (dotnet/coreclr#21346)
Commit migrated from https://github.com/dotnet/coreclr/commit/
f7c3f1a79beda467bbf956407f46a9ec9071e39a
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
Carol Eidt [Fri, 30 Nov 2018 23:02:00 +0000 (15:02 -0800)]
Don't struct-promote opaque vectors
The hardware vector types: `Vector64<T>`, `Vector128<T>` and `Vector256<T>` are declared
as having one or more fields of `ulong`. However, the JIT shouldn't be promoting these
fields to local variables. It is almost never the right type, and the intrinsics in any
case are not designed to cooperate with promoted fields (i.e. an index of a `Vector<ulong>`
won't map to the promoted lclVar).
Most importantly, it causes all copies of the vector to be done as 64-bit integer loads
and stores.
Finally, it will be important, as we support vector ABIs, to distinguish the handling of
the fixed-size vectors (`Vector2`, `Vector3` and `Vector4`) which *are* considered to be
normal structs of N floats, from the opaque types which will be passed in vector registers.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f06134ed869442f28cb0ab47ef2372d539a7e5af
Mike Danes [Sat, 1 Dec 2018 13:35:55 +0000 (15:35 +0200)]
Fix lclvar "cloning" in const division lowering
The existing code was creating new uses of existing variables using the type of the division operation instead of the type of the existing variable use. There is one rare case when this does not work properly:
* if the variable is "normalize on load" (that implies that it is also a small int type variable)
* and if the variable is previously assigned to such that a subrange assertion is generated
* and if morph decides not to insert the load normalization cast due to the subrange assertion
* and if the variable is not enregistered
Then the assignment stores 2 bytes to the stack location but the uses generated by the division lowering code read 4 bytes because they have TYP_INT.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b27167e3e89d51cc6901275eb68289631ae72aa4
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
Stephen Toub [Sat, 1 Dec 2018 04:31:11 +0000 (23:31 -0500)]
Address PR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
670d732b5ab531eafde00ad91c042f56866eef46
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
Stephen Toub [Fri, 30 Nov 2018 22:24:19 +0000 (17:24 -0500)]
Add AsyncIteratorStateMachineAttribute
Exactly follows the design of AsyncStateMachineAttribute and IteratorStateMachineAttribute; the only thing different is the type name, "AsyncIterator" instead of "Async" and "Iterator".
Commit migrated from https://github.com/dotnet/coreclr/commit/
0f56562f58398b45e9b9ab4419e65cc0adffd6a5
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