Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,10 @@ public void EmitTypeSignature(TypeDesc typeDesc, SignatureContext context)
EmitPointerTypeSignature((PointerType)typeDesc, context);
return;

case TypeFlags.FunctionPointer:
EmitFunctionPointerTypeSignature((FunctionPointerType)typeDesc, context);
return;

case TypeFlags.ByRef:
EmitByRefTypeSignature((ByRefType)typeDesc, context);
break;
Expand Down Expand Up @@ -366,6 +370,22 @@ private void EmitPointerTypeSignature(PointerType type, SignatureContext context
EmitTypeSignature(type.ParameterType, context);
}

private void EmitFunctionPointerTypeSignature(FunctionPointerType type, SignatureContext context)
{
SignatureCallingConvention callingConvention = (SignatureCallingConvention)(type.Signature.Flags & MethodSignatureFlags.UnmanagedCallingConventionMask);
SignatureAttributes callingConventionAttributes = ((type.Signature.Flags & MethodSignatureFlags.Static) != 0 ? SignatureAttributes.None : SignatureAttributes.Instance);

Comment thread
jkotas marked this conversation as resolved.
EmitElementType(CorElementType.ELEMENT_TYPE_FNPTR);
EmitUInt((uint)((byte)callingConvention | (byte)callingConventionAttributes));
EmitUInt((uint)type.Signature.Length);

EmitTypeSignature(type.Signature.ReturnType, context);
for (int argIndex = 0; argIndex < type.Signature.Length; argIndex++)
{
EmitTypeSignature(type.Signature[argIndex], context);
}
}

private void EmitByRefTypeSignature(ByRefType type, SignatureContext context)
{
EmitElementType(CorElementType.ELEMENT_TYPE_BYREF);
Expand Down
3 changes: 0 additions & 3 deletions src/tests/issues.targets
Original file line number Diff line number Diff line change
Expand Up @@ -925,9 +925,6 @@
<ExcludeList Include="$(XunitTestBinBase)/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part2_r/*">
<Issue>https://github.com/dotnet/runtime/issues/63856</Issue>
</ExcludeList>
<ExcludeList Include="$(XunitTestBinBase)/JIT/opt/ValueNumbering/TypeTestFolding/*">
<Issue>https://github.com/dotnet/runtime/issues/72822</Issue>
</ExcludeList>
</ItemGroup>

<!-- NativeAOT specific -->
Expand Down