Age | Commit message (Collapse) | Author | Files | Lines |
|
locallocs
|
|
This change fixes StubHelpers::ProcessByrefValidationList so that it doesn't throw.
While there was a EX_TRY / EX_CATCH, the catch handler calls FormatValidationMessage
to format the message before aborting the process and that function can throw.
The fix is to wrap the inside of the EX_CATCH in one more EX_TRY / EX_CATCH and
abort the process without message if there is an exception in the FormatValidationMessage.
|
|
Add EnvironmentAugments to coreclr
|
|
[ARM-softfp/Linux] Get precise type for struct
|
|
Remove RenameUpdatedVars.
|
|
|
|
|
|
Fixes #4182
Change RyuJIT to generate localloc code for x86 the same way legacy JIT does.
E.g., use a push/dec loop for initialized memory. And avoid using "sub esp"
to keep the emitter from tracking stack pointer adjustments.
|
|
Fix #4177: RyuJIT/x86 NYI related to lvaArgType()
|
|
For x86, this function can simply return the variable type. There is
no need to map struct types. The function actually will never be
called on x86 for struct types because it is only called for register
arguments.
This NYI was only hit in the case of JMP calls. I fixed two cases
in the JMP implementation where FEATURE_VARARGS code assumed AMD64, due
to the Windows AMD64 ABI convention to pass float varargs values in both
integer and floating point registers. I put that under `#ifdef _TARGET_AMD64_`.
This removes 426 NYI.
|
|
Stop BclRewriter from trimming serializable metadata
|
|
Add back some surface area to thinned corelib
|
|
|
|
The variable renaming performed by rationalize was originally intended
(according to its comments) to allow assignments that were embedded in
subtrees to be hoisted out into a preceding statement. It appears that
this logic has been removed, so the rename pass is no longer needed.
|
|
Compiler::getPrimitiveTypeForStruct may return TYP_FLOAT but is off on softfp.
So we need to check that in another way rather than `IsHfa()`.
Otherwise struct types with single float32 will make inconsistency in gentree.
Which ends up with assert failure "Bad IL: Illegal assignment of float into integer!".
Check is done in Compiler::getPrimitiveTypeForStruct, by isSingleFloat32Struct.
Fix #6051
|
|
We are working on expsosing some existing exception types from
System.Runtime in CoreFX. The implementations will facade over
System.Private.CoreLib, but we need to make sure all the members we expect
to expose from the contract are present in the implementation assembly.
Expose the missing members for ExecutionEngineException,
NotFiniteNumberException and ExternalException.
|
|
Inliner: Update data collection by targeting a single inline
|
|
ARM64: In GetDelegateTarget a portion of the _WIN64 code was under _T…
|
|
On recent builds of Windows/PowerShell it seems like PS wants to write a
prompt after invoking the script, which causes a problem because that puts
extra gunk into the generated source file from h2inc, which causes
downstream failures.
|
|
Refactor top-level comma rewriting.
|
|
|
|
The inliner currently will record detailed data about the last successful
inline performed (given a build with DEBUG or INLINE_DATA defined).
However, for purposes of inline profitability analysis we might be more
interested in the data from an earlier inline.
This change creates a mechanism where the replay log can flag one inline
per method as the target of data collection. The inliner checks for this
attribute during replay and captures that inline's data.
|
|
Top-level commas were being handled in three separate parts of
rationalize: TreeTransformRationalization, RewriteSimpleTransforms,
and DoPhase. Furthermore, the transform performed by the latter
was distinct from the transforms performed by the former two parts,
as those parts called out to RewriteTopLevelComma in order to do
the necessary rewrite. This change collects the two transforms
in RewriteTopLevelComma and centralizes the comma handling in
RewriteSimpleTransforms.
With the comma handling centralized in RewriteSimpleTransforms,
TreeTransformRationalization was not doing much of anything, so
it has been removed and RewriteSimpleTransforms renamed to
TreeTransformRationalization.
|
|
This patch fixes regression caused by 597e160 commit.
Previous PAL_VirtualUnwind does not set CONTEXT_UNWOUND_TO_CALL
properly. In this patch, the flag is added for non-signaled exception.
|
|
being displayed. (#6241)
The argument bLineNumbers to FormatGeneratedException was being used a local flag.
|
|
* Expose missing members of Array to prep for dotnet/corefx#9998. modelgen.exe is helpful.
* Remove dead code
* Implement Array.LongLength.
* Revert "Implement Array.LongLength."
This reverts commit fdf7e96172d3b816551b827b6a45fbc692b0551d.
* Revert "Remove dead code"
This reverts commit 432087c2d6f826db93fa30a07476dc2decb12633.
* Expose Array.GetLongLength from VM
|
|
_TARGET_AMD64_ whereas at other places (like NDirectStubLinker::DoNDirect & InlinedCallFrame::HasFunction ) related code is under _WIN64. Make the code in GetDelegateTarget to be in sync with other functions and remove ifdef _TARGET_ADM64_. Without this change for arm64 InlinedCallFrame::m_datum stores unmanaged target pointer but StackWalker assumes it to be a NDirectMethodDesc and tries to dereference it and crashes.
|
|
Fix for #5877: pre-spill just the floating arguments
|
|
Implement GT_NEG decomposition
|
|
Refactor and cleanup work for passing and returning struct types
|
|
I've removed blocks with PAL_TRY that were under CATCH_GC. I also had to
fix contract problem in GCToEEInterface::GcStartWork that was marked as
THROWS due to StubHelpers::ProcessByrefValidationList being marked as
THROWS, but the StubHelpers::ProcessByrefValidationList in fact doesn't
throw since it has body wrapped in EX_TRY / EX_CATCH.
This also fixes a problem that started to appear after my previous exceptions
fix change.
|
|
|
|
Replaces argOrReturnTypeForStruct with two new methods:
getArgTypeForStruct - Provides information on how to pass a struct type
getReturnTypeForStruct - Provides information on how to return a struct type
A struct can be passed or return in the following different ways:
1. A struct type may be passed/returned as a primitive type when its size is small
2. A struct type may be passed/returned by reference to a copy
3. A struct type may be passed/returned by value using multiple registers
4. A struct type may be passed by value using a copy on the stack
Incorporated code review feedback with expanded comments.
|
|
Remove dead code in Rationalize.
|
|
Most of the removed code deals with QMARK rewriting. These nodes
are now rewritten as part of fgMorph, so the rationalizer does not
need to deal with them (other than asserting that they do not
exist).
Other dead code:
- The `Rationalizations` type
- A few split-related declarations and helpers
|
|
Inliner: add depth check to ModelPolicy
|
|
Fix a misleading typo in comment
|
|
Refactor RyuJIT/x86 long decomposition code
|
|
Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
|
|
|
|
All decomposition code is now in decompose.cpp, in a Decompose class.
Each node type that is decomposed has its own member function to do
the decomposition. Various helpers have been added to reduce code
duplication. In general, though, the code is as it was before.
|
|
Give the ModelPolicy the standard depth bailout logic. This mainly
serves to prevent runaway inlining for recursive methods marked with
AggressiveInlining attributes.
|
|
Inliner: updates to ModelPolicy
|
|
Merge changes from TFS
|
|
Updates to bring CS and TP impact of the ModelPolicy into more acceptable
ranges.
For CS, reduce the call site weights to values that are more in keeping
with the legacy policy weights. Local test runs show this does not
drastically alter CQ and brings CS down below LegacyPolicy levels, on
average.
Implement an early out rejection based solely on ILSize. The threshold
value is set by conservatively determining when ILSize alone indicates
the method in question will never be inlined (note the policy itself
does not have an explicit ILSize cutoff). See comments for
`ModelPolicy::NoteInt` for details. Note if we adjust the model's size
and profitability estimates, this threshould will also need updating.
CQ (as measured by the CoreCLR perf tests) continues to show about a
2.5% geomean improvement over LegacyPolicy.
|
|
The GC code in general doesn't expect exceptions to be thrown from functions
it calls. However, the event creation functions were in fact throwing, so
in case of OOM, exception would be thrown from various places of the code.
This change creates non-throwing versions of the event creation functions
and replaces all usages of the throwing ones in the GC.
In addition, I've removed blocks with PAL_TRY that were under NO_CATCH_HANDLERS
define and also added Object::SetAppDomainNoThrow, which allowed me to removed
EX_TRY from GCHeap::StressHeap where the Object::SetAppDomain was called before.
|
|
Fix some typos in comments
|
|
Fix SOS bpmd for windows
|
|
Optimize use of a reg-optional lclVar that is marked for both reload and spillAfter
|
|
|