platform/upstream/coreclr.git
8 years agoMerge pull request #6560 from dotnet-bot/from-tfs
Jan Kotas [Tue, 2 Aug 2016 01:50:01 +0000 (18:50 -0700)]
Merge pull request #6560 from dotnet-bot/from-tfs

Merge changes from TFS

8 years agoRename ZeroFreeMemoryUTF8 to ZeroFreeCoTaskMemUTF8 in ref (#6561)
tijoytom [Tue, 2 Aug 2016 01:49:10 +0000 (18:49 -0700)]
Rename ZeroFreeMemoryUTF8 to ZeroFreeCoTaskMemUTF8 in ref (#6561)

8 years agoDocumentation: Additional optimization levels for ARM/Linux (#6548)
Geunsik Lim [Tue, 2 Aug 2016 01:48:12 +0000 (10:48 +0900)]
Documentation: Additional optimization levels for ARM/Linux (#6548)

This instruction is to enable -Ofast or -Oz optimization level of clang on ARM/Linux.
Below is file-size comparison result of major components among -O3, -Ofast,
and -Oz on ARM/Linux-based Raspberry Pi2 board (Ubuntu/ARM 14.04 32bit).

* Linux/ARM: Release Build + O3(default): stripped , commit: 561b64d2c210b4d999de7f1ac55756704eaba784 (Jul-26-2016)
------------------------------------------------------------------------------------------------------------------
-rwxr-xr-x 1 leemgs leemgs     18,472 Jul 27 16:14 corerun
-rwxr-xr-x 1 leemgs leemgs  1,512,828 Jul 27 18:33 libclrjit.so
-rwxr-xr-x 1 leemgs leemgs  4,525,328 Jul 27 18:33 libcoreclr.so
-rwxr--r-- 1 leemgs leemgs     29,696 Jul 27 00:55 ./mscorlib.dll
-rwxr--r-- 1 leemgs leemgs  2,211,840 Jul 27 00:54 ./System.Private.CoreLib.dll
Total:   8,298,164 bytes

* Linux/ARM: Release Build + Ofast: stripped , commit: 561b64d2c210b4d999de7f1ac55756704eaba784 (Jul-26-2016)
-------------------------------------------------------------------------------------------------------------
-rwxr-xr-x 1 leemgs leemgs    18,496 Jul 26 05:00 ./corerun
-rwxr-xr-x 1 leemgs leemgs 1,512,844 Jul 26 04:59 ./libclrjit.so
-rwxr-xr-x 1 leemgs leemgs 4,525,360 Jul 26 04:59 ./libcoreclr.so
-rwxr--r-- 1 leemgs leemgs    29,696 Jul 26 00:49 ./mscorlib.dll
-rwxr--r-- 1 leemgs leemgs 2,211,840 Jul 26 00:48 ./System.Private.CoreLib.dll
Total:   8,298,236 bytes

* Linux/ARM: Release Build + Oz: stripped , commit: 561b64d2c210b4d999de7f1ac55756704eaba784 (Jul-26-2016)
---------------------------------------------------------------------------------------------------------
-rwxr-xr-x 1 leemgs leemgs    14,400 Jul 29 05:02 ./corerun
-rwxr-xr-x 1 leemgs leemgs 1,181,160 Jul 29 04:40 ./libclrjit.so
-rwxr-xr-x 1 leemgs leemgs 3,407,200 Jul 29 04:40 ./libcoreclr.so
-rwxr--r-- 1 leemgs leemgs    29,696 Jul 29 00:49 ./mscorlib.dll
-rwxr--r-- 1 leemgs leemgs 2,211,840 Jul 29 00:48 ./System.Private.CoreLib.dll
Total:  6,844,296 bytes

Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
8 years agoMerge pull request #6565 from Priya91/checkrun
Lakshmi Priya [Tue, 2 Aug 2016 01:33:45 +0000 (18:33 -0700)]
Merge pull request #6565 from Priya91/checkrun

Add /m option for builds.

8 years agoMerge pull request #6533 from pgavlin/LSRA
Pat Gavlin [Tue, 2 Aug 2016 00:24:22 +0000 (17:24 -0700)]
Merge pull request #6533 from pgavlin/LSRA

Replace the LSRA stack with a hash table.

8 years agoAdd /m option for builds.
Lakshmi Priya Sekar [Tue, 2 Aug 2016 00:11:40 +0000 (17:11 -0700)]
Add /m option for builds.

8 years agoMerge pull request #6546 from pgavlin/LivenessCleanup
Pat Gavlin [Mon, 1 Aug 2016 23:44:01 +0000 (16:44 -0700)]
Merge pull request #6546 from pgavlin/LivenessCleanup

Refactor fgComputeLife.

8 years agoAdd function headers for new liveness methods.
Pat Gavlin [Mon, 1 Aug 2016 23:42:15 +0000 (16:42 -0700)]
Add function headers for new liveness methods.

In particular, `Compiler::fgComputeLife{Call,Local}` now have function
headers.

8 years agoMerge pull request #6557 from Priya91/runfix
Lakshmi Priya [Mon, 1 Aug 2016 23:05:21 +0000 (16:05 -0700)]
Merge pull request #6557 from Priya91/runfix

Fix errors in build scripts from run tool update.

8 years agoMerge pull request #6366 from pgavlin/RemoveEmbeddedStatementsPlan
Pat Gavlin [Mon, 1 Aug 2016 22:36:23 +0000 (15:36 -0700)]
Merge pull request #6366 from pgavlin/RemoveEmbeddedStatementsPlan

Add the proposal for embedded statement removal.

8 years agoReplace the LSRA stack with a hash table.
Pat Gavlin [Tue, 26 Jul 2016 13:27:06 +0000 (06:27 -0700)]
Replace the LSRA stack with a hash table.

LSRA currently uses a stack to find the `LocationInfo` for each register consumed
by a node. The changes in this stack's contents given a particular node are
governed by three factors:
- The number of registers the node consumes (`gtLsraInfo.srcCount`)
- The number of registers the node produces (`gtLstaInfo.dstCount`)
- Whether or not the node produces an unused value (`gtLsraInfo.isLocalDefUse`)

In all cases, `gtLsraInfo.srcCount` values are popped off of the stack in the
order in which they were pushed (i.e. in FIFO rather than LIFO order). If the
node produces a value that will be used, `gtLsraInfo.dstCount` values are
then pushed onto the stack. If the node produces an unused value, nothing is
pushed onto the stack.

Naively, it would appear that the number of registers a node consumes would be
at least the count of the node's non-leaf operands (to put it differently, one
might assume that any non-leaf operator that produces a value would define at
least one register). However, contained nodes complicate the situation: because
a contained node's execution is subsumed by its user, the contained node's
sources become sources for its user and the contained node does not define any
registers. As a result, both the number of registers consumed and the number of
registers produced by a contained node are 0. Thus, contained nodes do not
update the stack, and the node's parent (if it is not also contained) will
pop the values produced by the contained node's operands. Logically speaking,
it is as if a contained node defines the transitive closure of the registers
defined by its own non-contained operands.

The use of the stack relies on the property that even in linear order the
JIT's IR is still tree ordered. That is to say, given an operator and its
operands, any nodes that execute between any two operands do not produce
SDSU temps that are consumed after the second operand. IR with such a
shape would unbalance the stack.

The planned move to the LIR design given in #6366 removes the tree order
constraint in order to simplify understanding and manipulating the IR in the
backend. Because LIR may not be tree ordered, LSRA may no longer use a stack
to find the `LocationInfo` for a node's operands. This change replaces the
stack with a map from nodes to lists of `LocationInfo` values, each of
which describes a register that is logically defined (if not physically
defined) by that node. Only contained nodes logically define registers that
they do not physically define: contained nodes map to the list of
`LocationInfo` values logically defined by their operands. All non-contained
nodes map to the list of `LocationInfo` values that they physically define.
Non-contained nodes that do not define any registers are not inserted into
the map.

8 years agoAdd ExtraParameters to config.json to enable --.
Lakshmi Priya Sekar [Mon, 1 Aug 2016 20:26:14 +0000 (13:26 -0700)]
Add ExtraParameters to config.json to enable --.

8 years agoFix errors in build scripts from run tool update.
Lakshmi Priya Sekar [Mon, 1 Aug 2016 19:02:24 +0000 (12:02 -0700)]
Fix errors in build scripts from run tool update.

8 years agoInitialize `doAgain`.
Pat Gavlin [Mon, 1 Aug 2016 00:04:27 +0000 (17:04 -0700)]
Initialize `doAgain`.

8 years agoRefactor fgComputeLife.
Pat Gavlin [Sun, 31 Jul 2016 21:41:09 +0000 (14:41 -0700)]
Refactor fgComputeLife.

- Extract the liveness computations for call and local var nodes out into
  fgComputeLifeCall and fgComputeLifeLocal, respectively.
- Split fgComputeLife into two versions: one for the RyuJIT backend and
  one for the legacy backend. The former leaves out the QMARK/COLON
  processing that is necessary in the latter.

8 years agoMerge pull request #6491 from adiaaida/formatting2
Michelle McDaniel [Mon, 1 Aug 2016 14:46:14 +0000 (07:46 -0700)]
Merge pull request #6491 from adiaaida/formatting2

Massage code for clang-format

8 years agoMerge pull request #6400 from Priya91/useruntool
Lakshmi Priya [Mon, 1 Aug 2016 03:38:06 +0000 (20:38 -0700)]
Merge pull request #6400 from Priya91/useruntool

Use run tool in coreclr dev workflow.

8 years agoUpdate linux-performance-tracing.md
Lorenzo Tessiore [Sat, 30 Jul 2016 15:33:47 +0000 (08:33 -0700)]
Update linux-performance-tracing.md

8 years agoApply run on recent changes in master.
Lakshmi Priya Sekar [Sat, 30 Jul 2016 00:53:02 +0000 (17:53 -0700)]
Apply run on recent changes in master.

8 years agoRespond to PR feedback.
Lakshmi Priya Sekar [Fri, 29 Jul 2016 20:51:43 +0000 (13:51 -0700)]
Respond to PR feedback.

8 years agoRemove clean option from arm script, which deletes the copied test bits in CI.
Lakshmi Priya Sekar [Thu, 28 Jul 2016 19:19:19 +0000 (12:19 -0700)]
Remove clean option from arm script, which deletes the copied test bits in CI.

8 years agoGrant 777 for run.sh
Lakshmi Priya Sekar [Thu, 28 Jul 2016 18:44:55 +0000 (11:44 -0700)]
Grant 777 for run.sh

8 years agoUse run tool in coreclr dev workflow.
Lakshmi Priya Sekar [Thu, 14 Jul 2016 22:42:33 +0000 (15:42 -0700)]
Use run tool in coreclr dev workflow.

8 years agoMerge pull request #6493 from rahku/crossgen
Rahul Kumar [Fri, 29 Jul 2016 22:22:40 +0000 (15:22 -0700)]
Merge pull request #6493 from rahku/crossgen

adds testhost package

8 years agoadds testhost package
Rahul Kumar [Wed, 27 Jul 2016 22:50:56 +0000 (15:50 -0700)]
adds testhost package

8 years agoMerge pull request #6521 from adityamandaleeka/remove_internal_free
Aditya Mandaleeka [Fri, 29 Jul 2016 21:13:05 +0000 (14:13 -0700)]
Merge pull request #6521 from adityamandaleeka/remove_internal_free

Remove CorUnix::InternalFree from PAL

8 years agoMerge pull request #6281 from papaslavik/cse_sort_sz
Brian Sullivan [Fri, 29 Jul 2016 20:56:44 +0000 (13:56 -0700)]
Merge pull request #6281 from papaslavik/cse_sort_sz

The sort for CSE size optimization should be different from exec

8 years agoMerge pull request #6515 from kyulee1/fixcontract
Kyungwoo Lee [Fri, 29 Jul 2016 20:42:00 +0000 (13:42 -0700)]
Merge pull request #6515 from kyulee1/fixcontract

Remove useless contract in EventListener

8 years agoMerge pull request #6479 from dagood/update-dependencies
William Godbe [Fri, 29 Jul 2016 19:34:30 +0000 (12:34 -0700)]
Merge pull request #6479 from dagood/update-dependencies

Using full versions, update CoreFX dependencies to beta-24326-03

8 years agoFix a build break.
Pat Gavlin [Fri, 29 Jul 2016 18:58:10 +0000 (11:58 -0700)]
Fix a build break.

[tfs-changeset: 1619855]

8 years agoUsing full versions, update CoreFX dependencies to beta-24328-05.
Davis Goodin [Tue, 26 Jul 2016 20:42:20 +0000 (15:42 -0500)]
Using full versions, update CoreFX dependencies to beta-24328-05.

To fix tests, change dnxcore50 -> netcoreapp1.0 and add test_runtime.

8 years agoMerge pull request #6506 from gkhanna79/FixReflectionLoadContext
Gaurav Khanna [Fri, 29 Jul 2016 17:04:51 +0000 (10:04 -0700)]
Merge pull request #6506 from gkhanna79/FixReflectionLoadContext

Enable RefEmitted assemblies to have Fallback LoadContext notion

8 years agoMassage code for clang-format
Michelle McDaniel [Fri, 24 Jun 2016 21:10:52 +0000 (14:10 -0700)]
Massage code for clang-format

This change starts the process of updating the jit code to make it ready
for being formatted by clang-format. Changes mostly include reflowing
comments that go past our column limit and moving comments around ifdefs
so clang-format does not modify the indentation. Additionally, some
header files are manually reformatted for pointer alignment and marked
as clang-format off so that we do not lose the current formatting.

8 years agoMerge pull request #6523 from dotnet-bot/UpdateDependencies20160729052446
Gaurav Khanna [Fri, 29 Jul 2016 13:01:04 +0000 (06:01 -0700)]
Merge pull request #6523 from dotnet-bot/UpdateDependencies20160729052446

Updating External dependencies to beta-24329-00

8 years agoMerge pull request #6499 from ramarag/unc_cwd
Rama krishnan Raghupathy [Fri, 29 Jul 2016 07:06:12 +0000 (00:06 -0700)]
Merge pull request #6499 from ramarag/unc_cwd

Fxing the paths that are resolved relative to a network share

8 years agoUpdating External dependencies to beta-24329-00
dotnet-bot [Fri, 29 Jul 2016 05:24:45 +0000 (05:24 +0000)]
Updating External dependencies to beta-24329-00

8 years agoMerge pull request #6394 from adityamandaleeka/ymm_save_restore
Aditya Mandaleeka [Fri, 29 Jul 2016 02:37:56 +0000 (19:37 -0700)]
Merge pull request #6394 from adityamandaleeka/ymm_save_restore

Save and restore ymm registers in signal handlers.

8 years agoMerge pull request #6512 from dotnet-bot/UpdateDependencies20160728083626
Aditya Mandaleeka [Fri, 29 Jul 2016 02:23:22 +0000 (19:23 -0700)]
Merge pull request #6512 from dotnet-bot/UpdateDependencies20160728083626

Updating External dependencies to beta-24328-00

8 years agoExpose missing members of Array in contract to prep for dotnet/corefx#9998. (#6519)
Sepideh Khoshnood [Fri, 29 Jul 2016 02:14:33 +0000 (19:14 -0700)]
Expose missing members of Array in contract to prep for dotnet/corefx#9998. (#6519)

8 years agoMerge pull request #6509 from dotnet-bot/from-tfs
Jan Kotas [Fri, 29 Jul 2016 02:11:16 +0000 (19:11 -0700)]
Merge pull request #6509 from dotnet-bot/from-tfs

Merge changes from TFS

8 years agoRemove CorUnix::InternalFree.
Aditya Mandaleeka [Thu, 28 Jul 2016 01:21:16 +0000 (18:21 -0700)]
Remove CorUnix::InternalFree.

8 years agoMerge pull request #6496 from adityamandaleeka/virtual_cleanup
Aditya Mandaleeka [Fri, 29 Jul 2016 01:00:40 +0000 (18:00 -0700)]
Merge pull request #6496 from adityamandaleeka/virtual_cleanup

Add in-memory circular buffer for logging virtual memory operations.

8 years agoUpdate how we pass parameters when building CoreFx (#6511)
Mariana Rios Flores [Fri, 29 Jul 2016 00:07:22 +0000 (17:07 -0700)]
Update how we pass parameters when building CoreFx (#6511)

Change how we pass parameters when building CoreFx

8 years agoAlso clear CONTEXT_XSTATE if fpregs aren't available.
Aditya Mandaleeka [Thu, 28 Jul 2016 23:19:06 +0000 (16:19 -0700)]
Also clear CONTEXT_XSTATE if fpregs aren't available.

8 years agoMerge pull request #6480 from davmason/master
David Mason [Thu, 28 Jul 2016 23:05:18 +0000 (16:05 -0700)]
Merge pull request #6480 from davmason/master

Merge changes with .net native.

The fix for DisposeOnShutdown is already in here, these are the changes that exist in ProjectN that are not in CoreCLR yet.

8 years agoAdd extended state to RtlRestoreContext
Aditya Mandaleeka [Thu, 28 Jul 2016 22:48:43 +0000 (15:48 -0700)]
Add extended state to RtlRestoreContext

8 years agoRemove useless contract in EventListener
Kyungwoo Lee [Thu, 28 Jul 2016 22:13:37 +0000 (15:13 -0700)]
Remove useless contract in EventListener

Fixes https://github.com/dotnet/coreclr/issues/6504

8 years agoFxing the paths that are resolved relative to a network share
Rama Krishnan Raghupathy [Thu, 28 Jul 2016 01:48:24 +0000 (18:48 -0700)]
Fxing the paths that are resolved relative to a network share

8 years agoUpdating External dependencies to beta-24328-00
dotnet-bot [Thu, 28 Jul 2016 20:36:26 +0000 (20:36 +0000)]
Updating External dependencies to beta-24328-00

8 years agoSkip dummy null argument for string constructors under CoreRT ABI (#6498)
Jan Kotas [Thu, 28 Jul 2016 19:55:26 +0000 (12:55 -0700)]
Skip dummy null argument for string constructors under CoreRT ABI (#6498)

8 years agoFix for build issue #807024, assemble debug helpers for ARM64.
Joel Hendrix [Thu, 28 Jul 2016 19:05:32 +0000 (12:05 -0700)]
Fix for build issue #807024, assemble debug helpers for ARM64.

[tfs-changeset: 1619712]

8 years agoEnable RefEmitted assemblies to have Fallback LoadContext notion
Gaurav Khanna [Tue, 26 Jul 2016 16:24:38 +0000 (09:24 -0700)]
Enable RefEmitted assemblies to have Fallback LoadContext notion

8 years agoMerge pull request #6502 from russellhadley/errnoFix
Russell C Hadley [Thu, 28 Jul 2016 13:13:31 +0000 (06:13 -0700)]
Merge pull request #6502 from russellhadley/errnoFix

Add errno.h to resolve (internal) build break

8 years agoMerge pull request #6278 from Dmitri-Botcharnikov/feature-gdbjit
noahfalk [Thu, 28 Jul 2016 07:15:54 +0000 (00:15 -0700)]
Merge pull request #6278 from Dmitri-Botcharnikov/feature-gdbjit

[Linux] GDB JIT support for source line debug information.

8 years agoFix a couple of paths related to exception codes. (#6497)
Aditya Mandaleeka [Thu, 28 Jul 2016 04:29:36 +0000 (21:29 -0700)]
Fix a couple of paths related to exception codes. (#6497)

8 years agoAdd in-memory logging for virtual memory operations.
Aditya Mandaleeka [Thu, 28 Jul 2016 00:37:45 +0000 (17:37 -0700)]
Add in-memory logging for virtual memory operations.

8 years agoAdd errno.h
rhadley [Thu, 28 Jul 2016 00:34:51 +0000 (17:34 -0700)]
Add errno.h

8 years agoMerge pull request #6490 from KrzysztofCwalina/ConvertAll
Stephen Toub [Thu, 28 Jul 2016 00:32:15 +0000 (20:32 -0400)]
Merge pull request #6490 from KrzysztofCwalina/ConvertAll

Exposed List<T>.ConvertAll

8 years agoRename PCMI->pLast and other cleanup of virtual memory code.
Aditya Mandaleeka [Thu, 28 Jul 2016 00:00:03 +0000 (17:00 -0700)]
Rename PCMI->pLast and other cleanup of virtual memory code.

8 years agoMerge pull request #6484 from CarolEidt/AssertionPropAsserts
Carol Eidt [Wed, 27 Jul 2016 22:43:43 +0000 (15:43 -0700)]
Merge pull request #6484 from CarolEidt/AssertionPropAsserts

Do not propagate bad assertions from unreachable blocks

8 years agoExposed List<T>.ConvertAll
KrzysztofCwalina [Wed, 27 Jul 2016 22:25:18 +0000 (15:25 -0700)]
Exposed List<T>.ConvertAll

8 years agoMerge pull request #6489 from JohnChen0/master
John Chen [Wed, 27 Jul 2016 21:20:10 +0000 (14:20 -0700)]
Merge pull request #6489 from JohnChen0/master

Update CrossGen doc for "Unable to load Jit" error

8 years agoGC update from CoreRT (#6487)
Jan Kotas [Wed, 27 Jul 2016 21:16:02 +0000 (14:16 -0700)]
GC update from CoreRT (#6487)

https://github.com/dotnet/corert/tree/master/src/Native/gc 35d3eefeb4d14193433a103411526fa869321a82

8 years agoporting changes from .net native to CoreCLR
David Mason [Tue, 26 Jul 2016 20:27:10 +0000 (13:27 -0700)]
porting changes from .net native to CoreCLR

8 years agoMerge pull request #6488 from stephentoub/add_objref_mscorlib
Stephen Toub [Wed, 27 Jul 2016 19:51:59 +0000 (15:51 -0400)]
Merge pull request #6488 from stephentoub/add_objref_mscorlib

Add IObjectReference to mscorlib ref assembly

8 years agoUpdate CrossGen doc for "Unable to load Jit" error
John Chen [Wed, 27 Jul 2016 19:30:58 +0000 (12:30 -0700)]
Update CrossGen doc for "Unable to load Jit" error

8 years agoDo not propagate bad assertions from unreachable blocks
Carol Eidt [Fri, 22 Jul 2016 20:56:24 +0000 (13:56 -0700)]
Do not propagate bad assertions from unreachable blocks

Also ensure only valid assertions are utilized.

8 years agoAdd IObjectReference to mscorlib ref assembly
Stephen Toub [Wed, 27 Jul 2016 18:14:36 +0000 (14:14 -0400)]
Add IObjectReference to mscorlib ref assembly

8 years ago[SOS][ARM/Linux] Enable clru SOS command (#6477)
Evgeny Pavlov [Wed, 27 Jul 2016 17:12:59 +0000 (21:12 +0400)]
[SOS][ARM/Linux] Enable clru SOS command (#6477)

* Enable clru SOS command on ARM/Linux

* Set thumb bit on ARM/Linux

8 years agoOptimize the generic string.Join for length 1 collections (#6463)
James Ko [Wed, 27 Jul 2016 17:00:18 +0000 (13:00 -0400)]
Optimize the generic string.Join for length 1 collections (#6463)

* Optimize the generic string.Join for length 1 collections
* Keep the call order consistent: MoveNext-Current-ToString
* Convert to do..while loop to reduce code duplication

8 years agoMerge pull request #6486 from stephentoub/expose_updatevalue
Stephen Toub [Wed, 27 Jul 2016 16:05:15 +0000 (12:05 -0400)]
Merge pull request #6486 from stephentoub/expose_updatevalue

Expose SerializationInfo.UpdateValue for corefx

8 years agoExpose SerializationInfo.UpdateValue for corefx
Stephen Toub [Wed, 27 Jul 2016 14:24:06 +0000 (10:24 -0400)]
Expose SerializationInfo.UpdateValue for corefx

ObjectManager in corefx needs to access to SerializationInfo.UpdateValue, which is currently internal.  We don't need to expose UpdateValue in a public contract (which would necessitate adding it to desktop), but by making it public we can give corefx the functionality it needs without needing to move a whole bunch more down from corefx into the runtime.

8 years agoAdd flag to check re-entrancy of JIT notification
Evgeny Pavlov [Wed, 27 Jul 2016 13:27:17 +0000 (16:27 +0300)]
Add flag to check re-entrancy of JIT notification

8 years agoMerge pull request #6485 from stephentoub/iobjref_model
Stephen Toub [Wed, 27 Jul 2016 13:05:17 +0000 (09:05 -0400)]
Merge pull request #6485 from stephentoub/iobjref_model

Add IObjectReference to model.xml

8 years agoAdd IObjectReference to model.xml
Stephen Toub [Wed, 27 Jul 2016 11:12:47 +0000 (07:12 -0400)]
Add IObjectReference to model.xml

And expose a couple of missing properties on SerializationInfo in the mscorlib facade.

8 years agoMerge pull request #6467 from briansull/multireg-return2
Brian Sullivan [Wed, 27 Jul 2016 00:54:04 +0000 (17:54 -0700)]
Merge pull request #6467 from briansull/multireg-return2

Enable multireg returns on Arm64

8 years agoMerge pull request #6401 from AndyAyersMS/PropagateOptMethodFlags
Andy Ayers [Wed, 27 Jul 2016 00:42:37 +0000 (17:42 -0700)]
Merge pull request #6401 from AndyAyersMS/PropagateOptMethodFlags

Jit: fix issues with optMethodFlags

8 years agoMerge pull request #6418 from rahku/crossgen
Rahul Kumar [Tue, 26 Jul 2016 23:49:30 +0000 (16:49 -0700)]
Merge pull request #6418 from rahku/crossgen

Do not insert gcstress interrupt instruction at call to JIT_RareDisab…

8 years agoEnable multireg returns on Arm64
Brian Sullivan [Tue, 12 Jul 2016 20:52:20 +0000 (13:52 -0700)]
Enable multireg returns on Arm64

Added method IsMultiRegPassedType and updated IsMultiRegReturnType
Switched these methods to using getArgTypeForStruct and getReturnTypeForStruct
Removed IsRegisterPassable and used IsMultiRegReturned instead.
Converted lvIsMultiregStruct to use getArgTypeForStruct
Renamed varDsc->lvIsMultiregStruct() to compiler->lvaIsMultiregStruct(varDsc)
Skip calling getPrimitiveTypeForStruct when we have a struct larger than 8 bytes
Refactored ReturnTypeDesc::InitializeReturnType
Fixed missing SPK_ByReference case in InitializeReturnType
Fixes for RyiJIt x86 TYP_LONG return types and additional ARM64 work for full multireg support
Added ARM64 guard the uses of MAX_RET_MULTIREG_BYTES with FEATURE_MULTIREG_RET
Fixes for multireg returns in Arm64 Codegen
Added dumping of lvIsMultiRegArg and lvIsMultiRegRet in the assembly output
Added check and set of compFloatingPointUsed to InitializeStructReturnType
Fixes to handle JIT helper calls that say they return a TYP_STRUCT with no class handle available
Placed all of the second GC return reg under MULTIREG_HAS_SECOND_GC_RET ifdefs
Added the Arm64 VM changes from Rahul's PR 5175
Update getArgTypeForStruct for x86/arm32 so that it returns TYP_STRUCT for all pass by value cases
Fixes for the passing of 3,5,6 or 7 byte sized structs
Fix issue on ARM64 where we would back fill into x7 after passing a 16-byte struct on the stack
Implemented register shuffling for multi reg Call returns on Arm64
Fixed regression on Arm32 for struct args that are not multi regs
Updated Tests.Lst with 23 additional passing tests

Changes from codereview feedback

8 years agoMerge pull request #6481 from stephentoub/add_serialization_facade
Stephen Toub [Tue, 26 Jul 2016 22:58:03 +0000 (18:58 -0400)]
Merge pull request #6481 from stephentoub/add_serialization_facade

Add serialization primitives to mscorlib facade

8 years agoUse the correct call to get properties, DeclaredProperties does not return properties...
David Mason [Tue, 26 Jul 2016 20:10:20 +0000 (13:10 -0700)]
Use the correct call to get properties, DeclaredProperties does not return properties for a base class

8 years agoRewrite gtIsVtableAccess to avoid assert
Andy Ayers [Tue, 26 Jul 2016 21:19:20 +0000 (14:19 -0700)]
Rewrite gtIsVtableAccess to avoid assert

Calling `HasIndex` from `gtIsVtableAccess` can leads to asserts as the
underly code checks to see if the addressing sub-expressions are
contained. But earlyProp runs early enough that it is not concerned with
containment. The code just needs to verify that there is a ref type base
and no index. Rework the code to do the checks directly.

8 years agoAdd serialization primitives to mscorlib facade
Stephen Toub [Tue, 26 Jul 2016 21:11:39 +0000 (17:11 -0400)]
Add serialization primitives to mscorlib facade

8 years agoMerge pull request #6464 from russellhadley/HardenJitStartup
Russell C Hadley [Tue, 26 Jul 2016 19:38:40 +0000 (12:38 -0700)]
Merge pull request #6464 from russellhadley/HardenJitStartup

Harden stdout at startup

8 years agoHarden stdout at startup
rhadley [Mon, 25 Jul 2016 17:40:27 +0000 (10:40 -0700)]
Harden stdout at startup

Check the results of the dup call to ensure that we're working with
a valid file handle.  In the case where we aren't we leave the jitstdout
set to nullptr.

8 years agoMerge pull request #6473 from dotnet-bot/from-tfs
Jan Kotas [Tue, 26 Jul 2016 13:16:04 +0000 (06:16 -0700)]
Merge pull request #6473 from dotnet-bot/from-tfs

Merge changes from TFS

8 years agoMerge pull request #6472 from dotnet-bot/UpdateDependencies20160726051912
Gaurav Khanna [Tue, 26 Jul 2016 13:08:58 +0000 (06:08 -0700)]
Merge pull request #6472 from dotnet-bot/UpdateDependencies20160726051912

Updating External dependencies to beta-24326-00

8 years agoAddressing arm64 build break due to old compiler
Rama Krishnan Raghupathy [Tue, 26 Jul 2016 06:30:07 +0000 (23:30 -0700)]
Addressing arm64 build break due to old compiler

[tfs-changeset: 1619335]

8 years agoUpdating External dependencies to beta-24326-00
dotnet-bot [Tue, 26 Jul 2016 05:19:12 +0000 (05:19 +0000)]
Updating External dependencies to beta-24326-00

8 years agoFix copy check condition for native interop test library. (#6468)
Sung-Jae Lee [Tue, 26 Jul 2016 04:09:36 +0000 (13:09 +0900)]
Fix copy check condition for native interop test library. (#6468)

8 years agoLinux/ARM: Fix +3000 bus errors of unit-test in case of O2/O3 levels (#6379)
Geunsik Lim [Tue, 26 Jul 2016 03:59:47 +0000 (12:59 +0900)]
Linux/ARM: Fix +3000 bus errors of unit-test in case of O2/O3 levels (#6379)

**PROBLEM**
This patch is to resolve +3000 bus errors that are generated whenever we use
the aggressive optimization levels of clang (issue #5844 ).

When we enable the -O3 optimization level of the clang version(from clang 3.5
to clang 3.9(snapshot)), we have always got the lots of bus errors from the
coreCLR's unit tests. Actually, we can easily monitor SIGBUS signals (e.g.,
"misaligned memory access") with /proc/cpu/alignment facility in kernel space.
Using "echo 2 > /proc/cpu/alignment" makes Linux kernel fixes the problems
but the performance of the application will be degraded.
.source: http://lxr.free-electrons.com/source/Documentation/arm/mem_alignment

**VERSION 4**
. Use 'GET_UNALIGNED_VALXXX' macros in the CoreClr infra-structure without
  any need for ifdefs.

**VERSION 3**
.Apply this PR on only Linux/ARM for different system environment (Windows).

Here is .NET CI Report on Windows: Compile Error
error C2146: syntax error: missing ';' before identifier '__unaligned_int32'
(compiling source file D:\j\workspace\checked_windo---f6dc6fe4\src\jit\alloc.cpp)
[D:\j\workspace\checked_windo---f6dc6fe4\bin\obj\Windows_NT.x64.Checked\src\jit\
crossgen\clrjit_crossgen.vcxproj] Indication 1

**VERSION 2**
.Add UNALIGNED_ARM macro for handling ARM core specific optimization levels.
.Add RISC-based ARM core handling into the existing infra-structure of the
platform adaptation layer (PAL) for aggressive optimization cases on Linux/ARM.

**VERSION 1**
Basically, RISC-based ARM architecture requires aligned access with 4byte reads.
In order to support aggressive optimization levels such as O2/O3, let's use
attribute keyword of aligned(1) instead of using memcpy(2) in into
a properly aligned buffer or the packing attribute.

**BACKGROUND**
According to ARM information center(infocenter.arm.com), By default,
the ARM compiler expects normal C and C++ pointers to point
to an aligned word in memory. A type qualifier __packed is provided to
enable unaligned pointer access. If you want to define a pointer to a word
that can be at any address (that is, that can be at a non-natural alignment),
you must specify this using the __packed qualifier when defining the pointer:
__packed int *pi; // pointer to unaligned int

However, clang/llvm does not support the __packed qualifier such as
__attribute__((packed)) or __attribute__((packed, aligned(4)))

In -O0 (debug build) the innermost block is emitted as the following assembly,
which works properly:
 ldr r1, [r0, #24]
 ldr r2, [r0, #20]

In -O3 (release build) however the compiler realizes these fields are adjacent
and generates this assembly:
 ldrdeq  r2, r3, [r0, #20]
Unfortunately, vldr/ldrdb instructions always generate an alignment fault
(in practice). It seems that clang uses ldrb instruction although GCC uses
ldr instruction because armv7 supports unaligned ldr instruction.

Note: If some arm architectures (e.g., Linux/ARM Emulator) does not support
unaligned ldr, this issue is not generated with aggressive optimization
levels (e.g., -O2 and -O3).

* Case study: How does the ARM Compiler support unaligned accesses?
  http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka15414.html

* Case study: Indicating unaligned access to Clang for ARM compatibility
  http://stackoverflow.com/questions/9185811/indicating-unaligned-access-to-clang-for-arm-compatibility

* Case study: Chromium source for UnalignedLoad32() on ARM
  https://github.com/nwjs/chromium.src/blob/nw15/third_party/cld/base/basictypes.h#L302

Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
8 years agoMerge pull request #6328 from ramarag/arm64debugger
Rama krishnan Raghupathy [Tue, 26 Jul 2016 03:36:53 +0000 (20:36 -0700)]
Merge pull request #6328 from ramarag/arm64debugger

Implementing Arm64 Debugger Requirements

8 years agoDo not insert gcstress interrupt instruction at call to JIT_RareDisableHelper
Rahul Kumar [Fri, 22 Jul 2016 19:48:55 +0000 (12:48 -0700)]
Do not insert gcstress interrupt instruction at call to JIT_RareDisableHelper

8 years agoArm64: Debugger
Rama Krishnan Raghupathy [Tue, 19 Jul 2016 02:40:05 +0000 (19:40 -0700)]
Arm64: Debugger

    Instruction emulation for Break Points
    Debugger::FuncEvalSetup
    NativeWalker
    ExceptionHijack
    Exception intercept
    Managed Return Value

8 years agoFix offset to VectorRegister in i386/asmconstants.h.
Aditya Mandaleeka [Tue, 26 Jul 2016 01:10:35 +0000 (18:10 -0700)]
Fix offset to VectorRegister in i386/asmconstants.h.

8 years agoMerge pull request #6156 from justinvp/activitytracker_tostring
Vance Morrison [Mon, 25 Jul 2016 22:06:45 +0000 (15:06 -0700)]
Merge pull request #6156 from justinvp/activitytracker_tostring

Avoid string concat array allocation in ActivityTracker

8 years agoMerge pull request #6158 from justinvp/tracing_stringcomparison
Vance Morrison [Mon, 25 Jul 2016 22:00:29 +0000 (15:00 -0700)]
Merge pull request #6158 from justinvp/tracing_stringcomparison

Specify StringComparison.Ordinal in System.Diagnostics.Tracing

8 years agoMerge pull request #6461 from stephentoub/update_buildtools
Stephen Toub [Mon, 25 Jul 2016 19:49:17 +0000 (15:49 -0400)]
Merge pull request #6461 from stephentoub/update_buildtools

Update BuildTools to 1.0.26-prerelease-00625-01

8 years agoUpdate BuildTools to 1.0.26-prerelease-00625-01
Stephen Toub [Mon, 25 Jul 2016 16:16:01 +0000 (12:16 -0400)]
Update BuildTools to 1.0.26-prerelease-00625-01

8 years agoMerge pull request #6456 from dotnet-bot/UpdateDependencies20160725083514
Gaurav Khanna [Mon, 25 Jul 2016 13:23:59 +0000 (06:23 -0700)]
Merge pull request #6456 from dotnet-bot/UpdateDependencies20160725083514

Updating CoreClr dependencies to beta-24325-02