platform/upstream/coreclr.git
7 years agoMake TimeZoneInfo fields readonly (#8526)
Justin Van Patten [Fri, 9 Dec 2016 00:46:23 +0000 (16:46 -0800)]
Make TimeZoneInfo fields readonly (#8526)

TimeZoneInfo is immutable. Help enforce this by making its fields
readonly.

7 years agoTimeZoneInfo: Use string.Concat instead of string.Format (#8540)
Justin Van Patten [Fri, 9 Dec 2016 00:44:20 +0000 (16:44 -0800)]
TimeZoneInfo: Use string.Concat instead of string.Format (#8540)

It's more efficient to concatenate the strings.

7 years agoMake TimeZoneInfo.TransitionTime fields readonly (#8529)
Justin Van Patten [Fri, 9 Dec 2016 00:43:45 +0000 (16:43 -0800)]
Make TimeZoneInfo.TransitionTime fields readonly (#8529)

TransitionTime is immutable. Help enforce this by making its fields
readonly.

7 years ago[x86/Linux] Port Several Stubs as NYI (#8515)
Jonghyun Park [Fri, 9 Dec 2016 00:43:00 +0000 (09:43 +0900)]
[x86/Linux] Port Several Stubs as NYI (#8515)

This commit adds SinglecastDelegateInvokeStub and VSD-related Stubs as NYI.

7 years agoMake TimeZoneInfo.AdjustmentRule fields readonly (#8528)
Justin Van Patten [Fri, 9 Dec 2016 00:39:28 +0000 (16:39 -0800)]
Make TimeZoneInfo.AdjustmentRule fields readonly (#8528)

AdjustmentRule is immutable. Help enforce this by making its fields
readonly.

7 years agoPreallocate the TimeZoneInfo.Utc instance (#8530)
Justin Van Patten [Fri, 9 Dec 2016 00:32:56 +0000 (16:32 -0800)]
Preallocate the TimeZoneInfo.Utc instance (#8530)

There doesn't appear to be a good reason why the TimeZoneInfo.Utc
instance needs to be cleared when TimeZoneInfo.ClearCachedData() is
called. Instead, we can pre-allocate and reuse a singleton instance,
obviating the need for the lazy-initialization/locking mechanics.

7 years agoSimplify TimeZoneInfo.AdjustmentRule.Equals (#8527)
Justin Van Patten [Fri, 9 Dec 2016 00:30:44 +0000 (16:30 -0800)]
Simplify TimeZoneInfo.AdjustmentRule.Equals (#8527)

7 years agoRemove private TimeZoneInfoComparer (#8512)
Justin Van Patten [Fri, 9 Dec 2016 00:28:08 +0000 (16:28 -0800)]
Remove private TimeZoneInfoComparer (#8512)

Use Comparison<T> instead of IComparer<T> to sort the list of
TimeZoneInfos, which moves the comparison code to the sole place where
it is used, and now that Array.Sort is implemented in terms of
Comparison<T> instead of IComparer<T>, avoids some unnecessary
intermediate allocations.

7 years agoRemove sscanf and sprintf usage (#8508)
Jan Vorlicek [Thu, 8 Dec 2016 23:51:19 +0000 (00:51 +0100)]
Remove sscanf and sprintf usage (#8508)

* Remove sscanf
* Remove sprintf

7 years agoAvoid allocating in TimeZoneInfo.GetHashCode() (#8513)
Justin Van Patten [Thu, 8 Dec 2016 21:21:43 +0000 (13:21 -0800)]
Avoid allocating in TimeZoneInfo.GetHashCode() (#8513)

Avoid the intermediate ToUpper string allocation.

7 years agoSimplify TimeZoneInfo.Equals(object) (#8514)
Justin Van Patten [Thu, 8 Dec 2016 21:21:28 +0000 (13:21 -0800)]
Simplify TimeZoneInfo.Equals(object) (#8514)

Equals(TimeZoneInfo) already handles null.

7 years agoMove native search paths forward (#8531)
Jeremy Kuhne [Thu, 8 Dec 2016 21:10:38 +0000 (13:10 -0800)]
Move native search paths forward (#8531)

Set native search paths in AppDomain.Setup before doing the rest
of the setup steps to get ahead of potential P/Invoke calls.

7 years agoUpdate glossary.md
Karel Zikmund [Thu, 8 Dec 2016 16:40:00 +0000 (08:40 -0800)]
Update glossary.md

7 years agoMerge pull request #8524 from hqueue/xarch/lowercast
Russ Keldorph [Thu, 8 Dec 2016 14:40:39 +0000 (06:40 -0800)]
Merge pull request #8524 from hqueue/xarch/lowercast

Remove an unused local variable

7 years agoRemove an unused local variable
Hyung-Kyu Choi [Thu, 8 Dec 2016 08:05:54 +0000 (17:05 +0900)]
Remove an unused local variable

In lowerxarch.cpp, local variable srcUns is defined but not used
at Lowering::LowerCast(GenTree* tree).

Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
7 years agoStrip some conditional compilation in SPCL (#8511)
Jeremy Kuhne [Thu, 8 Dec 2016 01:29:31 +0000 (17:29 -0800)]
Strip some conditional compilation in SPCL (#8511)

Removed:

FEATURE_FUSION
FEATURE_PATHCOMPAT
FEATURE_APPDOMAINMANAGER_INITOPTIONS
FEATURE_APTCA
FEATURE_CLICKONCE
FEATURE_IMPERSONATION
FEATURE_MULTIMODULE_ASSEMBLIES

Removed some:

FEATURE_CAS_POLICY
!FEATURE_CORECLR
FEATURE_REMOTING

7 years ago[x86/Linux] Fix inconsistent GetCLRFunction definitions (#8472)
Jonghyun Park [Thu, 8 Dec 2016 01:25:38 +0000 (10:25 +0900)]
[x86/Linux] Fix inconsistent GetCLRFunction definitions (#8472)

* [x86/Linux] Fix inconsistency in GetCLRFunction definitions

GetCLRFunction is treated as pfnGetCLRFunction_t which has __stdcall
convention, but is  implemented without __stdcall.

This inconsistency causes segmentaion fault while initializing CoreCLR
for x86/Linux.

This commit fixes such inconsistency via adding __stdcall to
GetCLRFunction implementation.

In addition, this commit declares GetCLRFuntion in 'utilcode.h' and
and revises .cpp files to include 'utilcode.h' instead of declaring
'GetCLRFunction'.

* Remove unnecessary includes

* Remove another unnecessay include

7 years agoMerge pull request #8509 from dotnet-bot/from-tfs
Brian Sullivan [Thu, 8 Dec 2016 00:12:57 +0000 (16:12 -0800)]
Merge pull request #8509 from dotnet-bot/from-tfs

Merge changes from TFS

7 years agoRefactor Span<T> to ease implementation of JIT intrinsics (#8497)
Jan Kotas [Wed, 7 Dec 2016 23:16:57 +0000 (15:16 -0800)]
Refactor Span<T> to ease implementation of JIT intrinsics (#8497)

- Introduce internal ByReference<T> type for byref fields and change Span to use it
- Generalize handling of byref-like types in the type loader
- Make DangerousGetPinnableReference public while I was on it

7 years agoMerge pull request #8505 from pgavlin/VSO297215
Pat Gavlin [Wed, 7 Dec 2016 23:16:09 +0000 (15:16 -0800)]
Merge pull request #8505 from pgavlin/VSO297215

Use a left-leaning comma tree when morphing a stelem.ref helper.

7 years agoEnable POGO build and link for CodegenMirror
Brian Sullivan [Wed, 7 Dec 2016 22:54:55 +0000 (14:54 -0800)]
Enable POGO build and link for CodegenMirror

[tfs-changeset: 1640669]

7 years agoMerge pull request #8504 from mikedn/sort-comparison
Jan Kotas [Wed, 7 Dec 2016 21:13:35 +0000 (13:13 -0800)]
Merge pull request #8504 from mikedn/sort-comparison

Change ArraySortHelper to use Comparison<T>

7 years agoMerge pull request #8482 from CarolEidt/Fix8220
Carol Eidt [Wed, 7 Dec 2016 19:28:30 +0000 (11:28 -0800)]
Merge pull request #8482 from CarolEidt/Fix8220

Use only lower floats for Vector3 dot and equality

7 years agoMerge pull request #8488 from sivarv/upperSave
Sivarv [Wed, 7 Dec 2016 18:39:06 +0000 (10:39 -0800)]
Merge pull request #8488 from sivarv/upperSave

Fix to issue 8356.

7 years agoUse a left-leaning comma tree when morphing a stelem.ref helper.
Pat Gavlin [Wed, 7 Dec 2016 18:19:40 +0000 (10:19 -0800)]
Use a left-leaning comma tree when morphing a stelem.ref helper.

fgMorphCall may change a call to the stelem.ref helper that is storing a
null value into a simple store. This transformation needs to construct a
comma tree to hold the argument setup nodes present on the call if any
exist. Originally this tree was constructed in right-leaning fashion
(i.e. the first comma node was the root of the tree and each successive
comma node was the RHS of its parent). Unfortunately, this construction
did not automatically propagate the flags of a comma node's children to
the comma node, since not all of each comma node's actual children were
available at the time it was constructed. Constructing the tree in
left-leaning fashion (i.e. the first comma node is the left-most child
and the final comma node is the root of the tree) allows the flag
propagation to be performed correctly by constrution.

Fixes VSO 297215.

7 years agoMerge pull request #8503 from pgavlin/VSO289704
Pat Gavlin [Wed, 7 Dec 2016 18:17:44 +0000 (10:17 -0800)]
Merge pull request #8503 from pgavlin/VSO289704

Remove a use of `gtGetOp` in earlyprop.

7 years agoRemove unused DepthLimitedQuickSort methods
Mike Danes [Wed, 7 Dec 2016 18:04:38 +0000 (20:04 +0200)]
Remove unused DepthLimitedQuickSort methods

These are never used in CoreCLR

7 years agoChange ArraySortHelper to use Comparison<T>
Mike Danes [Wed, 7 Dec 2016 17:38:02 +0000 (19:38 +0200)]
Change ArraySortHelper to use Comparison<T>

The Array/List.Sort overloads that take a Comparison<T> have worse performance than the ones that take a IComparer<T>. That's because sorting is implemented around IComparer<T> and a Comparison<T> needs to be wrapped in a comparer object to be used.

At the same time, interface calls are slower than delegate calls so the existing implementation doesn't offer the best performance even when the IComparer<T> based overloads are used.

By changing the implementation to use Comparison<T> we avoid interface calls in both cases.

When IComparer<T> overloads are used a Comparison<T> delegate is created from IComparer<T>.Compare, that's an extra object allocation but sorting is faster and we avoid having two separate sorting implementations.

7 years agoRemove a use of `gtGetOp` in earlyprop.
Pat Gavlin [Wed, 7 Dec 2016 17:02:02 +0000 (09:02 -0800)]
Remove a use of `gtGetOp` in earlyprop.

Instead, use `GenTreeIndir::Addr`, as some indirections are not simple
operators.

Fixes VSO 289704.

7 years ago[x86/Linux][SOS] Get correct stack pointer from DT_CONTEXT (#8500)
Evgeny Pavlov [Wed, 7 Dec 2016 16:48:30 +0000 (19:48 +0300)]
[x86/Linux][SOS] Get correct stack pointer from DT_CONTEXT (#8500)

7 years agoUse only lower floats for Vector3 dot and equality
Carol Eidt [Thu, 1 Dec 2016 03:31:58 +0000 (19:31 -0800)]
Use only lower floats for Vector3 dot and equality

For both dot product and comparisons that produce a boolean result, we need to use only the lower 3 floats. The bug was exposed by a case where the result of a call was being used in one of these operations without being stored to a local (which would have caused the upper bits to be cleared).

Fix #8220

7 years ago[x86/Linux][SOS] Add definitions for CLR_CMAKE_PLATFORM_ARCH_I386 in CMakeLists.txt...
Evgeny Pavlov [Wed, 7 Dec 2016 10:07:20 +0000 (13:07 +0300)]
[x86/Linux][SOS] Add definitions for CLR_CMAKE_PLATFORM_ARCH_I386 in CMakeLists.txt file of lldbplugin (#8499)

7 years agoMove JIT_EndCatch from asmhelpers.asm into jithelp.asm (#8492)
Jonghyun Park [Wed, 7 Dec 2016 09:54:54 +0000 (18:54 +0900)]
Move JIT_EndCatch from asmhelpers.asm into jithelp.asm (#8492)

* Move JIT_EndCatch from asmhelpers.asm into jithelp.asm

The name of JIT_EndCatch suggests that it is a JIT helper, but its
implementation is inside asmhelpers.asm (not in jithelp.asm).

This commit moves its implementation into jithelp.asm.

* Move COMPlusEndCatch declaration

7 years ago[x86/Linux] Port StubLinkerCPU::EmitSetup (#8494)
Jonghyun Park [Wed, 7 Dec 2016 06:37:07 +0000 (15:37 +0900)]
[x86/Linux] Port StubLinkerCPU::EmitSetup (#8494)

This commit ports StubLinkerCPU::EmitSetup to x86/Linux.

7 years agoMerge pull request #8470 from brianrob/fix_lttng_header_detection
Brian Robbins [Wed, 7 Dec 2016 05:14:38 +0000 (21:14 -0800)]
Merge pull request #8470 from brianrob/fix_lttng_header_detection

Fix building against liblttng-ust-dev 2.8+

7 years ago[x86/Linux] Port asmhelpers.asm (#8489)
Jonghyun Park [Wed, 7 Dec 2016 03:46:17 +0000 (12:46 +0900)]
[x86/Linux] Port asmhelpers.asm (#8489)

This commit ports asmhelpers.asm to x86/Linux.
(CallRtlUnwind is currently marked as NYI)

7 years ago[x86/Linux] Port PATCH_LABEL macro (#8483)
Jonghyun Park [Wed, 7 Dec 2016 03:41:44 +0000 (12:41 +0900)]
[x86/Linux] Port PATCH_LABEL macro (#8483)

7 years agoGcInfoEncoder: Initialize the BitArrays tracking liveness (#8485)
Swaroop Sridhar [Wed, 7 Dec 2016 01:17:21 +0000 (17:17 -0800)]
GcInfoEncoder: Initialize the BitArrays tracking liveness (#8485)

The non-X86 GcInfoEncoder library uses two bit-arrays to keep track
of pointer-liveness. The BitArrays are allocated using the arena allocator
which doesn't zero-initialize them. This was causing non-deterministic
redundant allocation of unused slots. This change fixes the problem.

7 years agoMerge pull request #8484 from pgavlin/VSO297113
Pat Gavlin [Wed, 7 Dec 2016 01:01:50 +0000 (17:01 -0800)]
Merge pull request #8484 from pgavlin/VSO297113

Fix use edge iterator for DYN_BLK nodes.

7 years agoFix to issue 8356.
sivarv [Wed, 7 Dec 2016 00:19:55 +0000 (16:19 -0800)]
Fix to issue 8356.

7 years agoFix building against liblttng-ust-dev 2.8+
Brian Robbins [Mon, 5 Dec 2016 04:16:29 +0000 (20:16 -0800)]
Fix building against liblttng-ust-dev 2.8+

7 years agoFix use edge iterator for DYN_BLK nodes.
Pat Gavlin [Tue, 6 Dec 2016 23:37:08 +0000 (15:37 -0800)]
Fix use edge iterator for DYN_BLK nodes.

Dynamic block nodes (i.e. DYN_BLK and STORE_DYN_BLK) are not standard
nodes. As such, the use order of their operands may be reordered in ways
that are not visible via the usual mechanisms. The use edge iterator was
not taking these mechanisms into account, which caused mismatches
between the use order observed by LSRA and the order observed by code
generation. This in turn caused SBCG under circumstances in which one
operand needed to be copied from e.g. esi to edi before another operand
was unspilled into esi.

Fixes VSO 297113.

7 years agoMerge pull request #8466 from CarolEidt/Fix297074
Carol Eidt [Tue, 6 Dec 2016 22:31:09 +0000 (14:31 -0800)]
Merge pull request #8466 from CarolEidt/Fix297074

Create Blk node for struct vararg

7 years agoMerge pull request #8467 from briansull/vso-287663
Brian Sullivan [Tue, 6 Dec 2016 21:30:32 +0000 (13:30 -0800)]
Merge pull request #8467 from briansull/vso-287663

Don't change a GT_DYN_BLK into a GT_BLK when the size is zero

7 years agoMerge pull request #8263 from AndyAyersMS/InlineInlinePinvoke
Andy Ayers [Tue, 6 Dec 2016 19:12:30 +0000 (11:12 -0800)]
Merge pull request #8263 from AndyAyersMS/InlineInlinePinvoke

JIT: enable inline pinvoke in more cases

7 years agoFixed typo
ahsonkhan [Tue, 6 Dec 2016 18:17:40 +0000 (10:17 -0800)]
Fixed typo

7 years agoWe should not transform a GT_DYN_BLK with a constant zero size into a GT_BLK as we...
Brian Sullivan [Tue, 6 Dec 2016 01:06:40 +0000 (17:06 -0800)]
We should not transform a GT_DYN_BLK with a constant zero size into a GT_BLK as we do not support a GT_BLK of size zero.

Fixes VSO 287663

7 years agoMerge pull request #8464 from pgavlin/VSO297109
Pat Gavlin [Tue, 6 Dec 2016 17:14:06 +0000 (09:14 -0800)]
Merge pull request #8464 from pgavlin/VSO297109

x86: Deactivate P/Invoke frames after a native call.

7 years agoAddress PR feedback.
Pat Gavlin [Tue, 6 Dec 2016 17:01:36 +0000 (09:01 -0800)]
Address PR feedback.

7 years ago[x86/Linux][SOS] Fix DataTarget::GetPointerSize for x86 (#8473)
Evgeny Pavlov [Tue, 6 Dec 2016 14:42:44 +0000 (17:42 +0300)]
[x86/Linux][SOS] Fix DataTarget::GetPointerSize for x86 (#8473)

7 years ago[x86/Linux][SOS] Disable ARM target support for xplat (#8471)
Evgeny Pavlov [Tue, 6 Dec 2016 14:42:15 +0000 (17:42 +0300)]
[x86/Linux][SOS] Disable ARM target support for xplat (#8471)

7 years ago[x86/Linux] Fix Dacp structure size mismatch (#8377)
SaeHie Park [Tue, 6 Dec 2016 09:22:30 +0000 (18:22 +0900)]
[x86/Linux] Fix Dacp structure size mismatch (#8377)

Fix compile error for x86/Linux
- add __attribute__((__ms_struct__)) as "MSLAYOUT" for those structures
- Fix "Dacp structs cannot be modified due to backwards compatibility" error

7 years agoExtract ARRAYSTUBS_AS_IL code from STUBS_AS_IL region (#8443)
Jonghyun Park [Tue, 6 Dec 2016 09:22:14 +0000 (18:22 +0900)]
Extract ARRAYSTUBS_AS_IL code from STUBS_AS_IL region (#8443)

FEATURE_ARRAYSTUBS_AS_IL code seems to be independent from
FEATURE_STUBS_AS_IL, but the related code is enclosed with
FEATURE_STUBS_AS_IL.

This commit extracts the related code from STUBS_AS_IL region.

7 years agoMerge pull request #8463 from CarolEidt/Fix288220
Carol Eidt [Tue, 6 Dec 2016 07:42:39 +0000 (23:42 -0800)]
Merge pull request #8463 from CarolEidt/Fix288220

Allow remorph of SIMD assignment

7 years ago[x86/Linux] Fix exception handling routine (#8433)
Jonghyun Park [Tue, 6 Dec 2016 01:58:32 +0000 (10:58 +0900)]
[x86/Linux] Fix exception handling routine (#8433)

* [x86/Linux] Fix exception handling routine

DispatchManagedException requires WIN64EXCEPTIONS to be defined, but it
is not defined for x86/Linux.

7 years ago[x86/Linux] Revise COMPlusThrowCallback (#8430)
Jonghyun Park [Tue, 6 Dec 2016 01:57:52 +0000 (10:57 +0900)]
[x86/Linux] Revise COMPlusThrowCallback (#8430)

GetCallerToken and GetImpersonationToken methods in FrameSecurityDescriptorBaseObject
are implemented only for Windows-platform.

7 years ago[x86/Linux] Fix unknown pragma build error (#8427)
Jonghyun Park [Tue, 6 Dec 2016 01:56:58 +0000 (10:56 +0900)]
[x86/Linux] Fix unknown pragma build error (#8427)

7 years agoCreate Blk node for struct vararg
Carol Eidt [Tue, 6 Dec 2016 00:44:22 +0000 (16:44 -0800)]
Create Blk node for struct vararg

When morphing a reference to a struct parameter in a varargs method, it must be a blk node if it is the destination of an assignment.

7 years agoMerge pull request #8468 from DrewScoggins/LinuxPerfFixup
Drew Scoggins [Tue, 6 Dec 2016 01:19:53 +0000 (19:19 -0600)]
Merge pull request #8468 from DrewScoggins/LinuxPerfFixup

Fix calls to curl in prep script

7 years agoFix calls to curl in prep script
Drew Scoggins [Tue, 6 Dec 2016 01:14:59 +0000 (17:14 -0800)]
Fix calls to curl in prep script

Before we were calling curl without the -L configuration.  This would
cause it not follow redirects and several of the files we needed have
now started using redirects.  This fixes that issue.

7 years ago[x86/Linux] Port gmsasm.asm (#8456)
Jonghyun Park [Tue, 6 Dec 2016 01:01:57 +0000 (10:01 +0900)]
[x86/Linux] Port gmsasm.asm (#8456)

7 years ago[x86/Linux] Mark several Windows-specific functions in excepx86.cpp as NYI (#8424)
Jonghyun Park [Tue, 6 Dec 2016 00:37:53 +0000 (09:37 +0900)]
[x86/Linux] Mark several Windows-specific functions in excepx86.cpp as NYI  (#8424)

* Mark several Windows-specific functions as NYI

* Use FEATURE_PAL instead of PLATFORM_UNIX

* Revert the change in threads.h

7 years agoAdd UnhandledExceptionHandlerUnix Stub (#8425)
Jonghyun Park [Tue, 6 Dec 2016 00:37:41 +0000 (09:37 +0900)]
Add UnhandledExceptionHandlerUnix Stub (#8425)

FuncEvalHijack in dbghelpers.S uses UnhandledExceptionHandlerUnix as a
personality routine, but UnhandledExceptionHandlerUnix is not avaiable
for x86 (UnhandledExceptionHandlerUnix is available only when
WIN64EXCEPTIONS which is not defined for x86).

This commit adds UnhandledExceptionHandlerUnix to fix dangling
reference.

7 years agoMerge pull request #8461 from sivarv/shiftFix
Sivarv [Tue, 6 Dec 2016 00:28:37 +0000 (16:28 -0800)]
Merge pull request #8461 from sivarv/shiftFix

Compare opt against zero involving a shift oper.

7 years agoMerge pull request #8195 from DrewScoggins/LinuxPerfAuto
Drew Scoggins [Tue, 6 Dec 2016 00:12:42 +0000 (18:12 -0600)]
Merge pull request #8195 from DrewScoggins/LinuxPerfAuto

Add Linux perf support to Jenkins

7 years ago[x86/Linux] Enclose ArrayOpStub Exceptions with FEATURE_ARRAYSTUB_AS_IL (#8445)
Jonghyun Park [Mon, 5 Dec 2016 23:58:20 +0000 (08:58 +0900)]
[x86/Linux] Enclose ArrayOpStub Exceptions with FEATURE_ARRAYSTUB_AS_IL (#8445)

* Enclose ArrayOpStub Exceptions with FEATURE_ARRAYSTUB_AS_IL

* Fix unmatched ifdef

* Fix unmatched ifdef

7 years ago[x86/Linux] Fix no known conversion from 'void ()' to 'void *' (#8450)
SaeHie Park [Mon, 5 Dec 2016 23:54:51 +0000 (08:54 +0900)]
[x86/Linux] Fix no known conversion from 'void ()' to 'void *' (#8450)

Fix compile error for x86/Linux
- this will fix "no known conversion from 'void ()' to 'void *'" for "CallRtlUnwindSafe"
- for compiler clang 3.8

7 years ago[x86/Linux] add a stub for THROW_CONTROL_FOR_THREAD_FUNCTION (#8455)
Jonghyun Park [Mon, 5 Dec 2016 23:54:41 +0000 (08:54 +0900)]
[x86/Linux] add a stub for THROW_CONTROL_FOR_THREAD_FUNCTION (#8455)

THROW_CONTROL_FOR_THREAD_FUNCTION is defined as ThrowControlForThread
for x86/Linux, but unixstubs implements RedirectForThrowControl (which
corresponds to x64/Linux).

This commit renames RedirectForThrowControl as ThrowControlForThread to
fix dangling ThrowControlForThread reference in x86/Linux.

7 years agox86: Deactivate P/Invoke frames after a native call.
Pat Gavlin [Mon, 5 Dec 2016 23:50:13 +0000 (15:50 -0800)]
x86: Deactivate P/Invoke frames after a native call.

Although this does not appear to be strictly necessary, this matches
JIT32's behavior. With this change, the stack walker will ignore the
P/Invoke frame even while it is still present on its thread's frame
list.

Fixes VSO 297109.

7 years agoAllow remorph of SIMD assignment
Carol Eidt [Mon, 5 Dec 2016 23:07:35 +0000 (15:07 -0800)]
Allow remorph of SIMD assignment

This fixes an assert exposed by JitStress=1.

7 years agoCompare opt against zero involving a shift oper.
sivarv [Mon, 5 Dec 2016 19:59:57 +0000 (11:59 -0800)]
Compare opt against zero involving a shift oper.

7 years agoCopy CoreFX environment variable code (#8405)
Jeremy Kuhne [Mon, 5 Dec 2016 22:42:51 +0000 (14:42 -0800)]
Copy CoreFX environment variable code (#8405)

Tweak the core code to match up with what we had done in CoreFX and expose
so that we can have a single source of environment truth. This is
particularly important for Unix as we use a local copy of the state.

7 years agoMerge pull request #8109 from BruceForstall/FixSimd12NYI
Bruce Forstall [Mon, 5 Dec 2016 22:33:27 +0000 (14:33 -0800)]
Merge pull request #8109 from BruceForstall/FixSimd12NYI

RyuJIT/x86: Implement TYP_SIMD12 support

7 years agoAdd Linux perf support to Jenkins
Drew Scoggins [Fri, 11 Nov 2016 17:29:07 +0000 (09:29 -0800)]
Add Linux perf support to Jenkins

This change adds perf support for CoreCLR on Ubuntu 14.04 to Jenkins.
This is mostly work extending what Smile had already done.  The main
changes were to build CoreCLR rather then grab it from CI, and work to
get the upload portion finished.

7 years agoIncorporate changes from Jan's #8437, plus review feedback.
Andy Ayers [Mon, 5 Dec 2016 20:24:56 +0000 (12:24 -0800)]
Incorporate changes from Jan's #8437, plus review feedback.

Still honoring windows exception interop restrictions on all platforms
and runtimes. Will revisit when addressing #8459.

7 years agoJIT: enable inline pinvoke in more cases
Andy Ayers [Mon, 21 Nov 2016 23:44:21 +0000 (15:44 -0800)]
JIT: enable inline pinvoke in more cases

An inline pinvoke is a pinvoke where the managed/native transition
overhead is reduced by inlining parts of the transition bookkeeping
around the call site. A normal pinvoke does this bookkeeping in
a stub method that interposes between the managed caller and the
native callee.

Previously the jit would not allow pinvoke calls that came from inlines
to be optimized via inline pinvoke. This sometimes caused performance
surprises for users who wrap DLL imports with managed methods. See for
instance #2373.

This change lifts this limitation. Pinvokes from inlined method bodies
are now given the same treatment as pinvokes in the root method. The
legality check for inline pinvokes has been streamlined slightly to
remove a redundant check. Inline pinvokes introduced by inlining are
handled by accumulating the unmanaged method count with the value from
inlinees, and deferring insertion of the special basic blocks until after
inlining, so that if the only inline pinvokes come from inline instances
they are still properly processed.

Inline pinvokes are still disallowed in try and handler regions
(catches, filters, and finallies).

X87 liveness tracking was updated to handle the implicit inline frame
var references. This was a pre-existing issue that now can show up more
frequently. Added a test case that fails with the stock legacy jit
(and also with the new enhancements to pinvoke). Now both the original
failing case and this case pass.

Inline pinvokes are also now suppressed in rarely executed blocks,
for instance blocks leading up to throws or similar.

The inliner is now also changed to preferentially report inline
reasons as forced instead of always when both are applicable.

This change adds a new test case that shows the variety of
situations that can occur with pinvoke, inlining, and EH.

7 years agoMerge pull request #8306 from jamesqo/better-bulk-add
Ian Hays [Mon, 5 Dec 2016 20:57:09 +0000 (12:57 -0800)]
Merge pull request #8306 from jamesqo/better-bulk-add

Better bulk adds for List.

7 years ago[x86/Linux] Re-enable FrameHandlerExRecord for x86/Linux (#8409)
Jonghyun Park [Mon, 5 Dec 2016 20:41:00 +0000 (05:41 +0900)]
[x86/Linux] Re-enable FrameHandlerExRecord for x86/Linux (#8409)

* Re-enable FrameHandlerExRecord for x86/Linux

* Use _TARGET_X86_ instead of WIN64EXCEPTIONS

7 years ago[x86/Linux] Fix dangling ClrCaptureContext (#8453)
Jonghyun Park [Mon, 5 Dec 2016 20:29:56 +0000 (05:29 +0900)]
[x86/Linux] Fix dangling ClrCaptureContext (#8453)

7 years agoFix dangling StubLinkerCPU::EmitDelegateInvoke in x86/Linux (#8444)
Jonghyun Park [Mon, 5 Dec 2016 20:20:53 +0000 (05:20 +0900)]
Fix dangling StubLinkerCPU::EmitDelegateInvoke in x86/Linux (#8444)

Several methods in StublicLinkerCPU (including EmitDelegateInvoke) are
available only when FEATURE_STUBS_AS_IL is defined.

This commit encloses their declaration with appropriate macro
(FEATURE_STUBS_AS_IL), and fix related build erros.

7 years ago[x86/Linux] Enclose stub-linking methods with FEATURE_STUBS_AS_IL (#8432)
Jonghyun Park [Mon, 5 Dec 2016 20:08:33 +0000 (05:08 +0900)]
[x86/Linux] Enclose stub-linking methods with FEATURE_STUBS_AS_IL (#8432)

7 years ago[x86/Linux] Fix dangling CLR_ImpersonateLoggedOnUser reference (#8435)
Jonghyun Park [Mon, 5 Dec 2016 20:06:49 +0000 (05:06 +0900)]
[x86/Linux] Fix dangling CLR_ImpersonateLoggedOnUser reference (#8435)

src/vm/securityprincipal.cpp is not included in x86/Linux build, and
thus all the reference to the functions in it will be dangling. (i.e.
COMPrincipal::CLR_ImpersonateLoggedOnUser).

This commit hides COMPrincipal for non-Windows platforms, and marks
COMPlusThrowCallbackHelper as NYI.

7 years agoFix runtest.sh: delete ni file and lock correctly (#8081)
Hyeongseok Oh [Mon, 5 Dec 2016 18:55:40 +0000 (03:55 +0900)]
Fix runtest.sh: delete ni file and lock correctly (#8081)

7 years ago[x86/Linux] Mark LeaveCatch as NYI (#8384)
Jonghyun Park [Mon, 5 Dec 2016 12:20:32 +0000 (21:20 +0900)]
[x86/Linux] Mark LeaveCatch as NYI (#8384)

* Disable LeaveCatch for non-Windows platforms

* Mark LeaveCatch as NYI

* Use #ifndef as before

7 years ago[x86/Linux] Fix all paths through this function will call itself (#8451)
SaeHie Park [Mon, 5 Dec 2016 08:04:41 +0000 (17:04 +0900)]
[x86/Linux] Fix all paths through this function will call itself (#8451)

Fix compile error for x86/Linux
- disable "infinite-recursion" for "recursiveFtn" function
- only for clang

7 years ago[x86/Linux] Use Portable LMul JIT Helper (#8449)
Jonghyun Park [Mon, 5 Dec 2016 08:02:25 +0000 (17:02 +0900)]
[x86/Linux] Use Portable LMul JIT Helper (#8449)

7 years ago[x86/Linux] Fix indirection of non-volatile null pointer will be deleted (#8452)
SaeHie Park [Mon, 5 Dec 2016 07:45:38 +0000 (16:45 +0900)]
[x86/Linux] Fix indirection of non-volatile null pointer will be deleted (#8452)

Fix compile error for x86/Linux
- fix error "indirection of non-volatile null pointer will be deleted, not trap [-Werror,-Wnull-dereference]"
- using clang 3.8

7 years agoUse Portable Floating-point Arithmetic Helpers (#8447)
Jonghyun Park [Mon, 5 Dec 2016 07:37:17 +0000 (16:37 +0900)]
Use Portable Floating-point Arithmetic Helpers (#8447)

This commit enables portable floating-point arithmetic helpers for
x86/Linux build.

7 years ago[x86/Linux] Fix dangling DoubleToNumber and NumberToDouble (#8446)
Jonghyun Park [Mon, 5 Dec 2016 07:35:52 +0000 (16:35 +0900)]
[x86/Linux] Fix dangling DoubleToNumber and NumberToDouble (#8446)

This commit enables portable DoubleToNumber and NumberToDouble for
x86/Linux.

7 years agoFix several misspellings of exception and "a exception". (#8442)
Jon Hanna [Mon, 5 Dec 2016 07:22:10 +0000 (07:22 +0000)]
Fix several misspellings of exception and "a exception". (#8442)

7 years ago[x86/Linux] Revert UMThkCallFrame-related changes (#8434)
Jonghyun Park [Mon, 5 Dec 2016 07:19:41 +0000 (16:19 +0900)]
[x86/Linux] Revert UMThkCallFrame-related changes (#8434)

* [x86/Linux] Revert UMThkCallFrame-related code

* [x86/Linux] Fix dangling 'TheUMEntryPrestub' reference

This commit re-enables GenerateUMThunkPrestub and its related code in
order to remove TheUMEntryPrestub reference.

* [x86/Linux] Re-enable several methods in StubLinkerCPU

This commit re-enables the following methods for x86/Linux:
 - StubLinkerCPU::EmitSetup
 - StubLinkerCPU::EmitComMethodStubProlog
 - StubLinkerCPU::EmitComMethodStubEpilog

In addtion, EmitComMethodStubEpilog is marked as NYI.

7 years ago[x86/Linux] Fix unused function warning (#8429)
Jonghyun Park [Mon, 5 Dec 2016 07:15:41 +0000 (16:15 +0900)]
[x86/Linux] Fix unused function warning (#8429)

* Delete the unused code

7 years agoEnsure MSBuild properties get persisted to child MSBuild tasks, fixes a race conditio...
Sean Gillespie [Mon, 5 Dec 2016 04:02:21 +0000 (20:02 -0800)]
Ensure MSBuild properties get persisted to child MSBuild tasks, fixes a race condition in the build (#8404)

7 years agoRyuJIT/x86: Implement TYP_SIMD12 support
Bruce Forstall [Mon, 14 Nov 2016 03:35:32 +0000 (19:35 -0800)]
RyuJIT/x86: Implement TYP_SIMD12 support

There is no native load/store instruction for Vector3/TYP_SIMD12,
so we need to break this type down into two loads or two stores,
with an additional instruction to put the values together in the
xmm target register. AMD64 SIMD support already implements most of
this. For RyuJIT/x86, we need to implement stack argument support
(both incoming and outgoing), which is different from the AMD64 ABI.

In addition, this change implements accurate alignment-sensitive
codegen for all SIMD types. For RyuJIT/x86, the stack is only 4
byte aligned (unless we have double alignment), so SIMD locals are
not known to be aligned (TYP_SIMD8 could be with double alignment).
For AMD64, we were unnecessarily pessimizing alignment information,
and were always generating unaligned moves when on AVX2 hardware.
Now, all SIMD types are given their preferred alignment in
getSIMDTypeAlignment() and alignment determination in
isSIMDTypeLocalAligned() takes into account stack alignment (it
still needs support for x86 dynamic alignment). X86 still needs to
consider dynamic stack alignment for SIMD locals.

Fixes #7863

7 years ago[x86/Linux] fix several parentheses compile warnings (#8428)
Jonghyun Park [Fri, 2 Dec 2016 11:14:24 +0000 (20:14 +0900)]
[x86/Linux] fix several parentheses compile warnings (#8428)

7 years agoIntroduce CORINFO_EH_CLAUSE_SAMETRY flag for CoreRT ABI (#8422)
Jan Kotas [Fri, 2 Dec 2016 11:06:55 +0000 (03:06 -0800)]
Introduce CORINFO_EH_CLAUSE_SAMETRY flag for CoreRT ABI (#8422)

CORINFO_EH_CLAUSE_SAMEBLOCK flag is returned on mutually protecting EH clauses for CoreRT ABI. It is set on EH clauses that cover same try block as the previous one. The runtime cannot reliably infer this information from native code offsets without full description of duplicate clauses because of different try blocks can have same offsets. Alternative solution to this problem would be inserting extra nops to ensure that different try blocks have different offsets.

7 years agoMerge pull request #8419 from jkotas/master-UpdateDependencies
Jan Kotas [Fri, 2 Dec 2016 04:54:11 +0000 (20:54 -0800)]
Merge pull request #8419 from jkotas/master-UpdateDependencies

Update CoreClr, CoreFx to beta-24801-03, beta-24721-02, respectively

7 years agoDisable test against #8418 to unblock corefx updates
Jan Kotas [Thu, 1 Dec 2016 21:34:08 +0000 (13:34 -0800)]
Disable test against #8418 to unblock corefx updates

7 years ago[x86/Linux] Use portable JIT helpers (#8392)
Jonghyun Park [Fri, 2 Dec 2016 02:48:52 +0000 (11:48 +0900)]
[x86/Linux] Use portable JIT helpers (#8392)

7 years ago[x86/Linux] Disable Watson-related code for non-Windows platforms (#8410)
Jonghyun Park [Fri, 2 Dec 2016 01:01:29 +0000 (10:01 +0900)]
[x86/Linux] Disable Watson-related code for non-Windows platforms (#8410)