Age | Commit message (Collapse) | Author | Files | Lines |
|
ARM64: Enable Tail Call with Vararg
|
|
Set overflow flag for add/sub hi on x86 TYP_LONG
|
|
Merge changes from TFS
|
|
Fixes https://github.com/dotnet/coreclr/issues/4475
I've run into `IMPL_LIMITATION("varags + CEE_JMP doesn't work yet")` in
importer.cpp. This change enables ARM64 tail call path same as other
targets.
1. Similar to amd64 `genFnEpilog`, I made the similar code under
`!FEATURE_FASTTAILCALL`. Since `EC_FUNC_TOKEN_INDIR` is not defined for
arm64, I've made NYI for such case.
2. Added two pseudo branch instructions 'b_tail' and 'br_tail' which form
jmp instruction encodings but follow call instruction semantics since
they are used for tail-call.
3. `GenJmpMethod` is enabled. Code is slightly changed to reflect correct
float argument handlings and multi-reg support.
|
|
Create JIT packages during the build.
|
|
Fix interop x86 tests by fixing mismatching calling convention, and enable [NativeCallable] for every architecture
|
|
Inliner: initial version of SizePolicy
|
|
ARM: fix stack frame management
Fix #4638
This commit revises the implementation of CallEHFunclet to establish
stack frame appropriately.
This commit allows libunwind to work correctly for the frame created by
CallEHFunclet.
|
|
Make Delegate BeginInvoke/EndInvoke throw PlatformNotSupportedException
|
|
Merge changes from TFS
|
|
|
|
When we create the hi operation for add and sub on TYP_LONG, we don't
carry the overflow flag to the hi operation. This change sets the overflow
flag on hiResult in lower if it was set on loResult, and adds GT_ADD_HI
and GT_SUB_HI to the operations that can have overflow. We also need to
pass the unsigned flag to the high part in the instance that we are
dealing with an add or subtract with overflow. Fixes #4596.
|
|
This change replaces the final uses of SEH between the JIT and the EE with a new method
on ICorJitInfo, `ICorJitInfo::runWithErrorTrap`. This method runs a given function under an
error trap that prevents recoverable errors from propagating out of the call. This allows
the JIT to make calls to JIT/EE interface functions that may throw exceptions without
needing to be aware of the EH ABI, exception types, etc. The method returns true if the
given function completed successfully and false otherwise. This change deprecates
all other SEH-related functionality on the JIT/EE interface (e.g. `ICJI::FilterException` and
`ICJI::HandleException`).
This change does not completely eliminate SEH over the JIT/EE interface: there are still a
handful of places where the JIT expects to be able to catch exceptions thrown by
SuperPMI. These uses of SEH will be removed later on.
Fixes #3058 and #4130.
[tfs-changeset: 1601288]
|
|
Add a new inline policy that tries to inline as much as possible
without increasing method size.
Fix one test that had an expected inline that doesn't happen under
the SizePolicy, by marking a method with AggressiveInline.
|
|
Fix contracts in `tryResolveToken`.
|
|
[NativeCallable] in all architectures.
|
|
Convert signed int=>long cast SBCG to NYI
|
|
This causes many tests that fail with silent bad codegen to pass
with NYI fallback. Many tests are removed from the issues.targets
failing tests exclusion list, but added to the
ryujit_x86_no_fallback_issues.targets exclusion list.
|
|
`isValidToken`'s contract was too conservative: it was needlessly marked
`THROWS`, `GC_TRIGGERS`, and `MODE_PREEMPTIVE`. Its contract and those
of its callers have been tightened to `NOTHROW`, `GC_NOTRIGGER`, and
`MODE_ANY`.
|
|
Fix array allocation bounds checking on Unix
|
|
* Generalize Buffer.BlockCopy optimization for either src or dst
|
|
[tfs-changeset: 1601059]
|
|
This change fixes a bug in the ArgIterator that resulted in assigning
floating point arguments that didn't fit to the xmm registers to general
purpose registers in the ArgIterator if there were some general purpose
registers available.
|
|
Arm64:Implemeting ThisPtrRetBufPrecode:
|
|
Add ability to AutoStartProfiling for CoreCLR.
|
|
Precode to shuffle this and retbuf for closed delegates over static methods with return buffer
|
|
|
|
Merge changes from TFS
|
|
Load JIT from custom location for Crossgen
|
|
ARM64: NativeVarArg
|
|
Remove SYNCHMGR_PIPE_BASED_THREAD_BLOCKING and clean up synchmanager
|
|
Add ability to do MultiCoreJit profiling in the CoreCLR. This is used for
testing of the MultiCoreJit functionality.
|
|
Merge changes from TFS
|
|
NetBSD limits name of a semaphore to 15 characters (inc. null)
|
|
In PInovke stub call with vararg that has float value,
we did not properly set up argumnent by passing float registers whith do
not conform ARM64 ABI.
The fix is to set the right calling convention in VM to use
integer registers to pass such float values.
|
|
ARM64: Enable Varargs with float argument.
|
|
Fixes https://github.com/dotnet/coreclr/issues/2989
ARM64 ABI does not allow float register arguments for vararg calls.
All such float arguments should be copied to integer registers.
In Lower, I explicitly add a GT_COPY for such case and support the code-gen
to expand it properly using `fmov`.
I also skip genFnPrologCalleeRegArgs() for vararg since we've already
saved all integer registers in the prolog.
|
|
Implement JitNoInlineRange
|
|
Continue to link the JIT in for Windows Arm64 builds until 4717 is fixed.
|
|
* Fix #4496
This commit revises legecy codegen to inserts a bkpt instruction if the current BB
and next BB is not in the same exception handling region.
This code is backported from ARM64 codegen.
* Update ControlPcIsUnwound in UnwindManagedExceptionPassX
* Enable only for ARM32
Enable the patch only for ARM32 in order to fix build break in other
architecture.
|
|
|
|
Fix issue #4298 "SIGSEGV_libcoreclr.so!Debugger::GetArgCount"
|
|
ARM64: Enabling Crossgen End-to-End Mscorlib
|
|
Separate NYIs for arithmetic operators on longs
|
|
Rework and cleanup ConfigMethodRange. Give it a configurable size. Do
some error detection when parsing the range string. Update comments
and add notes at existing usage sites about the behavior when the
range string is not specified.
Use ConfigMethodRange to implement a JitNoInlineRange option that
suppresses inlining in a specified set of methods. Set this up so
inlning still happens if the range string is empty. Choose capacity so
it can hold the entire range string's set of ranges. Add a new
observation for the cases where enabling this JIT option disables
inlines.
Make compMethodHash available for INLINE_DATA builds. Report this hash
in the Xml inline dumps, so it can provide hash values to feed into
JitNoInlineRange strings.
|
|
[tfs-changeset: 1600494]
|
|
|
|
To make it more obvious which long operators are causing the NYI to hit,
split out the different operators with their own NYI.
|
|
Fixes https://github.com/dotnet/coreclr/issues/4350
Fixes https://github.com/dotnet/coreclr/issues/4615
This is a bit large change across VM/Zap/JIT to properly support crossgen
scenario.
1. Fix incorrect `ldr` encoding with size.
2. Enforce JIT data following JIT code per method by allocating them together.
This guarantees correct PC-relative encoding for such constant data access
without fix-up.
3. For the general fix-up data acceess, use `adrp/add` instruction pairs with fix-ups.
Two more relocations types are implemented in all sides.
4. Interface dispatch stub is now implemented which is needed for
interface call for crossgen.
I've verified hello world runs with mscorlib.ni.dll.
|
|
This fixes hangs in the runtime observed while running CoreFX managed tests.
Thanks @janvorli and @myungjoo
Fix #4380
|