-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove Helper Method Frames (HMF) from Reflection #109996
Remove Helper Method Frames (HMF) from Reflection #109996
Conversation
@EgorBot -intel -arm64 -perf
|
@EgorBot -x64 -arm64 -profiler using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
public class Bench
{
struct S;
[Benchmark]
public Type Nested() => typeof(S).DeclaringType;
[Benchmark]
public Type NotNested() => typeof(Bench).DeclaringType;
[Benchmark]
public Type RefElementType() => typeof(Bench[]).GetElementType();
[Benchmark]
public Type ValueElementType() => typeof(S[]).GetElementType();
} |
@AaronRobinsonMSFT the bot complained that |
@EgorBot -x64 -arm64 using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
public class Bench
{
struct S;
[Benchmark]
public Type Nested() => typeof(S).DeclaringType;
[Benchmark]
public Type NotNested() => typeof(Bench).DeclaringType;
[Benchmark]
public Type RefElementType() => typeof(Bench[]).GetElementType();
[Benchmark]
public Type ValueElementType() => typeof(S[]).GetElementType();
} |
@EgorBot -x64 -arm64 -profiler using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
public class Bench
{
struct S;
[Benchmark]
public Type RefElementType() => typeof(Bench[]).GetElementType();
[Benchmark]
public Type ValueElementType() => typeof(S[]).GetElementType();
} |
src/coreclr/System.Private.CoreLib/src/System/RuntimeHandles.cs
Outdated
Show resolved
Hide resolved
src/coreclr/System.Private.CoreLib/src/System/RuntimeHandles.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you!
@jkotas Looks like removing that I'll investigate the x86 leg tomorrow. |
This is failing in all PRs: #110127 |
The failures are caused by the linker assuming that instances of The The problem is caused by the fact that the runtime allocates |
1cd7f1d
to
cab3575
Compare
/ba-g "Failure is dotnet/dnceng#3879. Not waiting for timeout." |
Convert RuntimeMethodHandle.GetDeclaringType() to managed and QCall. Convert RuntimeTypeHandle.GetElementType() to managed. Correct nullability in signature and usage. Convert RuntimeTypeHandle.GetDeclaringType() to managed and QCalls. Remove GetRuntimeTypeHelper(). Root RuntimeAssembly and RuntimeType constructors.
Convert
RuntimeMethodHandle.GetDeclaringType()
to managed and QCall.Convert
RuntimeTypeHandle.GetElementType()
to managed.Correct nullability in signature and usage.
Convert
RuntimeTypeHandle.GetDeclaringType()
to managed and QCalls.Remove
GetRuntimeTypeHelper()
.