Peter Kukol [Fri, 23 Sep 2016 00:26:08 +0000 (17:26 -0700)]
Split MORPH into multiple phases. (dotnet/coreclr#7314)
* Split MORPH into multiple phases.
Commit migrated from https://github.com/dotnet/coreclr/commit/
9811c769c00542f5e919deaab153d45e951c96d3
Tarek Mahmoud Sayed [Fri, 23 Sep 2016 00:09:14 +0000 (17:09 -0700)]
Merge pull request dotnet/coreclr#7325 from tarekgh/AddStringInfoMethods
Add the needed StringInfo methods to Linux implementation
Commit migrated from https://github.com/dotnet/coreclr/commit/
18739447f026225f99399f9eabeda6ccb4551462
Tarekm Mahmoud Sayed [Thu, 22 Sep 2016 21:06:44 +0000 (14:06 -0700)]
Add the needed StringInfo methods to Linux implementation
Commit migrated from https://github.com/dotnet/coreclr/commit/
c1ea5eaf0c9bae9a119816bcc32fc5decb5b35b8
Carol Eidt [Thu, 22 Sep 2016 20:58:55 +0000 (13:58 -0700)]
Merge pull request dotnet/coreclr#7303 from CarolEidt/Fix7195
DynBlk assert fixes for Arm64
Commit migrated from https://github.com/dotnet/coreclr/commit/
4d35bb6bc8644f54055ef41f4a65fef8c633e576
Stephen Toub [Thu, 22 Sep 2016 20:56:41 +0000 (13:56 -0700)]
Add System.Reflection.Pointer deserialization ctor to model.xml (dotnet/coreclr#7322)
Commit migrated from https://github.com/dotnet/coreclr/commit/
698c8ba3dda4ad0d112601c650ce5bca26151aab
Jan Kotas [Thu, 22 Sep 2016 20:56:16 +0000 (13:56 -0700)]
Merge pull request dotnet/coreclr#7318 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
032ef20765a2a2aefe74049663f1387cb6ed1089
Mike McLaughlin [Thu, 22 Sep 2016 20:51:13 +0000 (13:51 -0700)]
Fix Unable to step through Visual Studio remote debugger with coreclr executables on Nano Server (dotnet/coreclr#7317)
Needed to add back a dummy version of ICorDebugLegacyNetCFHostCallbackInvoker_PrivateWindowsPhoneOnly interface so
VS doesn't get the QI failure and stop working by not calling the "Continue" method.
Issue dotnet/coreclr#7316
Commit migrated from https://github.com/dotnet/coreclr/commit/
5df288ed77b004708babe296d96412e3bdb13bed
Pat Gavlin [Thu, 22 Sep 2016 20:10:32 +0000 (13:10 -0700)]
Merge pull request dotnet/coreclr#7319 from pgavlin/GTLongFieldList
Decompose GT_FIELD_LIST nodes that use a GT_LONG.
Commit migrated from https://github.com/dotnet/coreclr/commit/
4dd3965514c9b4316230cbd329fc0b0f84be2a92
Tarek Mahmoud Sayed [Thu, 22 Sep 2016 19:46:40 +0000 (12:46 -0700)]
Merge pull request dotnet/coreclr#7315 from tarekgh/DigitsValueUnicodecategory
Support Digit and Decimal values in CharUnicodeInfo
Commit migrated from https://github.com/dotnet/coreclr/commit/
3deaee80d100d7ebe2f20d738e793ccfb20ac98b
Pat Gavlin [Thu, 22 Sep 2016 17:33:01 +0000 (10:33 -0700)]
Fix formatting issues.
Commit migrated from https://github.com/dotnet/coreclr/commit/
91abd10e5949a1f4d3d49dc36d889ee69009b58f
Carol Eidt [Thu, 22 Sep 2016 17:31:46 +0000 (10:31 -0700)]
Merge pull request dotnet/coreclr#7309 from CarolEidt/x86MkRefAny
Support mkrefany for x86
Commit migrated from https://github.com/dotnet/coreclr/commit/
c91221eed275fb39bef531e05712b933aeadf358
Tarekm Mahmoud Sayed [Thu, 22 Sep 2016 16:50:32 +0000 (09:50 -0700)]
Support Digit and Decimal values in CharUnicodeInfo
This change adding the needed data for the digit and decimal values and the needed code to use the data and return the required values
Commit migrated from https://github.com/dotnet/coreclr/commit/
a57fb42e11b47271e98d3f3b00a893f21717b076
Pat Gavlin [Thu, 22 Sep 2016 17:17:15 +0000 (10:17 -0700)]
Merge pull request dotnet/coreclr#7294 from pgavlin/longLclFld
Implement `st.lclFld` decomposition and fix dotnet/coreclr#6778.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b9da91395cd7caa07b5fa29de1c85fc4f118c1dd
Pat Gavlin [Thu, 22 Sep 2016 17:16:27 +0000 (10:16 -0700)]
Address PR feedback.
Commit migrated from https://github.com/dotnet/coreclr/commit/
48dbb7fc19cc342bc940685b3abef044cdea5c48
Dmitri-Botcharnikov [Thu, 22 Sep 2016 17:13:52 +0000 (21:13 +0400)]
[GDB/JIT] Add support for lldb step-over command on managed code (dotnet/coreclr#7273)
Commit migrated from https://github.com/dotnet/coreclr/commit/
23ee0200b6066615486696469fb27b514a87727d
Pat Gavlin [Thu, 22 Sep 2016 17:12:59 +0000 (10:12 -0700)]
Decompose GT_FIELD_LIST nodes that use a GT_LONG.
These nodes are decomposed by splitting the appropriate field list
element into two elements: one each for the low and high halves of
the GT_LONG.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ea7fd8631c858638b346204e3a4b6f8a8ac9110c
dotnet-bot [Thu, 22 Sep 2016 16:58:40 +0000 (09:58 -0700)]
GcInfo V2 for Jit32 Desktop
This change switches Jit32 on Desktop CLR to use GcInfo V2 encodings.
The updates to the encoder are in this change, and the necessary changes
to the decoder in the VM are already in place.
Testing:
Standard DDR testing
X86 GCStress testing
[tfs-changeset: 1628772]
Commit migrated from https://github.com/dotnet/coreclr/commit/
aa665d0a2d3556a8e824f7ea00ffb4e5955f52c1
Michelle McDaniel [Thu, 22 Sep 2016 16:41:29 +0000 (09:41 -0700)]
Merge pull request dotnet/coreclr#7312 from adiaaida/improveFormattingVerbosity
Improve formatting job output
Commit migrated from https://github.com/dotnet/coreclr/commit/
9816ad1dc99e77c2ce710a3fcb415e237f18f399
Michelle McDaniel [Thu, 22 Sep 2016 15:58:47 +0000 (08:58 -0700)]
Improve formatting job output
To make it more clear where there are formatting errors, have format.py
print what commands the user needs to run to fix the formatting errors in
their PR.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b4f55f2c03cda410607872fd62247c52b1a8eeb6
Michelle McDaniel [Thu, 22 Sep 2016 15:24:57 +0000 (08:24 -0700)]
Merge pull request dotnet/coreclr#7311 from adiaaida/fixutilsformatting
Fix formatting in utils.cpp
Commit migrated from https://github.com/dotnet/coreclr/commit/
f5d7e048cf7d66c6dc8473d428bf2d82dddd07d5
Michelle McDaniel [Thu, 22 Sep 2016 15:23:35 +0000 (08:23 -0700)]
Fix formatting in utils.cpp
Commit migrated from https://github.com/dotnet/coreclr/commit/
60bfe2b8517fc38f22b2dad0ec21f46d9426d933
Carol Eidt [Thu, 22 Sep 2016 05:49:59 +0000 (22:49 -0700)]
Support mkrefany for x86
Use a GT_FIELD_LIST to pass the RefAny struct.
Fix dotnet/coreclr#4183
Commit migrated from https://github.com/dotnet/coreclr/commit/
0ff0cec84a0b3037b63753ea5573a29e6695e44b
Jonghyun Park [Thu, 22 Sep 2016 13:53:18 +0000 (22:53 +0900)]
Supports cross build configuration override (dotnet/coreclr#7307)
Commit migrated from https://github.com/dotnet/coreclr/commit/
cbb38ce37524a101d31277810a7c358678f9bc3a
Jan Kotas [Thu, 22 Sep 2016 13:47:29 +0000 (06:47 -0700)]
Merge pull request dotnet/coreclr#7304 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
621c0aba11a96772686089433fb20c8438e59100
Vance Morrison [Thu, 22 Sep 2016 13:46:49 +0000 (06:46 -0700)]
Generate CrossGen Pdbs as part of bulid (dotnet/coreclr#7298)
This change has two parts. The first part changes build.cmd and the pkgproj
so that as part of generating a .NET Core package we also generate the PDBS
for the Native System.Private.Corelib.ni.dll.
The second part changes crossgen so that it marks the Native Images as having
a list of 0 exports. This is important because we want the generated PDBs
to be naturally published on the symbol server, and currently the symbol server
skips DLLs what are 'resource only' (no imports or exports). Because native
images don't use 'normal' PE imports and exports, they get optimized away
by the symbol server. Making a empy list of exports fixes this.
Commit migrated from https://github.com/dotnet/coreclr/commit/
787f727c64c1b3034434be265d103fb7d4e0950f
Peter Kukol [Thu, 22 Sep 2016 05:39:06 +0000 (22:39 -0700)]
Display histogram of total memory per method when MEASURE_MEM_ALLOC is on. (dotnet/coreclr#7286)
* Display histogram of total memory per method when MEASURE_MEM_ALLOC is on.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0c3727eaaad0f255e18959f835de0dca3ce714eb
Sivarv [Thu, 22 Sep 2016 01:28:49 +0000 (18:28 -0700)]
Merge pull request dotnet/coreclr#7285 from sivarv/internalReg
Support Lower to reserve internal register(s) different from targetReg.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d599d610d493d42a4e0ca0d248b9e2ae5fbf3694
Pat Gavlin [Tue, 20 Sep 2016 23:44:53 +0000 (16:44 -0700)]
Implement `st.lclFld` decomposition and fix dotnet/coreclr#6778.
The problem that was blocking both of these issues was an issue in
liveness when analyzing `st.lclFld` nodes that store to an unpromoted
long-typed local variable or any long-typed field. The latter case--a
`st.lclFld` node that targets a long-typed field--is easy to handle.
Such stores are decomposed from:
```
/--* t0 int
+--* t1 int
t2 = * gt_long long
/--* t2
* st.lclFld long V00
```
To:
```
/--* t0
* st.lclFld int V00 [+0]
/--* t1
* st.lclFld int V00 [+4]
```
The two `st.lclFld` nodes that this transformation generates are marked
with `GTF_VAR_USEASG` to indicate that they are partial (rather than
complete) defs. This is necessary in order to correctly calculate
liveness.
Before this change, stores to unpromoted long-typed local variables
were also decomposed in the above fashion. These local vars can arise in
a number of situations:
- vars that are used to store multi-reg args or return values
- vars that represent long-typed fields of promoted struct-typed vars
- long-typed vars that are marked as unenregisterable before decomp
Unfortunately, the decomposition given above differs in its liveness
semantics when compared to the original IR: in the original IR, the
`st.lclVar` is considered a plain def of its destination, while in
the decomposed IR, each `st.lclFld` is considered both a partial def
and a use of its destination. This difference--namely, that in the
first case the destination is not used at the def and in the second
case it is--causes problems for any analysis that needs to take into
account whether or not a variable is used at a def (e.g. dead store
removal, live-in sets, etc.). In order to retain the original
semantics without complicating the IR, stores to unpromoted, long-typed
local variables are not decomposed. These stores are instead handled
during code generation.
Commit migrated from https://github.com/dotnet/coreclr/commit/
bfadb4bf808f23af05a39e38208985ab009d117b
dotnet-bot [Thu, 22 Sep 2016 01:05:43 +0000 (18:05 -0700)]
Add missing contracts on GCHeapUtilities
[tfs-changeset: 1628632]
Commit migrated from https://github.com/dotnet/coreclr/commit/
630e92c8dd830b04d174bb5000a520f97648b254
Carol Eidt [Thu, 22 Sep 2016 00:47:00 +0000 (17:47 -0700)]
DynBlk assert fixes for Arm64
In the case where the block size is not a constant, there were some incorrect asserts. The size register is on the size node itself, the node is a store, and the check for whether the size is a handle used to be guarded by a check that it is GT_CNS_INT, but since it was really intended to assert that there are no gc pointers, according to the comment on the old code, it doesn't really seem to be a useful assert (we could never get a size node in that case, in the new IR form).
Commit migrated from https://github.com/dotnet/coreclr/commit/
f0a50665caeac5bc43207ea22301a5274a1bcca9
Michelle McDaniel [Thu, 22 Sep 2016 00:27:26 +0000 (17:27 -0700)]
Merge pull request dotnet/coreclr#7302 from adiaaida/moreFormatting
Fix formatting in ssabuilder
Commit migrated from https://github.com/dotnet/coreclr/commit/
ea3f94c11af19abc5dd4631acf5c083d318a56f2
sivarv [Wed, 21 Sep 2016 22:17:04 +0000 (15:17 -0700)]
Support Lower to reserve internal register(s) different from targetReg.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1d56a0dfd1f717d91494e976cada0ec36ede3e56
Tarek Mahmoud Sayed [Wed, 21 Sep 2016 23:01:59 +0000 (16:01 -0700)]
Merge pull request dotnet/coreclr#7299 from tarekgh/MarkCultureInfoMethodsAsPublic
Mark some CultureInfo methods as public
Commit migrated from https://github.com/dotnet/coreclr/commit/
4e7fdb4b30d54422a6103eb81f6d525350b9aca1
Michelle McDaniel [Wed, 21 Sep 2016 22:10:31 +0000 (15:10 -0700)]
Fix formatting in ssabuilder
The formatting changes missed the new changes to ssabuilder. Format that
file.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e2bdd1c663c8d036fef26e4a1af427aec47d8e7e
Michelle McDaniel [Wed, 21 Sep 2016 21:57:18 +0000 (14:57 -0700)]
Merge pull request dotnet/coreclr#7291 from adiaaida/format
Reformat jit source base and turn on formatting jobs for PR
Commit migrated from https://github.com/dotnet/coreclr/commit/
fd9742be1d02890a93705fba456ca0d91fa7989f
Gaurav Khanna [Wed, 21 Sep 2016 21:56:33 +0000 (14:56 -0700)]
Merge pull request dotnet/coreclr#7284 from gkhanna79/Ver120
Update Nuget package versions to 1.2.0
Commit migrated from https://github.com/dotnet/coreclr/commit/
d891a2c0f3e07c50837155b61b114a1e6e585793
Tarek Mahmoud Sayed [Wed, 21 Sep 2016 21:10:44 +0000 (14:10 -0700)]
Mark some CultureInfo methods as public
We are exposing such APIs now so we need them to be public
Commit migrated from https://github.com/dotnet/coreclr/commit/
b757a1b065196898b2c3737e206d1eceac7119f4
Michelle McDaniel [Wed, 21 Sep 2016 18:18:21 +0000 (11:18 -0700)]
Fix formatting job for Ubuntu
The change to move to the newer version of the CLI for coreclr causes
something to look for a config.json file in the current directory (rather
than the directory where the build.sh script resides), forcing build.sh to
be run from the base coreclr dir (you can't run it from any other
location), so changing directories to the jitutils bin directory would
cause the build to fail, failing the jit-format run. This change fixes the
format.py script to build the full path to the jit-format executable and
then run it from the coreclr directory, rather than changing to the utils
bin dir and running jit-format from there.
Commit migrated from https://github.com/dotnet/coreclr/commit/
eb8dae1c33dc8f7fcc8c6e574a164720a9a15f62
Michelle McDaniel [Wed, 21 Sep 2016 16:56:46 +0000 (09:56 -0700)]
Make formatting jobs required for PR
Commit migrated from https://github.com/dotnet/coreclr/commit/
a7d22cc184e99435389b528e2089270c76a9d0d7
Michelle McDaniel [Wed, 21 Sep 2016 17:30:30 +0000 (10:30 -0700)]
Fix conflicts between nix and Windows formatting
Commit migrated from https://github.com/dotnet/coreclr/commit/
70cc6cd0201fa67582a8934fe8b12684ba7dd726
Michelle McDaniel [Wed, 21 Sep 2016 16:39:53 +0000 (09:39 -0700)]
Reformat jit code on OSX
Commit migrated from https://github.com/dotnet/coreclr/commit/
f5ca87984ca08db0c5ee7133f7fb4aa7840fb2db
Michelle McDaniel [Wed, 21 Sep 2016 16:25:28 +0000 (09:25 -0700)]
Reformat jit code for Windows x64
Commit migrated from https://github.com/dotnet/coreclr/commit/
49a13624affce9b5f7757c9208f902307385827c
Eugene Rozenfeld [Wed, 21 Sep 2016 20:41:18 +0000 (13:41 -0700)]
Merge pull request dotnet/coreclr#7191 from erozenfeld/SSAStackOverflow
Fix for StackOverflow in SsaBuilder::TopologicalSort.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f490d4dd10fb0d891f8b080078f5c5156885789c
John Chen [Wed, 21 Sep 2016 20:29:21 +0000 (13:29 -0700)]
Fix OS X build break with AppleClang 8.0.0 (dotnet/coreclr#7292)
Fixes issue dotnet/coreclr#7275
Commit migrated from https://github.com/dotnet/coreclr/commit/
af5172c88b1a6753135ca4d4c01b4a4a479f8002
Carol Eidt [Wed, 21 Sep 2016 19:54:19 +0000 (12:54 -0700)]
Merge pull request dotnet/coreclr#7293 from CarolEidt/FixArmObj
Fix Arm64 codegen to use GT_FIELD_LIST
Commit migrated from https://github.com/dotnet/coreclr/commit/
a793c0cd7cd70c9c42acd29b7ab9cf75750d02bc
Carol Eidt [Wed, 21 Sep 2016 18:52:45 +0000 (11:52 -0700)]
Merge pull request dotnet/coreclr#7289 from CarolEidt/Fix7196
Fix Issue 7196: No extra internal regs for block nodes
Commit migrated from https://github.com/dotnet/coreclr/commit/
7dd07204cbfabed2b1cdbc2d0296b42559c3839f
Carol Eidt [Wed, 21 Sep 2016 18:12:45 +0000 (11:12 -0700)]
Fix Arm64 codegen to use GT_FIELD_LIST
In dotnet/coreclr#7252 changing GT_LIST to GT_FIELD_LIST when passing struct fields,
I omitted some required changes to codegenarm64.cpp. This caused the
crossgen of System.Private.CoreLib.dll to fail.
Commit migrated from https://github.com/dotnet/coreclr/commit/
c26da4558d0ce18e265a460f7a857e13fa019364
Eugene Rozenfeld [Wed, 14 Sep 2016 19:41:47 +0000 (12:41 -0700)]
Fix for StackOverflow in SsaBuilder::TopologicalSort.
SsaBuilder::TopologicalSort allocated an array of bools on the stack.
In one of internal cases the array had 126,758 elements, which caused a
StackOverflow. This change switches SsaBuilder::TopologicalSort from
stack-allocated array of bools to BitVec.
TopologicalSortHelper used to be recursive. It was changed to use an iterative
algorithm in a previous change. I'm inlining TopologicalSortHelper into
TopologicalSort now.
I verified no measurable negative throughput impact from this change
and no asm diffs in SuperPMI.
Commit migrated from https://github.com/dotnet/coreclr/commit/
79f0faf49be6b03061287bcc566b9f5726eae360
Carol Eidt [Wed, 21 Sep 2016 16:13:20 +0000 (09:13 -0700)]
Fix Issue 7196: No extra internal regs for block nodes
There is some possibly obsolete code that copies the internal registers
for a GT_IND onto the address node as well. With the struct IR changes,
the block nodes (e.g. GT_STORE_BLK) also return true for OperIsIndir(),
so they were getting the internal registers copied over from their address
node. This led to an assert on Arm64.
Fix dotnet/coreclr#7196
Commit migrated from https://github.com/dotnet/coreclr/commit/
ade992f6eb09edf73b1c9324d4c1bdc4ded5cc1e
John Chen [Wed, 21 Sep 2016 13:50:03 +0000 (06:50 -0700)]
Fix CrossGen error reporting when input is missing (dotnet/coreclr#7287)
Currently, running "crossgen foo.dll" when foo.dll does not exist produces
a misleading error message "The image being compiled is not a .NET assembly".
The reason is CrossGen ignores the actual error code reported during
initial asssembly load and verification, and always reports the error as
NGEN_E_FILE_NOT_ASSEMBLY. This change removes that logic, since the original
error code is much more likely to be useful.
Commit migrated from https://github.com/dotnet/coreclr/commit/
96f474c67e83b178c3a27afc1540953948610c73
Hugh Bellamy [Wed, 21 Sep 2016 13:48:08 +0000 (14:48 +0100)]
If out some dead code in System.Array for FEATURE_CORECLR (dotnet/coreclr#7288)
Commit migrated from https://github.com/dotnet/coreclr/commit/
eb98e3dd66f374be44f523099084e45163de5143
Peter Kukol [Wed, 21 Sep 2016 01:59:34 +0000 (18:59 -0700)]
Clean up GenTree node size dumping code. (dotnet/coreclr#7278)
Clean up GenTreeXxxx struct size dump; fix 32-bit build when MEASURE_NODE_SIZE is enabled.
Commit migrated from https://github.com/dotnet/coreclr/commit/
171962f54145236ab354f64961b2174f404d605f
Joseph Tremoulet [Wed, 21 Sep 2016 00:49:23 +0000 (20:49 -0400)]
Merge pull request dotnet/coreclr#7280 from JosephTremoulet/BoundsCheckDisable
Respect JitNoRangeChks flag in RyuJit
Commit migrated from https://github.com/dotnet/coreclr/commit/
389474470052273a67942da042a2476f0cab7deb
Gaurav Khanna [Wed, 21 Sep 2016 00:44:03 +0000 (17:44 -0700)]
Update Nuget package versions to 1.2.0
Commit migrated from https://github.com/dotnet/coreclr/commit/
566716493cc3fdd73bfb3e20fdf5ceb83d412ce9
Carol Eidt [Tue, 20 Sep 2016 23:41:35 +0000 (16:41 -0700)]
Merge pull request dotnet/coreclr#7252 from CarolEidt/x86GtObj
Support GT_OBJ for x86
Commit migrated from https://github.com/dotnet/coreclr/commit/
425e8b4ab686478e40cf4c7e720200bd58a56584
Mike McLaughlin [Tue, 20 Sep 2016 22:22:33 +0000 (15:22 -0700)]
Fix launch timing issue in dbgshim found in VS. (dotnet/coreclr#7279)
Issue dotnet/coreclr#7274.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f29eee4896d490f88e06865916d5821d0fad935a
Joseph Tremoulet [Tue, 20 Sep 2016 20:09:32 +0000 (16:09 -0400)]
Respect JitNoRangeChks flag in RyuJit
Honor this config flag by having assertion prop treat all bounds check
nodes as redundant when it is set.
Also change the flag's lookup options to `REGUTIL_default` to match the
rest of the jit-focused flags.
Note that support for this flag is conditional on having the preprocessor
flag `FEATURE_ENABLE_NO_RANGE_CHECKS` defined, which requires a custom
build with line 199 of inc/switches.h un-commented (or with compile flags
altered to include `-DFEATURE_ENABLE_NO_RANGE_CHECKS`) -- the purpose of
the flag is to facilitate experiments to estimate the cumulative cost of
bounds checking in various workloads.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0aebfbef08a28b28dbf687d7f49cbc8369ea441a
Carol Eidt [Sat, 10 Sep 2016 15:24:51 +0000 (08:24 -0700)]
Support GT_OBJ for x86
Add support for GT_OBJ for x86, and allow them to be transformed into a list
of fields (in morph) if it is a promoted struct. Add a new list type for
this (GT_FIELD_LIST) with the type and offset, and use it for the multireg
arg passing as well for consistency.
Also refactor fgMorphArgs so that there is a positive check for reMorphing,
rather than relying on gtCallLateArgs, which can be null if there are no
register args.
In codegenxarch, modify the struct passing (genPutStructArgStk) to work for
both the x64/ux and x86 case, including the option of pushing fields onto
the stack.
Eliminate the redundant INS_movs_ptr, and replace with the pre-existing
INS_movsp.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e550cf35bd5ff8e7eefcb1a605219f71a3672d83
Davis Goodin [Tue, 20 Sep 2016 18:03:36 +0000 (13:03 -0500)]
Upgrade CLI, buildtools for RTM shared framework. (dotnet/coreclr#7045)
Commit migrated from https://github.com/dotnet/coreclr/commit/
610c0b1cd28b5624f718b739d2eea4c0a44f5adb
kchoi [Tue, 20 Sep 2016 15:23:11 +0000 (08:23 -0700)]
mute EH failures exposed by LTO (dotnet/coreclr#7267)
It does this by using a no-inline, no-opt function that takes in
the volatile pointer and performing operation that generates h/w
exception. The function has a runtime check on the volatile pointer to
pretend to throw (but never does), which fools the C++ runtime into
handling the h/w exception.
Commit migrated from https://github.com/dotnet/coreclr/commit/
276618176c9101ce475ea2b56115a67c436fa53b
Vance Morrison [Tue, 20 Sep 2016 15:10:56 +0000 (08:10 -0700)]
Merge pull request dotnet/coreclr#7268 from vancem/master
Fix Bad NGEN Pdbs for ReadyToRun images
Commit migrated from https://github.com/dotnet/coreclr/commit/
b7605f846dbfcebbd60143fa061c4b435f443cbf
Rama krishnan Raghupathy [Tue, 20 Sep 2016 05:35:49 +0000 (22:35 -0700)]
Merge pull request dotnet/coreclr#7181 from ramarag/CompilerServices
Adding Compiler services APIs
Commit migrated from https://github.com/dotnet/coreclr/commit/
53b124af8ab69316223f05d05fba30e069aa0503
Mike McLaughlin [Tue, 20 Sep 2016 01:47:25 +0000 (18:47 -0700)]
Create long-named DAC and SOS DLLs for Windows. (dotnet/coreclr#7265)
Issue dotnet/coreclr#5869
Commit migrated from https://github.com/dotnet/coreclr/commit/
b5bf14ff8d2d87fdbac0ae63cedf1ac835d07148
Rama Krishnan Raghupathy [Thu, 15 Sep 2016 20:45:04 +0000 (13:45 -0700)]
Fix GC Stress testing on non windows platforms
Commit migrated from https://github.com/dotnet/coreclr/commit/
9a236ce1619e8c3df173fbff55ff7184bb76de22
Rama Krishnan Raghupathy [Thu, 15 Sep 2016 00:03:11 +0000 (17:03 -0700)]
test FixedAddressValueType and RuntimeWrappedException
Commit migrated from https://github.com/dotnet/coreclr/commit/
a3d93afa96c7bf488347d139c5f0affb0517674c
Vance Morrison [Mon, 19 Sep 2016 23:18:38 +0000 (16:18 -0700)]
FixBadReadyToRunPdb.9-19-16
Commit migrated from https://github.com/dotnet/coreclr/commit/
f67a32fbcaf47b9072acbe1638beb8d61842b5dd
Pat Gavlin [Mon, 19 Sep 2016 23:14:04 +0000 (16:14 -0700)]
Merge pull request dotnet/coreclr#7232 from pgavlin/gh4186
Implement indirect VSD calls for x86.
Commit migrated from https://github.com/dotnet/coreclr/commit/
573cbeb2c0a729168147cb7e61f47fa40bd60b55
Peter Kukol [Mon, 19 Sep 2016 22:44:22 +0000 (16:44 -0600)]
Add option for showing GT_xxx operator counts. (dotnet/coreclr#7262)
Commit migrated from https://github.com/dotnet/coreclr/commit/
30e6ae225a113d2e286dbd868bba38c786bf141b
Pat Gavlin [Mon, 19 Sep 2016 20:56:30 +0000 (13:56 -0700)]
Fix a bug in LIR::Use::ReplaceWith.
Commit migrated from https://github.com/dotnet/coreclr/commit/
9e75337a08253a92154c40349dd6860e4f39faba
Dan Moseley [Mon, 19 Sep 2016 20:56:59 +0000 (13:56 -0700)]
Expose missing public field on Debugger (dotnet/coreclr#7258)
Commit migrated from https://github.com/dotnet/coreclr/commit/
c4fcfff56c826813fe04daae2ae73104859b9352
Dan Moseley [Mon, 19 Sep 2016 18:16:37 +0000 (11:16 -0700)]
Fill out SecurityException with stubs (dotnet/coreclr#7250)
Commit migrated from https://github.com/dotnet/coreclr/commit/
88e230b20d6c784a5f2d28150815f0647e94cbdf
Swaroop Sridhar [Mon, 19 Sep 2016 16:02:42 +0000 (09:02 -0700)]
Merge pull request dotnet/coreclr#7237 from swaroop-sridhar/gc86legacy
X86 GcEncode: Support V1 and V2 encodings
Commit migrated from https://github.com/dotnet/coreclr/commit/
217ba4dbe16d17d8174e8edb24134abd36bc0a3c
Pat Gavlin [Sat, 17 Sep 2016 01:35:38 +0000 (18:35 -0700)]
Mark GT_IND nodes that represent VSD targets.
The operand to such a node must be materialized into a register on
certain platforms. This change defines a new IND-specific flag,
GTF_IND_VSD_TGT, and uses that flag to indicate that a particular
GT_IND node represents a VSD target. This flag is then observed by
lowering on the necessary platforms in order to short circuit the
logic that attempts to make the GT_IND's operand contained.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0188c07e524986bd6f8587e57f37f97e3143bb0e
Swaroop Sridhar [Fri, 16 Sep 2016 21:32:06 +0000 (14:32 -0700)]
X86 GcEncode: Support V1 and V2 encodings
The RYU+LegacyBackend Desktop JIT for X86 is still on V1.
So, permit both V1 and V2 encodings in gcencode.cpp.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e7ece6191343268042ca0af8d2df512cbfea771c
Bart J.F. De Smet [Mon, 19 Sep 2016 01:11:37 +0000 (18:11 -0700)]
Exposing Type.GetTypeFromHandleUnsafe from model.xml (dotnet/coreclr#7249)
Exposing Type.GetTypeFromHandleUnsafe from model.xml
Commit migrated from https://github.com/dotnet/coreclr/commit/
20ddf732a11b8159a8860f38fcba5f01f3ca1280
Justin Van Patten [Sun, 18 Sep 2016 22:36:33 +0000 (15:36 -0700)]
Version: Make fields readonly and delete duplicate code (dotnet/coreclr#7246)
Change `Version`'s fields to `readonly` to better guarantee its
immutability, and remove duplicate code.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8e39803b560e3533e9af04209b098e2b59936781
kvochko [Sun, 18 Sep 2016 06:04:18 +0000 (10:04 +0400)]
Prevent source line info from being released (dotnet/coreclr#7222)
Commit migrated from https://github.com/dotnet/coreclr/commit/
32f0f9721afb584b4a14d69135bea7ddc129f755
Rama Krishnan Raghupathy [Thu, 15 Sep 2016 02:55:54 +0000 (19:55 -0700)]
Exposing IUnknownConstantAttribute
Commit migrated from https://github.com/dotnet/coreclr/commit/
ee5111494705036e725ed155c53567da2d40d33b
Rama Krishnan Raghupathy [Wed, 14 Sep 2016 02:21:58 +0000 (19:21 -0700)]
Exposing Remaining CompilerServices Apis in mscorlib
Commit migrated from https://github.com/dotnet/coreclr/commit/
561ce4a5324c5f388bcc7ed32ad8418ec3e5453b
Rama Krishnan Raghupathy [Wed, 14 Sep 2016 00:46:07 +0000 (17:46 -0700)]
Exposing ExecuteCodeWithGuaranteedCleanup in mscorlib
Commit migrated from https://github.com/dotnet/coreclr/commit/
76d11caf74540017e6d5106ddb5d01031d10abd5
Rama Krishnan Raghupathy [Tue, 13 Sep 2016 23:34:56 +0000 (16:34 -0700)]
Exposing RunModuleConstructor in mscorlib
Commit migrated from https://github.com/dotnet/coreclr/commit/
275221738920f4c70ff8af13d25c24ce50dcc187
Eric Mellino [Sat, 17 Sep 2016 00:05:43 +0000 (17:05 -0700)]
Merge pull request dotnet/coreclr#7238 from dotnet/mellinoe-patch-1
Add an Ubuntu 16.10 badge to README.md
Commit migrated from https://github.com/dotnet/coreclr/commit/
81e42b628ab83f892324b4147e0e4bfdfb18c874
Pat Gavlin [Fri, 16 Sep 2016 22:44:47 +0000 (15:44 -0700)]
Address PR feedback.
Commit migrated from https://github.com/dotnet/coreclr/commit/
2bb7e9ae5d7e991ec37345ef4befce738fa5996d
Michelle McDaniel [Fri, 16 Sep 2016 22:23:28 +0000 (15:23 -0700)]
Merge pull request dotnet/coreclr#7169 from adiaaida/shiftCnsInt
Add optimization for shift by CNS_INT
Commit migrated from https://github.com/dotnet/coreclr/commit/
ee2bfa8a2dc33afcb574f09dffe0baf52e68f58b
Eric Mellino [Fri, 16 Sep 2016 21:38:12 +0000 (14:38 -0700)]
Merge pull request dotnet/coreclr#7233 from mellinoe/ubuntu1610-ci
Add Ubuntu 16.10 to CI
Commit migrated from https://github.com/dotnet/coreclr/commit/
291baa671e6a8828ed82b02fd4f7c9009ec61ca6
Sepideh Khoshnood [Fri, 16 Sep 2016 20:12:56 +0000 (13:12 -0700)]
Add few System.Reflection APIs (dotnet/coreclr#7193)
* Add few remaining exposable System.Reflection APIs
Commit migrated from https://github.com/dotnet/coreclr/commit/
84c777a7dc1d0c237fec2ca49757a269e721c413
Michelle McDaniel [Fri, 9 Sep 2016 17:44:03 +0000 (10:44 -0700)]
Add optimization for shift by CNS_INT
This change adds support for shifting by a GT_CNS_INT without going
through a helper. If the shiftOp is a GT_CNS_INT we do several
transformations based on the shift amount:
If the shift amount is 0, the shift is a nop, so we just put together the
hi and lo ops as a GT_LONG.
If the shift amount is < 32, we generate a shl/shld pattern, a shr/shrd
pattern or a sar/shrd pattern, depending on the oper. The first operand of
the shrd/shld is a GT_LONG, which we crack in codegen, using it
essentially as two int operands, rather than creating a tri op GenTree
node (essentially so that we can have 3 operands, instead of the normal
two).
If the shift amount is 32, it differs between shifting left and shifting
right. For GT_LSH, we move the loOp into the hiResult and set the loResult
to 0. For GT_RSZ, we move the hiOp into the loResult, and set the hiResult
to 0. For GT_RSH, we move the hiOp into the loResult, and set the hiResult
to a 31 bit signed shift of the hiOp to sign extend.
If the shift amount is less than 64, but larger than 32: for GT_LSH, the
hiResult is a shift of the loOp by shift amount - 32 (the move from lo into hi is
the 32 bit shift). We set the loResult to 0. For GT_RSH and GT_RSZ, the
loResult is a right shift (signed for GT_RSH) of the hiOp by shift amount
- 32. The hiResult is 0 for GT_RSZ, and a 31 bit signed shift of hiOp1 for
GT_RSH.
If the shift amount is >= 64, we set both hiResult and loResult to 0 for
GT_LSH and GT_RSZ, and do a sign extend shift to set hiResult and loResult
to the sign of the original hiOp for GT_RSH.
Commit migrated from https://github.com/dotnet/coreclr/commit/
5c5e53363fd7ae7228764a006de1b1f158e64a16
Eric Mellino [Fri, 16 Sep 2016 19:11:29 +0000 (12:11 -0700)]
Add Ubuntu 16.10 to CI
Commit migrated from https://github.com/dotnet/coreclr/commit/
d3875aadd615c12f55cfd969905d996ec20c587c
Pat Gavlin [Mon, 12 Sep 2016 21:23:29 +0000 (14:23 -0700)]
Implement indirect VSD calls for x86.
Indirect VSD calls on x86 require not only that the address of the
VSD indirection cell is passed to the stub in EAX, but also that the
call instruction is
a) preceeded by a 3-byte NOP, and
b) exactly `call [eax]`.
On x64, these types of calls only require that the indirection cell
address is passed in R11 (i.e. they do not require the generation of
a specific call instruction encoding). The RyuJIT IR is therefore
able to represent such calls succinctly as something like:
t72 = lclVar ref V04 loc1 u:3 (last use) $240
/--* t72 ref
t295 = * putarg_reg ref
t202 = lclVar long V09 tmp4 u:4 $382
/--* t202 long
t296 = * putarg_reg long
t106 = lclVar long V09 tmp4 u:4 (last use) $382
/--* t106 long
t297 = * indir long
/--* t295 ref this in rcx
+--* t296 long arg1 in r11
+--* t297 long calli tgt
t107 = * call ind stub ref $24a
In this form, the address of the indirection cell is in the lclVar
`tmp4`, which is then used by both a `putarg_reg` to move the
argument into R11 and by the indirection that generates the call
target. Because there are a relatively large number of registers on
x64, this works out nicely: the address of the indirection cell is
frequently allocated to R11, few extraneous copies are required,
and the code generator produces `call [r11]` for the call instruction.
Unfortunately, the situation is not so straightforward on x86: not
only must code generator must both pass the address of the indirection
cell in EAX and produce the specific call form mentioned earlier,
but there are also far fewer available registers. As a result, the
address of the indirection cell is infrequently allocated to EAX and
(barring an implicit understanding in the code generator that a
previous putarg_reg has placed the address of the indirection cell
into EAX) requires a redundant `mov eax, ...` before the call.
Ideally, we would be able to store the address of the indirection cell
to a local with a very short lifetime and pre-allocate that local to
EAX, but the IR does not have that capability, and adding it now
seems to be prohibitively expensive. Instead, this change omits the
`putarg_reg` used to put the the indirection cell address into the
required register on other platforms and simply uses the `calli tgt`
operand to the call to represent both the non-standard argument and
the call target:
t40 = lclVar ref V04 loc1 u:3 $1c0
/--* t40 ref
t280 = * putarg_reg ref
t70 = lclVar int V06 loc3 u:4 (last use) $2c1
/--* t70 int
t281 = * indir int
/--* t280 ref this in ecx
+--* t281 int calli tgt
t71 = * call ind stub ref $1c6
Lowering then marks the indirection as contained and sets the
destination candidates for its operand to EAX.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f7d8a4a7dbd9ce5b2981d7c9632ac108b2dcef93
Rama Krishnan Raghupathy [Wed, 14 Sep 2016 22:57:36 +0000 (15:57 -0700)]
Enable Building Libraries for ilproj
Commit migrated from https://github.com/dotnet/coreclr/commit/
3e10b7622f5c7f80eab018e085b1328e35038fc7
Peter Kukol [Fri, 16 Sep 2016 05:59:05 +0000 (23:59 -0600)]
Option for reporting GenTree operator bashing stats (dotnet/coreclr#7152)
* Add option (off by default) to report GenTree operator bashing stats.
Commit migrated from https://github.com/dotnet/coreclr/commit/
832a7498bf7aff89a70800c5f02517866f93dc1f
Wes Haggard [Fri, 16 Sep 2016 03:16:01 +0000 (20:16 -0700)]
Merge pull request dotnet/coreclr#7212 from joperezr/FixmscorlibRef
Remove unwanted String.Split methods from Reference assembly
Commit migrated from https://github.com/dotnet/coreclr/commit/
bf98629e268931b87f676dba12a5f23e78b28767
Pat Gavlin [Fri, 16 Sep 2016 02:11:30 +0000 (19:11 -0700)]
Merge pull request dotnet/coreclr#7170 from pgavlin/gh7144
Refactor call arg table updates.
Commit migrated from https://github.com/dotnet/coreclr/commit/
fa87917dc43f0c82bc2a2c62359e88f27b633477
Sivarv [Fri, 16 Sep 2016 00:55:43 +0000 (17:55 -0700)]
Merge pull request dotnet/coreclr#7194 from sivarv/jitstressregs1or8Fix
Fix to issues dotnet/coreclr#7167, 7094 and 7143
Commit migrated from https://github.com/dotnet/coreclr/commit/
52f4340ddc04161924204a5c548b85a707600bac
Aditya Mandaleeka [Thu, 15 Sep 2016 23:56:26 +0000 (16:56 -0700)]
Minor fix in GC section of BOTR
Commit migrated from https://github.com/dotnet/coreclr/commit/
654c2d3cc45d918506be17306b8f1e3314f4771f
Pat Gavlin [Tue, 13 Sep 2016 20:42:14 +0000 (13:42 -0700)]
Refactor call arg table updates.
When a call argument is replaced by a new node, the corresponding entry
in the call's argument table must be replaced. Managing this replacement
was a bit ad-hoc: there were a (small) number of places throughout the
compiler that needed to do so, and each determined whether or not to
call the udpate method (`fgFixupArgTabEntryPtr`) independently. The
update method has been removed and its functionality replaced with a
new method, `GenTree::ReplaceOperand`, which will update the call
argument table iff the replaced node is a call argument.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8ebb1d54583d0ebc03235e78e51f3026fbb7e4d3
Jose Perez Rodriguez [Thu, 15 Sep 2016 23:19:50 +0000 (16:19 -0700)]
Adding new Split members with defaults
Commit migrated from https://github.com/dotnet/coreclr/commit/
90de022879851cbc1f30f82c70f1e4f8bcc51223
sivarv [Thu, 15 Sep 2016 18:30:48 +0000 (11:30 -0700)]
Fix LSRA stress modes not to constrain candidates to below the
required limit.
Commit migrated from https://github.com/dotnet/coreclr/commit/
90850acdc2e8292b0fc49ef62c4a7cbb2323b2d7
Gaurav Khanna [Thu, 15 Sep 2016 22:40:27 +0000 (15:40 -0700)]
Merge pull request dotnet/coreclr#7213 from dotnet/revert-7123-WinArm32CI
Revert "Enable Win32Arm CI support"
Commit migrated from https://github.com/dotnet/coreclr/commit/
e5a1ef3975c47ee8ba1cb99aff7440e224e0dfb0
Gaurav Khanna [Thu, 15 Sep 2016 22:30:32 +0000 (15:30 -0700)]
Revert "Enable Win32Arm CI support"
Commit migrated from https://github.com/dotnet/coreclr/commit/
fa825792a78b1e52a797f9ecf938fe86a6ba8cb3