Skip to content

Commit

Permalink
Remove FCThrowRes from AssemblyNative::IsDynamic (dotnet#107574)
Browse files Browse the repository at this point in the history
  • Loading branch information
elinor-fung committed Sep 10, 2024
1 parent 5cb6a06 commit 1808129
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -584,9 +584,17 @@ private CultureInfo GetLocale()
}

[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool FCallIsDynamic(RuntimeAssembly assembly);
private static extern bool GetIsDynamic(IntPtr assembly);

public override bool IsDynamic => FCallIsDynamic(this);
public override bool IsDynamic
{
get
{
bool isDynamic = GetIsDynamic(GetUnderlyingNativeHandle());
GC.KeepAlive(this); // We directly pass the native handle above - make sure this object stays alive for the call
return isDynamic;
}
}

[LibraryImport(RuntimeHelpers.QCall, EntryPoint = "AssemblyNative_GetSimpleName")]
private static partial void GetSimpleName(QCallAssembly assembly, StringHandleOnStack retSimpleName);
Expand Down
16 changes: 8 additions & 8 deletions src/coreclr/vm/assemblynative.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -513,16 +513,16 @@ extern "C" void QCALLTYPE AssemblyNative_GetForwardedType(QCall::AssemblyHandle
END_QCALL;
}

FCIMPL1(FC_BOOL_RET, AssemblyNative::IsDynamic, AssemblyBaseObject* pAssemblyUNSAFE)
FCIMPL1(FC_BOOL_RET, AssemblyNative::GetIsDynamic, Assembly* pAssembly)
{
FCALL_CONTRACT;

ASSEMBLYREF refAssembly = (ASSEMBLYREF)ObjectToOBJECTREF(pAssemblyUNSAFE);

if (refAssembly == NULL)
FCThrowRes(kArgumentNullException, W("Arg_InvalidHandle"));
CONTRACTL
{
FCALL_CHECK;
PRECONDITION(CheckPointer(pAssembly));
}
CONTRACTL_END;

FC_RETURN_BOOL(refAssembly->GetAssembly()->GetPEAssembly()->IsReflectionEmit());
FC_RETURN_BOOL(pAssembly->GetPEAssembly()->IsReflectionEmit());
}
FCIMPLEND

Expand Down
6 changes: 1 addition & 5 deletions src/coreclr/vm/assemblynative.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,6 @@ class CustomAssemblyBinder;

class AssemblyNative
{
friend class Assembly;
friend class BaseDomain;
friend class DomainAssembly;

public:

static Assembly* LoadFromPEImage(AssemblyBinder* pBinder, PEImage *pImage, bool excludeAppPaths = false);
Expand All @@ -35,7 +31,7 @@ class AssemblyNative
//

static
FCDECL1(FC_BOOL_RET, IsDynamic, AssemblyBaseObject * pAssemblyUNSAFE);
FCDECL1(FC_BOOL_RET, GetIsDynamic, Assembly* pAssembly);
};

extern "C" uint32_t QCALLTYPE AssemblyNative_GetAssemblyCount();
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/vm/ecalllist.h
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ FCFuncStart(gCOMModuleHandleFuncs)
FCFuncEnd()

FCFuncStart(gRuntimeAssemblyFuncs)
FCFuncElement("FCallIsDynamic", AssemblyNative::IsDynamic)
FCFuncElement("GetIsDynamic", AssemblyNative::GetIsDynamic)
FCFuncElement("GetManifestModule", AssemblyHandle::GetManifestModule)
FCFuncElement("GetToken", AssemblyHandle::GetToken)
FCFuncEnd()
Expand Down

0 comments on commit 1808129

Please sign in to comment.