platform/upstream/coreclr.git
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 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

7 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

7 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

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

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

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

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

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

7 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

7 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

7 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

7 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

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

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

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

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

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

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

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

7 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

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

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

7 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

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

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

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

7 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

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

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

7 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

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

7 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

7 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

7 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

7 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

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

7 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

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

7 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

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

7 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

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

7 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

7 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

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

7 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

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

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

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

7 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

7 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