platform/upstream/coreclr.git
6 years agoImprove comments, review feedback.
Vance Morrison [Fri, 18 May 2018 15:18:48 +0000 (08:18 -0700)]
Improve comments, review feedback.

6 years agoBetter comments
Vance Morrison [Thu, 17 May 2018 17:46:57 +0000 (10:46 -0700)]
Better comments

6 years agoFix typo
Vance Morrison [Thu, 17 May 2018 17:41:29 +0000 (10:41 -0700)]
Fix typo

6 years agoAdd Asserts. Fix bug found in testing.
Vance Morrison [Thu, 17 May 2018 01:55:41 +0000 (18:55 -0700)]
Add Asserts.  Fix bug found in testing.

6 years agoChange Span to Memory
Vance Morrison [Tue, 15 May 2018 21:32:59 +0000 (14:32 -0700)]
Change Span to Memory

6 years agoAdding EnumerateChunks which allow efficient scanning of a StringBuilder
Vance Morrison [Wed, 11 Apr 2018 20:46:28 +0000 (13:46 -0700)]
Adding EnumerateChunks which allow efficient scanning of a StringBuilder

6 years agofix jit format after better-wildcards PR (#18008)
Sergey Andreenko [Tue, 15 May 2018 19:48:47 +0000 (12:48 -0700)]
fix jit format after better-wildcards PR (#18008)

6 years agoformat spmi (#18003)
Sergey Andreenko [Tue, 15 May 2018 18:17:48 +0000 (11:17 -0700)]
format spmi (#18003)

6 years agoUpdate first-class-structs.md
Carol Eidt [Tue, 15 May 2018 01:06:59 +0000 (18:06 -0700)]
Update first-class-structs.md

fix duplication

6 years agoUpdate first-class-structs.md
Carol Eidt [Tue, 15 May 2018 01:04:46 +0000 (18:04 -0700)]
Update first-class-structs.md

Add some struct-related open issues to the document.

6 years agoMerge pull request #17970 from briansull/better-wildcards
Brian Sullivan [Tue, 15 May 2018 00:45:54 +0000 (17:45 -0700)]
Merge pull request #17970 from briansull/better-wildcards

Better wildcards for COMPLUS_JIT variables

6 years agoFix multicast delegate step from delegate (#17990)
David Wrighton [Mon, 14 May 2018 23:20:12 +0000 (16:20 -0700)]
Fix multicast delegate step from delegate (#17990)

- Replace incorrect FEATURE_STUBS_AS_IL define check with FEATURE_MULTICASTSTUB_AS_IL
  - Allows step from one delegate to the next and step out from multicast delegate to function correctly.
- Add null check as the active frame's methoddesc isn't always non-null
  - In scenarios such as FuncEval, we also run through this code, and the md may be null.
- Fix unwind from StubHelpers::MulticastDebuggerTraceHelper function on amd64

6 years agoRemove usages of AnsiString and replace them with UnicodeString. (#17989)
Brian Robbins [Mon, 14 May 2018 20:44:28 +0000 (13:44 -0700)]
Remove usages of AnsiString and replace them with UnicodeString. (#17989)

6 years agojit-format --fix --untidy
Brian Sullivan [Mon, 14 May 2018 20:44:10 +0000 (13:44 -0700)]
jit-format --fix --untidy

6 years agoAdd tests for arm64 il issues. (#17759)
Sergey Andreenko [Mon, 14 May 2018 20:29:42 +0000 (13:29 -0700)]
Add tests for arm64 il issues. (#17759)

* Add test for "Shouldn_t_see_an_integer_typed_GT_MOD_node_in_ARM64"

* Add test for "We_should_never_encounter_a_reference_to_a_lclVar_that_has_a_zero_refCnt"

* Add test for 'NYI__Initialize_floating_point_register_to_zero'

* add tests to the arm lists

* exclude tests on:
1. windows arm64 with tests\arm64\tests.lst
2. windows x64 altjit arm with tests\issues.target
3. ubuntu arm64 with tests/testsFailing.arm64.txt

* change issues.targets

6 years agoFix Typo
Brian Sullivan [Mon, 14 May 2018 19:39:37 +0000 (12:39 -0700)]
Fix Typo

6 years agoCode review feedback
Brian Sullivan [Mon, 14 May 2018 19:28:31 +0000 (12:28 -0700)]
Code review feedback

6 years agoEnable System.Transactions.Local.Tests on Linux/arm (#17973)
Egor Chesakov [Mon, 14 May 2018 19:21:30 +0000 (12:21 -0700)]
Enable System.Transactions.Local.Tests on Linux/arm (#17973)

6 years agoMerge branch 'master' into better-wildcards
Brian Sullivan [Mon, 14 May 2018 18:58:52 +0000 (11:58 -0700)]
Merge branch 'master' into better-wildcards

6 years agoMerge pull request #17988 from dotnet-maestro-bot/master-UpdateDependencies
Wes Haggard [Mon, 14 May 2018 18:00:35 +0000 (11:00 -0700)]
Merge pull request #17988 from dotnet-maestro-bot/master-UpdateDependencies

Update CoreClr to preview1-26514-05 (master)

6 years agoMoving ConcurrentQueue to shared folder (#17956)
Maryam Ariyan [Mon, 14 May 2018 17:50:45 +0000 (10:50 -0700)]
Moving ConcurrentQueue to shared folder (#17956)

* Moving ConcurrentQueue to shared folder

Fixes: #17751

6 years agoR2RDump - Print ReadyToRun image headers (#17942)
acmyu [Mon, 14 May 2018 17:23:07 +0000 (10:23 -0700)]
R2RDump - Print ReadyToRun image headers (#17942)

* R2RDump - Outputing ReadyToRun header from PE image

* R2RDump - Comments, follow coding guidelines, use enum for section types and flags

* R2RDump - Use utf8 encoding, rva from ManagedNativeHeader, return exit code

6 years agoPEImageLayout: flush instruction cache only for pages with relocs. (#17773)
Konstantin Baladurin [Mon, 14 May 2018 16:55:18 +0000 (19:55 +0300)]
PEImageLayout: flush instruction cache only for pages with relocs. (#17773)

We need to flush instruction cache only for pages that have relocations
instead of full sections because otherwise application's shared clean
memory is increased in some cases on Linux.

6 years agoUpdate CoreClr to preview1-26514-05
dotnet-maestro-bot [Mon, 14 May 2018 16:13:38 +0000 (09:13 -0700)]
Update CoreClr to preview1-26514-05

6 years agoReflection: Allow ParameterBuilder.SetConstant(nonNullValue) for nullable enum parame...
stakx [Mon, 14 May 2018 14:20:53 +0000 (16:20 +0200)]
Reflection: Allow ParameterBuilder.SetConstant(nonNullValue) for nullable enum parameters (#17977)

* ParameterBuilder.SetConstant(nonNull) for TEnum?

This change makes it possible to use `ParameterBuilder.SetConstant`
to set a non-null default value for parameters having a nullable enum
type.

* ParameterInfo.DefaultValue for TEnum?

Add a note to `MdConstant.GetValue` (which sits behind `ParameterInfo.
[Raw]DefaultValue`) explaining why changing its behavior to mirror the
change in `TypeBuilder.SetConstantValue` would be a breaking change.

6 years agoUpdate CoreClr, CoreFx to preview1-26514-01, preview1-26514-01, respectively (#17982)
dotnet-maestro-bot [Mon, 14 May 2018 05:23:27 +0000 (00:23 -0500)]
Update CoreClr, CoreFx to preview1-26514-01, preview1-26514-01, respectively (#17982)

6 years agoUpdate CoreClr, CoreFx to preview1-26513-04, preview1-26513-04, respectively (#17974)
dotnet-maestro-bot [Sun, 13 May 2018 22:27:29 +0000 (17:27 -0500)]
Update CoreClr, CoreFx to preview1-26513-04, preview1-26513-04, respectively (#17974)

6 years agoAdd explicit null check for VSD via tail call stub. (#17960)
Sergey Andreenko [Sun, 13 May 2018 16:58:32 +0000 (09:58 -0700)]
Add explicit null check for VSD via tail call stub. (#17960)

* fix

* update test lists for arm and x64

* update failure reason on arm64

* fix comment

* Use NYI_ARM64

It makes it easier to find them.

* exclude arm64 tail call tests

that have prefix tail calls, but jit can't make it.

6 years agoMerge pull request #17971 from CarolEidt/FixCpBlkBug
Carol Eidt [Sun, 13 May 2018 15:28:03 +0000 (08:28 -0700)]
Merge pull request #17971 from CarolEidt/FixCpBlkBug

Don't eliminate a cpblk when offsets are different

6 years agoMerge pull request #17948 from mikedn/delegate-contain-this
Carol Eidt [Fri, 11 May 2018 23:28:51 +0000 (16:28 -0700)]
Merge pull request #17948 from mikedn/delegate-contain-this

Call ContainCheckIndir on the newly created indir

6 years agoPR feedback and fix test.
Carol Eidt [Fri, 11 May 2018 22:03:35 +0000 (15:03 -0700)]
PR feedback and fix test.

6 years agoImprove the JitConfig class and method name matching for wildcards.
Brian Sullivan [Thu, 10 May 2018 21:07:49 +0000 (14:07 -0700)]
Improve the JitConfig class and method name matching for wildcards.
With this change we can use a prefix and wildcard match
This allows us to match classes and methods that start with a prefix.
Example:
1. My*:Method would match a method named "Method" inside any class that starts with "My"
2. *:get_* or simple get_* both will match any method that starts with "get_"

This allows us to match some Managed C++ methods that we could not otherwise match:

By using COMPLUS_JitDump=std._Find_if*
we can match this managed C++ method:

 <Module>:std._Find_if<class std::_Tree_unchecked_iterator<class std::_Tree_val<struct std::_Tree_simple_types<struct std::pair<struct TIP_MAP_KEY const ,struct TIP_MAP_VALUE> > > >,struct TIP_FIND_ALG>(long,struct,struct,struct)

6 years agoDon't eliminate a cpblk when offsets are different
Carol Eidt [Fri, 11 May 2018 21:08:30 +0000 (14:08 -0700)]
Don't eliminate a cpblk when offsets are different

When `fgMorphCopyBlock()` encounters a cpblk between two different offsets of the same local, if both fields are not recognizable to the JIT (i.e. the FieldSeqNode returned by IsLocalAddrExpr() and/or the gtFieldSeq field of a GT_LCL_FLD is FieldSeqStore::NotAField()), they should not be considered equal (and therefore should not be morphed to a `GT_NOP`).

Fixes #17969

6 years agoUpdate CoreClr, CoreFx to preview1-26511-05, preview1-26511-04, respectively (#17961)
dotnet-maestro-bot [Fri, 11 May 2018 17:32:04 +0000 (12:32 -0500)]
Update CoreClr, CoreFx to preview1-26511-05, preview1-26511-04, respectively (#17961)

6 years agoMove StringBuilderCache to shared (#17964)
Stephen Toub [Fri, 11 May 2018 17:31:46 +0000 (13:31 -0400)]
Move StringBuilderCache to shared (#17964)

6 years agoSwitch to Word2Vec fork (#17945)
Adam Sitnik [Fri, 11 May 2018 15:47:21 +0000 (17:47 +0200)]
Switch to Word2Vec fork (#17945)

* update git repo url, remove the patch file (not needed anymore)

* refactoring: there is no need to have an abstract class if only 1 class derives from it

* use CurrentCulture.NumberFormat.NumberDecimalSeparator instead of hardcoded dot (it's , for polish UI and it fails for me)

* use .NET Standard way of accessing CurrentCulture to fix the build

* updated repor url to our fork + removed dead code

6 years agoFix Avx.ConvertToSingle flags (#17954)
mikedn [Fri, 11 May 2018 04:41:43 +0000 (07:41 +0300)]
Fix Avx.ConvertToSingle flags (#17954)

6 years agoMerge pull request dotnet/corefx#29636 from stephentoub/formatmessage
Stephen Toub [Fri, 11 May 2018 02:27:53 +0000 (22:27 -0400)]
Merge pull request dotnet/corefx#29636 from stephentoub/formatmessage

Improvements to FormatMessage

Signed-off-by: dotnet-bot-corefx-mirror <dotnet-bot@microsoft.com>
6 years agoupdate profiler API status to reflect that #13153 is resolved (#17953)
Sung Yoon Whang [Fri, 11 May 2018 02:57:47 +0000 (19:57 -0700)]
update profiler API status to reflect that #13153 is resolved (#17953)

6 years agoMerge pull request #17941 from dotnet-maestro-bot/master-UpdateDependencies
Wes Haggard [Fri, 11 May 2018 00:48:08 +0000 (17:48 -0700)]
Merge pull request #17941 from dotnet-maestro-bot/master-UpdateDependencies

Update BuildTools, CoreClr, CoreFx to preview1-02810-02, preview1-26510-06, preview1-26510-05, respectively (master)

6 years agoJIT: fix case with slow generic delegate creation (#17802)
Andy Ayers [Fri, 11 May 2018 00:22:10 +0000 (17:22 -0700)]
JIT: fix case with slow generic delegate creation (#17802)

The jit has been using IR pattern matching to find the information needed for
optimizing delegate construction. This missed one case, causing the code to
use a very slow construction path.

to convey this information to the optimization. With this change the jit now
now relies on the token cache for all the other cases too.

This initial commit preserves the pattern match code and verifies that when
it fires it reaches the same conclusion as the token cache does.

This cross-validation revealed one case where the token information was less
specific than the pattern match so we now also update the method handle in
the token from the call info.

A subsequent commit will remove the pattern matching when we are confident the
new token cache logic handles all the cases correctly.

Closes #12264.

6 years agoadd test with tail call of VSD stub with AV. (#17920)
Sergey Andreenko [Fri, 11 May 2018 00:10:57 +0000 (17:10 -0700)]
add test with tail call of VSD stub with AV. (#17920)

* add test with tail call of VSD stub with AV.

* exclude new failing test

* fix names/types

* forbid inlining

6 years agoUpdate BuildTools, CoreClr, CoreFx to preview1-02810-02, preview1-26510-06, preview1...
dotnet-maestro-bot [Thu, 10 May 2018 22:25:59 +0000 (15:25 -0700)]
Update BuildTools, CoreClr, CoreFx to preview1-02810-02, preview1-26510-06, preview1-26510-05, respectively

6 years agoValue number identities for compares and subs (#17919)
Andy Ayers [Thu, 10 May 2018 21:43:03 +0000 (14:43 -0700)]
Value number identities for compares and subs (#17919)

Improve value number support for various subtracts and unsigned compares.
For instance for non-float values, x - x == 0.

Closes #15491.

6 years agoMerge pull request #17784 from adityamandaleeka/add_jit_hfa_passing_test
Aditya Mandaleeka [Thu, 10 May 2018 19:01:17 +0000 (12:01 -0700)]
Merge pull request #17784 from adityamandaleeka/add_jit_hfa_passing_test

Add a test case for HFA passing

6 years agoSpecify ordering between CrstUniqueStack and CrstReadyToRunEntryPointToMethodDescMap...
Sung Yoon Whang [Thu, 10 May 2018 16:04:52 +0000 (09:04 -0700)]
Specify ordering between CrstUniqueStack and CrstReadyToRunEntryPointToMethodDescMap (#17938)

6 years agoCall ContainCheckIndir on the newly created indir
Mike Danes [Thu, 10 May 2018 15:47:51 +0000 (18:47 +0300)]
Call ContainCheckIndir on the newly created indir

6 years agoFix alternate stack for Alpine docker on SELinux (#17936)
Jan Vorlicek [Thu, 10 May 2018 13:33:54 +0000 (15:33 +0200)]
Fix alternate stack for Alpine docker on SELinux (#17936)

For some reason, the Alpine docker container running on a SELinux host maps
heap as RWX. When we allocate alternate stack from the heap, we also
change the protection of the first page to PROT_NONE so that it can
serve as a guard page to catch stack overflow. And when we free the
alternate stack, we restore the protection back to PROT_READ |
PROT_WRITE. The restoration fails in Alpine docker container running on
a SELinux host with EPROT failure and the SELinux log reports that an
attempt to change heap to executable was made. So it looks like the
kernel has added the PERM_EXEC to the permissions we have passed to the
mprotect call. There is a code in the mprotect implementation that can
do that, although I don't fully understand the conditions under which it
happens. This is driven by the VM_MAYEXEC flag in the internal VMA block
structure.
To fix that, I've modified the alternate stack allocation to use mmap /
munmap instead of C heap allocation.

6 years agoReplace easy Substrings with AsSpan/Slices (#17916)
Stephen Toub [Thu, 10 May 2018 01:36:19 +0000 (21:36 -0400)]
Replace easy Substrings with AsSpan/Slices (#17916)

* Replace several Substrings with AsSpan/Slices

* Address PR feedback

6 years agoFix lst file for new test additions.
Aditya Mandaleeka [Wed, 9 May 2018 21:40:31 +0000 (14:40 -0700)]
Fix lst file for new test additions.

6 years agofix semicolon and priorities for new excluded tests (#17934)
Sergey Andreenko [Thu, 10 May 2018 00:14:24 +0000 (17:14 -0700)]
fix semicolon and priorities for new excluded tests (#17934)

6 years agoMerge pull request #17911 from CarolEidt/Fix16377
Carol Eidt [Wed, 9 May 2018 22:09:26 +0000 (15:09 -0700)]
Merge pull request #17911 from CarolEidt/Fix16377

Arm64: Pass promoted struct using GT_FIELD_LIST

6 years agoAdd regression test for passing HFA params.
Aditya Mandaleeka [Wed, 25 Apr 2018 21:46:26 +0000 (14:46 -0700)]
Add regression test for passing HFA params.

6 years agoImprove checking of GTF_CALL flag. (#17857)
Eugene Rozenfeld [Wed, 9 May 2018 20:16:10 +0000 (13:16 -0700)]
Improve checking of GTF_CALL flag. (#17857)

The checker ensures that GTF_CALL is set only where
it's needed: on GT_CALL nodes, on GT_INTRINSIC nodes where
intrinsics are implemented by user calls, and on nodes that
have a child with GT_CALL flag set.

6 years agoUpdate CoreClr, CoreFx to preview1-26509-05, preview1-26509-05, respectively (#17930)
dotnet-maestro-bot [Wed, 9 May 2018 18:35:36 +0000 (13:35 -0500)]
Update CoreClr, CoreFx to preview1-26509-05, preview1-26509-05, respectively (#17930)

6 years agoReduce allocation in StringBuilder marshaling (#17928)
Stephen Toub [Wed, 9 May 2018 18:35:14 +0000 (14:35 -0400)]
Reduce allocation in StringBuilder marshaling (#17928)

When marshaling back results for a StringBuilder argument in a P/Invoke:
- for UTF8 it's allocating a new char[], pinning it, and then handing that off to StringBuilder.ReplaceBufferInternal, which itself then allocates a new char[], and all of that happens even if the StringBuilder's char[] is already big enough to handle the results, which is commonly the case due to the StringBuilder having been sized appropriately from the get-go.
- for both Unicode and Ansi, it's similarly allocating a new char[] invariably, even if the existing buffer is already sufficient.

This commit cleans that up.

While ideally we wouldn't use StringBuilders at all in coreclr/corefx for marshaling, we still do in some places, e.g. Dns.GetHostName.  While we should separately fix that to avoid using a StringBuilder at all, it's useful to demonstrate the impact of the change here:
```C#
[Benchmark]
public static string GetHostName() => Dns.GetHostName();
```
on my machine results in:
```
      Method |  Gen 0 | Allocated |
------------ |-------:|----------:|
 Before      | 0.2668 |   1.09 KB |
 After       | 0.1392 |     584 B |
```

6 years agoRestrict what we archive for perf testing (#17918)
Michelle McDaniel [Wed, 9 May 2018 16:55:39 +0000 (09:55 -0700)]
Restrict what we archive for perf testing (#17918)

* Restrict what we archive for perf testing

* change all perf legs archival

* Change txt save to *_log.txt

* Reduce number of days to keep artifacts

6 years agoUpdate arm/arm64 test lists (#17855)
Sergey Andreenko [Wed, 9 May 2018 04:32:14 +0000 (21:32 -0700)]
Update arm/arm64 test lists (#17855)

* update arm64list

* exclude JIT\HardwareIntrinsics\X86 for arm64

We do not want to spend arm64 machine resourses on them.

JIT\HardwareIntrinsics\X86\Sse\LoadAlignedVector128_ro was left enabled to test the failing path.

* update arm test list

* exclude JIT\HardwareIntrinsics\X86 for arm

* exclude failing tests for arm32

* exclude failing tests for arm64

6 years agoUpdate BuildTools, CoreClr, CoreFx to preview1-02808-01, preview1-26509-01, preview1...
dotnet-maestro-bot [Wed, 9 May 2018 03:33:20 +0000 (22:33 -0500)]
Update BuildTools, CoreClr, CoreFx to preview1-02808-01, preview1-26509-01, preview1-26509-01, respectively (#17923)

6 years agoRename mscorlib to System.Private.Corelib (#17926)
Maryam Ariyan [Wed, 9 May 2018 03:30:54 +0000 (20:30 -0700)]
Rename mscorlib to System.Private.Corelib (#17926)

* diff from just renaming folder mscorlib to System.Private.CoreLib

* Updating build.proj to reflect name change

Fixes: #17905

6 years agoHandle SIMD field of GT_FIELD_LIST in codegen.
Carol Eidt [Wed, 9 May 2018 00:20:04 +0000 (17:20 -0700)]
Handle SIMD field of GT_FIELD_LIST in codegen.
Add header to test case.

6 years agoUpdate DotnetCLIVersion.txt (#17925)
Michelle McDaniel [Tue, 8 May 2018 22:57:06 +0000 (15:57 -0700)]
Update DotnetCLIVersion.txt (#17925)

The current version is broken for RHEL. This change revs up the version
to 2.1.300-rtm-008820, which is fixed for RHEL.

6 years agoDelete irrelevant comment (#17921)
Jan Kotas [Tue, 8 May 2018 22:50:23 +0000 (15:50 -0700)]
Delete irrelevant comment (#17921)

6 years agoPartial implementation of Thread.GetApartmentState (dotnet/corert#5781)
Jan Kotas [Tue, 8 May 2018 16:52:25 +0000 (09:52 -0700)]
Partial implementation of Thread.GetApartmentState (dotnet/corert#5781)

Related to #5776

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
6 years agoReflection: Fix DefaultValue exception with enums (#17917)
stakx [Tue, 8 May 2018 17:42:25 +0000 (19:42 +0200)]
Reflection: Fix DefaultValue exception with enums (#17917)

This is related to dbcfd2f9d1, but about enums instead of `DateTime`.

Given e.g. a generic method with a parameter `T arg = default(T)`
where `T` is the generic type parameter, if that is instantiated with
some enum as the generic type argument, then querying the default
value of `arg` using `ParameterInfo.[Raw]DefaultValue` will throw a
`FormatException`.

(The use of generics means that the C# compiler always records a
`null` constant in metadata, which isn't usually the case for enums.)

6 years agoUpdate CoreClr, CoreFx to preview1-26508-05, preview1-26508-04, respectively (#17913)
dotnet-maestro-bot [Tue, 8 May 2018 17:18:15 +0000 (12:18 -0500)]
Update CoreClr, CoreFx to preview1-26508-05, preview1-26508-04, respectively (#17913)

6 years agoPR feedback
Carol Eidt [Tue, 8 May 2018 15:50:49 +0000 (08:50 -0700)]
PR feedback

6 years agoFix failing System.Reflection.Emit tests (#17915)
stakx [Tue, 8 May 2018 14:39:17 +0000 (16:39 +0200)]
Fix failing System.Reflection.Emit tests (#17915)

Commit fceac03e82 removed a test from `TypeBuilder.SetConstantValue`
that is too strict when called from `ParameterBuilder`, but that both
`FieldBuilder` and `EnumBuilder` require. Add the same test back, but
in `FieldBuilder.SetConstant`.

6 years agoMove ConcurrentExclusiveSchedulerPair to shared CoreLib partition (#17914)
Jan Kotas [Tue, 8 May 2018 11:08:31 +0000 (04:08 -0700)]
Move ConcurrentExclusiveSchedulerPair to shared CoreLib partition (#17914)

6 years ago Remove ConcurrentDictionary from System.Private.CoreLib (#17908)
Stephen Toub [Tue, 8 May 2018 05:18:44 +0000 (01:18 -0400)]
 Remove ConcurrentDictionary from System.Private.CoreLib (#17908)

* Delete stale PRENET45 conditional code

* Remove ConcurrentDictionary dependency from ConcurrentExclusiveSchedulerPair

6 years agoSpeed up Array.Reverse by using ref reassignment (#17891)
Levi Broderick [Tue, 8 May 2018 03:50:33 +0000 (20:50 -0700)]
Speed up Array.Reverse by using ref reassignment (#17891)

* Speed up Array.Reverse by using ref reassignment

* Optimize MemoryExtensions.Reverse

6 years agoArm64 debugger step into behavior (#17912)
David Wrighton [Tue, 8 May 2018 03:48:30 +0000 (20:48 -0700)]
Arm64 debugger step into behavior (#17912)

- Fix #ifdef in StubManagerHelpers::StubGetSecondArg that erroneously referred to TARGET_ARM instead of TARGET_ARM64
- Add condition in StubManagerHelpers::GetTailCallTarget to refer to X12 as is used by the various helpers that can pause in the midst of stepping
  - Fix StubDispatchFixupStub to use X12 as tail call register instead of X9 to match the other tail-calling stubs

6 years agoArm64: Pass promoted struct using GT_FIELD_LIST
Carol Eidt [Mon, 7 May 2018 23:27:30 +0000 (16:27 -0700)]
Arm64: Pass promoted struct using GT_FIELD_LIST

6 years agoMerge pull request #17910 from jashook/vc_runtime
Jarret Shook [Mon, 7 May 2018 19:51:52 +0000 (12:51 -0700)]
Merge pull request #17910 from jashook/vc_runtime

Add vcruntime to core_root for arm(64) jobs.

6 years agoAdd vcruntime to core_root for arm(64) jobs.
jashook [Mon, 7 May 2018 17:41:29 +0000 (10:41 -0700)]
Add vcruntime to core_root for arm(64) jobs.

6 years agoUpdate CoreClr, CoreFx to preview1-26507-05, preview1-26507-04, respectively (#17894)
dotnet-maestro-bot [Mon, 7 May 2018 17:17:16 +0000 (12:17 -0500)]
Update CoreClr, CoreFx to preview1-26507-05, preview1-26507-04, respectively (#17894)

6 years agoReflection: Fix DefaultValue for optional DateTime (#17877)
stakx [Mon, 7 May 2018 16:28:37 +0000 (18:28 +0200)]
Reflection: Fix DefaultValue for optional DateTime (#17877)

Querying the default value of an optional `DateTime` parameter using
`ParameterInfo.DefaultValue` can throw a `FormatException` if that
default value is a null constant in metadata, which is how the C#
compiler encodes a default value of `default(DateTime)`.

This commit fixes that error by adding the proper handling for null
metadata constants with `DateTime` parameters.

6 years agoReflection.Emit: Allow `ParameterBuilder.SetConstant(null)` for value-typed parameter...
stakx [Mon, 7 May 2018 14:15:49 +0000 (16:15 +0200)]
Reflection.Emit: Allow `ParameterBuilder.SetConstant(null)` for value-typed parameters (#17887)

* Add test for dotnet/corefx#26184

The Roslyn C# compiler encodes an optional, value-typed parameter's
default value of `default(TValueType)` as a null reference constant in
metadata. Add a test that verifies that reflection can do the same
using `ParameterBuilder.SetConstant(null)`.

* Always allow ParameterBuilder.SetConstant(null)

* Remove test project as requested in review

These tests move to CoreFX. See dotnet/corefx#29532.

6 years agoMerge pull request #17847 from dotnet-maestro-bot/master-UpdateDependencies
Jan Kotas [Sun, 6 May 2018 13:48:44 +0000 (06:48 -0700)]
Merge pull request #17847 from dotnet-maestro-bot/master-UpdateDependencies

Update BuildTools, CoreClr, CoreFx to preview1-02804-04, preview1-26506-01, preview1-26506-01, respectively (master)

6 years agoRename netcoreapp2.1 -> netcoreapp2.2
Jan Kotas [Sun, 6 May 2018 05:10:34 +0000 (22:10 -0700)]
Rename netcoreapp2.1 -> netcoreapp2.2

6 years agoDelete unnecessary internal layer of Span globalization helpers (#17890)
Jan Kotas [Sun, 6 May 2018 02:58:04 +0000 (19:58 -0700)]
Delete unnecessary internal layer of Span globalization helpers (#17890)

This change makes the code both smaller and faster. For example, the following is about 1.4x faster with this change:

```
ReadOnlySpan<char> s1 = "Hello world";
ReadOnlySpan<char> s2 = "world";
for (int i = 0; i < 100000000; i++) s1.EndsWith(s2, StringComparison.OrdinalIgnoreCase);
```

Also, I have ported GetCaseCompareOfComparisonCulture code size optimization from #16434 while I was on it because of it fit well with the rest of the changes.

6 years agoUpdate BuildTools, CoreClr, CoreFx to preview1-02804-04, preview1-26506-01, preview1...
dotnet-maestro-bot [Sun, 6 May 2018 01:28:57 +0000 (18:28 -0700)]
Update BuildTools, CoreClr, CoreFx to preview1-02804-04, preview1-26506-01, preview1-26506-01, respectively

6 years agoRemove use of ByReference<T> in Memmove ABI (#17889)
Levi Broderick [Sat, 5 May 2018 17:18:02 +0000 (10:18 -0700)]
Remove use of ByReference<T> in Memmove ABI (#17889)

Use new ref reassignment feature instead

6 years agodisable dialog box for forced unhandled exception (#17888)
Sung Yoon Whang [Sat, 5 May 2018 17:14:47 +0000 (10:14 -0700)]
disable dialog box for forced unhandled exception (#17888)

6 years agoSplit unix test builds in slices (#17785)
Steve MacLean [Fri, 4 May 2018 19:53:44 +0000 (15:53 -0400)]
Split unix test builds in slices (#17785)

* Split unix test builds in slices

Ports #17161 to linux

* Address review feedback

6 years agoFix System.String over-allocation (#17876)
Jan Kotas [Fri, 4 May 2018 17:40:28 +0000 (10:40 -0700)]
Fix System.String over-allocation (#17876)

BaseSize for System.String was not set correctly. It caused unnecessary extra 8 bytes to be allocated at the end of strings that had `Length % 4 < 2` on 64-bit platforms.

This change makes affected strings proportionally cheaper. For example, `new string('a', 1)` in a long-running loop is 7% faster.

6 years agoStep into multicast delegate (#17879)
David Wrighton [Fri, 4 May 2018 06:09:33 +0000 (23:09 -0700)]
Step into multicast delegate (#17879)

- Fix call of multicast debugger trace helper to be called before the first delegate invocation instead of after it

6 years agoMerge pull request #17866 from briansull/byref-fix
Brian Sullivan [Thu, 3 May 2018 23:27:44 +0000 (16:27 -0700)]
Merge pull request #17866 from briansull/byref-fix

[ARM-ARCH] Ensure that any byrefs created in genCodeForIndexAddr cannot point outside of the array

6 years agoMerge pull request #17781 from BruceForstall/Fix17738
Bruce Forstall [Thu, 3 May 2018 22:41:33 +0000 (15:41 -0700)]
Merge pull request #17781 from BruceForstall/Fix17738

Fix for ARM secure delegate non-standard register arg

6 years ago[Linux/x86] Fix tests in case of 4-byte alignment for 64-bit types (#17829)
Konstantin Baladurin [Thu, 3 May 2018 19:57:26 +0000 (22:57 +0300)]
[Linux/x86] Fix tests in case of 4-byte alignment for 64-bit types (#17829)

JIT/Directed/RVAInit/nested
JIT/Directed/RVAInit/simple
JIT/Regression/CLR-x86-JIT/V1.2-Beta1/b103058/b103058

6 years agoPort Marshal UTF8 fixes from CoreRT (#17868)
Jan Kotas [Thu, 3 May 2018 17:36:15 +0000 (10:36 -0700)]
Port Marshal UTF8 fixes from CoreRT (#17868)

6 years agoMerge pull request #17873 from stakx/documentation-corrections
Bruce Forstall [Thu, 3 May 2018 16:02:39 +0000 (09:02 -0700)]
Merge pull request #17873 from stakx/documentation-corrections

Some corrections in build documentation

6 years agoSome corrections in build documentation
stakx [Thu, 3 May 2018 15:49:32 +0000 (17:49 +0200)]
Some corrections in build documentation

6 years agotypo (#17867)
Bernie FitzGerald [Thu, 3 May 2018 02:23:00 +0000 (12:23 +1000)]
typo (#17867)

Serialable should have been Serializable
publically should have been publicly

6 years agoClarifying comment on overflow (#17865)
Dan Moseley [Thu, 3 May 2018 00:20:50 +0000 (17:20 -0700)]
Clarifying comment on overflow (#17865)

* Clarifying comment on overflow

* Nits

6 years agoFix for Issue 17823
Brian Sullivan [Mon, 30 Apr 2018 22:56:42 +0000 (15:56 -0700)]
Fix for Issue 17823
Ensure that any byrefs created in genCodeForIndexAddr cannot point outside of the array
Used the scaled add instructions for more powers of two
Only use the safe byref sequence when generating fully interruptible code.

6 years agoFix faulty assert in Utilities.SelectBucketIndex (#17863)
Stephen Toub [Wed, 2 May 2018 18:34:32 +0000 (11:34 -0700)]
Fix faulty assert in Utilities.SelectBucketIndex (#17863)

0 is a valid length.

6 years agoDelete incorrect comment (#17859)
Jan Kotas [Wed, 2 May 2018 10:48:41 +0000 (03:48 -0700)]
Delete incorrect comment (#17859)

6 years agoRename internal Utf8String to MdUtf8String (#17856)
Atsushi Kanamori [Wed, 2 May 2018 03:30:22 +0000 (20:30 -0700)]
Rename internal Utf8String to MdUtf8String (#17856)

We want to start prototyping Utf8String in CoreFxLab
and for that, we'll need a bare-bones System.Utf8String
class exposed from System.Private.CoreLib.

Unfortunately, CoreLib already has an internal
struct named System.Utf8String. Since it's only
an internal type, we'll exercise eminent domain
on its name now and get these noise changes out of
the way.

6 years agoFix for ARM secure delegate non-standard register arg
Bruce Forstall [Wed, 25 Apr 2018 20:34:16 +0000 (13:34 -0700)]
Fix for ARM secure delegate non-standard register arg

For ARM, doing a secure delegate call requires adding
a custom calling convention argument R4 as the address of the
secure delegate invoke indirection cell. This is done using the
fgMorphArgs nonStandardArgs mechanism, and the argument is added
at the end. For calls with 4 or more register arguments, this
didn't work: we would initially set the non-standard arg as a
non-register argument, and the nonStandardArgs check didn't
consider converting an argument from a stack argument back to
a register argument. The fix allows nonStandardArgs to be either
stack or register arguments, no matter what their place in the
argument list would imply.

Fixes #17738