platform/upstream/coreclr.git
7 years agoFix ifdefs used to select the symbol reader dll name (#7406)
Mike McLaughlin [Thu, 29 Sep 2016 06:50:20 +0000 (23:50 -0700)]
Fix ifdefs used to select the symbol reader dll name (#7406)

7 years agoMerge pull request #7404 from tarekgh/AddNormalizationToLinux
Rama krishnan Raghupathy [Thu, 29 Sep 2016 04:07:29 +0000 (21:07 -0700)]
Merge pull request #7404 from tarekgh/AddNormalizationToLinux

Add Normalization functionality to Linux

7 years agoAdd option to measure time spent inside calls to the CLR. (#7357)
Peter Kukol [Thu, 29 Sep 2016 01:29:33 +0000 (18:29 -0700)]
Add option to measure time spent inside calls to the CLR. (#7357)

* Add option to measure time spent inside calls to the CLR (off by default).

7 years agoAdd Normalization functionality to Linux
Tarekm Mahmoud Sayed [Wed, 28 Sep 2016 22:44:28 +0000 (15:44 -0700)]
Add Normalization functionality to Linux

This functionality will be used in different places (e.g. string class)

7 years agoExpose required S.Resources members on corelib (#7402)
Alex Perovich [Thu, 29 Sep 2016 00:04:55 +0000 (17:04 -0700)]
Expose required S.Resources members on corelib (#7402)

Fixes dotnet/corefx#12012

7 years agoMerge pull request #7368 from pgavlin/SideEffects
Pat Gavlin [Wed, 28 Sep 2016 23:58:03 +0000 (16:58 -0700)]
Merge pull request #7368 from pgavlin/SideEffects

Fix lowering's containment analysis.

7 years agoFix lowering's containment analysis.
Pat Gavlin [Fri, 23 Sep 2016 22:48:16 +0000 (15:48 -0700)]
Fix lowering's containment analysis.

This fixes a silent bad code generation issue that arose during internal
testing. The original repro is a test failure under COMPlus_JitStress=2.
Due to explicit null check insertion, we (eventually) end up with the
following LIR:

    t6096 =    lclVar    ref    V86 cse10         <l:$4ad, c:$1b5>

            /--*  t6096  ref
            *  st.lclVar ref    V41 tmp29        d:26

    t2733 =    lclVar    ref    V41 tmp29        u:26 <l:$4ad, c:$1b5>

            /--*  t2733  ref
            *  nullcheck byte   <l:$4b8, c:$58a>

    t2736 =    lclVar    ref    V41 tmp29        u:26 (last use) <l:$4ad, c:$1b5>

    t2737 =    const     long   20 field offset Fseq[y] $107

            /--*  t2736  ref
            +--*  t2737  long
    t2735 = *  +         byref  <l:$2ad, c:$2ac>

    t6081 =    lclVar    ref    V83 cse7          <l:$4bd, c:$1b7>

            /--*  t6081  ref
            *  st.lclVar ref    V41 tmp29        d:27

    t2762 =    lclVar    ref    V41 tmp29        u:27 <l:$4bd, c:$1b7>

            /--*  t2762  ref
            *  nullcheck byte   <l:$583, c:$58f>

    t2765 =    lclVar    ref    V41 tmp29        u:27 (last use) <l:$4bd, c:$1b7>

    t2766 =    const     long   20 field offset Fseq[y] $107

            /--*  t2765  ref
            +--*  t2766  long
    t2764 = *  +         byref  <l:$2af, c:$2ae>

            /--*  t2764  byref
    t2763 = *  indir     int    <l:$54e, c:$1ed>

    t2767 =    lclVar    int   (AX) V07 loc4          $1ee

            /--*  t2763  int
            +--*  t2767  int
    t2738 = *  +         int    <l:$554, c:$553>

            /--*  t2735  byref
            +--*  t2738  int
            *  storeIndir int

During lowering, we attempt to form an RMW add rooted at the final
storeIndir. The pattern matching that attempts to form RMW operations,
however, does not consider whether or not it is safe to perform the
code motion involved in making the destination and source addresses
for the operator contained. In this case, lowering moves the evaluation
of the address (i.e. the dataflow tree rooted at the add that produces
t2735) into the storeIndir. This moves a use of tmp29 across a def of
the same and causes the program to store a value to an incorrect
address.

There are many variations on this pattern. For example, given the
following C#:

static int T(C[] a, C c)
{
    return a.Length != c.M() ? 100 : 0;
}

The evaluation of a.Length (including the necessary null check) should
occur before the call to c.M(). The lack of correct checks for safe
code motion that caused the original repro, however, cause the JIT to
generate bad code in this case as well: the null check for a is folded
into the load of a.Length, which is then made contained by the compare.
This results in the call to c.M() executing before the null check, which
causes the program to behave incorrectly in the case that a is null.

In order to fix the code motion analysis, this change introduces a new
type, `SideEffectSet`, that can be used to summarize the side effects
of a set of nodes and check whether or not they interfere with another
set of side effects. This change then uses the new type to ensure that
it is safe to perform the code motion necessary to make an operand
contained before doing so.

7 years agoMerge pull request #7403 from ramarag/addisvolatile
Rama krishnan Raghupathy [Wed, 28 Sep 2016 22:56:39 +0000 (15:56 -0700)]
Merge pull request #7403 from ramarag/addisvolatile

Adding back isVolatile to mscorlib facade as C# compiler uses it

7 years agoAdding back isVolatile to mscorlib facade as C# compiler uses it
Rama Krishnan Raghupathy [Wed, 28 Sep 2016 22:06:03 +0000 (15:06 -0700)]
Adding back isVolatile to mscorlib facade as C# compiler uses it

7 years agoMerge pull request #7356 from bartonjs/new_macos_gettingstarted
Jeremy Barton [Wed, 28 Sep 2016 20:55:51 +0000 (13:55 -0700)]
Merge pull request #7356 from bartonjs/new_macos_gettingstarted

Fix stale OSX getting started to stop using `brew link`

7 years agoMerge pull request #7392 from kouvel/TestFix
Koundinya Veluri [Wed, 28 Sep 2016 19:19:08 +0000 (12:19 -0700)]
Merge pull request #7392 from kouvel/TestFix

Work around issue in #7365 by referencing System.Reflection.Extension…

7 years agoFix System.Diagnostics.StackTrace version in stack trace helper code (#7395)
Mike McLaughlin [Wed, 28 Sep 2016 18:35:28 +0000 (11:35 -0700)]
Fix System.Diagnostics.StackTrace version in stack trace helper code (#7395)

Issue #7381

7 years agoMerge pull request #7306 from hseok-oh/fix_6667_2
Russ Keldorph [Wed, 28 Sep 2016 18:03:37 +0000 (11:03 -0700)]
Merge pull request #7306 from hseok-oh/fix_6667_2

Fix 6667: Constant folding for unsigned long divide operation

7 years agoWork around issue in #7365 by referencing System.Reflection.Extensions directly in...
Koundinya Veluri [Wed, 28 Sep 2016 05:52:01 +0000 (22:52 -0700)]
Work around issue in #7365 by referencing System.Reflection.Extensions directly in some test projects

7 years agoMerge pull request #7379 from gkhanna79/SimplePkgVer
Gaurav Khanna [Wed, 28 Sep 2016 04:29:34 +0000 (21:29 -0700)]
Merge pull request #7379 from gkhanna79/SimplePkgVer

Centralize versioning and stabilization of nuget packages.

7 years agoInvoke 'copy_test_native_bin_to_test_root' inside 'create_core_overlay' (#5676)
Jonghyun Park [Wed, 28 Sep 2016 03:46:16 +0000 (12:46 +0900)]
Invoke 'copy_test_native_bin_to_test_root' inside 'create_core_overlay' (#5676)

This commit tries to fix #5675.

7 years agoSpecialize IndexOf, LastIndexOf for the enum equality comparers (#5804)
James Ko [Wed, 28 Sep 2016 03:45:33 +0000 (23:45 -0400)]
Specialize IndexOf, LastIndexOf for the enum equality comparers (#5804)

7 years agoMerge pull request #7367 from sivarv/simdeq
Sivarv [Tue, 27 Sep 2016 21:05:33 +0000 (14:05 -0700)]
Merge pull request #7367 from sivarv/simdeq

Optimize SIMD codegen for (in)equality check against zero that produces bool result.

7 years agoCentralize APISet and WinArm32 package versions as well.
Gaurav Khanna [Tue, 27 Sep 2016 20:29:35 +0000 (13:29 -0700)]
Centralize APISet and WinArm32 package versions as well.

7 years agoCentralize versioning and stabilization of nuget packages.
Gaurav Khanna [Tue, 27 Sep 2016 18:32:36 +0000 (11:32 -0700)]
Centralize versioning and stabilization of nuget packages.

7 years agoMove dlstack test exclusion to all configurations instead of (#7364)
Sean Gillespie [Tue, 27 Sep 2016 18:07:13 +0000 (11:07 -0700)]
Move dlstack test exclusion to all configurations instead of (#7364)

just ryujit/x86, since it fails in other configurations as well.

7 years agoOptimize SIMD codegen for (in)equality check against zero that produces bool result.
sivarv [Tue, 27 Sep 2016 00:38:12 +0000 (17:38 -0700)]
Optimize SIMD codegen for (in)equality check against zero that produces bool result.

7 years agoremove comments
Hyeongseok Oh [Tue, 27 Sep 2016 00:48:48 +0000 (09:48 +0900)]
remove comments

7 years agoFix arm64 build issue #7355. (#7362)
Mike McLaughlin [Mon, 26 Sep 2016 22:58:32 +0000 (15:58 -0700)]
Fix arm64 build issue #7355. (#7362)

7 years agoIntroduce "IGCToCLR" and use it within the GC to interface with the EE (#7295)
Sean Gillespie [Mon, 26 Sep 2016 21:23:52 +0000 (14:23 -0700)]
Introduce "IGCToCLR" and use it within the GC to interface with the EE (#7295)

* Introduce a feature define FEATURE_STANDALONE_GC that allows
the GC to communicate with the EE through a virtual interface.

* Split GCToEEInterface definition out of gc.h into its own header

* Address code review feedback

* Address code review feedback

7 years agoFix stale OSX getting started to stop using `brew link`
bartonjs [Mon, 26 Sep 2016 16:39:58 +0000 (09:39 -0700)]
Fix stale OSX getting started to stop using `brew link`

Even with --force the `brew link` command will not link openssl any longer.
This updates the instructions to provide a less invasive version of what we
needed `brew link` to do: make the runtime versioned ABI resolvable, and make
the header files discoverable (via pkg-config).

7 years agoCheck PAL first, and then Windows Phone (#7354)
Jonghyun Park [Mon, 26 Sep 2016 10:58:35 +0000 (19:58 +0900)]
Check PAL first, and then Windows Phone (#7354)

7 years agoAdd missing System.Security ns types. (#7352)
Dan Moseley [Mon, 26 Sep 2016 03:32:11 +0000 (20:32 -0700)]
Add missing System.Security ns types. (#7352)

7 years agoAdd the IsSecurityXX properties omitted from Type base class (#7349)
Dan Moseley [Sun, 25 Sep 2016 14:04:40 +0000 (07:04 -0700)]
Add the IsSecurityXX properties omitted from Type base class (#7349)

7 years agoAdd Math.Clamp methods (#7242)
Hugh Bellamy [Sun, 25 Sep 2016 14:03:40 +0000 (15:03 +0100)]
Add Math.Clamp methods (#7242)

7 years agoMicro-optimization for IList.Contains array implementation (#7347)
James Ko [Sun, 25 Sep 2016 03:11:10 +0000 (23:11 -0400)]
Micro-optimization for IList.Contains array implementation (#7347)

7 years agoMerge pull request #7328 from ramarag/removemarkers
Rama krishnan Raghupathy [Sat, 24 Sep 2016 00:51:45 +0000 (17:51 -0700)]
Merge pull request #7328 from ramarag/removemarkers

Adding MemoryFailPoint and  Removing some markers

7 years agoMerge pull request #7337 from tarekgh/FixCollationNames
Tarek Mahmoud Sayed [Sat, 24 Sep 2016 00:48:50 +0000 (17:48 -0700)]
Merge pull request #7337 from tarekgh/FixCollationNames

Fix the Collation name returned from CompareInfo.Name and TextInfo.Name

7 years agoRemove CoreCLR's dependency on the diasymreader.dll installed as part of the full...
Mike McLaughlin [Sat, 24 Sep 2016 00:39:43 +0000 (17:39 -0700)]
Remove CoreCLR's dependency on the diasymreader.dll installed as part of the full .NET Framework on Desktop (#7336)

* Remove CoreCLR's dependency on the diasymreader.dll installed as part of the full .NET Framework on Desktop

Issue #5922

* Code review feedback.

7 years agoMerge pull request #7332 from JosephTremoulet/InlineVolatile
Joseph Tremoulet [Fri, 23 Sep 2016 23:55:48 +0000 (19:55 -0400)]
Merge pull request #7332 from JosephTremoulet/InlineVolatile

Allow inlining with volatile actual argument exprs

7 years agoFix the Collation name returned from CompareInfo.Name and TextInfo.Name
Tarekm Mahmoud Sayed [Fri, 23 Sep 2016 22:05:27 +0000 (15:05 -0700)]
Fix the Collation name returned from CompareInfo.Name and TextInfo.Name

this was a regression #7004 and caused the issue #1139

7 years agoAdding MemoryFailPoint Removing some markers
Rama Krishnan Raghupathy [Thu, 22 Sep 2016 21:50:03 +0000 (14:50 -0700)]
Adding MemoryFailPoint Removing some markers

7 years agoupdate JIT_MemSet/MemCpy, Buffer::BlockCopy and Buffer::InternalBlock… (#7198)
Xiangyang (Mark) Guo [Fri, 23 Sep 2016 19:33:36 +0000 (12:33 -0700)]
update JIT_MemSet/MemCpy, Buffer::BlockCopy and Buffer::InternalBlock… (#7198)

* update JIT_MemSet/MemCpy, Buffer::BlockCopy and Buffer::InternalBlockCopy

* add header comments

7 years agoMerge pull request #7327 from JeremyKuhne/fixshortpath
Jeremy Kuhne [Fri, 23 Sep 2016 19:10:57 +0000 (12:10 -0700)]
Merge pull request #7327 from JeremyKuhne/fixshortpath

Fix 8.3 UNC expansion

7 years agoMerge pull request #7329 from sivarv/SimdGetItemFix
Sivarv [Fri, 23 Sep 2016 19:07:48 +0000 (12:07 -0700)]
Merge pull request #7329 from sivarv/SimdGetItemFix

Optimize codegen for SIMDIntrinsicGetItem when SIMD vector is a memory-op.

7 years agoOptimize codegen for SIMDIntrinsicGetItem when SIMD vector is a memory-op.
sivarv [Thu, 22 Sep 2016 23:19:08 +0000 (16:19 -0700)]
Optimize codegen for SIMDIntrinsicGetItem when SIMD vector is a memory-op.

7 years agoRemove vestigial assertions
Joseph Tremoulet [Thu, 15 Sep 2016 17:59:09 +0000 (13:59 -0400)]
Remove vestigial assertions

The inliner used to have its own import path, which required calling
special inline versions of the spill helpers; these asserts were intended
to ensure that these regular spill helpers are not invoked during inlining,
which they do by asserting against `fgGlobalMorph`, since that flag was set
during inlining in the old code.  The inliner has since been updated to
re-use the main import code, and also to run when `fgGlobalMorph` is not
set anyway.  So these helpers currently run successfully during inlining,
despite the stale comment; remove the bogus assertions.

7 years agoAllow inlining with volatile actual argument exprs
Joseph Tremoulet [Thu, 15 Sep 2016 17:55:29 +0000 (13:55 -0400)]
Allow inlining with volatile actual argument exprs

When presented with an argument marked `GFT_ORDER_SIDEEFF`, mark the
argument `argHasSideEff` and allow inlining.  Remove the vestigial code to
disallow inlining in these cases; it corresponded to a prior inliner
implementation with a different import path that has since been removed;
the inliner now re-uses the main import path, which can handle the
necessary stack spilling in the presence of `GTF_ORDER_SIDEEFF`.

Fixes #7054.

7 years agoRemove the dependency of using config.json in cwd (#7330)
Jarret Shook [Fri, 23 Sep 2016 14:16:09 +0000 (07:16 -0700)]
Remove the dependency of using config.json in cwd (#7330)

Currently the config.json file is looked for in the current working
directory. This change forces run.exe to use the relative path of
the file relative to the build script.

7 years agoExpose some types/members (#7320)
Koundinya Veluri [Fri, 23 Sep 2016 02:10:23 +0000 (19:10 -0700)]
Expose some types/members (#7320)

* Expose some types/members

Expose some types/members needed for dotnet/corefx#11631, dotnet/corefx#11729, and dotnet/corefx#11231

7 years agoSplit MORPH into multiple phases. (#7314)
Peter Kukol [Fri, 23 Sep 2016 00:26:08 +0000 (17:26 -0700)]
Split MORPH into multiple phases. (#7314)

* Split MORPH into multiple phases.

7 years agoMerge pull request #7325 from tarekgh/AddStringInfoMethods
Tarek Mahmoud Sayed [Fri, 23 Sep 2016 00:09:14 +0000 (17:09 -0700)]
Merge pull request #7325 from tarekgh/AddStringInfoMethods

Add the needed StringInfo methods to Linux implementation

7 years agoFix 8.3 UNC expansion
Jeremy Kuhne [Thu, 22 Sep 2016 23:08:34 +0000 (16:08 -0700)]
Fix 8.3 UNC expansion

This ports the fix from
https://github.com/dotnet/corefx/pull/11984

7 years agoAdd the needed StringInfo methods to Linux implementation
Tarekm Mahmoud Sayed [Thu, 22 Sep 2016 21:06:44 +0000 (14:06 -0700)]
Add the needed StringInfo methods to Linux implementation

7 years agoMerge pull request #7303 from CarolEidt/Fix7195
Carol Eidt [Thu, 22 Sep 2016 20:58:55 +0000 (13:58 -0700)]
Merge pull request #7303 from CarolEidt/Fix7195

DynBlk assert fixes for Arm64

7 years agoAdd System.Reflection.Pointer deserialization ctor to model.xml (#7322)
Stephen Toub [Thu, 22 Sep 2016 20:56:41 +0000 (13:56 -0700)]
Add System.Reflection.Pointer deserialization ctor to model.xml (#7322)

7 years agoMerge pull request #7318 from dotnet-bot/from-tfs
Jan Kotas [Thu, 22 Sep 2016 20:56:16 +0000 (13:56 -0700)]
Merge pull request #7318 from dotnet-bot/from-tfs

Merge changes from TFS

7 years agoFix Unable to step through Visual Studio remote debugger with coreclr executables...
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 (#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 #7316

7 years agoMerge pull request #7319 from pgavlin/GTLongFieldList
Pat Gavlin [Thu, 22 Sep 2016 20:10:32 +0000 (13:10 -0700)]
Merge pull request #7319 from pgavlin/GTLongFieldList

Decompose GT_FIELD_LIST nodes that use a GT_LONG.

7 years agoMerge pull request #7315 from tarekgh/DigitsValueUnicodecategory
Tarek Mahmoud Sayed [Thu, 22 Sep 2016 19:46:40 +0000 (12:46 -0700)]
Merge pull request #7315 from tarekgh/DigitsValueUnicodecategory

Support Digit and Decimal values in CharUnicodeInfo

7 years agoFix formatting issues.
Pat Gavlin [Thu, 22 Sep 2016 17:33:01 +0000 (10:33 -0700)]
Fix formatting issues.

7 years agoMerge pull request #7309 from CarolEidt/x86MkRefAny
Carol Eidt [Thu, 22 Sep 2016 17:31:46 +0000 (10:31 -0700)]
Merge pull request #7309 from CarolEidt/x86MkRefAny

Support mkrefany for x86

7 years agoSupport Digit and Decimal values in CharUnicodeInfo
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

7 years agoMerge pull request #7294 from pgavlin/longLclFld
Pat Gavlin [Thu, 22 Sep 2016 17:17:15 +0000 (10:17 -0700)]
Merge pull request #7294 from pgavlin/longLclFld

Implement `st.lclFld` decomposition and fix #6778.

7 years agoAddress PR feedback.
Pat Gavlin [Thu, 22 Sep 2016 17:16:27 +0000 (10:16 -0700)]
Address PR feedback.

7 years ago[GDB/JIT] Add support for lldb step-over command on managed code (#7273)
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 (#7273)

7 years agoDecompose GT_FIELD_LIST nodes that use a GT_LONG.
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.

7 years agoGcInfo V2 for Jit32 Desktop
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]

7 years agoMerge pull request #7312 from adiaaida/improveFormattingVerbosity
Michelle McDaniel [Thu, 22 Sep 2016 16:41:29 +0000 (09:41 -0700)]
Merge pull request #7312 from adiaaida/improveFormattingVerbosity

Improve formatting job output

7 years agoImprove formatting job output
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.

7 years agoMerge pull request #7311 from adiaaida/fixutilsformatting
Michelle McDaniel [Thu, 22 Sep 2016 15:24:57 +0000 (08:24 -0700)]
Merge pull request #7311 from adiaaida/fixutilsformatting

Fix formatting in utils.cpp

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

7 years agoSupport mkrefany for x86
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 #4183

7 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)

7 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

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

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

7 years agoFix 6667: Constant folding for unslgined long divide operation
Hyeongseok Oh [Thu, 22 Sep 2016 03:03:53 +0000 (12:03 +0900)]
Fix 6667: Constant folding for unslgined long divide operation

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

7 years agoImplement `st.lclFld` decomposition and fix #6778.
Pat Gavlin [Tue, 20 Sep 2016 23:44:53 +0000 (16:44 -0700)]
Implement `st.lclFld` decomposition and fix #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.

7 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]

7 years agoDynBlk assert fixes for Arm64
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).

7 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

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

7 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

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

7 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

7 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

7 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

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

7 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

7 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

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

7 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

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

7 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

7 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

7 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

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

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

7 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

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

7 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)

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

7 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