Skip to content

Commit

Permalink
Remove IAssemblyName (and various fusion remnants) (#50755)
Browse files Browse the repository at this point in the history
  • Loading branch information
elinor-fung authored Apr 7, 2021
1 parent 52f9867 commit f6b344b
Show file tree
Hide file tree
Showing 48 changed files with 552 additions and 2,357 deletions.
5 changes: 0 additions & 5 deletions src/coreclr/binder/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,9 @@ set(BINDER_COMMON_SOURCES
clrprivbindercoreclr.cpp
coreclrbindercommon.cpp
failurecache.cpp
fusionassemblyname.cpp
stringlexer.cpp
textualidentityparser.cpp
utils.cpp
variables.cpp
)

set(BINDER_COMMON_HEADERS
Expand All @@ -42,15 +40,12 @@ set(BINDER_COMMON_HEADERS
inc/coreclrbindercommon.h
inc/failurecache.hpp
inc/failurecachehashtraits.hpp
inc/fusionassemblyname.hpp
inc/fusionhelpers.hpp
inc/loadcontext.hpp
inc/loadcontext.inl
inc/stringlexer.hpp
inc/stringlexer.inl
inc/textualidentityparser.hpp
inc/utils.hpp
inc/variables.hpp
)

set(BINDER_SOURCES
Expand Down
1 change: 0 additions & 1 deletion src/coreclr/binder/applicationcontext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
#include "failurecache.hpp"
#include "assemblyidentitycache.hpp"
#include "utils.hpp"
#include "variables.hpp"
#include "ex.h"
#include "clr/fs/path.h"
using namespace clr::fs;
Expand Down
4 changes: 2 additions & 2 deletions src/coreclr/binder/assembly.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -182,9 +182,9 @@ namespace BINDER_SPACE
return (pAsmName == nullptr ? nullptr : (LPCWSTR)pAsmName->GetSimpleName());
}

HRESULT Assembly::BindAssemblyByName(IAssemblyName * pIAssemblyName, ICLRPrivAssembly ** ppAssembly)
HRESULT Assembly::BindAssemblyByName(AssemblyNameData *pAssemblyNameData, ICLRPrivAssembly ** ppAssembly)
{
return (m_pBinder == NULL) ? E_FAIL : m_pBinder->BindAssemblyByName(pIAssemblyName, ppAssembly);
return (m_pBinder == NULL) ? E_FAIL : m_pBinder->BindAssemblyByName(pAssemblyNameData, ppAssembly);
}

HRESULT Assembly::GetBinderID(UINT_PTR *pBinderId)
Expand Down
61 changes: 14 additions & 47 deletions src/coreclr/binder/assemblybinder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,20 @@
#include "bindresult.inl"
#include "failurecache.hpp"
#include "utils.hpp"
#include "variables.hpp"
#include "stringarraylist.h"
#include "configuration.h"

#define APP_DOMAIN_LOCKED_UNLOCKED 0x02
#define APP_DOMAIN_LOCKED_CONTEXT 0x04

#ifndef IMAGE_FILE_MACHINE_ARM64
#define IMAGE_FILE_MACHINE_ARM64 0xAA64 // ARM64 Little-Endian
#endif

BOOL IsCompilationProcess();

#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
#include "clrprivbindercoreclr.h"
#include "clrprivbinderassemblyloadcontext.h"
// Helper function in the VM, invoked by the Binder, to invoke the host assembly resolver
extern HRESULT RuntimeInvokeHostAssemblyResolver(INT_PTR pManagedAssemblyLoadContextToBindWithin,
IAssemblyName *pIAssemblyName, CLRPrivBinderCoreCLR *pTPABinder,
BINDER_SPACE::AssemblyName *pAssemblyName, ICLRPrivAssembly **ppLoadedAssembly);
BINDER_SPACE::AssemblyName *pAssemblyName,
CLRPrivBinderCoreCLR *pTPABinder,
ICLRPrivAssembly **ppLoadedAssembly);

#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)

Expand Down Expand Up @@ -112,12 +106,13 @@ namespace BINDER_SPACE
return true;
}

