platform/upstream/coreclr.git
8 years agoFix formatting in utils.cpp
Michelle McDaniel [Thu, 22 Sep 2016 15:23:35 +0000 (08:23 -0700)]
Fix formatting in utils.cpp

8 years agoSupports cross build configuration override (#7307)
Jonghyun Park [Thu, 22 Sep 2016 13:53:18 +0000 (22:53 +0900)]
Supports cross build configuration override (#7307)

8 years agoMerge pull request #7304 from dotnet-bot/from-tfs
Jan Kotas [Thu, 22 Sep 2016 13:47:29 +0000 (06:47 -0700)]
Merge pull request #7304 from dotnet-bot/from-tfs

Merge changes from TFS

8 years agoGenerate CrossGen Pdbs as part of bulid (#7298)
Vance Morrison [Thu, 22 Sep 2016 13:46:49 +0000 (06:46 -0700)]
Generate CrossGen Pdbs as part of bulid (#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.

8 years agoDisplay histogram of total memory per method when MEASURE_MEM_ALLOC is on. (#7286)
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. (#7286)

* Display histogram of total memory per method when MEASURE_MEM_ALLOC is on.

8 years agoMerge pull request #7285 from sivarv/internalReg
Sivarv [Thu, 22 Sep 2016 01:28:49 +0000 (18:28 -0700)]
Merge pull request #7285 from sivarv/internalReg

 Support Lower to reserve internal register(s) different from targetReg.

8 years agoAdd missing contracts on GCHeapUtilities
dotnet-bot [Thu, 22 Sep 2016 01:05:43 +0000 (18:05 -0700)]
Add missing contracts on GCHeapUtilities

[tfs-changeset: 1628632]

8 years agoMerge pull request #7302 from adiaaida/moreFormatting
Michelle McDaniel [Thu, 22 Sep 2016 00:27:26 +0000 (17:27 -0700)]
Merge pull request #7302 from adiaaida/moreFormatting

Fix formatting in ssabuilder

8 years agoSupport Lower to reserve internal register(s) different from targetReg.
sivarv [Wed, 21 Sep 2016 22:17:04 +0000 (15:17 -0700)]
Support Lower to reserve internal register(s) different from targetReg.

8 years agoMerge pull request #7299 from tarekgh/MarkCultureInfoMethodsAsPublic
Tarek Mahmoud Sayed [Wed, 21 Sep 2016 23:01:59 +0000 (16:01 -0700)]
Merge pull request #7299 from tarekgh/MarkCultureInfoMethodsAsPublic

Mark some CultureInfo methods as public

8 years agoFix formatting in ssabuilder
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.

8 years agoMerge pull request #7291 from adiaaida/format
Michelle McDaniel [Wed, 21 Sep 2016 21:57:18 +0000 (14:57 -0700)]
Merge pull request #7291 from adiaaida/format

Reformat jit source base and turn on formatting jobs for PR

8 years agoMerge pull request #7284 from gkhanna79/Ver120
Gaurav Khanna [Wed, 21 Sep 2016 21:56:33 +0000 (14:56 -0700)]
Merge pull request #7284 from gkhanna79/Ver120

Update Nuget package versions to 1.2.0

8 years agoMark some CultureInfo methods as public
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

8 years agoFix formatting job for Ubuntu
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.

8 years agoMake formatting jobs required for PR
Michelle McDaniel [Wed, 21 Sep 2016 16:56:46 +0000 (09:56 -0700)]
Make formatting jobs required for PR

8 years agoFix conflicts between nix and Windows formatting
Michelle McDaniel [Wed, 21 Sep 2016 17:30:30 +0000 (10:30 -0700)]
Fix conflicts between nix and Windows formatting

8 years agoReformat jit code on OSX
Michelle McDaniel [Wed, 21 Sep 2016 16:39:53 +0000 (09:39 -0700)]
Reformat jit code on OSX

8 years agoReformat jit code for Windows x64
Michelle McDaniel [Wed, 21 Sep 2016 16:25:28 +0000 (09:25 -0700)]
Reformat jit code for Windows x64

8 years agoMerge pull request #7191 from erozenfeld/SSAStackOverflow
Eugene Rozenfeld [Wed, 21 Sep 2016 20:41:18 +0000 (13:41 -0700)]
Merge pull request #7191 from erozenfeld/SSAStackOverflow

Fix for StackOverflow in SsaBuilder::TopologicalSort.

8 years agoFix OS X build break with AppleClang 8.0.0 (#7292)
John Chen [Wed, 21 Sep 2016 20:29:21 +0000 (13:29 -0700)]
Fix OS X build break with AppleClang 8.0.0 (#7292)

Fixes issue #7275

8 years agoMerge pull request #7293 from CarolEidt/FixArmObj
Carol Eidt [Wed, 21 Sep 2016 19:54:19 +0000 (12:54 -0700)]
Merge pull request #7293 from CarolEidt/FixArmObj

Fix Arm64 codegen to use GT_FIELD_LIST

8 years agoMerge pull request #7289 from CarolEidt/Fix7196
Carol Eidt [Wed, 21 Sep 2016 18:52:45 +0000 (11:52 -0700)]
Merge pull request #7289 from CarolEidt/Fix7196

Fix Issue 7196: No extra internal regs for block nodes

8 years agoFix Arm64 codegen to use GT_FIELD_LIST
Carol Eidt [Wed, 21 Sep 2016 18:12:45 +0000 (11:12 -0700)]
Fix Arm64 codegen to use GT_FIELD_LIST

In #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.

8 years agoFix for StackOverflow in SsaBuilder::TopologicalSort.
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.

8 years agoFix Issue 7196: No extra internal regs for block nodes
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 #7196

8 years agoFix CrossGen error reporting when input is missing (#7287)
John Chen [Wed, 21 Sep 2016 13:50:03 +0000 (06:50 -0700)]
Fix CrossGen error reporting when input is missing (#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.

8 years agoIf out some dead code in System.Array for FEATURE_CORECLR (#7288)
Hugh Bellamy [Wed, 21 Sep 2016 13:48:08 +0000 (14:48 +0100)]
If out some dead code in System.Array for FEATURE_CORECLR (#7288)

8 years agoClean up GenTree node size dumping code. (#7278)
Peter Kukol [Wed, 21 Sep 2016 01:59:34 +0000 (18:59 -0700)]
Clean up GenTree node size dumping code. (#7278)

Clean up GenTreeXxxx struct size dump; fix 32-bit build when MEASURE_NODE_SIZE is enabled.

8 years agoMerge pull request #7280 from JosephTremoulet/BoundsCheckDisable
Joseph Tremoulet [Wed, 21 Sep 2016 00:49:23 +0000 (20:49 -0400)]
Merge pull request #7280 from JosephTremoulet/BoundsCheckDisable

Respect JitNoRangeChks flag in RyuJit

8 years agoUpdate Nuget package versions to 1.2.0
Gaurav Khanna [Wed, 21 Sep 2016 00:44:03 +0000 (17:44 -0700)]
Update Nuget package versions to 1.2.0

8 years agoMerge pull request #7252 from CarolEidt/x86GtObj
Carol Eidt [Tue, 20 Sep 2016 23:41:35 +0000 (16:41 -0700)]
Merge pull request #7252 from CarolEidt/x86GtObj

Support GT_OBJ for x86

8 years agoFix launch timing issue in dbgshim found in VS. (#7279)
Mike McLaughlin [Tue, 20 Sep 2016 22:22:33 +0000 (15:22 -0700)]
Fix launch timing issue in dbgshim found in VS. (#7279)

Issue #7274.

8 years agoRespect JitNoRangeChks flag in RyuJit
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.

8 years agoSupport GT_OBJ for x86
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.

8 years agoUpgrade CLI, buildtools for RTM shared framework. (#7045)
Davis Goodin [Tue, 20 Sep 2016 18:03:36 +0000 (13:03 -0500)]
Upgrade CLI, buildtools for RTM shared framework. (#7045)

8 years agomute EH failures exposed by LTO (#7267)
kchoi [Tue, 20 Sep 2016 15:23:11 +0000 (08:23 -0700)]
mute EH failures exposed by LTO (#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.

8 years agoMerge pull request #7268 from vancem/master
Vance Morrison [Tue, 20 Sep 2016 15:10:56 +0000 (08:10 -0700)]
Merge pull request #7268 from vancem/master

Fix Bad NGEN Pdbs for ReadyToRun images

8 years agoMerge pull request #7181 from ramarag/CompilerServices
Rama krishnan Raghupathy [Tue, 20 Sep 2016 05:35:49 +0000 (22:35 -0700)]
Merge pull request #7181 from ramarag/CompilerServices

Adding Compiler services APIs

8 years agoCreate long-named DAC and SOS DLLs for Windows. (#7265)
Mike McLaughlin [Tue, 20 Sep 2016 01:47:25 +0000 (18:47 -0700)]
Create long-named DAC and SOS DLLs for Windows. (#7265)

Issue #5869

8 years agoFix GC Stress testing on non windows platforms
Rama Krishnan Raghupathy [Thu, 15 Sep 2016 20:45:04 +0000 (13:45 -0700)]
Fix GC Stress testing on non windows platforms

8 years agotest FixedAddressValueType and RuntimeWrappedException
Rama Krishnan Raghupathy [Thu, 15 Sep 2016 00:03:11 +0000 (17:03 -0700)]
test FixedAddressValueType and RuntimeWrappedException

8 years agoFixBadReadyToRunPdb.9-19-16
Vance Morrison [Mon, 19 Sep 2016 23:18:38 +0000 (16:18 -0700)]
FixBadReadyToRunPdb.9-19-16

8 years agoMerge pull request #7232 from pgavlin/gh4186
Pat Gavlin [Mon, 19 Sep 2016 23:14:04 +0000 (16:14 -0700)]
Merge pull request #7232 from pgavlin/gh4186

Implement indirect VSD calls for x86.

8 years agoAdd option for showing GT_xxx operator counts. (#7262)
Peter Kukol [Mon, 19 Sep 2016 22:44:22 +0000 (16:44 -0600)]
Add option for showing GT_xxx operator counts. (#7262)

8 years agoFix a bug in LIR::Use::ReplaceWith.
Pat Gavlin [Mon, 19 Sep 2016 20:56:30 +0000 (13:56 -0700)]
Fix a bug in LIR::Use::ReplaceWith.

8 years agoExpose missing public field on Debugger (#7258)
Dan Moseley [Mon, 19 Sep 2016 20:56:59 +0000 (13:56 -0700)]
Expose missing public field on Debugger (#7258)

8 years agoFill out SecurityException with stubs (#7250)
Dan Moseley [Mon, 19 Sep 2016 18:16:37 +0000 (11:16 -0700)]
Fill out SecurityException with stubs (#7250)

8 years agoMerge pull request #7237 from swaroop-sridhar/gc86legacy
Swaroop Sridhar [Mon, 19 Sep 2016 16:02:42 +0000 (09:02 -0700)]
Merge pull request #7237 from swaroop-sridhar/gc86legacy

X86 GcEncode: Support V1 and V2 encodings

8 years agoMark GT_IND nodes that represent VSD targets.
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.

8 years agoX86 GcEncode: Support V1 and V2 encodings
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.

8 years agoExposing Type.GetTypeFromHandleUnsafe from model.xml (#7249)
Bart J.F. De Smet [Mon, 19 Sep 2016 01:11:37 +0000 (18:11 -0700)]
Exposing Type.GetTypeFromHandleUnsafe from model.xml (#7249)

Exposing Type.GetTypeFromHandleUnsafe from model.xml

8 years agoVersion: Make fields readonly and delete duplicate code (#7246)
Justin Van Patten [Sun, 18 Sep 2016 22:36:33 +0000 (15:36 -0700)]
Version: Make fields readonly and delete duplicate code (#7246)

Change `Version`'s fields to `readonly` to better guarantee its
immutability, and remove duplicate code.

8 years agoPrevent source line info from being released (#7222)
kvochko [Sun, 18 Sep 2016 06:04:18 +0000 (10:04 +0400)]
Prevent source line info from being released (#7222)

8 years agoExposing IUnknownConstantAttribute
Rama Krishnan Raghupathy [Thu, 15 Sep 2016 02:55:54 +0000 (19:55 -0700)]
Exposing IUnknownConstantAttribute

8 years agoExposing Remaining CompilerServices Apis in mscorlib
Rama Krishnan Raghupathy [Wed, 14 Sep 2016 02:21:58 +0000 (19:21 -0700)]
Exposing Remaining CompilerServices Apis in mscorlib

8 years agoExposing ExecuteCodeWithGuaranteedCleanup in mscorlib
Rama Krishnan Raghupathy [Wed, 14 Sep 2016 00:46:07 +0000 (17:46 -0700)]
Exposing ExecuteCodeWithGuaranteedCleanup in mscorlib

8 years agoExposing RunModuleConstructor in mscorlib
Rama Krishnan Raghupathy [Tue, 13 Sep 2016 23:34:56 +0000 (16:34 -0700)]
Exposing RunModuleConstructor in mscorlib

8 years agoMerge pull request #7238 from dotnet/mellinoe-patch-1
Eric Mellino [Sat, 17 Sep 2016 00:05:43 +0000 (17:05 -0700)]
Merge pull request #7238 from dotnet/mellinoe-patch-1

Add an Ubuntu 16.10 badge to README.md

8 years agoAddress PR feedback.
Pat Gavlin [Fri, 16 Sep 2016 22:44:47 +0000 (15:44 -0700)]
Address PR feedback.

8 years agoMerge pull request #7169 from adiaaida/shiftCnsInt
Michelle McDaniel [Fri, 16 Sep 2016 22:23:28 +0000 (15:23 -0700)]
Merge pull request #7169 from adiaaida/shiftCnsInt

Add optimization for shift by CNS_INT

8 years agoAdd an Ubuntu 16.10 badge to README.md
Eric Mellino [Fri, 16 Sep 2016 21:54:50 +0000 (14:54 -0700)]
Add an Ubuntu 16.10 badge to README.md

8 years agoMerge pull request #7233 from mellinoe/ubuntu1610-ci
Eric Mellino [Fri, 16 Sep 2016 21:38:12 +0000 (14:38 -0700)]
Merge pull request #7233 from mellinoe/ubuntu1610-ci

Add Ubuntu 16.10 to CI

8 years agoAdd few System.Reflection APIs (#7193)
Sepideh Khoshnood [Fri, 16 Sep 2016 20:12:56 +0000 (13:12 -0700)]
Add few System.Reflection APIs (#7193)

* Add few remaining exposable System.Reflection APIs

8 years agoAdd optimization for shift by CNS_INT
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.

8 years agoAdd Ubuntu 16.10 to CI
Eric Mellino [Fri, 16 Sep 2016 19:11:29 +0000 (12:11 -0700)]
Add Ubuntu 16.10 to CI

8 years agoImplement indirect VSD calls for x86.
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.

8 years agoEnable Building Libraries for ilproj
Rama Krishnan Raghupathy [Wed, 14 Sep 2016 22:57:36 +0000 (15:57 -0700)]
Enable Building Libraries for ilproj

8 years agoOption for reporting GenTree operator bashing stats (#7152)
Peter Kukol [Fri, 16 Sep 2016 05:59:05 +0000 (23:59 -0600)]
Option for reporting GenTree operator bashing stats (#7152)

* Add option (off by default) to report GenTree operator bashing stats.

8 years agoMerge pull request #7212 from joperezr/FixmscorlibRef
Wes Haggard [Fri, 16 Sep 2016 03:16:01 +0000 (20:16 -0700)]
Merge pull request #7212 from joperezr/FixmscorlibRef

Remove unwanted String.Split methods from Reference assembly

8 years agoMerge pull request #7170 from pgavlin/gh7144
Pat Gavlin [Fri, 16 Sep 2016 02:11:30 +0000 (19:11 -0700)]
Merge pull request #7170 from pgavlin/gh7144

Refactor call arg table updates.

8 years agoMerge pull request #7194 from sivarv/jitstressregs1or8Fix
Sivarv [Fri, 16 Sep 2016 00:55:43 +0000 (17:55 -0700)]
Merge pull request #7194 from sivarv/jitstressregs1or8Fix

Fix to issues #7167, 7094 and 7143

8 years agoMinor fix in GC section of BOTR
Aditya Mandaleeka [Thu, 15 Sep 2016 23:56:26 +0000 (16:56 -0700)]
Minor fix in GC section of BOTR

8 years agoRefactor call arg table updates.
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.

8 years agoAdding new Split members with defaults
Jose Perez Rodriguez [Thu, 15 Sep 2016 23:19:50 +0000 (16:19 -0700)]
Adding new Split members with defaults

8 years agoFix LSRA stress modes not to constrain candidates to below the
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.

8 years agoMerge pull request #7213 from dotnet/revert-7123-WinArm32CI
Gaurav Khanna [Thu, 15 Sep 2016 22:40:27 +0000 (15:40 -0700)]
Merge pull request #7213 from dotnet/revert-7123-WinArm32CI

Revert "Enable Win32Arm CI support"

8 years agoRevert "Enable Win32Arm CI support"
Gaurav Khanna [Thu, 15 Sep 2016 22:30:32 +0000 (15:30 -0700)]
Revert "Enable Win32Arm CI support"

8 years agoRemove unwanted String.Split methods from Reference assembly
Jose Perez Rodriguez [Thu, 15 Sep 2016 21:49:47 +0000 (14:49 -0700)]
Remove unwanted String.Split methods from Reference assembly

8 years agoMerge pull request #7159 from JosephTremoulet/HelperHoist
Joseph Tremoulet [Thu, 15 Sep 2016 20:32:13 +0000 (16:32 -0400)]
Merge pull request #7159 from JosephTremoulet/HelperHoist

Recognize mod-free helper calls in loop hoisting

8 years agoUpdate the GC from CoreRT (#7207)
Sean Gillespie [Thu, 15 Sep 2016 20:05:03 +0000 (13:05 -0700)]
Update the GC from CoreRT (#7207)

8 years agoMerge pull request #7123 from gkhanna79/WinArm32CI
Gaurav Khanna [Thu, 15 Sep 2016 18:08:27 +0000 (11:08 -0700)]
Merge pull request #7123 from gkhanna79/WinArm32CI

Enable Win32Arm CI support

8 years agoRecognize mod-free helper calls in loop hoisting
Joseph Tremoulet [Thu, 25 Aug 2016 17:45:20 +0000 (13:45 -0400)]
Recognize mod-free helper calls in loop hoisting

Update the code in `optHoistLoopExprsForTree` that identifies exprs with
memory side-effects to recognize helper calls that don't mutate the heap;
this allows hoisting invariant exprs past such helper calls.

Fixes #6901.

8 years agoMerge pull request #7162 from JosephTremoulet/VolatileTest
Joseph Tremoulet [Thu, 15 Sep 2016 17:48:20 +0000 (13:48 -0400)]
Merge pull request #7162 from JosephTremoulet/VolatileTest

Add missing volatile annotation to test

8 years agoHarden test against JIT optimizations
Joseph Tremoulet [Tue, 13 Sep 2016 17:01:15 +0000 (13:01 -0400)]
Harden test against JIT optimizations

Declare static field `finalizerCompletedOnce` volatile -- this test has a
side-effect-free busy-loop which checks that static variable for a change it
expects a finalizer to make to it; this static field must be volatile to
ensure the jit doesn't hoist the load from the loop.

Call GC.KeepAlive on the objects constructed in the various allocation
loops in this test, to make sure that the entire allocation isn't
optimized away.

8 years agoMerge pull request #7201 from JosephTremoulet/MscVer
Joseph Tremoulet [Thu, 15 Sep 2016 15:37:43 +0000 (11:37 -0400)]
Merge pull request #7201 from JosephTremoulet/MscVer

Update _MSC_FULL_VER check for constexpr handling

8 years agoMerge pull request #7179 from dotnet-bot/master-UpdateDependencies
Gaurav Khanna [Thu, 15 Sep 2016 14:36:06 +0000 (07:36 -0700)]
Merge pull request #7179 from dotnet-bot/master-UpdateDependencies

Update CoreClr, CoreFx, External to beta-24515-02, beta-24514-06, beta-24514-00, respectively (master)

8 years agoUpdate _MSC_FULL_VER check for constexpr handling
Joseph Tremoulet [Thu, 15 Sep 2016 01:08:04 +0000 (21:08 -0400)]
Update _MSC_FULL_VER check for constexpr handling

Previously the code was comparing against 190024210 (VS2015 Update 3).
Update it to instead compare against 190024315, the last pre-release build
before C++14 constexpr support got added; this fixes compilation using
pre-release MSVC compilers between 24210 and 24315.

Fixes #6642.

8 years agoOverride CopyTo in MemoryStream (#7131)
James Ko [Thu, 15 Sep 2016 11:37:41 +0000 (07:37 -0400)]
Override CopyTo in MemoryStream (#7131)

* Cache some virtual method calls in Stream.ValidateCopyToArguments
* Add override of Stream.CopyTo to MemoryStream

8 years agoUpdate CoreClr, CoreFx, External to beta-24515-02, beta-24514-06, beta-24514-00,...
dotnet-bot [Thu, 15 Sep 2016 08:13:44 +0000 (08:13 +0000)]
Update CoreClr, CoreFx, External to beta-24515-02, beta-24514-06, beta-24514-00, respectively

8 years agoMinor String.Split cleanup to align more closely with CoreRT (#7185)
Justin Van Patten [Thu, 15 Sep 2016 00:48:51 +0000 (17:48 -0700)]
Minor String.Split cleanup to align more closely with CoreRT (#7185)

8 years agoMerge pull request #7189 from pgavlin/x86-cmp-long
Pat Gavlin [Wed, 14 Sep 2016 23:40:41 +0000 (16:40 -0700)]
Merge pull request #7189 from pgavlin/x86-cmp-long

Implement long compare lowering for x86.

8 years agoMerge pull request #7188 from CarolEidt/Fix7160
Carol Eidt [Wed, 14 Sep 2016 23:37:33 +0000 (16:37 -0700)]
Merge pull request #7188 from CarolEidt/Fix7160

Allow GT_OBJ for Arm64

8 years agoMerge pull request #6892 from jamesqo/list-optimizations
Vance Morrison [Wed, 14 Sep 2016 22:45:58 +0000 (15:45 -0700)]
Merge pull request #6892 from jamesqo/list-optimizations

Copy directly to the internal buffer in List.InsertRange

8 years agoAddress more PR feedback.
Pat Gavlin [Wed, 14 Sep 2016 21:22:52 +0000 (14:22 -0700)]
Address more PR feedback.

8 years agoAddress PR feedback.
Pat Gavlin [Wed, 14 Sep 2016 20:18:06 +0000 (13:18 -0700)]
Address PR feedback.

8 years agoMerge pull request #6974 from swaroop-sridhar/gc86
Swaroop Sridhar [Wed, 14 Sep 2016 19:26:20 +0000 (12:26 -0700)]
Merge pull request #6974 from swaroop-sridhar/gc86

Implement GcInfo v2 for X86

8 years agoMerge pull request #7187 from adiaaida/rotate
Michelle McDaniel [Wed, 14 Sep 2016 18:20:01 +0000 (11:20 -0700)]
Merge pull request #7187 from adiaaida/rotate

Remove NYI for x86 long rotate

8 years agoARM/Linux: Add codename xenial (#7158)
SaeHie Park [Wed, 14 Sep 2016 18:00:54 +0000 (03:00 +0900)]
ARM/Linux: Add codename xenial (#7158)

Add Ubuntu 16.04 code name Xenial to cross rootfs option

8 years agoIntroduce GT_JCC.
Pat Gavlin [Wed, 14 Sep 2016 02:32:57 +0000 (19:32 -0700)]
Introduce GT_JCC.

This node represents a jump that is conditional upon the value stored in
the target's condition code register. It is only valid in the backend.
No formal modeling of the CCR is performed, so its use must be
constrained such that instructions that def the CCR are not inserted
between the JCC node and the node that it expected to def the CCR.

This is currently only used when lowering compares of long-typed
values for x86.