Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Strehovský <MichalStrehovsky@users.noreply.github.com>2017-04-12 20:32:53 +0300
committerGitHub <noreply@github.com>2017-04-12 20:32:53 +0300
commit1860d048f1c85659bbec473b94bc03f2c72510e7 (patch)
treed39d8de17df191c07fbff6db892dc5d7f5ccfc8d /src/System.Private.Jit
parent725507d4f871b83f0b9ff22c1edf02544b8667aa (diff)
Make DelegateCtor R2R helper perform virtual resolution (#2928)
Update the compiler to be able to leverage the newly added RyuJIT capabilities around delegate constructions. In the past, RyuJIT would only ask for the construction helper for the simplest cases (target method is not virtual, and no generic runtime lookup is needed). It would call the actual constructor method for everything else. With updated RyuJIT, we can now use the helper in all cases (if the construction pattern is verifiable). The change is bigger than I would like because: * We needed to update `DelegateCreationInfo` to capture the fact that the target of the delegate can now be runtime determined * There was an unimplemented feature around fat function pointers looked up from dictionaries (we couldn't express that the fat function pointer should point to the unboxing stub). * `ShadowConcreteMethod` didn't work great with unboxing stubs. I just made a new node that is a "shadow unboxing stub". * We needed to update both generic and nongeneric ready to run helpers to deal with the new delegate creation patterns. * JitInterface change. * Tests
Diffstat (limited to 'src/System.Private.Jit')
-rw-r--r--src/System.Private.Jit/src/Internal/Runtime/JitSupport/JitCompilation.cs4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/System.Private.Jit/src/Internal/Runtime/JitSupport/JitCompilation.cs b/src/System.Private.Jit/src/Internal/Runtime/JitSupport/JitCompilation.cs
index fa6763201..52bc25701 100644
--- a/src/System.Private.Jit/src/Internal/Runtime/JitSupport/JitCompilation.cs
+++ b/src/System.Private.Jit/src/Internal/Runtime/JitSupport/JitCompilation.cs
@@ -97,9 +97,9 @@ namespace ILCompiler
return intrinsicMethod;
}
- public DelegateCreationInfo GetDelegateCtor(TypeDesc delegateType, MethodDesc target)
+ public DelegateCreationInfo GetDelegateCtor(TypeDesc delegateType, MethodDesc target, bool followVirtualDispatch)
{
- return DelegateCreationInfo.Create(delegateType, target, NodeFactory);
+ return DelegateCreationInfo.Create(delegateType, target, NodeFactory, followVirtualDispatch);
}
}
} \ No newline at end of file