Phil Christensen [Thu, 1 Dec 2016 11:53:23 +0000 (03:53 -0800)]
fix permissive C++ code (MSVC /permissive-) (dotnet/coreclr#8337)
* fix permissive C++ code (MSVC /permissive-)
These were found by the C++ compiler group when doing "Real world code"
build tests using /permissive-. We are sharing these with you to help you clean up
your code before the new version of the compiler comes out. For more information on /permissive-
see https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/.
----------------------------
Under /permissive-, skipping the initialization of a variable is not allowed.
As an extension the compiler allowed this when there was no destructor for the type.
void func(bool b)
{
if(b) goto END;
int value = 0; //error C2362: initialization of 'value' is skipped by 'goto END'
int array[10]; //Okay, not initialized.
//... value used here
END:
return;
}
Fix 1) Limit the scope of value:
{
int value = 0;
//... value used here
}
END:
Fix 2) Initialize/declare value before the 'goto'
int value = 0;
if(b) goto END;
//... value used here
END:
Fix 3) Don't initialize value in the variable declaration.
int value;
value = 0
//... value used here
END:
-------------------
Alternative token representations.
The following are reserved as alternative representations for operators:
and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq
//Can't use reserved names for variables:
static int and = 0; // Change name (possibly to 'and_')
void func()
{
_asm {
xor edx,edx // xor is reserved, change to uppercase XOR
or eax,eax // or is reserved, change to uppercase OR
}
}
* Apply formatting patch.
* fixes from code review.
I addressed @janvorli requests from the pull request code review.
Commit migrated from https://github.com/dotnet/coreclr/commit/
20275aa647c5733bc5b1929cba3fd1094c67fb1d
Jonghyun Park [Thu, 1 Dec 2016 10:57:07 +0000 (19:57 +0900)]
Re-enable UMThkCallFrame and fix compile errors (dotnet/coreclr#8411)
Commit migrated from https://github.com/dotnet/coreclr/commit/
3f4680c80dc510a96efa322054145a807480bab7
Jonghyun Park [Thu, 1 Dec 2016 10:52:25 +0000 (19:52 +0900)]
Fix build error in ARM64 code (dotnet/coreclr#8407)
CONTEXT struct for ARM64 does not contain X29 field.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6aa53dc3703b49dba774f3c1ea1e988a85e69274
Jonghyun Park [Thu, 1 Dec 2016 09:24:32 +0000 (18:24 +0900)]
Add EXCEPTION_REGISTRATION_RECORD for x86/Linux (dotnet/coreclr#8408)
Commit migrated from https://github.com/dotnet/coreclr/commit/
d06220f50d7cc05424aeecb0eee990abb522d37b
Alex Ghiondea [Thu, 1 Dec 2016 07:52:29 +0000 (23:52 -0800)]
Remove the BinaryCompatibility class as it is not useful on .NET Core… (dotnet/coreclr#8396)
* Remove the BinaryCompatibility class as it is not useful on .NET Core and creates issues on Debug builds when the TFM on the AppDomain is not recognized.
* Update the code for DateTimeFormatInfo to not use BinaryCompatibility
* Remove initialization of preferExistingTokens now that we removed its usage
Commit migrated from https://github.com/dotnet/coreclr/commit/
eca37b41de5cf03681c510aa9f94577c76aa2c26
Jan Vorlicek [Thu, 1 Dec 2016 07:51:52 +0000 (08:51 +0100)]
Add printing managed assert message to console (dotnet/coreclr#8399)
I have discovered that when GUI assertion dialogs are disabled, the assert
message is not shown anywhere and the app just silently exits.
This change adds printing the message and stack trace to console in such case.
Commit migrated from https://github.com/dotnet/coreclr/commit/
32d03bb66a51c7ed6712c4cdd319de0cc7cbbf37
Jan Kotas [Thu, 1 Dec 2016 05:52:35 +0000 (21:52 -0800)]
Skip emitting duplicate clauses for CoreRT (dotnet/coreclr#8400)
Fixes https://github.com/dotnet/corert/issues/2262
Commit migrated from https://github.com/dotnet/coreclr/commit/
746d0330e19a764c4d23160e56e8a281335b8e56
Jonghyun Park [Thu, 1 Dec 2016 02:26:08 +0000 (11:26 +0900)]
Add parentheses aroung logical operations (dotnet/coreclr#8406)
This commit fixes logical-op-parentheses compile error for x86/Linux build.
Commit migrated from https://github.com/dotnet/coreclr/commit/
4e17522078fd30bcc4e83a43c03a673a1f98eee1
Jan Kotas [Thu, 1 Dec 2016 01:16:45 +0000 (17:16 -0800)]
Merge pull request dotnet/coreclr#8209 from stephentoub/arraypool_perf
Improve ArrayPool implementation and performance
Commit migrated from https://github.com/dotnet/coreclr/commit/
32e6bf8b03aafe84e6d24e0c36a65dd18d2054ed
Bruce Forstall [Thu, 1 Dec 2016 00:47:24 +0000 (16:47 -0800)]
Merge pull request dotnet/coreclr#8382 from BruceForstall/FixShift
Fix x86 encoder to use 64-bit type to accumulate opcode/prefix bits
Commit migrated from https://github.com/dotnet/coreclr/commit/
392748e2df331ca3cfb9f7b08655f2a4379fc527
Jonghyun Park [Wed, 30 Nov 2016 23:39:55 +0000 (08:39 +0900)]
Exclude jithelp.asm for x86/Linux (dotnet/coreclr#8393)
Commit migrated from https://github.com/dotnet/coreclr/commit/
04820d1435f0df7a5f592dbc6ff420543f447702
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 dotnet/coreclr#8331
Commit migrated from https://github.com/dotnet/coreclr/commit/
b90516fe443d50cacfe6635d8c1be595d41b8a90
Bruce Forstall [Wed, 30 Nov 2016 21:31:42 +0000 (13:31 -0800)]
Merge pull request dotnet/coreclr#8395 from BruceForstall/FixNYI
Change NYI to be a noway_assert if ALT_JIT is not defined
Commit migrated from https://github.com/dotnet/coreclr/commit/
0b0d51ebfbb2dfd6defe43892d681e42ca9122d0
Jonghyun Park [Wed, 30 Nov 2016 20:23:58 +0000 (05:23 +0900)]
Disable PrintSEHChain for non-Windows platforms (dotnet/coreclr#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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
3ce1795cb62b223029d5d418ca8d8a9dfd25aefc
Jonghyun Park [Wed, 30 Nov 2016 20:19:36 +0000 (05:19 +0900)]
Declare CtorFtnType only when it is used (dotnet/coreclr#8378)
Commit migrated from https://github.com/dotnet/coreclr/commit/
5a8a0c8efb309313399a67b31089c38a77c135bd
Jonghyun Park [Wed, 30 Nov 2016 20:09:36 +0000 (05:09 +0900)]
Disable EHWatsonBucketTracker for non-window platforms (dotnet/coreclr#8373)
Commit migrated from https://github.com/dotnet/coreclr/commit/
883f856ee614f48ab698c627b893c055cd1fb585
Jonghyun Park [Wed, 30 Nov 2016 20:08:20 +0000 (05:08 +0900)]
Disable Windows-specific code for x86/Linux (dotnet/coreclr#8371)
Commit migrated from https://github.com/dotnet/coreclr/commit/
e562be52f31791e51acf4c2f890dce908d72f163
Jonghyun Park [Wed, 30 Nov 2016 20:07:16 +0000 (05:07 +0900)]
Fix mismatch between longfilepathwrappers.cpp and longfilepathwrappers.h (dotnet/coreclr#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'.
Commit migrated from https://github.com/dotnet/coreclr/commit/
73c2dc7771ff782ccfdd4a9287d83f807d646131
Jonghyun Park [Wed, 30 Nov 2016 20:06:13 +0000 (05:06 +0900)]
Fix mismatch between sortversioning.h and sortversioning.cpp (dotnet/coreclr#8366)
Commit migrated from https://github.com/dotnet/coreclr/commit/
072408770267ef635fc85adcef81c2f718c0d689
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 (dotnet/coreclr#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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e26e3551994fd89f9360da7a463628cb7dbe67c5
Jonghyun Park [Wed, 30 Nov 2016 19:42:31 +0000 (04:42 +0900)]
[x86/Linux] Fix mismatch over LPOVERLAPPED_COMPLETION_ROUTINE (dotnet/coreclr#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'
Commit migrated from https://github.com/dotnet/coreclr/commit/
0dca8982abf9e3ecdc757b9e8f455eefe8e81c30
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 (dotnet/coreclr#8340)
Commit migrated from https://github.com/dotnet/coreclr/commit/
a8eebfdd91c9164c9b925f4ee62d9939ab5bf6f1
Jonghyun Park [Wed, 30 Nov 2016 19:40:17 +0000 (04:40 +0900)]
[x86/Linux] Disable FEATURE_AVX_SUPPORT (dotnet/coreclr#8335)
* Disable FEATURE_AVX_SUPPORT for x86/Linux
This commit disables FEATURE_AVX_SUPPORT for x86/Linux to fix dotnet/coreclr#8331.
* Disable FEATURE_AVX_SUPPORT only for x86/Linux
* Disable FEATURE_SIMD for x86/Linux
* Simplify nested if in CMakeList.txt
Commit migrated from https://github.com/dotnet/coreclr/commit/
9883c466a5c73e3c3a9c6850e795071458abeb3b
Jonghyun Park [Wed, 30 Nov 2016 19:39:53 +0000 (04:39 +0900)]
[x86/Linux] Add missing files in x86/Linux PAL (dotnet/coreclr#8318)
* (Partially) Enable x86/Linux PAL
* Fix personality routine address encoding
* Fix build warnings
Commit migrated from https://github.com/dotnet/coreclr/commit/
fc46f78d8f1c2124a0a463dce5bcbba1f6929408
Jonghyun Park [Wed, 30 Nov 2016 19:39:21 +0000 (04:39 +0900)]
Uses portable ROTATE_LEFT for x86/Linux (dotnet/coreclr#8367)
Commit migrated from https://github.com/dotnet/coreclr/commit/
8421585791a6a8d7c7237b673944474643f06a6b
Stephen Toub [Wed, 30 Nov 2016 19:33:11 +0000 (14:33 -0500)]
Merge pull request dotnet/coreclr#8401 from svick/task-action-delegate
Change the type of Task.m_action to Delegate
Commit migrated from https://github.com/dotnet/coreclr/commit/
ed559fb98b7221128e4ef31967651b1a863da913
Jonghyun Park [Wed, 30 Nov 2016 14:23:29 +0000 (23:23 +0900)]
Fix mismatch between signature and implementation of ActivationFunctions (dotnet/coreclr#8394)
Commit migrated from https://github.com/dotnet/coreclr/commit/
1ab34fa83f5f5479065b85d3d902e533e167ec2d
SaeHie Park [Wed, 30 Nov 2016 14:21:04 +0000 (23:21 +0900)]
[x86/Linux] Fix prototype for GCThreadStub (dotnet/coreclr#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
Commit migrated from https://github.com/dotnet/coreclr/commit/
fa6222d52a81c24077206cf5082b2f3967e67ebc
Matt Warren [Wed, 30 Nov 2016 07:45:21 +0000 (07:45 +0000)]
Adding missing ctor - 'public Span(T[] array, int start)' (dotnet/coreclr#8354)
Commit migrated from https://github.com/dotnet/coreclr/commit/
fb5f8d70e8b85e084af2cb52b70914b3428652a1
Jonghyun Park [Wed, 30 Nov 2016 07:44:11 +0000 (16:44 +0900)]
Updates m_LastRedirectIP and m_SpinCount only for non-Unix platforms (dotnet/coreclr#8386)
Both variables are available only for non-Unix platforms.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ce9a231f1498719eb665e2017611d7bfeb41ed49
SaeHie Park [Wed, 30 Nov 2016 07:42:25 +0000 (16:42 +0900)]
[x86/Linux] Fix extraneous parentheses (dotnet/coreclr#8388)
Fix compile error for x86/Linux
- fix "equality comparison with extraneous parentheses" for LEGACY_BACKEND
Commit migrated from https://github.com/dotnet/coreclr/commit/
5c4fe045b9b6873158a85cec2458af80c5570d0a
SaeHie Park [Wed, 30 Nov 2016 07:41:44 +0000 (16:41 +0900)]
[x86/Linux] Fix error: '&&' within '||' (dotnet/coreclr#8391)
Fix compile error for x86/Linux
- place parentheses around the '&&' expression to silence this
Commit migrated from https://github.com/dotnet/coreclr/commit/
0d6db5301fdea84ac8c798dcc3c051dc85f3411e
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
bea51b77342bf326ae7178bc06c3e79e3d697624
John Chen [Wed, 30 Nov 2016 03:50:09 +0000 (19:50 -0800)]
Capture YMM registers on OSX (dotnet/coreclr#8365)
Also fixed checking of context flags on OSX (issue dotnet/coreclr#8116)
Commit migrated from https://github.com/dotnet/coreclr/commit/
85c0a5641d60aabe028a9e4b4ef07a7b58a2181b
Jonghyun Park [Wed, 30 Nov 2016 03:08:19 +0000 (12:08 +0900)]
[x86/Linux] Add virtual dtor for ArrayStubCache class (dotnet/coreclr#8339)
* Adds virtual dtor for ArrayStubCache class
* Remove unnecessary default destructor
Commit migrated from https://github.com/dotnet/coreclr/commit/
89440daa5cfe3ad814b9caac6bd47c5d7ffc6d9b
Andy Ayers [Wed, 30 Nov 2016 03:00:26 +0000 (19:00 -0800)]
Remove one virtual call from StreamHelpers.ValidateCopyToArgs (dotnet/coreclr#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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
85a1a1d4e981e184f2f5d91c41a4d3be2a4ea3fa
Jonghyun Park [Wed, 30 Nov 2016 02:57:27 +0000 (11:57 +0900)]
Fix inconsistency between the signatures of GetAppDomain (dotnet/coreclr#8368)
Commit migrated from https://github.com/dotnet/coreclr/commit/
defed5e515109252cef6e000ffb4139424ae89f6
SaeHie Park [Wed, 30 Nov 2016 02:55:33 +0000 (11:55 +0900)]
[x86/Linux] Disable WIN64EXECPTION and fix related changes (dotnet/coreclr#8375)
Fix compile error for x86/Linux
- undo some changes to disable WIN64EXCEPTION so the x86/Linux builds
Commit migrated from https://github.com/dotnet/coreclr/commit/
a6efd617d94845de4327e2347b78c9e44edc58f9
Pat Gavlin [Wed, 30 Nov 2016 00:24:22 +0000 (16:24 -0800)]
Merge pull request dotnet/coreclr#8315 from mikedn/disasm
Fix various disassembly issues
Commit migrated from https://github.com/dotnet/coreclr/commit/
dcc36dfeb6d912fd69f467725837b4797b2158ba
Michelle McDaniel [Tue, 29 Nov 2016 21:49:49 +0000 (13:49 -0800)]
Merge pull request dotnet/coreclr#8355 from adiaaida/formattingFix
Fix formatting in files
Commit migrated from https://github.com/dotnet/coreclr/commit/
513d7e51a644beef0214906f6e9f40e1bfbff6aa
Sivarv [Tue, 29 Nov 2016 20:12:50 +0000 (12:12 -0800)]
Merge pull request dotnet/coreclr#8291 from sivarv/sse34
Enable use of SSE3_4 instruction set for SIMD codegen.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6549b7ac4129578e40e3bc2c5df5f7bba21bf137
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8667ae142c3c5f500a2f112fb4f541f7cc0d9d84
Bruce Forstall [Tue, 29 Nov 2016 18:39:11 +0000 (10:39 -0800)]
Merge pull request dotnet/coreclr#8330 from BruceForstall/FixSSE2Assert
Force enable SSE2 on RyuJIT/x86 on desktop
Commit migrated from https://github.com/dotnet/coreclr/commit/
9acf67c52a0448f45ac8da79369bc229a40ef4d0
Jan Kotas [Tue, 29 Nov 2016 18:09:54 +0000 (10:09 -0800)]
Merge pull request dotnet/coreclr#8351 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
03e5bfc4f364f6efb77558b13229ed3c6e838703
Jan Vorlicek [Tue, 29 Nov 2016 18:09:35 +0000 (19:09 +0100)]
Fix shared library dependencies verification on some platforms (dotnet/coreclr#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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
74816870ce9ff5ec41d30455a7dcc3b5d327bf45
John Chen [Tue, 29 Nov 2016 17:10:40 +0000 (09:10 -0800)]
Disable CER feature as it is not used (dotnet/coreclr#8218)
Use FEATURE_CER to scope CER code,
and disable CER feature in CoreCLR.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e67851210d1c03d730a3bc97a87e8a6713bbf772
Petr Onderka [Tue, 29 Nov 2016 17:06:16 +0000 (18:06 +0100)]
Use invariant culture in test (dotnet/coreclr#8327)
This makes sure the test passes on machines
where the decimal separator of the default culture is comma.
Commit migrated from https://github.com/dotnet/coreclr/commit/
c1e15f43e313d33bb60cdc04131e6cf720d7150f
Bruce Forstall [Tue, 29 Nov 2016 16:56:19 +0000 (08:56 -0800)]
Fix AMD64 CTP build break
[tfs-changeset: 1639770]
Commit migrated from https://github.com/dotnet/coreclr/commit/
3b21d92f677251957eabcece8fd9490f140d8945
Jan Vorlicek [Tue, 29 Nov 2016 14:12:02 +0000 (15:12 +0100)]
Fix phantom TEXTREL in libcoreclr.so (dotnet/coreclr#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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a60661ea96f6760d6cfd8e1e86c370f7e7052ed0
Jonghyun Park [Tue, 29 Nov 2016 12:58:07 +0000 (21:58 +0900)]
Uses 'W' to fix build error (dotnet/coreclr#8345)
Commit migrated from https://github.com/dotnet/coreclr/commit/
6c870a3e37bead1aecf2fa898fcefbefd8e7543a
Jonghyun Park [Tue, 29 Nov 2016 11:24:51 +0000 (20:24 +0900)]
Fix the mistmatch between gc_thread_stub and GCThreadFunction (dotnet/coreclr#8336)
Commit migrated from https://github.com/dotnet/coreclr/commit/
31c5791b1c81800703655f7d306b030e3cde9bd2
Jonghyun Park [Tue, 29 Nov 2016 11:14:22 +0000 (20:14 +0900)]
Fix ignored attribute warning for x86/Linux build (dotnet/coreclr#8334)
Commit migrated from https://github.com/dotnet/coreclr/commit/
3f85c4c9c5a0ad78a4ed0f12c389b5c50c4527d6
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)
Commit migrated from https://github.com/dotnet/coreclr/commit/
10f3d635975ebb9b70ec6173562dd9c11227dfc9
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a7ee82d87e6c4d40c70e77adeae2aa4978d6f5fa
Jan Kotas [Tue, 29 Nov 2016 02:00:57 +0000 (18:00 -0800)]
Disable PSPSym and LocAllocSPvar for CoreRT (dotnet/coreclr#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
Commit migrated from https://github.com/dotnet/coreclr/commit/
8de587f3b6d45be23f5178f510e260e470f2ef4f
Pat Gavlin [Tue, 29 Nov 2016 00:58:04 +0000 (16:58 -0800)]
Merge pull request dotnet/coreclr#8325 from pgavlin/gh8285
Do not rewrite `(t + cns_a) << cns_s)` during CSE.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f9c645f88a9646ab95eca62df8b0c932de3efa17
sivarv [Thu, 24 Nov 2016 03:30:36 +0000 (19:30 -0800)]
Enable using SSE3_4 instruction set for SIMD codegen.
Commit migrated from https://github.com/dotnet/coreclr/commit/
eb6315222854cad6499a33639dce795032a9d3f7
SaeHie Park [Mon, 28 Nov 2016 23:10:14 +0000 (08:10 +0900)]
[x86/Linux] Fix constructor missing in UnmanagedToManagedFrame (dotnet/coreclr#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
Commit migrated from https://github.com/dotnet/coreclr/commit/
4fb0c3e3cff61c09a5ec745b354e3219607295a3
SaeHie Park [Mon, 28 Nov 2016 22:36:39 +0000 (07:36 +0900)]
[x86/Linux] Fix error variable 'td' is uninitialized (dotnet/coreclr#8299)
Fix compile error for x86/Linux
- make compiler happy with initialize variable 'td' with 0.0
Commit migrated from https://github.com/dotnet/coreclr/commit/
e5d9c9f4dea33b66339f748d837e99a3d645ff79
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 dotnet/coreclr#8285.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a258f013a53e1ad2cdef5998c8340be0ff0c2926
Bruce Forstall [Mon, 28 Nov 2016 19:48:18 +0000 (11:48 -0800)]
Merge pull request dotnet/coreclr#8314 from BruceForstall/RefactorEmit
Factor out common stack adjustment code
Commit migrated from https://github.com/dotnet/coreclr/commit/
ff98f85d58e76ec2b85a3d40cd380546b80c01a1
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
9968cfef536000d04b2ade6994392de4e6de06da
Bruce Forstall [Sun, 27 Nov 2016 04:40:13 +0000 (20:40 -0800)]
Factor out common stack adjustment code
Commit migrated from https://github.com/dotnet/coreclr/commit/
d20a00d37cd833cec3bd5e46c66dcde07dd28f32
Stephen Toub [Fri, 25 Nov 2016 04:39:15 +0000 (23:39 -0500)]
Make GetCurrentProcessorNumber an FCall
Commit migrated from https://github.com/dotnet/coreclr/commit/
9a7bddb80ae678b42c694f0ff55041284a7069b8
SaeHie Park [Mon, 28 Nov 2016 14:03:29 +0000 (23:03 +0900)]
[x86/Linux] Fix compile error in zapcode (dotnet/coreclr#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'"
Commit migrated from https://github.com/dotnet/coreclr/commit/
2acb29c3e9aeeab5292d6481e8d3bf583ae110ab
SaeHie Park [Mon, 28 Nov 2016 14:02:25 +0000 (23:02 +0900)]
[x86/Linux] Fix 'stdcall' here was previously declared without (dotnet/coreclr#8320)
Fix compile error for x86/Linux
- add __stdcall in header
- fix "function declared 'stdcall' here was previously declared without"
Commit migrated from https://github.com/dotnet/coreclr/commit/
23380588f74c56da424806ca9c7343c4d7a11a97
SaeHie Park [Mon, 28 Nov 2016 11:38:36 +0000 (20:38 +0900)]
[x86/Linux] Fix unknown type name 'PTR_RUNTIME_FUNCTION' (dotnet/coreclr#8272)
Fix compile error for x86/Linux
- wrap only RUNTIME_FUNCTION in corcompile.h with !FEATURE_PAL
Commit migrated from https://github.com/dotnet/coreclr/commit/
eedc7cb7e59975aa4ea194b199197a14cbf6e351
Maoni Stephens [Mon, 28 Nov 2016 04:57:21 +0000 (20:57 -0800)]
Merge pull request dotnet/coreclr#8199 from Maoni0/local_gc
move profiling and profiling/ETW shared diagnostics code out of gc.cpp, gcee.cpp and objecthandle.cpp
Commit migrated from https://github.com/dotnet/coreclr/commit/
38a0b157a1bad7080763009746cce92be2388b8e
Bruce Forstall [Sun, 27 Nov 2016 04:42:05 +0000 (20:42 -0800)]
Merge pull request dotnet/coreclr#8312 from BruceForstall/FixLegacyBuild
Set FEATURE_READYTORUN_COMPILER for legacyjit and compatjit
Commit migrated from https://github.com/dotnet/coreclr/commit/
0c0e872d4ff27f37eecb8e24e1da89fa34975370
Jan Vorlicek [Sun, 27 Nov 2016 04:34:03 +0000 (05:34 +0100)]
Fix building CoreCLR with Clang 3.9 (dotnet/coreclr#8311)
There were few constructs that Clang 3.9 didn't like due to its strict
C++ standard conformance rules.
Commit migrated from https://github.com/dotnet/coreclr/commit/
9f4bf341ad236df7d16bbdba0c4111393ea141d2
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b43b87e539a3a258b1686b77170dd6da81fabe6b
Bruce Forstall [Fri, 25 Nov 2016 21:38:50 +0000 (13:38 -0800)]
Set FEATURE_READYTORUN_COMPILER for legacyjit and compatjit
Commit migrated from https://github.com/dotnet/coreclr/commit/
4b40a4b63b9b2ef86f0d68840ca82c5cb602a914
James Ko [Fri, 25 Nov 2016 19:28:15 +0000 (14:28 -0500)]
Fix subtle bug in new string.Join implementation. (dotnet/coreclr#8310)
Commit migrated from https://github.com/dotnet/coreclr/commit/
dcadfbeecd96483f7ae0ba02b597bcf38f86f304
Jonghyun Park [Fri, 25 Nov 2016 15:07:39 +0000 (00:07 +0900)]
Configures tests even when configureonly is provided (dotnet/coreclr#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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
9059610008205ac6c7c88e2a2651f61b94558ffc
Jonghyun Park [Fri, 25 Nov 2016 15:07:16 +0000 (00:07 +0900)]
[x86/Linux] Renames i386 as amd64 in arch (PAL) (dotnet/coreclr#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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1ce314b3f7b51081f88835e60f8516780f4894ac
SaeHie Park [Fri, 25 Nov 2016 09:34:25 +0000 (18:34 +0900)]
Enable field EndAddress only for AMD64 in PAL of RUNTIME_FUNCTION (dotnet/coreclr#8305)
Commit migrated from https://github.com/dotnet/coreclr/commit/
c958ed15c1a58224966b10a6c778d13aaf537469
Stephen Toub [Wed, 23 Nov 2016 01:48:53 +0000 (20:48 -0500)]
Cache result of GetCurrentProcessorNumber
Commit migrated from https://github.com/dotnet/coreclr/commit/
3aa61c74692a2d240dfea7dc0929c74999e0ed36
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
41583331a2bb645503233944e7b62d9501c60a32
Jonghyun Park [Thu, 24 Nov 2016 10:07:42 +0000 (19:07 +0900)]
Supports to build PAL tests under x86/Linux (dotnet/coreclr#8292)
Commit migrated from https://github.com/dotnet/coreclr/commit/
3e60aade2971016dc8e60ac683d1121f1969ca51
SaeHie Park [Thu, 24 Nov 2016 09:43:00 +0000 (18:43 +0900)]
[x86/Linux] Fix unsupported architecture in seh-unwind.cpp (dotnet/coreclr#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
Commit migrated from https://github.com/dotnet/coreclr/commit/
f85bf7cdf194c6d87aca6a3d3f741db92f2a642e
Russ Keldorph [Thu, 24 Nov 2016 05:18:49 +0000 (21:18 -0800)]
Merge pull request dotnet/coreclr#8295 from RussKeldorph/nopr
Remove non-RyuJIT default x86 PR triggers
Commit migrated from https://github.com/dotnet/coreclr/commit/
876bb32a9a5278e1c6676e8e9722b5c20b34f7d5
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
Commit migrated from https://github.com/dotnet/coreclr/commit/
f842fa92ad1a75280fe25ecd11b5459a41ee0a61
Bruce Forstall [Thu, 24 Nov 2016 00:24:32 +0000 (16:24 -0800)]
Merge pull request dotnet/coreclr#8260 from BruceForstall/SwitchX86ToRyuJit
Make RyuJIT/x86 the default x86 JIT
Commit migrated from https://github.com/dotnet/coreclr/commit/
db767b8674b25e130f82344a3b568c1fffca7661
Jonghyun Park [Wed, 23 Nov 2016 23:48:06 +0000 (08:48 +0900)]
Removes non-existent target files from override.targets (dotnet/coreclr#8264)
This commit revises override.targets not to import ``mono.targets`` and
``roslyn.xplat.targets`` which do not exist in Tools/
Commit migrated from https://github.com/dotnet/coreclr/commit/
9a29a6e868f4abd8b733891faa0b3f3209853248
James Ko [Wed, 23 Nov 2016 23:25:28 +0000 (18:25 -0500)]
Add String.Join overloads accepting a char separator (dotnet/coreclr#7942)
* Add String.Join overloads that accept char separators
Commit migrated from https://github.com/dotnet/coreclr/commit/
3f59c073ccc8d27c80e8ae1509685a078e9f1415
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
aad84026d7c5dc10b877bec263f4456a31584772
Pat Gavlin [Wed, 23 Nov 2016 22:16:06 +0000 (14:16 -0800)]
Merge pull request dotnet/coreclr#8284 from pgavlin/gh8258
Increment lclVar refCounts in fgMorphBlockStmt.
Commit migrated from https://github.com/dotnet/coreclr/commit/
7c978202b482d634d10c6841c2f60e0a0d600a17
Sven Boemer [Wed, 23 Nov 2016 22:04:05 +0000 (14:04 -0800)]
Merge pull request dotnet/coreclr#8281 from sbomer/dasm_automation
Fix archiving for jitdiff windows build only jobs
Commit migrated from https://github.com/dotnet/coreclr/commit/
60a8b7399bf45c62062ef3ea1d049ebb2b6906cf
Carol Eidt [Wed, 23 Nov 2016 21:52:22 +0000 (13:52 -0800)]
Merge pull request dotnet/coreclr#7847 from CarolEidt/Fix278375
x86: not all fields of promoted struct need regs
Commit migrated from https://github.com/dotnet/coreclr/commit/
ffed6b25578ad5aa5a074c8a62321bd20a9bbd35
Pat Gavlin [Wed, 23 Nov 2016 21:51:50 +0000 (13:51 -0800)]
Format code.
Commit migrated from https://github.com/dotnet/coreclr/commit/
c07f2e1d7e111568b45389f07e9e5bd757a866a2
Pat Gavlin [Wed, 23 Nov 2016 21:39:10 +0000 (13:39 -0800)]
Merge pull request dotnet/coreclr#8259 from pgavlin/ByrefGcrefKillSet
Fix the byref/gcref kill set for ASSIGN_BYREF.
Commit migrated from https://github.com/dotnet/coreclr/commit/
5e296921f4190686142b5219a3018849deb0ee0a
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
695fe080d88135a305784f2b9c8f7c2ab7fd13d2
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 dotnet/coreclr#8258.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8176598a305ceddb632aa468e8e6d29d92c4d583
Dan Moseley [Wed, 23 Nov 2016 18:55:11 +0000 (10:55 -0800)]
Merge pull request dotnet/coreclr#8137 from jamesqo/array.fill
Add Array.Fill apis
Commit migrated from https://github.com/dotnet/coreclr/commit/
36535348424c17d4616dbfdf6c8d007b94a78d19
Sivarv [Wed, 23 Nov 2016 18:36:46 +0000 (10:36 -0800)]
Merge pull request dotnet/coreclr#8229 from mikedn/sse-eq
Change vector equality to use pmovmskb
Commit migrated from https://github.com/dotnet/coreclr/commit/
a8b6df020149787c82d832bb1ca817ec1ff57441
Ian Hays [Wed, 23 Nov 2016 17:46:22 +0000 (09:46 -0800)]
Merge pull request dotnet/coreclr#8282 from ianhays/api_lockfix
Fix Typo in Unix Lock/Unlock PAL
Commit migrated from https://github.com/dotnet/coreclr/commit/
42aaac5bd8992db64d94e031026a3b4f4aaa2057
Ian Hays [Wed, 23 Nov 2016 17:35:08 +0000 (09:35 -0800)]
Fix Typo in Unix Lock/Unlock PAL
Commit migrated from https://github.com/dotnet/coreclr/commit/
dc23e29d137a1c27b89c3953ba402c065cb88904
Carol Eidt [Wed, 23 Nov 2016 17:24:41 +0000 (09:24 -0800)]
Account for a reload of umod op2
Commit migrated from https://github.com/dotnet/coreclr/commit/
6c9d194008a05400062a0d2f150675d02ad45f91
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.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b6d317740a2a7a1c02a5e628ab32d1ea77a53fe0
SaeHie Park [Wed, 23 Nov 2016 10:18:43 +0000 (19:18 +0900)]
[x86/linux] Fix redefined DISPATCHER_CONTEXT compile error (dotnet/coreclr#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
Commit migrated from https://github.com/dotnet/coreclr/commit/
2c67c72643b8087924de1f931f47ae95f15dadb5