platform/upstream/dotnet/runtime.git
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 agoFix Formatting Japanese First Year on Linux (dotnet/coreclr#21039)
Tarek Mahmoud Sayed [Fri, 16 Nov 2018 17:02:02 +0000 (09:02 -0800)]
Fix Formatting Japanese First Year on Linux (dotnet/coreclr#21039)

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

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

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

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

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

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

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

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

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

5 years agoAdd simple tests for ArrayWithOffset marshaling. (dotnet/coreclr#21013)
Jeremy Koritzinsky [Fri, 16 Nov 2018 07:48:16 +0000 (23:48 -0800)]
Add simple tests for ArrayWithOffset marshaling. (dotnet/coreclr#21013)

* Add simple tests for ArrayWithOffset marshaling.

* PR Feedback.

* Fix visibility

* Fix DllImport library name

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

5 years agoAdd Interop/PInvoke/Attributes tests (dotnet/coreclr#19107)
Zeng Jiang [Fri, 16 Nov 2018 07:47:51 +0000 (15:47 +0800)]
Add Interop/PInvoke/Attributes tests (dotnet/coreclr#19107)

* Add Interop/PInvoke/Attributes tests

* Fix PR comments

* Fix compile warnings

* Remove comment

* Clean up test files to match current build system.

* Fix up test and make it windows only (as FEATURE_LCID is only enabled on Windows)

* Fixed string const issues.

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

5 years agoAdd PInvoke/CriticalHandles tests (dotnet/coreclr#19297)
Zeng Jiang [Fri, 16 Nov 2018 07:46:51 +0000 (15:46 +0800)]
Add PInvoke/CriticalHandles tests (dotnet/coreclr#19297)

* Add PInvoke/CreticalHandles tests

* Bring up to current infrastructure.

* Fix ReverseTest.

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

5 years agoDelete HAS_FLS_SUPPORT and related code (dotnet/coreclr#21035)
Jan Kotas [Fri, 16 Nov 2018 03:35:35 +0000 (19:35 -0800)]
Delete HAS_FLS_SUPPORT and related code (dotnet/coreclr#21035)

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

5 years agoFixed signatures of ref readonly methods in JIT ETW events (dotnet/coreclr#20981)
szehetner [Fri, 16 Nov 2018 02:14:03 +0000 (03:14 +0100)]
Fixed signatures of ref readonly methods in JIT ETW events (dotnet/coreclr#20981)

* fixed ETW method signature of ref readonly methods

* added type token

* extract method for printing classes

* fixed optional_modifier, use CorSigUncompressToken_EndPtr

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

5 years agoAdd PInvoke/SafeHandles tests (dotnet/coreclr#19330)
Zeng Jiang [Fri, 16 Nov 2018 01:49:41 +0000 (09:49 +0800)]
Add PInvoke/SafeHandles tests (dotnet/coreclr#19330)

* Add PInvoke/SafeHandles tests

* Fix compile warnings - include header file with relative path

* Run SafeHandle tests only on Windows. The tests are very Windows-centric, so we'd have to do quite a bit of a re-write to get them working xplat.

* Fix CMake project references.

* Fix interface CMakeLists project reference.

* Add casts for string literals.

* Use LPOLESTR and the W macro instead of OLECHAR* cast and L prefix.

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

5 years agoAdd Tests for VBByRefStr marshalling (dotnet/coreclr#20982)
Jeremy Koritzinsky [Fri, 16 Nov 2018 01:16:11 +0000 (17:16 -0800)]
Add Tests for VBByRefStr marshalling (dotnet/coreclr#20982)

* Add tests for VBByRefStr marshalling.

* Compile native for VBByRefStr on all platforms.

* Fix encoding.

* PR Feedback.

* Fix PInvokeDefs file.

* Fix visibility

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

5 years agoAdd tests for marshalling as VARIANT_BOOL or VARIANT (dotnet/coreclr#20856)
Jeremy Koritzinsky [Fri, 16 Nov 2018 01:14:35 +0000 (17:14 -0800)]
Add tests for marshalling as VARIANT_BOOL or VARIANT (dotnet/coreclr#20856)

* Add native side impl for VARIANT_BOOL test.

* More bool native code.

* Add VariantBool marshalling tests.

* Add infrastructure for tests for object -> VARIANT marshalling.

* Add variant tests for all built-in types.

* Clean up Variant tests.

* Add test for passing custom structure as object.

* Add test for VARIANT_BOOL byref.

* Added byref tests for VARIANT marshalling.

* Add field marshalling tests for VARIANT.

* Move ByValue tests to not have two sources of truth.

* Make managed code the one source of truth.

* Clean up formatting/unused methods.

* Clean up some whitespace issues.

* Add tests for BStrWrapper and CurrencyWrapper marshalling.

* Add UnknownWrapper tests.

* Add a test for VariantWrapper and PInvoke.

* PR Feedback.

* Remove ToString.

* Fix visibility

* Fix MSBuild import path.

* Clean up Variant tests.

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

5 years agoUpdate BuildTools, CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-03415...
dotnet-maestro-bot [Fri, 16 Nov 2018 00:37:39 +0000 (16:37 -0800)]
Update BuildTools, CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-03415-01, preview-27115-03, preview.18565.4, preview-27115-04, master-20181115-0045, master-20181115-0044, respectively (dotnet/coreclr#21005)

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

5 years agoAdd PInvoke/SizeParamIndex tests (dotnet/coreclr#19348)
Zeng Jiang [Fri, 16 Nov 2018 00:31:38 +0000 (08:31 +0800)]
Add PInvoke/SizeParamIndex tests (dotnet/coreclr#19348)

* Add PInvoke/SizeParamIndex tests

* Fix compile warnings

* First pass cleaning up native code.

* Get ParamSizeIndex tests working xplat (excluding the BSTR array tests)

* Fix incorrect definition of ULONG off-windows.

* Disable reverse-PInvoke throwing test off-Windows.

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

5 years agoStop using Hostx86/arm crossgen in crossgen_comparison scenario (dotnet/coreclr#21021)
Egor Chesakov [Thu, 15 Nov 2018 22:53:08 +0000 (14:53 -0800)]
Stop using Hostx86/arm crossgen in crossgen_comparison scenario (dotnet/coreclr#21021)

* And also create Linux arm64 crossgen_comparison scenarios in netci.groovy

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

5 years agoAdd PInvoke/DllImportpath tests (dotnet/coreclr#19270)
Zeng Jiang [Thu, 15 Nov 2018 22:51:02 +0000 (06:51 +0800)]
Add PInvoke/DllImportpath tests (dotnet/coreclr#19270)

* Add PInvoke/DllImportpath tests

* Refactor test to current toolset and remove Windows-only Path API searching.

* Remove explicit calling convention from managed and add correct convention to test.

* Get environment test passing on Unix.

* Update test to pass off-Windows.

* Include feature/platform defines in tests.

* Fix environment test (again).

* Remove zero-width character that's breaking CI

* Fix zero-width character I missed.

* Remove invalid parens around LD_LIBRARY_PATH

* Ensure the path added to the LD_LIBRARY_PATH exists before the test starts.

* Combine all DllImportPath CMakeLists.txt files into one file.

* Include clr.coreclr.props when also including clr.defines.targets so we get the feature defines correctly as well.

* Disable unicode test for our OSX 10.12 CI builds.

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

5 years agoAdd tests for ANSI BSTRs (dotnet/coreclr#20985)
Jeremy Koritzinsky [Thu, 15 Nov 2018 22:50:00 +0000 (14:50 -0800)]
Add tests for ANSI BSTRs (dotnet/coreclr#20985)

* Add tests for ANSI BSTRs

* Fix signed/unsigned mismatch in comparisons. Add xplatform include

* Use regular memcpy

* Enable ANSI BSTR off-windows.

* Also enable UnmanagedType.TBStr off-Windows since both BStr variants are available off-Windows.

* Make sure the AnsiBSTR marshaller is hooked up off-Windows.

* Remove a few more ifdefs I missed.

* remove ifdefs around binder definitions and the C# stub helpers.

* PR Feedback.

* Add xplat ARRAYSIZE macro

* Move xplat ARRAYSIZE to platformdefines.h

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

5 years agoMerge pull request dotnet/coreclr#21008 from briansull/new-toolset
Brian Sullivan [Thu, 15 Nov 2018 22:45:02 +0000 (14:45 -0800)]
Merge pull request dotnet/coreclr#21008 from briansull/new-toolset

Fix warnings from the new toolset

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

5 years agoFixes for Azure DevOps official build (dotnet/coreclr#21017)
Morgan Brown [Thu, 15 Nov 2018 22:23:58 +0000 (14:23 -0800)]
Fixes for Azure DevOps official build (dotnet/coreclr#21017)

* Fix endpoint for internal jobs

 Fix external vs internal queues

 Properly quote scenarios argument to msbuild

 Increase queue timeout since most P1 jobs couldn't finish in time

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

5 years agoAllow rune enumeration from string and ROS<char> (dotnet/coreclr#21007)
Levi Broderick [Thu, 15 Nov 2018 21:56:55 +0000 (13:56 -0800)]
Allow rune enumeration from string and ROS<char> (dotnet/coreclr#21007)

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

5 years agoAdd PInvoke/Array tests (dotnet/coreclr#19266)
Zeng Jiang [Thu, 15 Nov 2018 21:32:25 +0000 (05:32 +0800)]
Add PInvoke/Array tests (dotnet/coreclr#19266)

* Add PInvoke/Array tests

* Fix compile warnings

* Get tests passing on Windows again.

* Change error_t type to work xplat.

* Change error_t in types.h as well

* Clean up build slightly.

* PR feedback and native test code refactoring.

* Clean up header.

* Add a xplat implementation of _itoa_s for our tests.

* CHAR -> char

* Make calling convention cdecl to avoid stdcall mangling.

* Make return test native code cdecl as well (missed it before).

* Fix bug in platformdefines _itoa_s

* Return early in TP_itoX_s when num == 0

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

5 years agoUpdate CrstTypeTool to produce spaces (dotnet/coreclr#21029)
David Wrighton [Thu, 15 Nov 2018 20:06:08 +0000 (12:06 -0800)]
Update CrstTypeTool to produce spaces (dotnet/coreclr#21029)

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

5 years agoChanged back to use m_filtered
Brian Sullivan [Thu, 15 Nov 2018 19:32:47 +0000 (11:32 -0800)]
Changed back to use m_filtered

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

5 years agoCode Review feedback
Brian Sullivan [Thu, 15 Nov 2018 19:03:59 +0000 (11:03 -0800)]
Code Review feedback

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

5 years agoCombine ExcludeList in AltJit scenarios for both host and altjit archs (dotnet/corecl...
Egor Chesakov [Thu, 15 Nov 2018 18:43:05 +0000 (10:43 -0800)]
Combine ExcludeList in AltJit scenarios for both host and altjit archs (dotnet/coreclr#21018)

* Add -altjitarch command line argument in tests/runtest.cmd and -altjit_arch in tests/runtest.py

* Specify altjitarch in for x86_arm_altjit and x64_arm64_altjit jobs in netci.groovy

* Use AltJitArch MSBuild variable in tests/issues.targets to exclude tests based on either BuildArch or AltJitArch since both two JITs are running in altjit scenarios

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

5 years agoAdd PInvoke/Miscellaneous tests (dotnet/coreclr#19326)
Zeng Jiang [Thu, 15 Nov 2018 18:10:25 +0000 (02:10 +0800)]
Add PInvoke/Miscellaneous tests (dotnet/coreclr#19326)

* Add PInvoke/Miscellaneous tests

* Clean up HandleRef test.

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

5 years agoUpdate Unicode data and optimize CharUnicodeInfo indexes (dotnet/coreclr#20983)
Pent Ploompuu [Thu, 15 Nov 2018 17:04:19 +0000 (19:04 +0200)]
Update Unicode data and optimize CharUnicodeInfo indexes (dotnet/coreclr#20983)

* Update Unicode data and optimize CharUnicodeInfo indexes

* Add new GenUnicodeProp to tools

* Add licence headers

* Add big-endian support

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

5 years agoAllow supressing exceptions in diamond inheritance cases (dotnet/coreclr#20458)
Michal Strehovský [Thu, 15 Nov 2018 13:08:27 +0000 (14:08 +0100)]
Allow supressing exceptions in diamond inheritance cases (dotnet/coreclr#20458)

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

5 years agoRe-enable optimizations in interop helper functions. (dotnet/coreclr#21016)
Aaron Robinson [Thu, 15 Nov 2018 07:37:45 +0000 (23:37 -0800)]
Re-enable optimizations in interop helper functions. (dotnet/coreclr#21016)

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

5 years agoFix invalid tests for COM native server (dotnet/coreclr#21012)
Aaron Robinson [Thu, 15 Nov 2018 02:54:12 +0000 (18:54 -0800)]
Fix invalid tests for COM native server (dotnet/coreclr#21012)

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

5 years agoDisable COM tests being CrossGen'd (dotnet/coreclr#21010)
Aaron Robinson [Thu, 15 Nov 2018 02:52:35 +0000 (18:52 -0800)]
Disable COM tests being CrossGen'd (dotnet/coreclr#21010)

* Disable running CrossGen on COM tests since the CrossGen tool doesn't support app manifests on Windows.

* Update ObjectStackAllocation test to use MSBuild property to disable CrossGen support.

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

5 years agoAdd test for marshalling ArgIterators on Windows (dotnet/coreclr#20888)
Jeremy Koritzinsky [Wed, 14 Nov 2018 23:18:23 +0000 (15:18 -0800)]
Add test for marshalling ArgIterators on Windows (dotnet/coreclr#20888)

* Add (windows-only) tests for __arglist and ArgIterator marshalling.

* Add explicit calling convention notation to pinvokes.

* Add license header

* Update VarargsTest.cs

* Fix calling conventions.

* PR Feedback

* Add explicit calling convention.

* Update VarargsNative.cpp

* Don't reference System.Private.Corelib directly

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

5 years agoUse correct printf type specifier
Brian Sullivan [Wed, 14 Nov 2018 22:20:26 +0000 (14:20 -0800)]
Use correct printf type specifier

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

5 years agoJit changes from the desktop Toolset Update
Brian Sullivan [Wed, 14 Nov 2018 21:40:55 +0000 (13:40 -0800)]
Jit changes from the desktop Toolset Update

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

5 years agoUpdate CoreFX-in-CoreCLR testing instructions (dotnet/coreclr#21002)
Bruce Forstall [Wed, 14 Nov 2018 21:52:34 +0000 (13:52 -0800)]
Update CoreFX-in-CoreCLR testing instructions (dotnet/coreclr#21002)

Update to reflect changes in the repo, and fix various formatting issues.

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

5 years agoFix arm64 PUTARG_STK(contained OBJ(contained LCL_FLD_ADDR)). (dotnet/coreclr#20995)
Sergey Andreenko [Wed, 14 Nov 2018 21:46:44 +0000 (13:46 -0800)]
Fix arm64 PUTARG_STK(contained OBJ(contained LCL_FLD_ADDR)). (dotnet/coreclr#20995)

* add a repro test

* Fix the issue.

Do not mark `GT_OBJ` as containned for arm64.
We already do the same in `NewPutArg`.

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

5 years agoFix warnings because of Bool incompatibality
Swaroop Sridhar [Wed, 14 Nov 2018 03:21:13 +0000 (19:21 -0800)]
Fix warnings because of Bool incompatibality

Fix a compile warning because of bool vs BOOL incompatibality.
Fixes a build break in the new VS compiler.

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

5 years agoCleanup on the new Math APIs (dotnet/coreclr#20993)
Tanner Gooding [Wed, 14 Nov 2018 15:20:49 +0000 (07:20 -0800)]
Cleanup on the new Math APIs (dotnet/coreclr#20993)

* Updating the cached HAVE_COMPATIBLE_ILOGB0_EXITCODE and HAVE_COMPATIBLE_ILOGBNAN_EXITCODE to 1

* Fixing MaxMagnitude and MinMagnitude to correctly handle the case when ax and ay are equal

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

5 years agoUpdate CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview-27113-06, preview...
dotnet-maestro-bot [Wed, 14 Nov 2018 13:02:03 +0000 (05:02 -0800)]
Update CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview-27113-06, preview.18563.5, preview-27114-01, master-20181114-0045, master-20181114-0044, respectively (dotnet/coreclr#20950)

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

5 years agoMerge pull request dotnet/coreclr#20961 from briansull/const-eval-fix
Brian Sullivan [Wed, 14 Nov 2018 03:21:07 +0000 (19:21 -0800)]
Merge pull request dotnet/coreclr#20961 from briansull/const-eval-fix

Improve CanEvalForConstantArgs

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

5 years agoUndo a workaround added in dotnet/coreclr#20442.
Eugene Rozenfeld [Tue, 13 Nov 2018 23:35:05 +0000 (15:35 -0800)]
Undo a workaround added in dotnet/coreclr#20442.

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

5 years agoFix for bug 20499.
Eugene Rozenfeld [Sat, 10 Nov 2018 00:53:49 +0000 (16:53 -0800)]
Fix for bug 20499.

When the jit is copying a struct-typed return to the return local in a synchronous method on arm64,
it ends up invoking an importer utility outside the importer, where impTreeLast is not set.

The call sequence is
fgMorphBlocks --> gtNewTempAssign --> impAssignStruct --> impAssignStructPtr --> impAppendTree

When impAssignStructPtr sees GT_COMMA src nodes, it unwraps them and inserts additional statements.
The fix is to pass an insertion point statement through this call chain to prevent impAssignStruct
and impAssignStructPtr from calling impAppendTree outside of the importer.

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

5 years agoDisable R2R for object stack allocation tests.
Eugene Rozenfeld [Tue, 13 Nov 2018 21:15:12 +0000 (13:15 -0800)]
Disable R2R for object stack allocation tests.

Object stack allocation currently doesn't work in R2R mode
because we lower R2R allocations to helper calls in the importer.
That will be fixed but for now we need to disable R2R for these tests.

Fixes dotnet/coreclr#20977.

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

5 years agoInitial commit for System.Text.Rune (dotnet/coreclr#20935)
Levi Broderick [Wed, 14 Nov 2018 01:05:02 +0000 (17:05 -0800)]
Initial commit for System.Text.Rune (dotnet/coreclr#20935)

This type represents a Unicode scalar value ([ U+0000..U+D7FF ], inclusive; and [ U+E000..U+10FFFF ], inclusive). The primary scenario is for having a consistent representation of Unicode data regardless of the underlying input encoding type, including abstracting away surrogate code points.

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

5 years agoFix CanEvalForConstantArgs(VNFunc vnf)
Brian Sullivan [Mon, 12 Nov 2018 23:36:18 +0000 (15:36 -0800)]
Fix CanEvalForConstantArgs(VNFunc vnf)

Change the default return value for new GenTree nodes to false

This allows new nodes to be added without immediately implementing
the compile time folding logic.

Added method header comment for CanEvalForConstantArgs

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

5 years agon_heaps needs to be initialized before init_static_data is called (dotnet/coreclr...
Maoni Stephens [Tue, 13 Nov 2018 23:17:18 +0000 (15:17 -0800)]
n_heaps needs to be initialized before init_static_data is called (dotnet/coreclr#20968)

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

5 years agoSpecify version of xunit.console.dll during the custom build (dotnet/coreclr#20975)
Egor Chesakov [Tue, 13 Nov 2018 22:37:04 +0000 (14:37 -0800)]
Specify version of xunit.console.dll during the custom build (dotnet/coreclr#20975)

* Use stable Xunit v2.4.1
* Use xunit.console.dll with specified assembly version to avoid issues with Ready2Run jobs
* Update comment regarding building xunit with specified version in tests/runtest.py

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

5 years agoAdd tests for AsAny Marshalling (dotnet/coreclr#20963)
Jeremy Koritzinsky [Tue, 13 Nov 2018 22:13:57 +0000 (14:13 -0800)]
Add tests for AsAny Marshalling (dotnet/coreclr#20963)

* Copy over tests from .NET Framework.

* Convert tests to use CoreCLRTestLibrary. Clean up tests that weren't self-consistent.

* Pass in context for non best-fit-mapping tests.

* Move around/group declarations.

* Clean up typedef names/usage.

* Fix signedness.

* Use ptrdiff_t and size_t instead of C99 types.

* Fix printf specifiers

* Remove unneeded now duplicate typedef

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

5 years agoChange GetAppDomain to return AppDomain from the global static (dotnet/coreclr#20910)
Jan Vorlicek [Tue, 13 Nov 2018 21:51:20 +0000 (22:51 +0100)]
Change GetAppDomain to return AppDomain from the global static (dotnet/coreclr#20910)

* Change GetAppDomain to return it from the global static

The current implementation of the GetAppDomain takes it from the TLS for
the current thread. But we only have one AppDomain in the system, so we
can change it to return just that one.
I have still left the ThreadLocalInfo.m_pAppDomain and its setter
present, because SOS uses that to access the AppDomain and the SOS needs
to be runtime versino agnostic.
This makes it to perform better for Unix where accessing TLS is not
trivial.

* Move the AppDomain instance pointer to own static

To enable access to the one and only AppDomain without unnecessary
indirections, I have moved the pointer out of the SystemDomain class.

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

5 years agoInitial support for normalized 'naked' R2RDump output (dotnet/coreclr#20875)
Tomáš Rylek [Tue, 13 Nov 2018 21:28:32 +0000 (22:28 +0100)]
Initial support for normalized 'naked' R2RDump output (dotnet/coreclr#20875)

* Initial support for normalized 'naked' R2RDump output

This change introduces a new option "--naked" that takes output
normalization even further - it intentionally leaves out any
position information to make the output easier to diff between
CPAOT and Crossgen.

One other new option is "--entrypoints" which dumps a plain
list of JITted methods in the R2R executable. This can be used
for comparisons between CPAOT and Crossgen and / or for static
analysis of what methods were actually emitted by the compiler.

* Addressed Zach's PR feedback

1) Added argument consistency check for the invalid combination
"--naked" + "--raw".

2) Added dump of multi-dimensional array lower bounds and sizes
when available.

Thanks

Tomas

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

5 years agoUnify ThrowHelper style (dotnet/coreclr#20974)
Jan Kotas [Tue, 13 Nov 2018 21:20:35 +0000 (13:20 -0800)]
Unify ThrowHelper style (dotnet/coreclr#20974)

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

5 years agoIncrease FreeBSD job time allowance
Russ Keldorph [Tue, 13 Nov 2018 15:24:44 +0000 (07:24 -0800)]
Increase FreeBSD job time allowance

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

5 years agoOptimize vtable calls (dotnet/coreclr#20696)
Fadi Hanna [Tue, 13 Nov 2018 20:44:49 +0000 (12:44 -0800)]
Optimize vtable calls (dotnet/coreclr#20696)

* Implementation of R2R vtable call thunks. These thunks will fetch the target code pointer from the vtable of the input thisPtr, and jump to that address.
This is especially helpful with generics, since we can avoid a generic dictionary lookup cost for a simple vtable call.
Overall, these thunks cause the CPU to have less branch mispredictions, and give a small performance boost to vtable calls.

These stubs are under VirtualCallStubManager so that the managed debugger can handle stepping through them.

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

5 years agoHandle generics in methodimpls for default interface methods (dotnet/coreclr#20404)
Michal Strehovský [Tue, 13 Nov 2018 13:01:34 +0000 (14:01 +0100)]
Handle generics in methodimpls for default interface methods (dotnet/coreclr#20404)

The existing logic looking at MethodImpls to find the default interface implementation was not correct in the presence of generics. The MethodImpl records we build during type load only contain inexact MethodDescs for the declMethod that are not suitable for comparisons.

The fix is to pipe through the token and resolve the declaring method from it at the time of dispatch.

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

5 years agoFixing Utf8Parser.Number to not modify the value of 'c' (dotnet/coreclr#20967)
Tanner Gooding [Tue, 13 Nov 2018 07:03:20 +0000 (23:03 -0800)]
Fixing Utf8Parser.Number to not modify the value of 'c' (dotnet/coreclr#20967)

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

5 years agoExclude failing System.Memory.Tests (dotnet/coreclr#20958) on Linux/ARM and Linux...
Egor Chesakov [Tue, 13 Nov 2018 03:31:17 +0000 (19:31 -0800)]
Exclude failing System.Memory.Tests (dotnet/coreclr#20958) on Linux/ARM and Linux/ARM64 (dotnet/coreclr#20962)

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

5 years agoPassing the CONTEXT in ICorDebugManagedCallback4::DataBreakpoint (dotnet/coreclr...
Andrew Au [Tue, 13 Nov 2018 03:00:44 +0000 (19:00 -0800)]
Passing the CONTEXT in ICorDebugManagedCallback4::DataBreakpoint (dotnet/coreclr#20960)

* Passing the CONTEXT in ICorDebugManagedCallback4::DataBreakpoint
* ifdef out the message sending on configurations that does not support data breakpoint

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

5 years agoSimplify build.sh command line arguments for Linux/arm cross build (Part 1) (dotnet...
Egor Chesakov [Tue, 13 Nov 2018 01:21:06 +0000 (17:21 -0800)]
Simplify build.sh command line arguments for Linux/arm cross build (Part 1) (dotnet/coreclr#20836)

* Don't use crosscomponent|-crosscomponent command line args in build.sh
* Don't use CROSSCOMPONENT environment variable in build.sh src/pal/tools/gen-buildsys-clang.sh
* Remove mentioning -crosscomponent from usage() in build-test.sh
* Don't use -crosscomponent in buildpipeline
* Don't use -crosscomponent in Groovy files
* Remove mentioning crosscomponent in Documentation/building/linux-instructions.md
* Stop building Hostx86/armel crossgen in build.sh
* Disable CrossGen-ing of System.Private.CoreLib on Linux/armel

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

5 years agoLower fast tail call wasn't patching control expression (dotnet/coreclr#20740)
Egor Chesakov [Tue, 13 Nov 2018 00:41:01 +0000 (16:41 -0800)]
Lower fast tail call wasn't patching control expression (dotnet/coreclr#20740)

Lower fast tail call can replace local variables (holding Caller stack arguments) with new temps in order to set up Callee stack arguments correctly. This involves patching corresponding LCL_VAR and LCL_VAR_ADDR nodes and replacing them with the location of a new temp.

This was not done for control expression which continued pointing to the old location and could contain a Callee argument.

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

5 years agoDisable stress random inlining for object stack allocation tests.
Eugene Rozenfeld [Mon, 12 Nov 2018 21:16:19 +0000 (13:16 -0800)]
Disable stress random inlining for object stack allocation tests.

ObjectStackAllocationTests are sensitive to inlining so we need
to disable stress random inlining.

Fixes dotnet/coreclr#20944.

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

5 years agoMoving the Utf8Formatter and Utf8Parser into S.P.Corelib (dotnet/coreclr#20934)
Tanner Gooding [Mon, 12 Nov 2018 23:46:55 +0000 (15:46 -0800)]
Moving the Utf8Formatter and Utf8Parser into S.P.Corelib (dotnet/coreclr#20934)

* Moving the Utf8Formatter and Utf8Parser into S.P.Corelib

* Doing some minimal cleanup to lineup types and get the Utf8Parser/Utf8Formatter building

* Updating the Utf8 Float Parser to have different buffers for Single vs Double

* Fixing the Utf8Parser to track trailing zero digits and to properly mark the end of the buffer

* Fixing a couple of issues in Utf8Parser.Number

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

5 years agoUpdate tests/arm64/corefx_linux_test_exclusions.txt (dotnet/coreclr#20206)
Egor Chesakov [Mon, 12 Nov 2018 23:21:27 +0000 (15:21 -0800)]
Update tests/arm64/corefx_linux_test_exclusions.txt (dotnet/coreclr#20206)

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

5 years agoRemove SSE4.2 STTNI APIs for .NET Core 3.0 (dotnet/coreclr#20887)
Fei Peng [Mon, 12 Nov 2018 22:07:49 +0000 (14:07 -0800)]
Remove SSE4.2 STTNI APIs for .NET Core 3.0 (dotnet/coreclr#20887)

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

5 years agoenable build-id on FreeBSD (dotnet/coreclr#20945)
Tomas Weinfurt [Mon, 12 Nov 2018 20:49:36 +0000 (12:49 -0800)]
enable build-id on FreeBSD (dotnet/coreclr#20945)

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

5 years agoLoadLibrary refactoring (dotnet/coreclr#20841)
Swaroop Sridhar [Mon, 12 Nov 2018 19:56:18 +0000 (11:56 -0800)]
LoadLibrary refactoring (dotnet/coreclr#20841)

* Refactor LoadLibrary Methods

This change refactors the code in DllImport in preparation
for implementing the new NativeLibrary API here:
dotnet/corefxdotnet/coreclr#32015

The two main changes are:

1) A change in the semantics of the internal LoadLibrary helper functions.

When a native library is loaded, there are two categories of callers
expecting different return values:

External callers like AssemblyNative::InternalLoadUnmanagedDllFromPath()
and the upcoming System.Runtime.Interop.Marshall.LoadLibrary()
need the raw system handle
Internal callers like LoadLibraryModule() need the PAL registered handle
This change modifies the internal LoadLibraryModule* methods to work
in terms of native system handles, so that external callers can obrain
them directly. Methods requiring PAL-handles can register them explicitly.

There is no change in external signature of DllImport class, or the
native Dll cache in AppDomain class.

2) Differentiate HMODULE and NATIVE_LIBRARY_HANDLE

This change defines NATIVE_LIBRARY_HANDLE type to represent
raw system handles to native libraries that are not registered
with the PAL (On Unix systems).

The types on PAL and DlImport methods are adjusted to make
this semantic distinction explicit.

*
Fix loading LibC via PAL_LoadLibraryDirect()

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

5 years agoFix CoreRT build breaks
Jan Kotas [Mon, 12 Nov 2018 07:23:21 +0000 (23:23 -0800)]
Fix CoreRT build breaks

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

5 years agoAllow jit to examine type of initonly static ref typed fields (dotnet/coreclr#20886)
Andy Ayers [Mon, 12 Nov 2018 18:58:03 +0000 (10:58 -0800)]
Allow jit to examine type of initonly static ref typed fields (dotnet/coreclr#20886)

The jit incorporates the value of integer and float typed initonly static
fields into its codegen, if the class initializer has already run.

The jit can't incorporate the values of ref typed initonly static fields,
but the types of those values can't change, and the jit can use this knowledge
to enable type based optimizations like devirtualization.

In particular for static fields initialized by complex class factory logic the
jit can now see the end result of that logic instead of having to try and deduce
the type of object that will initialize or did initialize the field.

Examples of this factory pattern in include `EqualityComparer<T>.Default` and
`Comparer<T>.Default`. The former is already optimized in some cases by via
special-purpose modelling in the framework, jit, and runtime (see dotnet/coreclr#14125) but
the latter is not. With this change calls through `Comparer<T>.Default` may now
also devirtualize (though won't yet inline as the devirtualization happens
late).

Also update the reflection code to throw an exception instead of changing the value
of a fully initialized static readonly field.

Closes dotnet/coreclr#4108.

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

5 years agoSome cleanup of the Math functions from dotnet/coreclr#20788 (dotnet/coreclr#20912)
Tanner Gooding [Mon, 12 Nov 2018 18:51:16 +0000 (10:51 -0800)]
Some cleanup of the Math functions from dotnet/coreclr#20788 (dotnet/coreclr#20912)

* Fixing Max, MaxMagnitude, Min, and MinMagnitude for Math/MathF to be IEEE compliant

* Disabling the System.Math.Max/Min tests

* Adding the new c_runtime PAL tests to the CMakeLists to ensure they actually get run.

* Fixing the casing of IlogB to ILogB

* Fixing the new PAL tests to match the correct/expected outputs

* Fixing up PAL_ilogb to correctly handle 0 and NaN

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

5 years agoUpdate CoreClr, CoreFx, IbcData, PgoData to preview-27112-01, preview.18562.1, master...
dotnet-maestro-bot [Mon, 12 Nov 2018 14:45:38 +0000 (06:45 -0800)]
Update CoreClr, CoreFx, IbcData, PgoData to preview-27112-01, preview.18562.1, master-20181112-0045, master-20181112-0043, respectively (dotnet/coreclr#20929)

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

5 years agoVerify the application group container directory exists in Mac Sandbox (dotnet/corecl...
Oded Hanson [Mon, 12 Nov 2018 11:02:37 +0000 (13:02 +0200)]
Verify the application group container directory exists in Mac Sandbox (dotnet/coreclr#20916)

* Verify the application group container directory exists in Mac Sandbox

Added an additional check to verify that the shared files directory based on the application group ID exists when running in a Mac sandbox. If it doesn't then the initialization will fail.

As part of this change, also refactored the logic the sets the shared file path into a separate method.

* Changed bool to BOOL

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

6 years agoKeep delegate fields alive across a full native call (dotnet/coreclr#20896)
Jeremy Koritzinsky [Sun, 11 Nov 2018 00:07:33 +0000 (16:07 -0800)]
Keep delegate fields alive across a full native call (dotnet/coreclr#20896)

* Repurpose CleanupWorkList to also preserve delegate references in structs across the full native call.

* Change CleanupWorkListElement to abstract base class instead of interface.

* Make CleanupWorkList a singlely linked list.

* PR Feedback.

* Remove CleanupWorkList and make CleanupWorkListElement be able to represent the full list.

* Add back throw in SafeHandle field marshalling.

* PR feedback.

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

6 years agoRemove VersionBlock struct for profiler attach (dotnet/coreclr#20889)
Sung Yoon Whang [Sat, 10 Nov 2018 23:59:02 +0000 (15:59 -0800)]
Remove VersionBlock struct for profiler attach (dotnet/coreclr#20889)

* Remove VersionBlock struct for profiler attach

* Change pipe/event names to not match the Desktop version pipe/event names

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

6 years agoFix invalid out of range exception thrown in ArrayPool trimming (dotnet/coreclr#20932)
Stephen Toub [Sat, 10 Nov 2018 20:44:05 +0000 (15:44 -0500)]
Fix invalid out of range exception thrown in ArrayPool trimming (dotnet/coreclr#20932)

The trim method had the wrong logic to get the relevant bucket size, resulting in InvalidOutOfRangeException exceptiosn being thrown and eaten on the finalizer thread.

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

6 years agoAdd PInvoke/BestFitMapping tests (dotnet/coreclr#19269)
Zeng Jiang [Sat, 10 Nov 2018 19:59:07 +0000 (03:59 +0800)]
Add PInvoke/BestFitMapping tests (dotnet/coreclr#19269)

* Add PInvoke/BestFitMapping tests

* Fix warning

* Make native side of tests xplat.

* Clean up managed side of the test build.

* Disable BestFitMapping tests off Windows.

* Individually disable tests.

* Disable the two tests that I missed last time.

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

6 years agoUpdate IbcData, PgoData to master-20181110-0042, master-20181110-0040, respectively...
dotnet-maestro-bot [Sat, 10 Nov 2018 14:06:20 +0000 (06:06 -0800)]
Update IbcData, PgoData to master-20181110-0042, master-20181110-0040, respectively (dotnet/coreclr#20925)

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

6 years agoUpdate BuildTools, CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-03407...
dotnet-maestro-bot [Sat, 10 Nov 2018 06:19:39 +0000 (22:19 -0800)]
Update BuildTools, CoreClr, CoreFx, CoreSetup, IbcData, PgoData to preview1-03407-01, preview-27110-01, preview.18560.1, preview-27109-05, master-20181109-0043, master-20181109-0044, respectively (dotnet/coreclr#20790)

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

6 years agoAdd back support for deserialization of BinaryFormatted resources (dotnet/coreclr...
Eric StJohn [Sat, 10 Nov 2018 01:54:47 +0000 (17:54 -0800)]
Add back support for deserialization of BinaryFormatted resources (dotnet/coreclr#20907)

* Add back support for deserialization of BinaryFormatted resources

This adds back support for using BinaryFormatter to deserialize resources when loaded
from assembly.

We conditionally load BinaryFormatter and will throw if asked to deserialize binary formatted
resources and cannot find it.

* Apply code-review feedback

Changes lazy initialization to use LazyInitializer

Remove special handling of missing serialization assembly.

Clean up comments,

* Use named parameter when specifying permitDeserialization

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

6 years agoDelete dead/unreachable code related to remoting (dotnet/coreclr#20880)
Jan Kotas [Sat, 10 Nov 2018 01:49:12 +0000 (17:49 -0800)]
Delete dead/unreachable code related to remoting (dotnet/coreclr#20880)

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

6 years agoExpose Index and Range types (dotnet/coreclr#20899)
Tarek Mahmoud Sayed [Sat, 10 Nov 2018 01:46:06 +0000 (17:46 -0800)]
Expose Index and Range types (dotnet/coreclr#20899)

* Expose Index and Range types

* Address Review Comments

* Address more feedback

* Addressing more comments

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

6 years agoFix path to python on sod and illink jobs (dotnet/coreclr#20914)
Michelle McDaniel [Fri, 9 Nov 2018 23:09:00 +0000 (15:09 -0800)]
Fix path to python on sod and illink jobs (dotnet/coreclr#20914)

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

6 years agoMerge pull request dotnet/coreclr#20895 from dotnet/dev/unix_test_workflow
Bruce Forstall [Fri, 9 Nov 2018 18:18:39 +0000 (10:18 -0800)]
Merge pull request dotnet/coreclr#20895 from dotnet/dev/unix_test_workflow

Adjust corefx output directory name

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

6 years agoFast-path ExecutionContext for ThreadPool items (dotnet/coreclr#20308)
Ben Adams [Fri, 9 Nov 2018 17:26:42 +0000 (17:26 +0000)]
Fast-path ExecutionContext for ThreadPool items (dotnet/coreclr#20308)

Fast-path ExecutionContext for ThreadPool items

Maintain the ThreadPool threads on the Default contexts between work items.

Always restore the Default context on the ThreadPool Dispatch loop after a workitem has run (to clean up any ExecutionContext leakage from changes on flow suppressed workitems, or AsyncLocal change eventhandlers; as well as firing their notifications if they have them)

Store the `CurrentThread` as part of the thread static `ThreadPoolWorkQueueThreadLocals` which are already looked up at the start of the Dispatch loop to avoid an additional lookup via `Thread.CurrentThread`.

As workitems are started on the Default context and are returned to it `QueueUserWorkItemCallbackDefaultContext` items can just be run their callbacks directly rather than via `ExecutionContext.Run` (as the EC don't need to move to Default and is always moved back to Default).

As `QueueUserWorkItemCallbackDefaultContext` now runs items directly; flow suppressed callbacks can use the smaller `QueueUserWorkItemCallbackDefaultContext` rather than `QueueUserWorkItemCallback` with a null context; and handling for flow suppression can be removed from `QueueUserWorkItemCallback`.

As `AwaitTaskContinuation`'s `IThreadPoolWorkItem.Execute` doesn't preform additional work after it completes, it can run `m_action` directly for Default context in addition to the flow suppressed context, rather than going via `ExecutionContext.Run`.

Given that the items on the ThreadPool are always started on the threadpool and restored to it; we can introduce some faster paths than `ExecutionContext:RunInternal` (328 bytes asm).

Introduce `ExecutionContext:RunForThreadPoolUnsafe` (71 bytes asm), for `IThreadPoolWorkItem`s where they need to run on a provided context, but do not need to execute anything after they complete so can rely on the Dispatch loop restore. This includes `QueueUserWorkItemCallback`, `QueueUserWorkItemCallback<TState>` and `AwaitTaskContinuation`.

Introduce `ExecutionContext:RunFromThreadPoolDispatchLoop` (225 bytes asm), for items run from the ThreadPool, so don't need to capture current context (Default) to restore later, however need to do need to restore back to Default after execution as they then perform additional work. This includes
`Task`/`AsyncStateMachineBox`/`AwaitTaskContinuation`/`Timer`.

Change `Task.ExecuteFromThreadPool()` to take the thread `Task.ExecuteFromThreadPool(Thread threadPoolThread)` from the ThreadPool Dispatch loop so it can pass it into the `ExecutionContext:RunFromThreadPoolDispatchLoop` overload and avoid the `Thread.CurrentThread` lookup.

Perf test: https://github.com/dotnet/coreclr/pull/20308#issuecomment-436805786

Resolves: dotnet/corefxdotnet/coreclr#32695

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

6 years agoFix typos in comments (dotnet/coreclr#20908)
Li Shengqiu [Fri, 9 Nov 2018 14:35:58 +0000 (22:35 +0800)]
Fix typos in comments (dotnet/coreclr#20908)

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

6 years agoOptimize Char.GetUnicodeCategory and related checks (dotnet/coreclr#20864)
Pent Ploompuu [Fri, 9 Nov 2018 14:32:16 +0000 (16:32 +0200)]
Optimize Char.GetUnicodeCategory and related checks (dotnet/coreclr#20864)

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

6 years agoMoving the Utf8Parser/Utf8Formatter to be shared (dotnet/corefxdotnet/coreclr#33348)
Tanner Gooding [Fri, 9 Nov 2018 01:58:24 +0000 (17:58 -0800)]
Moving the Utf8Parser/Utf8Formatter to be shared (dotnet/corefxdotnet/coreclr#33348)

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

6 years agoImplement escape analysis and stack allocation of non-box objects without gc fields.
Eugene Rozenfeld [Tue, 30 Oct 2018 00:34:17 +0000 (17:34 -0700)]
Implement escape analysis and stack allocation of non-box objects without gc fields.

This change implements a conservative flow-insensitive escape analysis and stack allocation
of non-box objects without gc fields.

Handling of objects with gc fields, box objects, and fixed-size arrays is future work.

Escape analysis is based on the one described here: https://www.cc.gatech.edu/~harrold/6340/cs6340_fall2009/Readings/choi99escape.pdf

Main limitations of this version of the escape analysis:
1. The analysis is flow-insensitive.
2. The analysis is intra-procedural and only sees the current method and the inlined methods.
3. The analysis assumes that references passed to non-pure-helper calls escape.
4. The analysis assumes that any references assigned to fields of objects escape.

Some of these limitations will be removed in future work.

I started with prior prototypes from @echesakovMSFT and @AndyAyersMS and extended and refactored
parts of them.

I also added tests for cases that are currently handled or will be handled soon.

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

6 years agoMake getClassGClayout work with with class types.
Eugene Rozenfeld [Tue, 30 Oct 2018 00:08:02 +0000 (17:08 -0700)]
Make getClassGClayout work with with class types.

Also add an assert to getHeapClassSize to ensure it's not
called in R2R cross-version-bubble.

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

6 years agoAllow creation of variables of TYP_STRUCT with non-value class handles.
Eugene Rozenfeld [Tue, 30 Oct 2018 00:05:44 +0000 (17:05 -0700)]
Allow creation of variables of TYP_STRUCT with non-value class handles.

Variables of TYP_STRUCT with non-value class handles represent stack-allocated objects.
Temporarily disable promotion of fields of stack-allocated objects.

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

6 years agoAdd JitObjectStackAllocation config option.
Eugene Rozenfeld [Tue, 16 Oct 2018 01:40:35 +0000 (18:40 -0700)]
Add JitObjectStackAllocation config option.

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

6 years agoRemove cached invariant globalization mode flag
Jan Kotas [Thu, 8 Nov 2018 19:45:13 +0000 (11:45 -0800)]
Remove cached invariant globalization mode flag

Direct check of readonly flag is better with tiered JITing (the check is optimized out)

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

6 years agoDelete unnecessary ReferenceSystemPrivateCoreLib
Jan Kotas [Thu, 8 Nov 2018 21:42:34 +0000 (13:42 -0800)]
Delete unnecessary ReferenceSystemPrivateCoreLib

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

6 years agoRevert "Passing the CONTEXT in ICorDebugManagedCallback4::DataBreakpoint"
Jan Kotas [Fri, 9 Nov 2018 05:12:57 +0000 (21:12 -0800)]
Revert "Passing the CONTEXT in ICorDebugManagedCallback4::DataBreakpoint"

This reverts commit dotnet/coreclr@9dd2a3688320fa197a3a2a412523416f10e7fa3b.

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

6 years agoRemove System.Memory reference from several libraries (dotnet/coreclr#33343)
Stephen Toub [Fri, 9 Nov 2018 01:16:52 +0000 (20:16 -0500)]
Remove System.Memory reference from several libraries (dotnet/coreclr#33343)

Minor cleanup... they only have this System.Memory reference in order to support MemoryMarshal.GetReference, and we can just use the default GetPinnableReference instead. (We could also just stackalloc into a pointer instead of using span at all, but using span keeps it tidy and adds a tiny amount of additional safety).

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

6 years agoChanging Number.NumberBuffer to carry a `Span<byte>` rather than a `Span<char>` ...
Tanner Gooding [Fri, 9 Nov 2018 03:47:35 +0000 (19:47 -0800)]
Changing Number.NumberBuffer to carry a `Span<byte>` rather than a `Span<char>` (dotnet/coreclr#20879)

* Changing Number.NumberBuffer to carry a `Span<byte>` rather than a `Span<char>`

* Renaming NumberBuffer.Sign to NumberBuffer.IsNegative

* Renaming NumberBuffer.Precision to NumberBuffer.DigitsCount

* Adding a ToString and CheckConsistency method to NumberBuffer

* Adding some number.CheckConsistency() calls for debug validation

* Fixing the UTF16Formatter to meet the consistency checks

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

6 years agoPassing the CONTEXT in ICorDebugManagedCallback4::DataBreakpoint
Andrew Au [Thu, 8 Nov 2018 18:55:00 +0000 (10:55 -0800)]
Passing the CONTEXT in ICorDebugManagedCallback4::DataBreakpoint

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

6 years agoEventPipe support for "Parameters" (dotnet/coreclr#20796)
José Rivero [Fri, 9 Nov 2018 00:20:29 +0000 (16:20 -0800)]
EventPipe support for "Parameters" (dotnet/coreclr#20796)

These changes enable passing "arguments" to an EventSource.

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

6 years agoEnlighten ValueNumStore::EvalOpSpecialized about bswap nodes (dotnet/coreclr#20883)
Levi Broderick [Thu, 8 Nov 2018 23:35:32 +0000 (15:35 -0800)]
Enlighten ValueNumStore::EvalOpSpecialized about bswap nodes (dotnet/coreclr#20883)

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

6 years agoMerge pull request dotnet/coreclr#20838 from briansull/issue_18259
Brian Sullivan [Thu, 8 Nov 2018 23:01:32 +0000 (15:01 -0800)]
Merge pull request dotnet/coreclr#20838 from briansull/issue_18259

ValueNum add check for ZeroOffsetFldSeq on LclVar reads

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

6 years agoSpecify path to python3.5 for perf jobs (dotnet/coreclr#20443)
Michelle McDaniel [Thu, 8 Nov 2018 21:56:00 +0000 (13:56 -0800)]
Specify path to python3.5 for perf jobs (dotnet/coreclr#20443)

* Specify path to python3.5 for perf jobs

* Change path to python in throughput testing

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