Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
Improve ArrayPool implementation and performance
|
|
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
|
|
Change NYI to be a noway_assert if ALT_JIT is not defined
|
|
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.
|
|
|
|
|
|
|
|
'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'.
|
|
|
|
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.
|
|
* 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'
|
|
specified (#8340)
|
|
* 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
|
|
* (Partially) Enable x86/Linux PAL
* Fix personality routine address encoding
* Fix build warnings
|
|
|
|
Change the type of Task.m_action to Delegate
|
|
|
|
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
|
|
|
|
Both variables are available only for non-Unix platforms.
|
|
Fix compile error for x86/Linux
- fix "equality comparison with extraneous parentheses" for LEGACY_BACKEND
|
|
Fix compile error for x86/Linux
- place parentheses around the '&&' expression to silence this
|
|
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.
|
|
Also fixed checking of context flags on OSX (issue #8116)
|
|
* Adds virtual dtor for ArrayStubCache class
* Remove unnecessary default destructor
|
|
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.
|
|
|
|
Fix compile error for x86/Linux
- undo some changes to disable WIN64EXCEPTION so the x86/Linux builds
|
|
Fix various disassembly issues
|
|
Fix formatting in files
|
|
Enable use of SSE3_4 instruction set for SIMD codegen.
|
|
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.
|
|
Force enable SSE2 on RyuJIT/x86 on desktop
|
|
Merge changes from TFS
|
|
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.
|
|
Use FEATURE_CER to scope CER code,
and disable CER feature in CoreCLR.
|
|
[tfs-changeset: 1639770]
|
|
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.
|
|
|
|
|
|
|
|
- (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)
|
|
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.
|
|
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
|
|
Do not rewrite `(t + cns_a) << cns_s)` during CSE.
|
|
|