Konstantin Baladurin [Mon, 11 Sep 2017 14:48:01 +0000 (17:48 +0300)]
Fix building of rootfs for Tizen armel (dotnet/coreclr#13854)
Now there isn't arm buildtarget in tizen-base repository.
Use standard one to fetch packages for rootfs.
Commit migrated from https://github.com/dotnet/coreclr/commit/
5358c179e08d22b54769d22a1e6f2c8accc07f2d
Kevin Gosse [Mon, 11 Sep 2017 14:14:11 +0000 (16:14 +0200)]
Make order of elements consistent (dotnet/coreclr#13892)
When the cache is only partially populated, MemberInfoCache.Insert will
insert the new members into the cache. But then, it will return the
original list. In subsequent calls, it will return the cached list.
However, the order of elements can be different, which can cause issues
with methods that rely on the order of elements returned by
Type.GetFields (for instance, Attribute.GetHashCode)
Commit migrated from https://github.com/dotnet/coreclr/commit/
c49bce445a6950bd05d7fd6752691da2aef2883b
Stephen Toub [Mon, 11 Sep 2017 14:09:31 +0000 (10:09 -0400)]
Merge pull request dotnet/coreclr#13894 from dotnet-maestro-bot/master-UpdateDependencies
Update PgoData to master-
20170911-0041 (master)
Commit migrated from https://github.com/dotnet/coreclr/commit/
bbfc670345689ca14cebc4436ca45717010e3546
dotnet-maestro-bot [Mon, 11 Sep 2017 07:57:00 +0000 (00:57 -0700)]
Update PgoData to master-
20170911-0041
Commit migrated from https://github.com/dotnet/coreclr/commit/
73650ce7f0c7c94f089472a965224fa75bb0be80
Stephen Toub [Mon, 11 Sep 2017 06:55:58 +0000 (02:55 -0400)]
Merge pull request dotnet/coreclr#13893 from dotnet-maestro-bot/master-UpdateDependencies
Update CoreClr to preview2-25711-01 (master)
Commit migrated from https://github.com/dotnet/coreclr/commit/
6e131e5588c5031fcd91a6537b7812e3e294fd60
dotnet-maestro-bot [Mon, 11 Sep 2017 00:15:37 +0000 (17:15 -0700)]
Update CoreClr to preview2-25711-01
Commit migrated from https://github.com/dotnet/coreclr/commit/
98a1bf65bff1b3c41827e71c1b8ae33b960d7f98
Stephen Toub [Sun, 10 Sep 2017 13:20:14 +0000 (09:20 -0400)]
Merge pull request dotnet/coreclr#13847 from dotnet-maestro-bot/master-UpdateDependencies
Update CoreClr, PgoData to preview2-25709-04, master-
20170910-0049, respectively (master)
Commit migrated from https://github.com/dotnet/coreclr/commit/
888b7a94f7b684f988110b9f0b8f3f6ea49746e1
dotnet-maestro-bot [Sun, 10 Sep 2017 08:06:00 +0000 (01:06 -0700)]
Update CoreClr, PgoData to preview2-25709-04, master-
20170910-0049, respectively
Commit migrated from https://github.com/dotnet/coreclr/commit/
01390f44c43bd60ea7c669be5bd518a6c29f786c
Stephen Toub [Sun, 10 Sep 2017 03:25:18 +0000 (23:25 -0400)]
Merge pull request dotnet/coreclr#13849 from stephentoub/string_create
Add String.Create span-based method
Commit migrated from https://github.com/dotnet/coreclr/commit/
35a8c82f0ab9fe2e9ee8974ecca01e317b467800
Jan Kotas [Sun, 10 Sep 2017 01:48:20 +0000 (18:48 -0700)]
Merge pull request dotnet/coreclr#13888 from jkotas/corelib-mirror
Mirror changes from dotnet/corert
Commit migrated from https://github.com/dotnet/coreclr/commit/
4f6bc73e9a9e609715b17e173a1cf50cc3975890
Stephen Toub [Sat, 9 Sep 2017 23:44:19 +0000 (19:44 -0400)]
Merge pull request dotnet/coreclr#13886 from ahsonkhan/SpanReadOnlyStruct
Marking {ReadOnly}Span with IsReadOnly attribute
Commit migrated from https://github.com/dotnet/coreclr/commit/
3e32eb999e874969828cb241f72e3c0a0385e987
Jan Kotas [Sat, 9 Sep 2017 23:32:23 +0000 (16:32 -0700)]
Finish moving files to shared CoreLib partition
Commit migrated from https://github.com/dotnet/coreclr/commit/
d8b4a52cf98504bd9fc47d2ff1996a63015c83eb
Jan Kotas [Sat, 9 Sep 2017 22:51:05 +0000 (15:51 -0700)]
Move PInvoke interop related attributes to shared CoreLib partition
[tfs-changeset: 1673253]
Commit migrated from https://github.com/dotnet/coreclr/commit/
6211a9143b90edc1eadc71873555e7ab27fad18f
Jan Kotas [Sat, 9 Sep 2017 16:06:21 +0000 (09:06 -0700)]
Finish moving files to shared partition
Commit migrated from https://github.com/dotnet/coreclr/commit/
3580376aa1b6775bdb2f2eaab745dc50e14b089f
Jan Kotas [Sat, 9 Sep 2017 11:57:48 +0000 (04:57 -0700)]
Fix IntrinsicAttribute build break
Commit migrated from https://github.com/dotnet/coreclr/commit/
bd6f5574b05aa1c814c5dbada47a122685806dd3
Daniel Podder [Sat, 9 Sep 2017 19:33:18 +0000 (12:33 -0700)]
Enable auto-update for PGO data (dotnet/coreclr#13883)
Move PgoDataPackageVersion into dependencies.props, which enables auto-update functionality.
Also, update optdata version to
20170908-1805.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d6900913634dc59099149fbe6106c6a304da63eb
Jan Kotas [Sat, 9 Sep 2017 07:28:46 +0000 (00:28 -0700)]
Cleanup Guid formatting (dotnet/coreclr#13885)
Commit migrated from https://github.com/dotnet/coreclr/commit/
00aab411f0c34d17b6545202a50b6c566ba5bc73
ahsonkhan [Sat, 9 Sep 2017 05:23:16 +0000 (22:23 -0700)]
Marking {ReadOnly}Span with IsReadOnly attribute.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e720daaea3bf24109dbf469f4e1d9fc8bb78787b
Pat Gavlin [Sat, 9 Sep 2017 04:18:07 +0000 (21:18 -0700)]
Merge pull request dotnet/coreclr#13842 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
dfb0916bcec8e4b77539aade03f353b88b88761e
Pat Gavlin [Sat, 9 Sep 2017 04:14:13 +0000 (21:14 -0700)]
Merge pull request dotnet/coreclr#13110 from pgavlin/SPMIJitOptions
Add the capability to specify JIT options on the SPMI command line.
Commit migrated from https://github.com/dotnet/coreclr/commit/
2e2219d5dfe2986fec1c41c37a1047ac30562243
Stephanie Niu [Sat, 9 Sep 2017 02:58:35 +0000 (19:58 -0700)]
Guid span-based APIs (ctor, TryWriteBytes, TryFormat) (dotnet/coreclr#13323)
* standardized style changes
* 3 span-ified guid methods
throw null exception for readonlyspan ctor
full changes
* restructured trywritebytes
* changed writebytehelper from feedback
* changed casing of switch statement
* indentation
Commit migrated from https://github.com/dotnet/coreclr/commit/
959ccab91af7f475337777ce97fa5241de9042ff
Pat Gavlin [Sat, 9 Sep 2017 01:56:36 +0000 (18:56 -0700)]
Merge pull request dotnet/coreclr#13863 from pgavlin/DevDiv491211
Properly update GTF_{ASG,EXCEPT} in call morphing.
Commit migrated from https://github.com/dotnet/coreclr/commit/
605d1ec46af444510459eaf39bd2c10f36eba8ca
Steve MacLean [Sat, 9 Sep 2017 01:41:42 +0000 (21:41 -0400)]
[Arm64] Optimize System.Buffer:Memmove (dotnet/coreclr#13793)
* [Arm64] Optimize System.Buffer:Memmove
Enable HAS_BLOCKS
Disable code to fall back to native memmove until memmove
optimizations are merged to OS mainline
* Add links to issues
Commit migrated from https://github.com/dotnet/coreclr/commit/
8296625f3f312e5400f1c394ec742d91e9bc9ba5
Jan Kotas [Sat, 9 Sep 2017 01:16:01 +0000 (18:16 -0700)]
Move files to shared partition (dotnet/coreclr#13870)
Moved pseudo-custom attribute reflection helpers from attribute definitions to reflection to prepare attribute definitions to be moved to shared partition.
Commit migrated from https://github.com/dotnet/coreclr/commit/
2b532ae967e23ea478d9ffdd684f387c99602b3d
Koundinya Veluri [Sat, 9 Sep 2017 00:14:09 +0000 (17:14 -0700)]
Port some concurrent collection implementations with latest fixes from CoreFX into CoreCLR copies (dotnet/coreclr#12939)
Commit migrated from https://github.com/dotnet/coreclr/commit/
3fc4180f8e0bf71e09a54f0f95ec7ec6a4f492f2
Daniel Podder [Fri, 8 Sep 2017 23:55:04 +0000 (16:55 -0700)]
Add a <clear /> to packageSources in src/NuGet.Config (dotnet/coreclr#13874)
Fixes dotnet/coreclr#13873
Commit migrated from https://github.com/dotnet/coreclr/commit/
3505d67c279cdb1b8231b53350a340ad34151c78
Viktor Hofer [Fri, 8 Sep 2017 22:10:51 +0000 (00:10 +0200)]
Merge pull request dotnet/coreclr#13845 from ViktorHofer/DBNull-Serialization
Make DBNull serializable
Commit migrated from https://github.com/dotnet/coreclr/commit/
07aa22b73705115046abfa2d3a029184dd5e2fd7
Jan Kotas [Fri, 8 Sep 2017 04:33:15 +0000 (21:33 -0700)]
Non-shared changes
Commit migrated from https://github.com/dotnet/coreclr/commit/
f25c4efc8c3fabdf3ae5ff0c02fc66325765b332
Jan Kotas [Sun, 3 Sep 2017 16:57:12 +0000 (09:57 -0700)]
Delete redundant PInvokes
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
a32c09888f81b919af48be41b79ae1e52f8d3d09
Jan Kotas [Sun, 3 Sep 2017 16:40:43 +0000 (09:40 -0700)]
Move HResults to shared partition
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
747d7d2cf7e3510b26cdc7579e934d7b5bad50c0
Jan Kotas [Fri, 8 Sep 2017 22:04:56 +0000 (15:04 -0700)]
Fix CoreLib build warnings (dotnet/coreclr#13851)
Commit migrated from https://github.com/dotnet/coreclr/commit/
44a263dc29011e9c68632b6b693996ab439e3e92
Koundinya Veluri [Fri, 8 Sep 2017 21:19:05 +0000 (14:19 -0700)]
Change lock used for initializing YieldProcessorNormalized from Crst to CrstStatic (dotnet/coreclr#13857)
Fixes https://github.com/dotnet/coreclr/issues/13779
Commit migrated from https://github.com/dotnet/coreclr/commit/
03260fda5966a8dda85dc116f9421ce1f0b436ef
Pat Gavlin [Fri, 8 Sep 2017 18:55:07 +0000 (11:55 -0700)]
Address PR feedback.
Commit migrated from https://github.com/dotnet/coreclr/commit/
989bd42215c4aba4c810006bd5e3c712c0cd9921
Matt Mitchell [Fri, 8 Sep 2017 17:26:37 +0000 (10:26 -0700)]
Only delete agent when not succesful (dotnet/coreclr#13865)
Spinup for this agent is unreliable (docker fails to start a lot). Only delete when the build fails.
Commit migrated from https://github.com/dotnet/coreclr/commit/
72201862c9b646ca651b686c5d7df9b71ca033e8
Pat Gavlin [Fri, 8 Sep 2017 17:19:18 +0000 (10:19 -0700)]
Properly update GTF_{ASG,EXCEPT} in call morphing.
The former is only necessary if it is set on any of the call's
arguments; the latter is necessary if the call may throw or if it is set
on any of the call's arguments.
Fixes DevDiv 491211.
Commit migrated from https://github.com/dotnet/coreclr/commit/
c49649ad05b6acf76112713a6b8aeaf5ef96464b
Viktor Hofer [Fri, 8 Sep 2017 16:35:23 +0000 (18:35 +0200)]
Adding serializable attribute to type
Commit migrated from https://github.com/dotnet/coreclr/commit/
d19b3accedd3f08d1322015e065528aefc138fe5
Viktor Hofer [Fri, 8 Sep 2017 14:56:25 +0000 (16:56 +0200)]
PR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
b9a716a7cc4cedcc8e1f7c262b9a0594b9bad3cb
Stephen Toub [Fri, 8 Sep 2017 01:42:42 +0000 (21:42 -0400)]
Add String.Create span-based method
Commit migrated from https://github.com/dotnet/coreclr/commit/
02394ece0c070d61ccbc55b2104486d7b8f7600c
Dan Moseley [Sat, 2 Sep 2017 07:47:53 +0000 (00:47 -0700)]
Fix EventProvider to build on Linux
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
121d9a31e924c321dfb75dd0ffe16f227cf5e290
Viktor Hofer [Thu, 7 Sep 2017 23:36:46 +0000 (01:36 +0200)]
Remove unused params
Commit migrated from https://github.com/dotnet/coreclr/commit/
423d10d5c56bd2e45050a478af2068a3fd70f4f2
Viktor Hofer [Thu, 7 Sep 2017 23:25:51 +0000 (01:25 +0200)]
Add exception handling for other input and add comments
Commit migrated from https://github.com/dotnet/coreclr/commit/
35f886799786dd7571747b15cd3e8c88b55cd9fd
Pat Gavlin [Sat, 29 Jul 2017 22:42:39 +0000 (15:42 -0700)]
Add the capability to specify JIT options on the SPMI command line.
This change adds two new flags, `-jitoption` and `-jit2option`, to the
SuperPMI command line. These flags are cumulative, and are used to
specify JIT config options (e.g. `COMPlus_JitDisasm`, albeit without the
`COMPlus_` prefix) to the base and diff JITs, respectively.
This change also removes Smarty-specific code and support for capturing
and replaying environment variables. The former is no longer terribly
useful and the latter has been obviated by the JIT host interface.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a6f64213881c8ebbd3035c694d4c7193846e3893
Viktor Hofer [Thu, 7 Sep 2017 23:12:19 +0000 (01:12 +0200)]
Revert access modifier change and update its comment
Commit migrated from https://github.com/dotnet/coreclr/commit/
b142440f83ba0c11ea14cd266cfb657fbd119395
Pat Gavlin [Thu, 7 Sep 2017 23:04:55 +0000 (16:04 -0700)]
Merge pull request dotnet/coreclr#13838 from pgavlin/DevDiv489992
Copy `GTF_{ASG,EXCEPT}` flags in `gtCloneExpr`.
Commit migrated from https://github.com/dotnet/coreclr/commit/
5f8e80736169fe67bf3f2953a9cb1b645ba71a68
Viktor Hofer [Thu, 7 Sep 2017 23:04:15 +0000 (01:04 +0200)]
More comments and remove of corert special case
Commit migrated from https://github.com/dotnet/coreclr/commit/
29408dcf9c2b00c7e2a77fa9ab41a4fdf9f59b0b
Viktor Hofer [Thu, 7 Sep 2017 23:01:50 +0000 (01:01 +0200)]
PR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
f2706ae32e1198e7c5f0cfecb4d83da38802bb16
David Mason [Thu, 7 Sep 2017 22:56:30 +0000 (15:56 -0700)]
Make dumpmd work with tiered jitting. Now displays previous code addresses (dotnet/coreclr#13805)
* Make dumpmd work with tiered jitting. Now displays previous code addresses
* add tier info and nativecodeversionnode ptr to dumpmd output
* fix warnings on non-rejit platforms
Commit migrated from https://github.com/dotnet/coreclr/commit/
4a7ee67a60fb2c40d755dfd4f7e2824954650193
Karthik Rajasekaran [Thu, 7 Sep 2017 22:39:06 +0000 (15:39 -0700)]
Retry linux arm legs on a new agent (dotnet/coreclr#13839)
Commit migrated from https://github.com/dotnet/coreclr/commit/
e390d7202605f3e5c9eb123f37c67ec5685c3fee
Viktor Hofer [Thu, 7 Sep 2017 21:57:22 +0000 (23:57 +0200)]
Make DBNull serializable
Commit migrated from https://github.com/dotnet/coreclr/commit/
db966f690d5a17e2fa812defce42d4caab4aeaa4
Jarret Shook [Thu, 7 Sep 2017 21:34:20 +0000 (14:34 -0700)]
Merge pull request dotnet/coreclr#12334 from sdmaclea/PR-Optimize-Jit-WriteBarriers
[Arm64] Optimize JIT_WriteBarriers
Commit migrated from https://github.com/dotnet/coreclr/commit/
957c61acbfebc665135797ed503940241adfdb6d
Andy Ayers [Thu, 7 Sep 2017 21:28:07 +0000 (14:28 -0700)]
New jit intrinsic support (dotnet/coreclr#13815)
Support for new-style intrinsics where corelib methods can have both IL
implementations and optional jit-supplied implementations.
Mark such methods with the [Intrinsic] attribute, then recognize the
intrinsic methods by name in the jit.
Jit currently has a placeholder for the Enum.HasFlag method.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b7cce5a59f7c6bd5a33b88f2af252693bbbd7373
Andy Ayers [Thu, 7 Sep 2017 21:26:46 +0000 (14:26 -0700)]
Desktop changes corresponding to https://github.com/dotnet/coreclr/pull/13815
The new jit interface method is stubbed out in desktop, as we will not see any of these new style intriniscs there (at least for now).
[tfs-changeset: 1673063]
Commit migrated from https://github.com/dotnet/coreclr/commit/
613c7392410c9a8ecb76d822e0d133713d230609
Pat Gavlin [Thu, 7 Sep 2017 19:47:42 +0000 (12:47 -0700)]
Copy `GTF_{ASG,EXCEPT}` flags in `gtCloneExpr`.
These flags from the source were being unioned with those of the copy,
which was incorrect in cases where the copy's flags were overly
conservative. This change simply copies the values of these flags from
the source.
Fixes VSO 489992.
Commit migrated from https://github.com/dotnet/coreclr/commit/
63a45bca33ce5e507061c2f20c5a2f0e7e4fc4a6
Pat Gavlin [Thu, 7 Sep 2017 19:30:51 +0000 (12:30 -0700)]
Merge pull request dotnet/coreclr#13821 from pgavlin/DevDiv487701_487702
Fix VSO 487701 and 487702.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f3dfbf546396db24f5fbc690213e89beaebd5f35
Brian Chavez [Thu, 7 Sep 2017 18:36:37 +0000 (11:36 -0700)]
Spelling and grammar corrections - A through L (dotnet/coreclr#13683)
Commit migrated from https://github.com/dotnet/coreclr/commit/
eb2e9f90ba3679fa8386c4130f81c8061e8d4ca4
Pat Gavlin [Thu, 7 Sep 2017 18:33:59 +0000 (11:33 -0700)]
Merge pull request dotnet/coreclr#13817 from pgavlin/DevDiv487703
Do not remove NOPs used by calls.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0df2261b05bb693cc1c56fe956f51911c109999c
dotnet-maestro-bot [Thu, 7 Sep 2017 18:19:20 +0000 (11:19 -0700)]
Update CoreClr, CoreFx to preview2-25707-02, preview2-25707-02, respectively (dotnet/coreclr#13808)
Commit migrated from https://github.com/dotnet/coreclr/commit/
2fbf7f1e80a3dcb4ac5c2c0518158f38f483663c
sergey ignatov [Thu, 7 Sep 2017 18:14:29 +0000 (21:14 +0300)]
Fix for dotnet/coreclr#13830 issue (dotnet/coreclr#13831)
Commit migrated from https://github.com/dotnet/coreclr/commit/
11a10f8fc00f61f6c8fcaa8a13e0f4f271818178
Victor "Nate" Graf [Thu, 7 Sep 2017 15:55:21 +0000 (08:55 -0700)]
Fix incorrect treatment of pointer as fixed (dotnet/coreclr#13816)
Commit migrated from https://github.com/dotnet/coreclr/commit/
0644d5bd599b4562b1509429b8ae0ec62f4d7766
Jarret Shook [Thu, 7 Sep 2017 02:47:52 +0000 (19:47 -0700)]
Merge pull request dotnet/coreclr#13797 from jashook/arm64_green_ci
Disable tests based on 13796
Commit migrated from https://github.com/dotnet/coreclr/commit/
49676afffeefc6d033866699a65aa0aa14bf926f
Joseph Tremoulet [Thu, 7 Sep 2017 01:14:19 +0000 (21:14 -0400)]
Segregate merged returns by constant value (dotnet/coreclr#13792)
The JIT enforces a limit on the number of epilogs emitted in any given
method. Change the logic so that when this merging kicks in, returns of
constant values are given merged return blocks distinct from each other
and from the general return block, as long as we can do so without going
over the limit. This particularly helps avoid redundancy (while still
keeping method size down) in methods with a large number of constant
returns but only a few distinct constants, which is true of many
predicate methods with bool return type.
This is the compiler portion of dotnet/coreclr#13466 and dotnet/corefxdotnet/coreclr#23395.
Commit migrated from https://github.com/dotnet/coreclr/commit/
bb449c7489a7fb466dda7c7b6bce5122ded913ea
Sean Gillespie [Wed, 6 Sep 2017 23:12:25 +0000 (16:12 -0700)]
Vendor the volatile.h header into src/gc/env for the standalone GC build (dotnet/coreclr#13656)
* Vendor the volatile.h header into src/gc/env for the standalone GC build
* Repair the GC sample
* Remove some unneeded defines (fixes the sample build)
Commit migrated from https://github.com/dotnet/coreclr/commit/
9f38303221294f45740feefc1b6ddf72347ff882
Pat Gavlin [Wed, 6 Sep 2017 22:51:22 +0000 (15:51 -0700)]
Fix VSO 487701 and 487702.
Both of these issues stem from attempting to unassign a copied interval
from the copied-to register and then reassigning the interval to the
same. This corrupts some of the bookkeeping necessary to track whether
or not the interval in the register needs to be spilled, and the RA ends
up attempting to spill the interval being allocated even though it is
not assigned a register.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a6a61438b3451151b79c6d0a1188218d4fe121bb
Pat Gavlin [Wed, 6 Sep 2017 22:49:27 +0000 (15:49 -0700)]
Add tests for VSO 487701 and 487702.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b426e68b8f0a894216dc1e24526c4f11210c9249
Pat Gavlin [Wed, 6 Sep 2017 21:34:48 +0000 (14:34 -0700)]
Add a regression test.
Commit migrated from https://github.com/dotnet/coreclr/commit/
26648051369757beb170f4ce9a77a70b06b26a0f
Pat Gavlin [Wed, 6 Sep 2017 19:48:51 +0000 (12:48 -0700)]
Do not remove NOPs used by calls.
Instead of removing dead stores that are marked as late args, we replace
them with NOPs. This obviates the need to update the call's argument
table, but requires that the NOP itself not be DCE'd. This change marks
these NOPs with the `ORDER_SIDEEFF` flag s.t. DCE will not remove them.
Fixes VSO 487703.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6be064c11e0714e92d821025f3b630161f740577
Sergey Andreenko [Wed, 6 Sep 2017 19:38:58 +0000 (12:38 -0700)]
Fix DevDiv_278523 test for r2r x86. (dotnet/coreclr#13709)
* separate sources into 2 files: for 32 and for 64.
Commit migrated from https://github.com/dotnet/coreclr/commit/
03ef5b4cf46ba6b276706bf65fd76caf636f72cb
danmosemsft [Sat, 2 Sep 2017 00:55:10 +0000 (17:55 -0700)]
Restore Array.Empty
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
32ce0bc7012f7ebac0532aa66cfd89c6f60bb0ea
Jarret Shook [Wed, 6 Sep 2017 18:16:57 +0000 (11:16 -0700)]
Merge pull request dotnet/coreclr#13811 from jashook/fix_xarch_warning
Fix potentially uninitialized local variable 'regCount'
Commit migrated from https://github.com/dotnet/coreclr/commit/
6fce9f14142420d01a673072bf4a15ff125fa5dc
Sergey Andreenko [Wed, 6 Sep 2017 18:00:18 +0000 (11:00 -0700)]
Jit doesn't reload shift index if it was spilled to rcx. (dotnet/coreclr#13757)
Repro test. Fix and additional assert.
Commit migrated from https://github.com/dotnet/coreclr/commit/
27611bc9db08741afe0043f98ffa1bb440c0fd23
Pat Gavlin [Wed, 6 Sep 2017 17:28:50 +0000 (10:28 -0700)]
Merge pull request dotnet/coreclr#13659 from mikedn/cast-actual-type
Fix getCastDescription to use the actual source type
Commit migrated from https://github.com/dotnet/coreclr/commit/
eaf6269e4ee79d7ec51526564595a3f6404b7547
Michelle McDaniel [Wed, 6 Sep 2017 16:36:58 +0000 (09:36 -0700)]
Merge pull request dotnet/coreclr#13800 from adiaaida/addnopgoPerf
Add nopgo option for throughput runs
Commit migrated from https://github.com/dotnet/coreclr/commit/
7efd6e2217e309f5b26bea423390754a568ce971
jashook [Wed, 6 Sep 2017 16:26:22 +0000 (09:26 -0700)]
Fix potentially uninitialized local variable 'regCount'
Commit migrated from https://github.com/dotnet/coreclr/commit/
8fa850cd22d390f2f4b702a093ec46ebbc4c114b
Stephen Toub [Wed, 6 Sep 2017 15:48:01 +0000 (11:48 -0400)]
Add Memory-based Stream overloads to coreclr (dotnet/coreclr#13769)
Includes adding the virtuals to Stream and then overriding on the various streams implemented in coreclr.
Commit migrated from https://github.com/dotnet/coreclr/commit/
5fd50d8d7ab96dbb3868ab3e60d0e4fc10f44ca0
Adrian Godong [Wed, 6 Sep 2017 14:14:19 +0000 (07:14 -0700)]
Removed renamed method. (dotnet/coreclr#13803)
Commit migrated from https://github.com/dotnet/coreclr/commit/
b33f729d71f7a222c304f0fe817bb19032a34522
Austin Wise [Wed, 6 Sep 2017 12:19:48 +0000 (05:19 -0700)]
Support for not wrapping exceptions with TargetInvocationException. (dotnet/coreclr#13767)
* Support for not wrapping exceptions with TargetInvocationException.
For dotnet/corefxdotnet/coreclr#22866.
* Respond to PR feedback.
Mainly by making "WrapExceptions" consistently positive in FCalls.
* Remove BindingFlags.DoNotWrapExceptions tests in deference to CoreFX tests.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1f9aeeb7a3685bc7fd1098fc50d91ac81bae4873
dotnet-maestro-bot [Wed, 6 Sep 2017 04:53:24 +0000 (21:53 -0700)]
Update CoreClr, CoreFx to preview2-25706-01, preview2-25706-01, respectively (dotnet/coreclr#13734)
Commit migrated from https://github.com/dotnet/coreclr/commit/
8c64be6cf63b278c918c2280a82ee773e1e15647
Michelle McDaniel [Tue, 5 Sep 2017 22:34:10 +0000 (15:34 -0700)]
Add nopgo option for throughput runs
Commit migrated from https://github.com/dotnet/coreclr/commit/
2e27217069d349775136e2f32591013447a7e1fb
sergey ignatov [Wed, 6 Sep 2017 01:37:55 +0000 (04:37 +0300)]
Fix for CoreRT issue https://github.com/dotnet/corert/issues/3672 (ar… (dotnet/coreclr#13777)
* Fix for CoreRT issue https://github.com/dotnet/corert/issues/3672 (armel tizen)
* Added assertion for accessType
Commit migrated from https://github.com/dotnet/coreclr/commit/
25b6eef888e07f7dd0b0fea873554e786a952bf7
sergey ignatov [Wed, 6 Sep 2017 01:06:50 +0000 (04:06 +0300)]
implementing profiler ELT callbacks for AMD64 Linux (dotnet/coreclr#12603)
* implement profiler ELT callbacks for AMD64 Linux
* Some formatting fixes
* Fixed profiler
* Added aligning frame option
* Added aligning stack for quad values stores
Commit migrated from https://github.com/dotnet/coreclr/commit/
7e52c5341ca170c84632e1ef32c685d280f9824b
José Rivero [Wed, 6 Sep 2017 00:38:54 +0000 (17:38 -0700)]
Moving the Windows Performance runs from Server 2012 to Server 2016. (dotnet/coreclr#13725)
Commit migrated from https://github.com/dotnet/coreclr/commit/
e59fab0c899343fc5d382583bd07f4595659ac54
Omair Majid [Tue, 5 Sep 2017 23:22:55 +0000 (19:22 -0400)]
Add support for building under glibc 2.26 (dotnet/coreclr#13785)
glibc 2.26 renames a number of identifiers so they are reserved under
POSIX. Specifically, `padding` becomes `__glibc_reserved1`. Add a
configure test for it and use the appropriate field name.
See https://sourceware.org/bugzilla/show_bug.cgi?id=21457 for more
information.
Resolves dotnet/coreclr#13009
Commit migrated from https://github.com/dotnet/coreclr/commit/
a8f83b615708c529b112898e7d2fbc3f618b26ee
jashook [Tue, 5 Sep 2017 22:27:24 +0000 (15:27 -0700)]
Disable tests based on 13796
Commit migrated from https://github.com/dotnet/coreclr/commit/
449a1ad94c530492656afc2308fda6708e45aceb
Jarret Shook [Tue, 5 Sep 2017 22:20:39 +0000 (15:20 -0700)]
Merge pull request dotnet/coreclr#13791 from jashook/revert_13687
revert_13687
Commit migrated from https://github.com/dotnet/coreclr/commit/
342db113af0fe0743f5a3baf7b2390c80b0a8969
Koundinya Veluri [Tue, 5 Sep 2017 21:52:23 +0000 (14:52 -0700)]
Fix SemaphoreSlim throughput (dotnet/coreclr#13766)
In https://github.com/dotnet/coreclr/pull/13670, by mistake I made the spin loop infinite, that is now fixed.
As a result the numbers I had provided in that PR for SemaphoreSlim were skewed, and fixing it caused the throughput to get even lower. To compensate, I have found and fixed one culprit for the low throughput problem:
- Every release wakes up a waiter. Effectively, when there is a thread acquiring and releasing the semaphore, waiters don't get to remain in a wait state.
- Added a field to keep track of how many waiters were pulsed to wake but have not yet woken, and took that into account in Release() to not wake up more waiters than necessary.
- Retuned and increased the number of spin iterations. The total spin delay is still less than before the above PR.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e75f090a379da4d1f6016b2c73922387cc84e420
jashoo [Tue, 5 Sep 2017 18:42:15 +0000 (11:42 -0700)]
revert_13687
Commit migrated from https://github.com/dotnet/coreclr/commit/
472a0e568d3dffa2ce4db4b999ba47005081aadd
Fei Peng [Tue, 5 Sep 2017 18:34:56 +0000 (11:34 -0700)]
Add Intel hardware intrinsic API (dotnet/coreclr#13576)
Commit migrated from https://github.com/dotnet/coreclr/commit/
2abbf00b943aa57c8a04b9edc521bd8884ded852
Victor "Nate" Graf [Tue, 5 Sep 2017 16:36:53 +0000 (09:36 -0700)]
Fix access order for double pointer (dotnet/coreclr#13759)
* Fix access order for double pointer
* Reinforce test to catch more errors
Commit migrated from https://github.com/dotnet/coreclr/commit/
5d67a732d55546217f4c454f6d4c1b818c808db8
Jarret Shook [Tue, 5 Sep 2017 16:36:35 +0000 (09:36 -0700)]
Merge pull request dotnet/coreclr#13747 from jashook/lst_file_updates
Lst File updates.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d2cb4b6acce13393e610388360b047cb9384ccb9
Andy Ayers [Tue, 5 Sep 2017 14:23:55 +0000 (07:23 -0700)]
JIT: allow inlines of methods with calli (dotnet/coreclr#13756)
Provided call sig has default callling convention. Added test case.
Continuation of dotnet/coreclr#12714.
Commit migrated from https://github.com/dotnet/coreclr/commit/
47bb5bcbb4f5b96e829523b59d9a66cc730fce14
Shiming Ge [Tue, 5 Sep 2017 07:01:41 +0000 (15:01 +0800)]
Merge pull request dotnet/coreclr#13763 from shimingsg/v-shige/addtestdependencyxmlfiles
add test dependency xml files
Commit migrated from https://github.com/dotnet/coreclr/commit/
34b3f892268460c223e4c2f300484d2fb9c10ed7
Hanjoung Lee [Tue, 5 Sep 2017 05:26:33 +0000 (14:26 +0900)]
Print zapper stats on verbose mode (dotnet/coreclr#13774)
Commit migrated from https://github.com/dotnet/coreclr/commit/
f05b7526970249489d00d6b1538e53f6309f5f0d
Hanjoung Lee [Mon, 4 Sep 2017 23:33:13 +0000 (08:33 +0900)]
Fix uninitialized fields of ZapperStats (dotnet/coreclr#13773)
Commit migrated from https://github.com/dotnet/coreclr/commit/
801a82174519795f0e54f2f6aaacd3e331f78801
shimingsg [Sat, 2 Sep 2017 10:01:37 +0000 (18:01 +0800)]
update correct file path if the working folder is not test case folder
Commit migrated from https://github.com/dotnet/coreclr/commit/
36180faa982e1a8c32f6df990cd6c5617a36aaf2
Victor "Nate" Graf [Fri, 1 Sep 2017 23:19:07 +0000 (16:19 -0700)]
Change identifier for EventProviders from GUID to string name (dotnet/coreclr#13370)
* [WIP] Changed event provider to user String identifiers
* [WIP] Remove GUID from generated code
* [WIP] Many small fixes
* [WIP] Fix error in constructing GUID
* Pass EventSource to abstract away GUID/Name references
* Fix various small errors
* Delay construction of SString objects
* Change GUIDs to names
* Change hardcoded GUID strings to names
* Revert testing changes
* Remove extra line
* Use the EventSource name
* Use provider full names
* Use full-names for Rundown
* Bump version number for eventpipe file
* Address review comments
Commit migrated from https://github.com/dotnet/coreclr/commit/
bac965ea8d3977a08257ee6758e14ccda34547e3
Bruce Forstall [Fri, 1 Sep 2017 23:03:18 +0000 (16:03 -0700)]
Merge pull request dotnet/coreclr#13755 from BruceForstall/AddLsraAssert
Add an assert to getRegisterRecord() that regNum is legal
Commit migrated from https://github.com/dotnet/coreclr/commit/
b5fbc8de18444f4f256652b4dca48fcb4e104e40
Maoni Stephens [Fri, 1 Sep 2017 22:21:47 +0000 (15:21 -0700)]
need casting for size calculation (dotnet/coreclr#13754)
Commit migrated from https://github.com/dotnet/coreclr/commit/
15b62467035e97f8b1d9cb070f6ff689e34f91bc
Bruce Forstall [Fri, 1 Sep 2017 20:59:23 +0000 (13:59 -0700)]
Add an assert to getRegisterRecord() that regNum is legal
Commit migrated from https://github.com/dotnet/coreclr/commit/
b1ebfd0ed5c154a847bd02503e606a3464fdea68
Koundinya Veluri [Fri, 1 Sep 2017 20:09:40 +0000 (13:09 -0700)]
Add normalized equivalent of YieldProcessor, retune some spin loops (dotnet/coreclr#13670)
* Add normalized equivalent of YieldProcessor, retune some spin loops
Part of fix for https://github.com/dotnet/coreclr/issues/13388
Normalized equivalent of YieldProcessor
- The delay incurred by YieldProcessor is measured once lazily at run-time
- Added YieldProcessorNormalized that yields for a specific duration (the duration is approximately equal to what was measured for one YieldProcessor on a Skylake processor, about 125 cycles). The measurement calculates how many YieldProcessor calls are necessary to get a delay close to the desired duration.
- Changed Thread.SpinWait to use YieldProcessorNormalized
Thread.SpinWait divide count by 7 experiment
- At this point I experimented with changing Thread.SpinWait to divide the requested number of iterations by 7, to see how it fares on perf. On my Sandy Bridge processor, 7 * YieldProcessor == YieldProcessorNormalized. See numbers in PR below.
- Not too many regressions, and the overall perf is somewhat as expected - not much change on Sandy Bridge processor, significant improvement on Skylake processor.
- I'm discounting the SemaphoreSlim throughput score because it seems to be heavily dependent on Monitor. It would be more interesting to revisit SemaphoreSlim after retuning Monitor's spin heuristics.
- ReaderWriterLockSlim seems to perform worse on Skylake, the current spin heuristics are not translating well
Spin tuning
- At this point, I abandoned the experiment above and tried to retune spins that use Thread.SpinWait
- General observations
- YieldProcessor stage
- At this stage in many places we're currently doing very long spins on YieldProcessor per iteration of the spin loop. In the last YieldProcessor iteration, it amounts to about 70 K cycles on Sandy Bridge and 512 K cycles on Skylake.
- Long spins on YieldProcessor don't let other work run efficiently. Especially when many scheduled threads all issue a long YieldProcessor, a significant portion of the processor can go unused for a long time.
- Long spins on YieldProcessor is in some cases helping to reduce contention in high-contention cases, effectively taking away some threads into a long delay. Sleep(1) works much better but has a much higher delay so it's not always appropriate. In other cases, I found that it's better to do more iterations with a shorter YieldProcessor. It would be even better to reduce the contention in the app or to have a proper wait in the sync object, where appropriate.
- Updated the YieldProcessor measurement above to calculate the number of YieldProcessorNormalized calls that amount to about 900 cycles (this was tuned based on perf), and modified SpinWait's YieldProcessor stage to cap the number of iterations passed to Thread.SpinWait. Effectively, the first few iterations have a longer delay than before on Sandy Bridge and a shorter delay than before on Skylake, and the later iterations have a much shorter delay than before on both.
- Yield/Sleep(0) stage
- Observed a couple of issues:
- When there are no threads to switch to, Yield and Sleep(0) become no-op and it turns the spin loop into a busy-spin that may quickly reach the max spin count and cause the thread to enter a wait state, or may just busy-spin for longer than desired before a Sleep(1). Completing the spin loop too early can cause excessive context switcing if a wait follows, and entering the Sleep(1) stage too early can cause excessive delays.
- If there are multiple threads doing Yield and Sleep(0) (typically from the same spin loop due to contention), they may switch between one another, delaying work that can make progress.
- I found that it works well to interleave a Yield/Sleep(0) with YieldProcessor, it enforces a minimum delay for this stage. Modified SpinWait to do this until it reaches the Sleep(1) threshold.
- Sleep(1) stage
- I didn't see any benefit in the tests to interleave Sleep(1) calls with some Yield/Sleep(0) calls, perf seemed to be a bit worse actually. If the Sleep(1) stage is reached, there is probably a lot of contention and the Sleep(1) stage helps to remove some threads from the equation for a while. Adding some Yield/Sleep(0) in-between seems to add back some of that contention.
- Modified SpinWait to use a Sleep(1) threshold, after which point it only does Sleep(1) on each spin iteration
- For the Sleep(1) threshold, I couldn't find one constant that works well in all cases
- For spin loops that are followed by a proper wait (such as a wait on an event that is signaled when the resource becomes available), they benefit from not doing Sleep(1) at all, and spinning in other stages for longer
- For infinite spin loops, they usually seemed to benefit from a lower Sleep(1) threshold to reduce contention, but the threshold also depends on other factors like how much work is done in each spin iteration, how efficient waiting is, and whether waiting has any negative side-effects.
- Added an internal overload of SpinWait.SpinOnce to take the Sleep(1) threshold as a parameter
- SpinWait - Tweaked the spin strategy as mentioned above
- ManualResetEventSlim - Changed to use SpinWait, retuned the default number of iterations (total delay is still significantly less than before). Retained the previous behavior of having Sleep(1) if a higher spin count is requested.
- Task - It was using the same heuristics as ManualResetEventSlim, copied the changes here as well
- SemaphoreSlim - Changed to use SpinWait, retuned similarly to ManualResetEventSlim but with double the number of iterations because the wait path is a lot more expensive
- SpinLock - SpinLock was using very long YieldProcessor spins. Changed to use SpinWait, removed process count multiplier, simplified.
- ReaderWriterLockSlim - This one is complicated as there are many issues. The current spin heuristics performed better even after normalizing Thread.SpinWait but without changing the SpinWait iterations (the delay is longer than before), so I left this one as is.
- The perf (see numbers in PR below) seems to be much better than both the baseline and the Thread.SpinWait divide by 7 experiment
- On Sandy Bridge, I didn't see many significant regressions. ReaderWriterLockSlim is a bit worse in some cases and a bit better in other similar cases, but at least the really low scores in the baseline got much better and not the other way around.
- On Skylake, some significant regressions are in SemaphoreSlim throughput (which I'm discounting as I mentioned above in the experiment) and CountdownEvent add/signal throughput. The latter can probably be improved later.
Commit migrated from https://github.com/dotnet/coreclr/commit/
03bf95c8db9003a5925ca9383dca722a4c651e27
Andy Ayers [Fri, 1 Sep 2017 18:20:39 +0000 (11:20 -0700)]
JIT: fix some instruction size estimates (dotnet/coreclr#13432)
The jit might double-count the REX prefix for certain reg-reg moves, and
could overestimate the size of a code-referent LEA.
While the downstream emitter code can tolerate overestimates, it is better
not to have them.
Closes dotnet/coreclr#13398
Also fixes overestimates for the following:
* `call reg`
* `call [reg]`
* `call [reg + disp-byte]`
* `cmp al,byte`
Commit migrated from https://github.com/dotnet/coreclr/commit/
12db0a3ccf42ab21333872cc3984009aecd06eeb