platform/upstream/coreclr.git
7 years agoFirst step to generate nuget package for ARM32/Linux
Hyeongseok Oh [Thu, 1 Dec 2016 06:19:38 +0000 (15:19 +0900)]
First step to generate nuget package for ARM32/Linux

7 years agoMerge pull request #8209 from stephentoub/arraypool_perf
Jan Kotas [Thu, 1 Dec 2016 01:16:45 +0000 (17:16 -0800)]
Merge pull request #8209 from stephentoub/arraypool_perf

Improve ArrayPool implementation and performance

7 years agoMerge pull request #8382 from BruceForstall/FixShift
Bruce Forstall [Thu, 1 Dec 2016 00:47:24 +0000 (16:47 -0800)]
Merge pull request #8382 from BruceForstall/FixShift

Fix x86 encoder to use 64-bit type to accumulate opcode/prefix bits

7 years agoExclude jithelp.asm for x86/Linux (#8393)
Jonghyun Park [Wed, 30 Nov 2016 23:39:55 +0000 (08:39 +0900)]
Exclude jithelp.asm for x86/Linux (#8393)

7 years agoFix x86 encoder to use 64-bit type to accumulate opcode/prefix bits
Bruce Forstall [Wed, 30 Nov 2016 02:57:18 +0000 (18:57 -0800)]
Fix x86 encoder to use 64-bit type to accumulate opcode/prefix bits

The encoder was using size_t, a 32-bit type on x86, to accumulate opcode
and prefix bits to emit. AVX support uses 3 bytes for prefixes that are
higher than the 32-bit type can handle. So, change all code byte related types
from size_t to a new code_t, defined as "unsigned __int64" on RyuJIT x86
(there is precedence for this type on the ARM architectures).

Fixes #8331

7 years agoMerge pull request #8395 from BruceForstall/FixNYI
Bruce Forstall [Wed, 30 Nov 2016 21:31:42 +0000 (13:31 -0800)]
Merge pull request #8395 from BruceForstall/FixNYI

Change NYI to be a noway_assert if ALT_JIT is not defined

7 years agoDisable PrintSEHChain for non-Windows platforms (#8379)
Jonghyun Park [Wed, 30 Nov 2016 20:23:58 +0000 (05:23 +0900)]
Disable PrintSEHChain for non-Windows platforms (#8379)

PrintSEHChain uses 'EXCEPTION_REGISTRATION_RECORD' which is not
available for non-Windows platforms.

This commit disables PrintSEHChain for non-Windows platforms to fix
build error in x86/Linux.

7 years agoDeclare CtorFtnType only when it is used (#8378)
Jonghyun Park [Wed, 30 Nov 2016 20:19:36 +0000 (05:19 +0900)]
Declare CtorFtnType only when it is used (#8378)

7 years agoDisable EHWatsonBucketTracker for non-window platforms (#8373)
Jonghyun Park [Wed, 30 Nov 2016 20:09:36 +0000 (05:09 +0900)]
Disable EHWatsonBucketTracker for non-window platforms (#8373)

7 years agoDisable Windows-specific code for x86/Linux (#8371)
Jonghyun Park [Wed, 30 Nov 2016 20:08:20 +0000 (05:08 +0900)]
Disable Windows-specific code for x86/Linux (#8371)

7 years agoFix mismatch between longfilepathwrappers.cpp and longfilepathwrappers.h (#8370)
Jonghyun Park [Wed, 30 Nov 2016 20:07:16 +0000 (05:07 +0900)]
Fix mismatch between longfilepathwrappers.cpp and longfilepathwrappers.h (#8370)

'longfilepathwrappers.h' declares several functions without WINAPI
attribute, but 'longfilepathwrappers.cpp' implements them with WINAPI
attributes.

This commit makes the declarations in 'longfilepathwrappers.h'
consistent with the implementations in 'longfilepathwrappers.cpp'.

7 years agoFix mismatch between sortversioning.h and sortversioning.cpp (#8366)
Jonghyun Park [Wed, 30 Nov 2016 20:06:13 +0000 (05:06 +0900)]
Fix mismatch between sortversioning.h and sortversioning.cpp (#8366)

7 years agoFix to avoid stalling the process when ETW is doing a rundown (#8357)
Vance Morrison [Wed, 30 Nov 2016 19:45:17 +0000 (11:45 -0800)]
Fix to avoid stalling the process when ETW is doing a rundown (#8357)

This only matters when there are MANY JIT compiled methods, but Bing operates
in exactly this mode, and thus it stalls for several seconds while rundown completes.

This fix does not fix the problem completely, but it makes it MUCH less likely, and is
a trivial, safe fix. The problem is that as part of a GC, we do cleanup of any removed
JIT code. To do this we take a JIT code manager lock, but this is also a lock that the
JIT code iterator takes and is used during ETW rundown. Thus rundown blocks GCs.

Almost all the time, we DON'T have JIT code manager cleanup to do, so we just avoid
taking the lock in that case, and this makes the stall MUCH less likely.

7 years ago[x86/Linux] Fix mismatch over LPOVERLAPPED_COMPLETION_ROUTINE (#8364)
Jonghyun Park [Wed, 30 Nov 2016 19:42:31 +0000 (04:42 +0900)]
[x86/Linux] Fix mismatch over LPOVERLAPPED_COMPLETION_ROUTINE (#8364)

* Fix the mismatch over LPOVERLAPPED_COMPLETION_ROUTINE

Those functions are compared with Function variable of
LPOVERLAPPED_COMPLETION_ROUTINE type, but has inconsistent type,
 - WaitIOCompletionCallback,
 - CallbackForInitiateDrainageOfCompletionPortQueue
 - CallbackForContinueDrainageOfCompletionPortQueue
This inconsistency results in compile error for x86/Linux build.

This commit fixes such inconsistency.

* Revises 'CallbackForContinueDrainageOfCompletionPortQueue'

7 years agoEmits compile error on portability issue only when PORTABILITY_CHECK is specified...
Jonghyun Park [Wed, 30 Nov 2016 19:41:10 +0000 (04:41 +0900)]
Emits compile error on portability issue only when PORTABILITY_CHECK is specified (#8340)

7 years ago[x86/Linux] Disable FEATURE_AVX_SUPPORT (#8335)
Jonghyun Park [Wed, 30 Nov 2016 19:40:17 +0000 (04:40 +0900)]
[x86/Linux] Disable FEATURE_AVX_SUPPORT (#8335)

* Disable FEATURE_AVX_SUPPORT for x86/Linux

This commit disables FEATURE_AVX_SUPPORT for x86/Linux to fix #8331.

* Disable FEATURE_AVX_SUPPORT only for x86/Linux

* Disable FEATURE_SIMD for x86/Linux

* Simplify nested if in CMakeList.txt

7 years ago[x86/Linux] Add missing files in x86/Linux PAL (#8318)
Jonghyun Park [Wed, 30 Nov 2016 19:39:53 +0000 (04:39 +0900)]
[x86/Linux] Add missing files in x86/Linux PAL (#8318)

* (Partially) Enable x86/Linux PAL

* Fix personality routine address encoding

* Fix build warnings

7 years agoUses portable ROTATE_LEFT for x86/Linux (#8367)
Jonghyun Park [Wed, 30 Nov 2016 19:39:21 +0000 (04:39 +0900)]
Uses portable ROTATE_LEFT for x86/Linux (#8367)

7 years agoMerge pull request #8401 from svick/task-action-delegate
Stephen Toub [Wed, 30 Nov 2016 19:33:11 +0000 (14:33 -0500)]
Merge pull request #8401 from svick/task-action-delegate

Change the type of Task.m_action to Delegate

7 years agoFix mismatch between signature and implementation of ActivationFunctions (#8394)
Jonghyun Park [Wed, 30 Nov 2016 14:23:29 +0000 (23:23 +0900)]
Fix mismatch between signature and implementation of ActivationFunctions (#8394)

7 years ago[x86/Linux] Fix prototype for GCThreadStub (#8397)
SaeHie Park [Wed, 30 Nov 2016 14:21:04 +0000 (23:21 +0900)]
[x86/Linux] Fix prototype for GCThreadStub (#8397)

Fix compile error for x86/Linux
- fix "cannot initialize a parameter of type 'LPTHREAD_START_ROUTINE'"
- add __stdcall GCThreadStub as it's Windows/Linux common code

7 years agoAdding missing ctor - 'public Span(T[] array, int start)' (#8354)
Matt Warren [Wed, 30 Nov 2016 07:45:21 +0000 (07:45 +0000)]
Adding missing ctor - 'public Span(T[] array, int start)' (#8354)

7 years agoUpdates m_LastRedirectIP and m_SpinCount only for non-Unix platforms (#8386)
Jonghyun Park [Wed, 30 Nov 2016 07:44:11 +0000 (16:44 +0900)]
Updates m_LastRedirectIP and m_SpinCount only for non-Unix platforms (#8386)

Both variables are available only for non-Unix platforms.

7 years ago[x86/Linux] Fix extraneous parentheses (#8388)
SaeHie Park [Wed, 30 Nov 2016 07:42:25 +0000 (16:42 +0900)]
[x86/Linux] Fix extraneous parentheses (#8388)

Fix compile error for x86/Linux
- fix "equality comparison with extraneous parentheses" for LEGACY_BACKEND

7 years ago[x86/Linux] Fix error: '&&' within '||' (#8391)
SaeHie Park [Wed, 30 Nov 2016 07:41:44 +0000 (16:41 +0900)]
[x86/Linux] Fix error: '&&' within '||' (#8391)

Fix compile error for x86/Linux
- place parentheses around the '&&' expression to silence this

7 years agoChange NYI to be a noway_assert if ALT_JIT is not defined
Bruce Forstall [Wed, 30 Nov 2016 06:43:26 +0000 (22:43 -0800)]
Change NYI to be a noway_assert if ALT_JIT is not defined

We recently changed RyuJIT/x86 to be the default JIT. However, there
are still a few NYI that can happen, such as when enabling SIMD,
which is not enabled yet. However, there is no "fallback" JIT anymore.
So just treat all NYI as asserts.

7 years agoCapture YMM registers on OSX (#8365)
John Chen [Wed, 30 Nov 2016 03:50:09 +0000 (19:50 -0800)]
Capture YMM registers on OSX (#8365)

Also fixed checking of context flags on OSX (issue #8116)

7 years ago[x86/Linux] Add virtual dtor for ArrayStubCache class (#8339)
Jonghyun Park [Wed, 30 Nov 2016 03:08:19 +0000 (12:08 +0900)]
[x86/Linux] Add virtual dtor for ArrayStubCache class (#8339)

* Adds virtual dtor for ArrayStubCache class

* Remove unnecessary default destructor

7 years agoRemove one virtual call from StreamHelpers.ValidateCopyToArgs (#8361)
Andy Ayers [Wed, 30 Nov 2016 03:00:26 +0000 (19:00 -0800)]
Remove one virtual call from StreamHelpers.ValidateCopyToArgs (#8361)

Check CanWrite on the destination stream first.

In the common case CanWrite is true, and CanRead is only needed to
determine which kind of exception to throw when CanWrite is false.

7 years agoFix inconsistency between the signatures of GetAppDomain (#8368)
Jonghyun Park [Wed, 30 Nov 2016 02:57:27 +0000 (11:57 +0900)]
Fix inconsistency between the signatures of GetAppDomain (#8368)

7 years ago[x86/Linux] Disable WIN64EXECPTION and fix related changes (#8375)
SaeHie Park [Wed, 30 Nov 2016 02:55:33 +0000 (11:55 +0900)]
[x86/Linux] Disable WIN64EXECPTION and fix related changes (#8375)

Fix compile error for x86/Linux
- undo some changes to disable WIN64EXCEPTION so the x86/Linux builds

7 years agoMerge pull request #8315 from mikedn/disasm
Pat Gavlin [Wed, 30 Nov 2016 00:24:22 +0000 (16:24 -0800)]
Merge pull request #8315 from mikedn/disasm

Fix various disassembly issues

7 years agoMerge pull request #8355 from adiaaida/formattingFix
Michelle McDaniel [Tue, 29 Nov 2016 21:49:49 +0000 (13:49 -0800)]
Merge pull request #8355 from adiaaida/formattingFix

Fix formatting in files

7 years agoMerge pull request #8291 from sivarv/sse34
Sivarv [Tue, 29 Nov 2016 20:12:50 +0000 (12:12 -0800)]
Merge pull request #8291 from sivarv/sse34

Enable use of SSE3_4 instruction set for SIMD codegen.

7 years agoFix formatting in files
Michelle McDaniel [Tue, 29 Nov 2016 19:02:20 +0000 (11:02 -0800)]
Fix formatting in files

In morph and flowgraph, we had an instance where an opening/closing
brace was inside a #if when it should not have been, which broke our
formatting on these files. This change fixes that error and reformats
the files.

7 years agoMerge pull request #8330 from BruceForstall/FixSSE2Assert
Bruce Forstall [Tue, 29 Nov 2016 18:39:11 +0000 (10:39 -0800)]
Merge pull request #8330 from BruceForstall/FixSSE2Assert

Force enable SSE2 on RyuJIT/x86 on desktop

7 years agoMerge pull request #8351 from dotnet-bot/from-tfs
Jan Kotas [Tue, 29 Nov 2016 18:09:54 +0000 (10:09 -0800)]
Merge pull request #8351 from dotnet-bot/from-tfs

Merge changes from TFS

7 years agoFix shared library dependencies verification on some platforms (#8349)
Jan Vorlicek [Tue, 29 Nov 2016 18:09:35 +0000 (19:09 +0100)]
Fix shared library dependencies verification on some platforms (#8349)

The existing way of verifying shared library dependencies, used for
System.Globalization.Native.so, doesn't work on platforms that don't
have ldd or where ldd doesn't support the `-r` option.
This change makes the check happen on non-Alpine Linux only for now.
It also refactors the way the check is performed. Instead of doing it
post build in the build.sh, it is now performed as a postbuild phase
of the System.Globalization.Native target and it is also generalized
so that we can easily add such verification to other build targets.
The new verify-so.sh script is also used in corefx.

7 years agoDisable CER feature as it is not used (#8218)
John Chen [Tue, 29 Nov 2016 17:10:40 +0000 (09:10 -0800)]
Disable CER feature as it is not used (#8218)

Use FEATURE_CER to scope CER code,
and disable CER feature in CoreCLR.

7 years agoUse invariant culture in test (#8327)
Petr Onderka [Tue, 29 Nov 2016 17:06:16 +0000 (18:06 +0100)]
Use invariant culture in test (#8327)

This makes sure the test passes on machines
where the decimal separator of the default culture is comma.

7 years agoFix AMD64 CTP build break
Bruce Forstall [Tue, 29 Nov 2016 16:56:19 +0000 (08:56 -0800)]
Fix AMD64 CTP build break

[tfs-changeset: 1639770]

7 years agoFix phantom TEXTREL in libcoreclr.so (#8347)
Jan Vorlicek [Tue, 29 Nov 2016 14:12:02 +0000 (15:12 +0100)]
Fix phantom TEXTREL in libcoreclr.so (#8347)

This change fixes the problem where scanelf tool reported that libcoreclr.s
contains TEXTRELs, however it was unable to find any.
It turns out there actually were TEXTRELs, but not in the program code or
program data, but rather in the DWARF tables. The NESTED_ENTRY macro for
ARM64 and AMD64 uses .cfi_personality with encoding 0, which means
absolute address. This is the source of the TEXTREL.
Changing the encoding to 0x1b - DW_EH_PE_pcrel | DW_EH_PE_sdata4 fixes the
problem - the scanelf tool no longer reports any TEXTRELs in libcoreclr.so.

7 years agoUses 'W' to fix build error (#8345)
Jonghyun Park [Tue, 29 Nov 2016 12:58:07 +0000 (21:58 +0900)]
Uses 'W' to fix build error (#8345)

7 years agoFix the mistmatch between gc_thread_stub and GCThreadFunction (#8336)
Jonghyun Park [Tue, 29 Nov 2016 11:24:51 +0000 (20:24 +0900)]
Fix the mistmatch between gc_thread_stub and GCThreadFunction (#8336)

7 years agoFix ignored attribute warning for x86/Linux build (#8334)
Jonghyun Park [Tue, 29 Nov 2016 11:14:22 +0000 (20:14 +0900)]
Fix ignored attribute warning for x86/Linux build (#8334)

7 years agoFix various disassembly issues
Mike Danes [Fri, 25 Nov 2016 08:00:58 +0000 (10:00 +0200)]
Fix various disassembly issues

- (null) being displayed instead of ymmword ptr
- lack of a space between some instructions and their first operand
- incorrect display of pmovmskb's first operand (was something like yrax)
- displaying ymm registers in cases where xmm registers were actually used
- displaying mm instead of xmm/ymm (e.g. cmpps mm1, mm2)

7 years agoForce enable SSE2 on RyuJIT/x86 on desktop
Bruce Forstall [Tue, 29 Nov 2016 02:19:07 +0000 (18:19 -0800)]
Force enable SSE2 on RyuJIT/x86 on desktop

SSE2 is required for RyuJIT/x86; there is no x87 code path.
The .NET Core VM sets the JIT flag enabling this, and we assert
it does. On desktop, however, especially under NGEN, it does not.
We ignore that, and generate SSE2 code anyway.

7 years agoDisable PSPSym and LocAllocSPvar for CoreRT (#8319)
Jan Kotas [Tue, 29 Nov 2016 02:00:57 +0000 (18:00 -0800)]
Disable PSPSym and LocAllocSPvar for CoreRT (#8319)

The establisher frame definition differs between CoreRT ABI and CoreCLR ABI. In CoreRT ABI created by @russellhadley and @smosier while back, the establisher frame is always the SP value at the point that control left the frame in which execution would resume after a catch handler completes. This mismatch leads to crashes when PSPSym is recomputed in funclets of methods with localloc.

Fixed by disabling PSPSym for CoreRT since it does not need it. Also disabled LocAllocSPvar while I was on it since it is not needed for CoreRT either.

Fixes https://github.com/dotnet/corert/issues/2255

7 years agoMerge pull request #8325 from pgavlin/gh8285
Pat Gavlin [Tue, 29 Nov 2016 00:58:04 +0000 (16:58 -0800)]
Merge pull request #8325 from pgavlin/gh8285

Do not rewrite `(t + cns_a) << cns_s)` during CSE.

7 years agoEnable using SSE3_4 instruction set for SIMD codegen.
sivarv [Thu, 24 Nov 2016 03:30:36 +0000 (19:30 -0800)]
Enable using SSE3_4 instruction set for SIMD codegen.

7 years ago[x86/Linux] Fix constructor missing in UnmanagedToManagedFrame (#8275)
SaeHie Park [Mon, 28 Nov 2016 23:10:14 +0000 (08:10 +0900)]
[x86/Linux] Fix constructor missing in UnmanagedToManagedFrame (#8275)

Fix compile error for x86/Linux
- full error string: constructor for 'UMThkCallFrame' must explicitly
  initialize the base class 'UnmanagedToManagedFrame' which does not
  have a default constructor
- wrap UMThkCallFrame with also !FEATURE_PAL

7 years ago[x86/Linux] Fix error variable 'td' is uninitialized (#8299)
SaeHie Park [Mon, 28 Nov 2016 22:36:39 +0000 (07:36 +0900)]
[x86/Linux] Fix error variable 'td' is uninitialized (#8299)

Fix compile error for x86/Linux
- make compiler happy with initialize variable 'td' with 0.0

7 years agoDo not rewrite `(t + cns_a) << cns_s)` during CSE.
Pat Gavlin [Mon, 28 Nov 2016 21:33:26 +0000 (13:33 -0800)]
Do not rewrite `(t + cns_a) << cns_s)` during CSE.

Morph normally rewrites trees of the form `(t + cns_a) << cns_s` to
`(t << cns_s + cns_a << cns_s)`. This transformation is not safe to run
during CSE, as it may invalidate CSE candidates.

Fixes #8285.

7 years agoMerge pull request #8314 from BruceForstall/RefactorEmit
Bruce Forstall [Mon, 28 Nov 2016 19:48:18 +0000 (11:48 -0800)]
Merge pull request #8314 from BruceForstall/RefactorEmit

Factor out common stack adjustment code

7 years agoChange the type of Task.m_action to Delegate
Petr Onderka [Mon, 28 Nov 2016 18:18:00 +0000 (19:18 +0100)]
Change the type of Task.m_action to Delegate

This makes the code more strongly typed and avoids some casts.

7 years agoFactor out common stack adjustment code
Bruce Forstall [Sun, 27 Nov 2016 04:40:13 +0000 (20:40 -0800)]
Factor out common stack adjustment code

7 years agoMake GetCurrentProcessorNumber an FCall
Stephen Toub [Fri, 25 Nov 2016 04:39:15 +0000 (23:39 -0500)]
Make GetCurrentProcessorNumber an FCall

7 years ago[x86/Linux] Fix compile error in zapcode (#8294)
SaeHie Park [Mon, 28 Nov 2016 14:03:29 +0000 (23:03 +0900)]
[x86/Linux] Fix compile error in zapcode (#8294)

Fix compile error for x86/Linux
- Remove ZapUnwindInfo WIN64EXCEPTIONS codes for x86/Linux
- fix "use of undeclared identifier 'NEED_TO_PORT_THIS_ONE'"
- fix "unknown type name 'UNWIND_INFO'"
- fix "use of undeclared identifier 'READYTORUN_HELPER_PersonalityRoutineFilterFunclet'"

7 years ago[x86/Linux] Fix 'stdcall' here was previously declared without (#8320)
SaeHie Park [Mon, 28 Nov 2016 14:02:25 +0000 (23:02 +0900)]
[x86/Linux] Fix 'stdcall' here was previously declared without (#8320)

Fix compile error for x86/Linux
- add __stdcall in header
- fix "function declared 'stdcall' here was previously declared without"

7 years ago[x86/Linux] Fix unknown type name 'PTR_RUNTIME_FUNCTION' (#8272)
SaeHie Park [Mon, 28 Nov 2016 11:38:36 +0000 (20:38 +0900)]
[x86/Linux] Fix unknown type name 'PTR_RUNTIME_FUNCTION' (#8272)

Fix compile error for x86/Linux
- wrap only RUNTIME_FUNCTION in corcompile.h with !FEATURE_PAL

7 years agoMerge pull request #8199 from Maoni0/local_gc
Maoni Stephens [Mon, 28 Nov 2016 04:57:21 +0000 (20:57 -0800)]
Merge pull request #8199 from Maoni0/local_gc

move profiling and profiling/ETW shared diagnostics code out of gc.cpp, gcee.cpp and objecthandle.cpp

7 years agoMerge pull request #8312 from BruceForstall/FixLegacyBuild
Bruce Forstall [Sun, 27 Nov 2016 04:42:05 +0000 (20:42 -0800)]
Merge pull request #8312 from BruceForstall/FixLegacyBuild

Set FEATURE_READYTORUN_COMPILER for legacyjit and compatjit

7 years agoFix building CoreCLR with Clang 3.9 (#8311)
Jan Vorlicek [Sun, 27 Nov 2016 04:34:03 +0000 (05:34 +0100)]
Fix building CoreCLR with Clang 3.9 (#8311)

There were few constructs that Clang 3.9 didn't like due to its strict
C++ standard conformance rules.

7 years agoExclude superpmi test from legacyjit and compatjit runs
Bruce Forstall [Sat, 26 Nov 2016 02:34:05 +0000 (18:34 -0800)]
Exclude superpmi test from legacyjit and compatjit runs

The superpmi test depends on setting COMPlus_AltJit to do the
collection, which is incompatible with setting the variables
required to do these test runs.

7 years agoSet FEATURE_READYTORUN_COMPILER for legacyjit and compatjit
Bruce Forstall [Fri, 25 Nov 2016 21:38:50 +0000 (13:38 -0800)]
Set FEATURE_READYTORUN_COMPILER for legacyjit and compatjit

7 years agoFix subtle bug in new string.Join implementation. (#8310)
James Ko [Fri, 25 Nov 2016 19:28:15 +0000 (14:28 -0500)]
Fix subtle bug in new string.Join implementation. (#8310)

7 years agoConfigures tests even when configureonly is provided (#8308)
Jonghyun Park [Fri, 25 Nov 2016 15:07:39 +0000 (00:07 +0900)]
Configures tests even when configureonly is provided (#8308)

The current script does not configure tests when configureonly is
provided.

This commit revises 'build.sh' to configure tests even when configureonly
is provided.

This commit makes it possible to build tests (including related components)
via configuring the whole projects and running make inside that directory.

7 years ago[x86/Linux] Renames i386 as amd64 in arch (PAL) (#8307)
Jonghyun Park [Fri, 25 Nov 2016 15:07:16 +0000 (00:07 +0900)]
[x86/Linux] Renames i386 as amd64 in arch (PAL) (#8307)

The files in src/pal/src/arch/i386 are actually for amd64 (not x86).
This commit renames the directory name as the first step towards
enabling PAL in x86/Linux.

7 years agoEnable field EndAddress only for AMD64 in PAL of RUNTIME_FUNCTION (#8305)
SaeHie Park [Fri, 25 Nov 2016 09:34:25 +0000 (18:34 +0900)]
Enable field EndAddress only for AMD64 in PAL of RUNTIME_FUNCTION (#8305)

7 years agoCache result of GetCurrentProcessorNumber
Stephen Toub [Wed, 23 Nov 2016 01:48:53 +0000 (20:48 -0500)]
Cache result of GetCurrentProcessorNumber

7 years agoImprove ArrayPool performance
Stephen Toub [Tue, 22 Nov 2016 18:44:44 +0000 (13:44 -0500)]
Improve ArrayPool performance

- Renames DefaultArrayPool to ConfigurableArrayPool, which remains unchanged.
- Adds a new TlsOverPerCoreLockedStacksArrayPool, which is used as the shared pool for byte[] and char[].  The pool is tiered, with a small per-thread TLS cache, followed by a global cache.  The global cache is split into effectively per-core buckets, although threads are able to check other buckets if their assigned bucket is empty/full for rents/returns, respectively.

7 years agoSupports to build PAL tests under x86/Linux (#8292)
Jonghyun Park [Thu, 24 Nov 2016 10:07:42 +0000 (19:07 +0900)]
Supports to build PAL tests under x86/Linux (#8292)

7 years ago[x86/Linux] Fix unsupported architecture in seh-unwind.cpp (#8262)
SaeHie Park [Thu, 24 Nov 2016 09:43:00 +0000 (18:43 +0900)]
[x86/Linux] Fix unsupported architecture in seh-unwind.cpp (#8262)

Fix compile error for x86/Linux
- add ASSIGN_UNWIND_REGS in seh-unwind.cpp for x86
- add CONTEXT_EXCEPTION_ACTIVE in pal.h for x86
- add CONTEXT_XSTATE in pal.h for x86

7 years agoMerge pull request #8295 from RussKeldorph/nopr
Russ Keldorph [Thu, 24 Nov 2016 05:18:49 +0000 (21:18 -0800)]
Merge pull request #8295 from RussKeldorph/nopr

Remove non-RyuJIT default x86 PR triggers

7 years agoRemove non-RyuJIT default PR triggers
Russ Keldorph [Thu, 24 Nov 2016 04:54:36 +0000 (20:54 -0800)]
Remove non-RyuJIT default PR triggers

These jobs are failing and shouldn't be triggered on PRs

7 years agoMerge pull request #8260 from BruceForstall/SwitchX86ToRyuJit
Bruce Forstall [Thu, 24 Nov 2016 00:24:32 +0000 (16:24 -0800)]
Merge pull request #8260 from BruceForstall/SwitchX86ToRyuJit

Make RyuJIT/x86 the default x86 JIT

7 years agoRemoves non-existent target files from override.targets (#8264)
Jonghyun Park [Wed, 23 Nov 2016 23:48:06 +0000 (08:48 +0900)]
Removes non-existent target files from override.targets (#8264)

This commit revises override.targets not to import ``mono.targets`` and
``roslyn.xplat.targets`` which do not exist in Tools/

7 years agoAdd String.Join overloads accepting a char separator (#7942)
James Ko [Wed, 23 Nov 2016 23:25:28 +0000 (18:25 -0500)]
Add String.Join overloads accepting a char separator (#7942)

* Add String.Join overloads that accept char separators

7 years agoMake RyuJIT/x86 the default x86 JIT
Bruce Forstall [Wed, 23 Nov 2016 00:42:57 +0000 (16:42 -0800)]
Make RyuJIT/x86 the default x86 JIT

JIT32 becomes compatjit.dll and RyuJIT LEGACY_BACKEND becomes legacyjit.dll
(and is an altjit).

If JIT32 is not being built, then RyuJIT LEGACY_BACKEND becomes compatjit.dll
and is a normal jit (not an altjit).

Both clrjit.dll and compatjit.dll are added to the JIT NuGet package.

7 years agoMerge pull request #8284 from pgavlin/gh8258
Pat Gavlin [Wed, 23 Nov 2016 22:16:06 +0000 (14:16 -0800)]
Merge pull request #8284 from pgavlin/gh8258

Increment lclVar refCounts in fgMorphBlockStmt.

7 years agoMerge pull request #8281 from sbomer/dasm_automation
Sven Boemer [Wed, 23 Nov 2016 22:04:05 +0000 (14:04 -0800)]
Merge pull request #8281 from sbomer/dasm_automation

Fix archiving for jitdiff windows build only jobs

7 years agoMerge pull request #7847 from CarolEidt/Fix278375
Carol Eidt [Wed, 23 Nov 2016 21:52:22 +0000 (13:52 -0800)]
Merge pull request #7847 from CarolEidt/Fix278375

x86: not all fields of promoted struct need regs

7 years agoFormat code.
Pat Gavlin [Wed, 23 Nov 2016 21:51:50 +0000 (13:51 -0800)]
Format code.

7 years agoMerge pull request #8259 from pgavlin/ByrefGcrefKillSet
Pat Gavlin [Wed, 23 Nov 2016 21:39:10 +0000 (13:39 -0800)]
Merge pull request #8259 from pgavlin/ByrefGcrefKillSet

Fix the byref/gcref kill set for ASSIGN_BYREF.

7 years agoFix the no-GC kill set for ASSIGN_BYREF on x86.
Pat Gavlin [Wed, 23 Nov 2016 20:02:55 +0000 (12:02 -0800)]
Fix the no-GC kill set for ASSIGN_BYREF on x86.

This helper only kills ECX.

7 years agoIncrement lclVar refCounts in fgMorphBlockStmt.
Pat Gavlin [Wed, 23 Nov 2016 19:41:04 +0000 (11:41 -0800)]
Increment lclVar refCounts in fgMorphBlockStmt.

`fgMorphTree` may introduce additional lclVar references. Call
`lvaRecursiveIncRefCounts` in `fgMorphBlockStmt` to ensure that ref
counts are conservatively correct.

Fixes #8258.

7 years agoMerge pull request #8137 from jamesqo/array.fill
Dan Moseley [Wed, 23 Nov 2016 18:55:11 +0000 (10:55 -0800)]
Merge pull request #8137 from jamesqo/array.fill

Add Array.Fill apis

7 years agoMerge pull request #8229 from mikedn/sse-eq
Sivarv [Wed, 23 Nov 2016 18:36:46 +0000 (10:36 -0800)]
Merge pull request #8229 from mikedn/sse-eq

Change vector equality to use pmovmskb

7 years agoMerge pull request #8282 from ianhays/api_lockfix
Ian Hays [Wed, 23 Nov 2016 17:46:22 +0000 (09:46 -0800)]
Merge pull request #8282 from ianhays/api_lockfix

Fix Typo in Unix Lock/Unlock PAL

7 years agoFix Typo in Unix Lock/Unlock PAL
Ian Hays [Wed, 23 Nov 2016 17:35:08 +0000 (09:35 -0800)]
Fix Typo in Unix Lock/Unlock PAL

7 years agoAccount for a reload of umod op2
Carol Eidt [Wed, 23 Nov 2016 17:24:41 +0000 (09:24 -0800)]
Account for a reload of umod op2

7 years agoFix archiving for jitdiff windows build only jobs
Sven Boemer [Wed, 23 Nov 2016 17:14:03 +0000 (09:14 -0800)]
Fix archiving for jitdiff windows build only jobs

The dasm archiving was enabled for all jitdiff scenarios, including the
build set up for the ubuntu/osx flow jobs. The dasm artifacts don't
exist in build-only scenarios, and this was preventing archiving of
the build.

7 years ago[x86/linux] Fix redefined DISPATCHER_CONTEXT compile error (#8246)
SaeHie Park [Wed, 23 Nov 2016 10:18:43 +0000 (19:18 +0900)]
[x86/linux] Fix redefined DISPATCHER_CONTEXT compile error (#8246)

WIP, fix compile error for x86/Linux
- add directive WIN32 to current DISPATCHER_CONTEXT in clrnt.h
- add DISPATCHER_CONTEXT for x86 in palrt.h

7 years ago[GDBJIT] Fix thunk symbol generation for ARM (#8205)
Andrey Kvochko [Wed, 23 Nov 2016 10:17:05 +0000 (13:17 +0300)]
[GDBJIT] Fix thunk symbol generation for ARM (#8205)

* Fix thunk symbol generation for ARM

* Add PINSTRToPCODE macro to raise the THUMB bit on ARM

7 years ago[x86/Linux] Fix compile error with exception handling (#8269)
SaeHie Park [Wed, 23 Nov 2016 10:14:59 +0000 (19:14 +0900)]
[x86/Linux] Fix compile error with exception handling (#8269)

Fix compile error for x86/Linux
- fix unknown type name 'EHWatsonBucketTracker'
- fix field has incomplete type 'EXCEPTION_REGISTRATION_RECORD'
- fix for FaultingExceptionFrame class

7 years ago[x86/Linux] Fix unknown type name 'ExInfo' (#8274)
SaeHie Park [Wed, 23 Nov 2016 10:12:18 +0000 (19:12 +0900)]
[x86/Linux] Fix unknown type name 'ExInfo' (#8274)

Fix compile error for x86/Linux
- need to undefine ELIMINATE_FEF by adding !defined(FEATURE_PAL)

7 years ago[x86/Linux] Fix comparison of two values with different enumeration types (#8273)
SaeHie Park [Wed, 23 Nov 2016 10:10:24 +0000 (19:10 +0900)]
[x86/Linux] Fix comparison of two values with different enumeration types (#8273)

Fix compile error for x86/Linux
- convert to int type for 'ReturnKind' and 'infoHdrAdjustConstants'

7 years ago[x86/Linux] Fix SEH '__try' is not supported on this target (#8271)
SaeHie Park [Wed, 23 Nov 2016 09:39:33 +0000 (18:39 +0900)]
[x86/Linux] Fix SEH '__try' is not supported on this target (#8271)

Fix compile error for x86/Linux
- add check !FEATURE_PAL

7 years ago[x86/Linux] Fix no matching function for call to 'InternalCreateThread' (#8265)
SaeHie Park [Wed, 23 Nov 2016 09:38:26 +0000 (18:38 +0900)]
[x86/Linux] Fix no matching function for call to 'InternalCreateThread' (#8265)

Fix compile error for x86/Linux
- fix calling convention by adding PALAPI to TerminationRequestHandlingRoutine

7 years agoChange vector equality to use pmovmskb
Mike Danes [Mon, 21 Nov 2016 18:30:28 +0000 (20:30 +0200)]
Change vector equality to use pmovmskb

This change replaces the rather long shuffle based compare sequence with
pmovmskb which is available in SSE2 and AVX2. The following code is now
generated:

C4E16D76D1           vpcmpeqd ymm2, ymm1
C4E17DD7C2           vpmovmskbeax, ymm2
83F8FF               cmp      eax, -1
0F94C0               sete     al
0FB6C0               movzx    rax, al