const WCHAR* s_httpURLPrefix = W("http://");
HRESULT URLToFullPath(PathString &assemblyPath)
{
HRESULT hr = S_OK;

SString::Iterator pos = assemblyPath.Begin();
if (assemblyPath.MatchCaseInsensitive(pos, g_BinderVariables->httpURLPrefix))
if (assemblyPath.MatchCaseInsensitive(pos, s_httpURLPrefix))
{
// HTTP downloads are unsupported
hr = FUSION_E_CODE_DOWNLOAD_DISABLED;
Expand Down Expand Up @@ -186,23 +181,6 @@ namespace BINDER_SPACE
#endif // !CROSSGEN_COMPILE
};

/* static */
HRESULT AssemblyBinder::Startup()
{
STATIC_CONTRACT_NOTHROW;

HRESULT hr = S_OK;

// This should only be called once
_ASSERTE(g_BinderVariables == NULL);
g_BinderVariables = new Variables();
IF_FAIL_GO(g_BinderVariables->Init());

Exit:
return hr;
}


HRESULT AssemblyBinder::TranslatePEToArchitectureType(DWORD *pdwPAFlags, PEKIND *PeKind)
{
HRESULT hr = S_OK;
Expand Down Expand Up @@ -296,6 +274,7 @@ namespace BINDER_SPACE

if (szCodeBase == NULL)
{
_ASSERTE(pAssemblyName != NULL);
IF_FAIL_GO(BindByName(pApplicationContext,
pAssemblyName,
false, // skipFailureCaching
Expand Down Expand Up @@ -372,9 +351,6 @@ namespace BINDER_SPACE
Assembly **ppSystemAssembly,
bool fBindToNativeImage)
{
// Indirect check that binder was initialized.
_ASSERTE(g_BinderVariables != NULL);

HRESULT hr = S_OK;

_ASSERTE(ppSystemAssembly != NULL);
Expand Down Expand Up @@ -468,9 +444,6 @@ namespace BINDER_SPACE
SString& cultureName,
Assembly** ppSystemAssembly)
{
// Indirect check that binder was initialized.
_ASSERTE(g_BinderVariables != NULL);

HRESULT hr = S_OK;

_ASSERTE(ppSystemAssembly != NULL);
Expand Down Expand Up @@ -781,8 +754,7 @@ namespace BINDER_SPACE

if (!tpaListAssembly)
{
SString &culture = pRequestedAssemblyName->GetCulture();
if (culture.IsEmpty() || culture.EqualsCaseInsensitive(g_BinderVariables->cultureNeutral))
if (pRequestedAssemblyName->IsNeutralCulture())
{
dwIncludeFlags |= AssemblyName::EXCLUDE_CULTURE;
}
Expand Down Expand Up @@ -912,10 +884,10 @@ namespace BINDER_SPACE
// names as platform ones.

HRESULT hr = S_OK;
SString& simpleNameRef = pRequestedAssemblyName->GetSimpleName();
const SString& simpleNameRef = pRequestedAssemblyName->GetSimpleName();
SString& cultureRef = pRequestedAssemblyName->GetCulture();

_ASSERTE(!cultureRef.IsEmpty() && !cultureRef.EqualsCaseInsensitive(g_BinderVariables->cultureNeutral));
_ASSERTE(!pRequestedAssemblyName->IsNeutralCulture());

ReleaseHolder<Assembly> pAssembly;
SString fileName;
Expand Down Expand Up @@ -956,7 +928,7 @@ namespace BINDER_SPACE
bool useNativeImages,
Assembly **ppAssembly)
{
SString &simpleName = pRequestedAssemblyName->GetSimpleName();
const SString &simpleName = pRequestedAssemblyName->GetSimpleName();
BinderTracing::PathSource pathSource = useNativeImages ? BinderTracing::PathSource::AppNativeImagePaths : BinderTracing::PathSource::AppPaths;
// Loop through the binding paths looking for a matching assembly
for (DWORD i = 0; i < pBindingPaths->GetCount(); i++)
Expand Down Expand Up @@ -1045,17 +1017,16 @@ namespace BINDER_SPACE
{
HRESULT hr = S_OK;

SString &culture = pRequestedAssemblyName->GetCulture();
bool fPartialMatchOnTpa = false;

if (!culture.IsEmpty() && !culture.EqualsCaseInsensitive(g_BinderVariables->cultureNeutral))
if (!pRequestedAssemblyName->IsNeutralCulture())
{
IF_FAIL_GO(BindSatelliteResource(pApplicationContext, pRequestedAssemblyName, pBindResult));
}
else
{
ReleaseHolder<Assembly> pTPAAssembly;
SString& simpleName = pRequestedAssemblyName->GetSimpleName();
const SString& simpleName = pRequestedAssemblyName->GetSimpleName();

// Is assembly in the bundle?
// Single-file bundle contents take precedence over TPA.
Expand Down Expand Up @@ -1436,7 +1407,6 @@ namespace BINDER_SPACE
#if !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
HRESULT AssemblyBinder::BindUsingHostAssemblyResolver(/* in */ INT_PTR pManagedAssemblyLoadContextToBindWithin,
/* in */ AssemblyName *pAssemblyName,
/* in */ IAssemblyName *pIAssemblyName,
/* in */ CLRPrivBinderCoreCLR *pTPABinder,
/* out */ Assembly **ppAssembly)
{
Expand All @@ -1446,8 +1416,8 @@ HRESULT AssemblyBinder::BindUsingHostAssemblyResolver(/* in */ INT_PTR pManagedA

// RuntimeInvokeHostAssemblyResolver will perform steps 2-4 of CLRPrivBinderAssemblyLoadContext::BindAssemblyByName.
ICLRPrivAssembly *pLoadedAssembly = NULL;
hr = RuntimeInvokeHostAssemblyResolver(pManagedAssemblyLoadContextToBindWithin, pIAssemblyName,
pTPABinder, pAssemblyName, &pLoadedAssembly);
hr = RuntimeInvokeHostAssemblyResolver(pManagedAssemblyLoadContextToBindWithin,
pAssemblyName, pTPABinder, &pLoadedAssembly);
if (SUCCEEDED(hr))
{
_ASSERTE(pLoadedAssembly != NULL);
Expand All @@ -1467,9 +1437,6 @@ HRESULT AssemblyBinder::BindUsingPEImage(/* in */ ApplicationContext *pApplicat
{
HRESULT hr = E_FAIL;

// Indirect check that binder was initialized.
_ASSERTE(g_BinderVariables != NULL);

LONG kContextVersion = 0;
BindResult bindResult;

Expand Down
Loading

0 comments on commit f6b344b

Please sign in to comment.