summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/System.Private.CoreLib/Resources/Strings.resx18
-rw-r--r--src/System.Private.CoreLib/src/System/Reflection/CustomAttribute.cs6
-rw-r--r--src/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs6
-rw-r--r--src/System.Private.CoreLib/src/System/Reflection/RtFieldInfo.cs16
-rw-r--r--src/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.cs9
-rw-r--r--src/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.cs11
-rw-r--r--src/System.Private.CoreLib/src/System/RtType.cs35
-rw-r--r--src/System.Private.CoreLib/src/System/RuntimeHandles.cs10
-rw-r--r--src/System.Private.CoreLib/src/System/Type.CoreCLR.cs6
-rw-r--r--src/System.Private.CoreLib/src/System/TypeNameParser.cs2
-rw-r--r--src/dlls/mscorrc/mscorrc.rc7
-rw-r--r--src/dlls/mscorrc/resource.h7
-rw-r--r--src/vm/appdomain.cpp51
-rw-r--r--src/vm/appdomain.hpp9
-rw-r--r--src/vm/appdomainnative.cpp6
-rw-r--r--src/vm/assembly.cpp8
-rw-r--r--src/vm/assembly.hpp9
-rw-r--r--src/vm/assemblyname.cpp8
-rw-r--r--src/vm/assemblynative.cpp7
-rw-r--r--src/vm/assemblyspec.cpp42
-rw-r--r--src/vm/assemblyspec.hpp12
-rw-r--r--src/vm/baseassemblyspec.h17
-rw-r--r--src/vm/ceeload.cpp28
-rw-r--r--src/vm/ceeload.h2
-rw-r--r--src/vm/clsload.cpp102
-rw-r--r--src/vm/comcallablewrapper.cpp3
-rw-r--r--src/vm/commodule.cpp2
-rw-r--r--src/vm/compile.cpp8
-rw-r--r--src/vm/compile.h1
-rw-r--r--src/vm/crossgencompile.cpp2
-rw-r--r--src/vm/dispatchinfo.cpp3
-rw-r--r--src/vm/domainfile.cpp16
-rw-r--r--src/vm/domainfile.h2
-rw-r--r--src/vm/excep.cpp1
-rw-r--r--src/vm/frameworkexceptionloader.cpp2
-rw-r--r--src/vm/genmeth.cpp3
-rw-r--r--src/vm/interoputil.cpp10
-rw-r--r--src/vm/marshalnative.cpp18
-rw-r--r--src/vm/method.cpp7
-rw-r--r--src/vm/method.hpp1
-rw-r--r--src/vm/methodtable.cpp43
-rw-r--r--src/vm/methodtable.h5
-rw-r--r--src/vm/mlinfo.cpp14
-rw-r--r--src/vm/mngstdinterfaces.cpp4
-rw-r--r--src/vm/mscorlib.h2
-rw-r--r--src/vm/pefile.cpp74
-rw-r--r--src/vm/pefile.h14
-rw-r--r--src/vm/pefile.inl20
-rw-r--r--src/vm/peimage.cpp34
-rw-r--r--src/vm/peimage.h11
-rw-r--r--src/vm/peimage.inl21
-rw-r--r--src/vm/prestub.cpp10
-rw-r--r--src/vm/profilingenumerators.cpp2
-rw-r--r--src/vm/readytoruninfo.cpp7
-rw-r--r--src/vm/reflectioninvocation.cpp24
-rw-r--r--src/vm/runtimehandles.cpp4
-rw-r--r--src/vm/runtimehandles.h2
-rw-r--r--src/vm/siginfo.cpp8
-rw-r--r--src/vm/typedesc.cpp57
-rw-r--r--src/vm/typedesc.h7
-rw-r--r--src/vm/typehandle.cpp108
-rw-r--r--src/vm/typehandle.h6
-rw-r--r--src/vm/typekey.h5
-rw-r--r--src/vm/typeparse.cpp42
-rw-r--r--src/vm/typeparse.h7
-rw-r--r--src/vm/typestring.h2
-rw-r--r--src/vm/zapsig.cpp3
67 files changed, 182 insertions, 867 deletions
diff --git a/src/System.Private.CoreLib/Resources/Strings.resx b/src/System.Private.CoreLib/Resources/Strings.resx
index b1cba1672d..4f721b7896 100644
--- a/src/System.Private.CoreLib/Resources/Strings.resx
+++ b/src/System.Private.CoreLib/Resources/Strings.resx
@@ -682,15 +682,6 @@
<data name="Arg_RanksAndBounds" xml:space="preserve">
<value>Number of lengths and lowerBounds must match.</value>
</data>
- <data name="Arg_ReflectionOnlyCA" xml:space="preserve">
- <value>It is illegal to reflect on the custom attributes of a Type loaded via ReflectionOnlyGetType (see Assembly.ReflectionOnly) -- use CustomAttributeData instead.</value>
- </data>
- <data name="Arg_ReflectionOnlyField" xml:space="preserve">
- <value>It is illegal to get or set the value on a field on a Type loaded via ReflectionOnlyGetType.</value>
- </data>
- <data name="Arg_ReflectionOnlyInvoke" xml:space="preserve">
- <value>It is illegal to invoke a method on a Type loaded via ReflectionOnlyGetType.</value>
- </data>
<data name="Arg_RegBadKeyKind" xml:space="preserve">
<value>The specified RegistryValueKind is an invalid value.</value>
</data>
@@ -1921,12 +1912,6 @@
<data name="ArrayTypeMismatch_ConstrainedCopy" xml:space="preserve">
<value>Array.ConstrainedCopy will only work on array types that are provably compatible, without any form of boxing, unboxing, widening, or casting of each array element. Change the array types (i.e., copy a Derived[] to a Base[]), or use a mitigation strategy in the CER for Array.Copy's less powerful reliability contract, such as cloning the array or throwing away the potentially corrupt destination array.</value>
</data>
- <data name="Arugment_EmitMixedContext1" xml:space="preserve">
- <value>Type '{0}' was loaded in the ReflectionOnly context but the AssemblyBuilder was not created as AssemblyBuilderAccess.ReflectionOnly.</value>
- </data>
- <data name="Arugment_EmitMixedContext2" xml:space="preserve">
- <value>Type '{0}' was not loaded in the ReflectionOnly context but the AssemblyBuilder was created as AssemblyBuilderAccess.ReflectionOnly.</value>
- </data>
<data name="AssertionFailed" xml:space="preserve">
<value>Assertion failed.</value>
</data>
@@ -2575,9 +2560,6 @@
<data name="InvalidOperation_NotAllowedInDynamicMethod" xml:space="preserve">
<value>The requested operation is invalid for DynamicMethod.</value>
</data>
- <data name="InvalidOperation_NotAllowedInReflectionOnly" xml:space="preserve">
- <value>The requested operation is invalid in the ReflectionOnly context.</value>
- </data>
<data name="InvalidOperation_NotAVarArgCallingConvention" xml:space="preserve">
<value>Calling convention must be VarArgs.</value>
</data>
diff --git a/src/System.Private.CoreLib/src/System/Reflection/CustomAttribute.cs b/src/System.Private.CoreLib/src/System/Reflection/CustomAttribute.cs
index b8e1573187..767fadf411 100644
--- a/src/System.Private.CoreLib/src/System/Reflection/CustomAttribute.cs
+++ b/src/System.Private.CoreLib/src/System/Reflection/CustomAttribute.cs
@@ -1435,9 +1435,6 @@ namespace System.Reflection
private static bool IsCustomAttributeDefined(
RuntimeModule decoratedModule, int decoratedMetadataToken, RuntimeType attributeFilterType, int attributeCtorToken, bool mustBeInheritable)
{
- if (decoratedModule.Assembly.ReflectionOnly)
- throw new InvalidOperationException(SR.Arg_ReflectionOnlyCA);
-
CustomAttributeRecord[] car = CustomAttributeData.GetCustomAttributeRecords(decoratedModule, decoratedMetadataToken);
if (attributeFilterType != null)
@@ -1490,9 +1487,6 @@ namespace System.Reflection
RuntimeModule decoratedModule, int decoratedMetadataToken, int pcaCount,
RuntimeType attributeFilterType, bool mustBeInheritable, IList derivedAttributes)
{
- if (decoratedModule.Assembly.ReflectionOnly)
- throw new InvalidOperationException(SR.Arg_ReflectionOnlyCA);
-
MetadataImport scope = decoratedModule.MetadataImport;
CustomAttributeRecord[] car = CustomAttributeData.GetCustomAttributeRecords(decoratedModule, decoratedMetadataToken);
diff --git a/src/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs
index 59d906a340..aa9dcaced3 100644
--- a/src/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs
+++ b/src/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs
@@ -441,12 +441,6 @@ namespace System.Reflection.Emit
if (type.Module.Assembly == typeof(object).Module.Assembly)
continue;
-
- if (type.Module.Assembly.ReflectionOnly && !ReflectionOnly)
- throw new InvalidOperationException(SR.Format(SR.Arugment_EmitMixedContext1, type.AssemblyQualifiedName));
-
- if (!type.Module.Assembly.ReflectionOnly && ReflectionOnly)
- throw new InvalidOperationException(SR.Format(SR.Arugment_EmitMixedContext2, type.AssemblyQualifiedName));
}
}
diff --git a/src/System.Private.CoreLib/src/System/Reflection/RtFieldInfo.cs b/src/System.Private.CoreLib/src/System/Reflection/RtFieldInfo.cs
index 6172ec469a..1be551cbd0 100644
--- a/src/System.Private.CoreLib/src/System/Reflection/RtFieldInfo.cs
+++ b/src/System.Private.CoreLib/src/System/Reflection/RtFieldInfo.cs
@@ -28,16 +28,11 @@ namespace System.Reflection
if ((m_invocationFlags & INVOCATION_FLAGS.INVOCATION_FLAGS_INITIALIZED) == 0)
{
Type declaringType = DeclaringType;
- bool fIsReflectionOnlyType = (declaringType is ReflectionOnlyType);
INVOCATION_FLAGS invocationFlags = 0;
// first take care of all the NO_INVOKE cases
- if (
- (declaringType != null && declaringType.ContainsGenericParameters) ||
- (declaringType == null && Module.Assembly.ReflectionOnly) ||
- (fIsReflectionOnlyType)
- )
+ if (declaringType != null && declaringType.ContainsGenericParameters)
{
invocationFlags |= INVOCATION_FLAGS.INVOCATION_FLAGS_NO_INVOKE;
}
@@ -132,9 +127,6 @@ namespace System.Reflection
if (declaringType != null && declaringType.ContainsGenericParameters)
throw new InvalidOperationException(SR.Arg_UnboundGenField);
- if ((declaringType == null && Module.Assembly.ReflectionOnly) || declaringType is ReflectionOnlyType)
- throw new InvalidOperationException(SR.Arg_ReflectionOnlyField);
-
throw new FieldAccessException();
}
@@ -195,9 +187,6 @@ namespace System.Reflection
if (declaringType != null && DeclaringType.ContainsGenericParameters)
throw new InvalidOperationException(SR.Arg_UnboundGenField);
- if ((declaringType == null && Module.Assembly.ReflectionOnly) || declaringType is ReflectionOnlyType)
- throw new InvalidOperationException(SR.Arg_ReflectionOnlyField);
-
throw new FieldAccessException();
}
@@ -317,9 +306,6 @@ namespace System.Reflection
{
get
{
- Type declaringType = DeclaringType;
- if ((declaringType == null && Module.Assembly.ReflectionOnly) || declaringType is ReflectionOnlyType)
- throw new InvalidOperationException(SR.InvalidOperation_NotAllowedInReflectionOnly);
return new RuntimeFieldHandle(this);
}
}
diff --git a/src/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.cs b/src/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.cs
index 02a3d2b1f7..c0f40bfbb1 100644
--- a/src/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.cs
+++ b/src/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.cs
@@ -260,9 +260,6 @@ namespace System.Reflection
{
get
{
- Type declaringType = DeclaringType;
- if ((declaringType == null && Module.Assembly.ReflectionOnly) || declaringType is ReflectionOnlyType)
- throw new InvalidOperationException(SR.InvalidOperation_NotAllowedInReflectionOnly);
return new RuntimeMethodHandle(this);
}
}
@@ -288,12 +285,8 @@ namespace System.Reflection
if (declaringType == null)
throw new ArgumentNullException(nameof(declaringType));
- // ctor is ReflectOnly
- if (declaringType is ReflectionOnlyType)
- throw new InvalidOperationException(SR.Arg_ReflectionOnlyInvoke);
-
// ctor is declared on interface class
- else if (declaringType.IsInterface)
+ if (declaringType.IsInterface)
throw new MemberAccessException(
string.Format(CultureInfo.CurrentUICulture, SR.Acc_CreateInterfaceEx, declaringType));
diff --git a/src/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.cs b/src/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.cs
index 1e7e9de5ca..4591497927 100644
--- a/src/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.cs
+++ b/src/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.cs
@@ -383,9 +383,6 @@ namespace System.Reflection
{
get
{
- Type declaringType = DeclaringType;
- if ((declaringType == null && Module.Assembly.ReflectionOnly) || declaringType is ReflectionOnlyType)
- throw new InvalidOperationException(SR.InvalidOperation_NotAllowedInReflectionOnly);
return new RuntimeMethodHandle(this);
}
}
@@ -427,14 +424,8 @@ namespace System.Reflection
private void ThrowNoInvokeException()
{
- // method is ReflectionOnly
- Type declaringType = DeclaringType;
- if ((declaringType == null && Module.Assembly.ReflectionOnly) || declaringType is ReflectionOnlyType)
- {
- throw new InvalidOperationException(SR.Arg_ReflectionOnlyInvoke);
- }
// method is on a class that contains stack pointers
- else if ((InvocationFlags & INVOCATION_FLAGS.INVOCATION_FLAGS_CONTAINS_STACK_POINTERS) != 0)
+ if ((InvocationFlags & INVOCATION_FLAGS.INVOCATION_FLAGS_CONTAINS_STACK_POINTERS) != 0)
{
throw new NotSupportedException();
}
diff --git a/src/System.Private.CoreLib/src/System/RtType.cs b/src/System.Private.CoreLib/src/System/RtType.cs
index eccb9a7333..cf08651873 100644
--- a/src/System.Private.CoreLib/src/System/RtType.cs
+++ b/src/System.Private.CoreLib/src/System/RtType.cs
@@ -69,7 +69,7 @@ namespace System
FullName,
}
- internal class RuntimeType :
+ internal sealed class RuntimeType :
System.Reflection.TypeInfo, ICloneable
{
#region Definitions
@@ -1754,14 +1754,14 @@ namespace System
#region Static Members
#region Internal
- internal static RuntimeType GetType(string typeName, bool throwOnError, bool ignoreCase, bool reflectionOnly,
+ internal static RuntimeType GetType(string typeName, bool throwOnError, bool ignoreCase,
ref StackCrawlMark stackMark)
{
if (typeName == null)
throw new ArgumentNullException(nameof(typeName));
return RuntimeTypeHandle.GetTypeByName(
- typeName, throwOnError, ignoreCase, reflectionOnly, ref stackMark, false);
+ typeName, throwOnError, ignoreCase, ref stackMark, false);
}
internal static MethodBase GetMethodBase(RuntimeModule scope, int typeMetadataToken)
@@ -4576,9 +4576,6 @@ namespace System
#region Legacy Internal
private void CreateInstanceCheckThis()
{
- if (this is ReflectionOnlyType)
- throw new ArgumentException(SR.Arg_ReflectionOnlyInvoke);
-
if (ContainsGenericParameters)
throw new ArgumentException(
SR.Format(SR.Acc_CreateGenericEx, this));
@@ -4801,9 +4798,6 @@ namespace System
[Diagnostics.DebuggerHidden]
internal object CreateInstanceDefaultCtor(bool publicOnly, bool skipCheckThis, bool fillCache, bool wrapExceptions)
{
- if (GetType() == typeof(ReflectionOnlyType))
- throw new InvalidOperationException(SR.InvalidOperation_NotAllowedInReflectionOnly);
-
ActivatorCache activatorCache = s_ActivatorCache;
if (activatorCache != null)
{
@@ -4893,29 +4887,6 @@ namespace System
#endregion
}
- // this is the introspection only type. This type overrides all the functions with runtime semantics
- // and throws an exception.
- // The idea behind this type is that it relieves RuntimeType from doing honerous checks about ReflectionOnly
- // context.
- // This type should not derive from RuntimeType but it's doing so for convinience.
- // That should not present a security threat though it is risky as a direct call to one of the base method
- // method (RuntimeType) and an instance of this type will work around the reason to have this type in the
- // first place. However given RuntimeType is not public all its methods are protected and require full trust
- // to be accessed
- internal class ReflectionOnlyType : RuntimeType
- {
- private ReflectionOnlyType() { }
-
- // always throw
- public override RuntimeTypeHandle TypeHandle
- {
- get
- {
- throw new InvalidOperationException(SR.InvalidOperation_NotAllowedInReflectionOnly);
- }
- }
- }
-
#region Library
internal unsafe struct MdUtf8String
{
diff --git a/src/System.Private.CoreLib/src/System/RuntimeHandles.cs b/src/System.Private.CoreLib/src/System/RuntimeHandles.cs
index c053ee3fa6..03d9233f59 100644
--- a/src/System.Private.CoreLib/src/System/RuntimeHandles.cs
+++ b/src/System.Private.CoreLib/src/System/RuntimeHandles.cs
@@ -424,17 +424,17 @@ namespace System
}
[DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode)]
- private static extern void GetTypeByName(string name, bool throwOnError, bool ignoreCase, bool reflectionOnly, StackCrawlMarkHandle stackMark,
+ private static extern void GetTypeByName(string name, bool throwOnError, bool ignoreCase, StackCrawlMarkHandle stackMark,
IntPtr pPrivHostBinder,
bool loadTypeFromPartialName, ObjectHandleOnStack type, ObjectHandleOnStack keepalive);
// Wrapper function to reduce the need for ifdefs.
- internal static RuntimeType GetTypeByName(string name, bool throwOnError, bool ignoreCase, bool reflectionOnly, ref StackCrawlMark stackMark, bool loadTypeFromPartialName)
+ internal static RuntimeType GetTypeByName(string name, bool throwOnError, bool ignoreCase, ref StackCrawlMark stackMark, bool loadTypeFromPartialName)
{
- return GetTypeByName(name, throwOnError, ignoreCase, reflectionOnly, ref stackMark, IntPtr.Zero, loadTypeFromPartialName);
+ return GetTypeByName(name, throwOnError, ignoreCase, ref stackMark, IntPtr.Zero, loadTypeFromPartialName);
}
- internal static RuntimeType GetTypeByName(string name, bool throwOnError, bool ignoreCase, bool reflectionOnly, ref StackCrawlMark stackMark,
+ internal static RuntimeType GetTypeByName(string name, bool throwOnError, bool ignoreCase, ref StackCrawlMark stackMark,
IntPtr pPrivHostBinder,
bool loadTypeFromPartialName)
{
@@ -449,7 +449,7 @@ namespace System
RuntimeType type = null;
object keepAlive = null;
- GetTypeByName(name, throwOnError, ignoreCase, reflectionOnly,
+ GetTypeByName(name, throwOnError, ignoreCase,
JitHelpers.GetStackCrawlMarkHandle(ref stackMark),
pPrivHostBinder,
loadTypeFromPartialName, JitHelpers.GetObjectHandleOnStack(ref type), JitHelpers.GetObjectHandleOnStack(ref keepAlive));
diff --git a/src/System.Private.CoreLib/src/System/Type.CoreCLR.cs b/src/System.Private.CoreLib/src/System/Type.CoreCLR.cs
index 9717766f3c..9cbc0b98fb 100644
--- a/src/System.Private.CoreLib/src/System/Type.CoreCLR.cs
+++ b/src/System.Private.CoreLib/src/System/Type.CoreCLR.cs
@@ -25,21 +25,21 @@ namespace System
public static Type GetType(string typeName, bool throwOnError, bool ignoreCase)
{
StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
- return RuntimeType.GetType(typeName, throwOnError, ignoreCase, false, ref stackMark);
+ return RuntimeType.GetType(typeName, throwOnError, ignoreCase, ref stackMark);
}
[System.Security.DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod
public static Type GetType(string typeName, bool throwOnError)
{
StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
- return RuntimeType.GetType(typeName, throwOnError, false, false, ref stackMark);
+ return RuntimeType.GetType(typeName, throwOnError, false, ref stackMark);
}
[System.Security.DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod
public static Type GetType(string typeName)
{
StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
- return RuntimeType.GetType(typeName, false, false, false, ref stackMark);
+ return RuntimeType.GetType(typeName, false, false, ref stackMark);
}
[System.Security.DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod
diff --git a/src/System.Private.CoreLib/src/System/TypeNameParser.cs b/src/System.Private.CoreLib/src/System/TypeNameParser.cs
index 2fe7cec813..3cd904e8a2 100644
--- a/src/System.Private.CoreLib/src/System/TypeNameParser.cs
+++ b/src/System.Private.CoreLib/src/System/TypeNameParser.cs
@@ -247,7 +247,7 @@ namespace System
{
if (assembly == null)
{
- type = RuntimeType.GetType(OuterMostTypeName, throwOnError, ignoreCase, false, ref stackMark);
+ type = RuntimeType.GetType(OuterMostTypeName, throwOnError, ignoreCase, ref stackMark);
}
else
{
diff --git a/src/dlls/mscorrc/mscorrc.rc b/src/dlls/mscorrc/mscorrc.rc
index c18bbe96d9..cf5b6b2b27 100644
--- a/src/dlls/mscorrc/mscorrc.rc
+++ b/src/dlls/mscorrc/mscorrc.rc
@@ -825,8 +825,6 @@ BEGIN
IDS_EE_DUPLICATE_DECLSEC "Multiple permission sets specified with the same SecurityAction."
IDS_EE_SAFEARRAYSZARRAYMISMATCH "SafeArray cannot be marshaled to this array type because it has either nonzero lower bounds or more than one dimension."
- IDS_EE_REFLECTIONONLYGETTYPE_NOASSEMBLY "Explicit assembly name must be specified when loading a type as ReflectionOnly"
- IDS_EE_REFLECTIONONLY_LOADFAILURE "Cannot resolve dependency to assembly '%1' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event."
IDS_EE_WINRT_LOADFAILURE "Could not find Windows Runtime type '%1'."
IDS_EE_WINRT_THIRDPARTY_NOTSUPPORTED "Types from custom Windows Runtime components are not supported in desktop applications."
@@ -928,11 +926,6 @@ BEGIN
IDS_CLASSLOAD_NSTRUCT_NEGATIVE_OFFSET "Could not load type '%1' from assembly '%2' because field '%3' was given a negative offset."
- IDS_EE_CODEEXECUTION_IN_INTROSPECTIVE_ASSEMBLY "Code execution is prohibited in an assembly loaded as ReflectionOnly."
-
- IDS_CLASSLOAD_ASSEMBLY_RESOLVE_RETURNED_INTROSPECTION "AssemblyResolveEvent handlers cannot return Assemblies loaded for reflection only."
- IDS_CLASSLOAD_ASSEMBLY_RESOLVE_RETURNED_EXECUTION "ReflectionOnlyAssemblyResolve handlers must return Assemblies loaded for reflection only."
-
IDS_CLASSLOAD_OVERLAPPING_INTERFACES "The type '%1' in assembly '%2' has a contracting interface set for some instantiations"
IDS_CLASSLOAD_32BITCLRLOADING64BITASSEMBLY "Attempted to load a 64-bit assembly on a 32-bit platform."
diff --git a/src/dlls/mscorrc/resource.h b/src/dlls/mscorrc/resource.h
index b183ec8138..fb095fc291 100644
--- a/src/dlls/mscorrc/resource.h
+++ b/src/dlls/mscorrc/resource.h
@@ -379,8 +379,6 @@
#define IDS_EE_CLASSLOAD_INVALIDINSTANTIATION 0x1a59
#define IDS_EE_BADMARSHALFIELD_ZEROLENGTHFIXEDSTRING 0x1a5a
-#define IDS_EE_CODEEXECUTION_IN_INTROSPECTIVE_ASSEMBLY 0x1a61
-
#define IDS_EE_BADMARSHAL_CRITICALHANDLENATIVETOCOM 0x1a62
#define IDS_EE_BADMARSHAL_ABSTRACTOUTCRITICALHANDLE 0x1a63
#define IDS_EE_BADMARSHAL_RETURNCHCOMTONATIVE 0x1a64
@@ -391,9 +389,6 @@
#define IDS_EE_BADMARSHAL_ABSTRACTRETCRITICALHANDLE 0x1a6a
#define IDS_EE_CH_IN_VARIANT_NOT_SUPPORTED 0x1a6b
-#define IDS_CLASSLOAD_ASSEMBLY_RESOLVE_RETURNED_INTROSPECTION 0x1a6d
-#define IDS_CLASSLOAD_ASSEMBLY_RESOLVE_RETURNED_EXECUTION 0x1a6e
-
#define IDS_CLASSLOAD_CONSTRAINT_MISMATCH_ON_IMPLICIT_OVERRIDE 0x1a6f
#define IDS_CLASSLOAD_CONSTRAINT_MISMATCH_ON_IMPLICIT_IMPLEMENTATION 0x1a70
#define IDS_CLASSLOAD_CONSTRAINT_MISMATCH_ON_LOCAL_METHOD_IMPL 0x1a71
@@ -401,7 +396,6 @@
#define IDS_CLASSLOAD_CONSTRAINT_MISMATCH_ON_INTERFACE_METHOD_IMPL 0x1a73
#define IDS_EE_NDIRECT_BADNATL_VARARGS_CALLCONV 0x1a75
-#define IDS_EE_REFLECTIONONLYGETTYPE_NOASSEMBLY 0x1a77
#define IDS_CLASSLOAD_VARIANCE_IN_METHOD_ARG 0x1a79
#define IDS_CLASSLOAD_VARIANCE_IN_METHOD_RESULT 0x1a7a
@@ -429,7 +423,6 @@
#define IDS_EE_BADMARSHAL_CRITICALHANDLEARRAY 0x1a90
#define IDS_EE_BADMARSHALFIELD_ERROR_MSG 0x1a92
#define IDS_EE_BADMARSHAL_ERROR_MSG 0x1a93
-#define IDS_EE_REFLECTIONONLY_LOADFAILURE 0x1a96
#define IDS_EE_COM_INVISIBLE_PARENT 0x1a97
#define IDS_EE_REMOTE_COGETCLASSOBJECT_FAILED 0x1a98
diff --git a/src/vm/appdomain.cpp b/src/vm/appdomain.cpp
index 3ca7ec7e24..47aeb103eb 100644
--- a/src/vm/appdomain.cpp
+++ b/src/vm/appdomain.cpp
@@ -1039,7 +1039,7 @@ void AppDomain::DeleteNativeCodeRanges()
return;
// Shutdown assemblies
- AssemblyIterator i = IterateAssembliesEx( (AssemblyIterationFlags)(kIncludeLoaded | kIncludeLoading | kIncludeExecution | kIncludeIntrospection | kIncludeFailedToLoad) );
+ AssemblyIterator i = IterateAssembliesEx( (AssemblyIterationFlags)(kIncludeLoaded | kIncludeLoading | kIncludeExecution | kIncludeFailedToLoad) );
CollectibleAssemblyHolder<DomainAssembly *> pDomainAssembly;
while (i.Next(pDomainAssembly.This()))
@@ -1071,7 +1071,7 @@ void AppDomain::ShutdownAssemblies()
// Stage 1: call code:Assembly::Terminate
AssemblyIterator i = IterateAssembliesEx((AssemblyIterationFlags)(
- kIncludeLoaded | kIncludeLoading | kIncludeExecution | kIncludeIntrospection | kIncludeFailedToLoad | kIncludeCollected));
+ kIncludeLoaded | kIncludeLoading | kIncludeExecution | kIncludeFailedToLoad | kIncludeCollected));
DomainAssembly * pDomainAssembly = NULL;
while (i.Next_UnsafeNoAddRef(&pDomainAssembly))
@@ -1086,7 +1086,7 @@ void AppDomain::ShutdownAssemblies()
// Stage 2: Clear the list of assemblies
i = IterateAssembliesEx((AssemblyIterationFlags)(
- kIncludeLoaded | kIncludeLoading | kIncludeExecution | kIncludeIntrospection | kIncludeFailedToLoad | kIncludeCollected));
+ kIncludeLoaded | kIncludeLoading | kIncludeExecution | kIncludeFailedToLoad | kIncludeCollected));
while (i.Next_UnsafeNoAddRef(&pDomainAssembly))
{
// We are in shutdown path, no one else can get to the list anymore
@@ -1207,7 +1207,7 @@ void AppDomain::ReleaseFiles()
// Shutdown assemblies
AssemblyIterator i = IterateAssembliesEx((AssemblyIterationFlags)(
- kIncludeLoaded | kIncludeExecution | kIncludeIntrospection | kIncludeFailedToLoad | kIncludeLoading));
+ kIncludeLoaded | kIncludeExecution | kIncludeFailedToLoad | kIncludeLoading));
CollectibleAssemblyHolder<DomainAssembly *> pAsm;
while (i.Next(pAsm.This()))
@@ -4861,8 +4861,7 @@ BOOL AppDomain::ContainsAssembly(Assembly * assem)
{
WRAPPER_NO_CONTRACT;
AssemblyIterator i = IterateAssembliesEx((AssemblyIterationFlags)(
- kIncludeLoaded |
- (assem->IsIntrospectionOnly() ? kIncludeIntrospection : kIncludeExecution)));
+ kIncludeLoaded | kIncludeExecution));
CollectibleAssemblyHolder<DomainAssembly *> pDomainAssembly;
while (i.Next(pDomainAssembly.This()))
@@ -6163,7 +6162,7 @@ DomainAssembly * AppDomain::FindAssembly(PEAssembly * pFile, FindAssemblyOptions
AssemblyIterator i = IterateAssembliesEx((AssemblyIterationFlags)(
kIncludeLoaded |
(includeFailedToLoad ? kIncludeFailedToLoad : 0) |
- (pFile->IsIntrospectionOnly() ? kIncludeIntrospection : kIncludeExecution)));
+ kIncludeExecution));
CollectibleAssemblyHolder<DomainAssembly *> pDomainAssembly;
while (i.Next(pDomainAssembly.This()))
@@ -6765,8 +6764,7 @@ AppDomain::BindHostedPrivAssembly(
PEAssembly * pParentAssembly,
ICLRPrivAssembly * pPrivAssembly,
IAssemblyName * pAssemblyName,
- PEAssembly ** ppAssembly,
- BOOL fIsIntrospectionOnly) // = FALSE
+ PEAssembly ** ppAssembly)
{
STANDARD_VM_CONTRACT;
@@ -6824,7 +6822,7 @@ AppDomain::BindHostedPrivAssembly(
_ASSERTE(pPEImageIL != nullptr);
// Create a PEAssembly using the IL and NI images.
- PEAssemblyHolder pPEAssembly = PEAssembly::Open(pParentAssembly, pPEImageIL, pPEImageNI, pPrivAssembly, fIsIntrospectionOnly);
+ PEAssemblyHolder pPEAssembly = PEAssembly::Open(pParentAssembly, pPEImageIL, pPEImageNI, pPrivAssembly);
// Ask the binder to verify.
@@ -6840,7 +6838,6 @@ AppDomain::BindHostedPrivAssembly(
PEAssembly * AppDomain::BindAssemblySpec(
AssemblySpec * pSpec,
BOOL fThrowOnFileNotFound,
- BOOL fRaisePrebindEvents,
StackCrawlMark * pCallerStackMark,
BOOL fUseHostBinderIfAvailable)
{
@@ -6959,7 +6956,7 @@ EndTry2:;
{
// IsSystem on the PEFile should be false, even for mscorlib satellites
result = PEAssembly::Open(&bindResult,
- FALSE, pSpec->IsIntrospectionOnly());
+ FALSE);
}
fAddFileToCache = true;
@@ -9853,7 +9850,6 @@ Assembly* AppDomain::RaiseResourceResolveEvent(DomainAssembly* pAssembly, LPCSTR
Assembly *
AppDomain::RaiseAssemblyResolveEvent(
AssemblySpec * pSpec,
- BOOL fIntrospection,
BOOL fPreBind)
{
CONTRACT(Assembly*)
@@ -9931,12 +9927,6 @@ AppDomain::RaiseAssemblyResolveEvent(
if (pAssembly != NULL)
{
- if ((!(pAssembly->IsIntrospectionOnly())) != (!fIntrospection))
- {
- // Cannot return an introspection assembly from an execution callback or vice-versa
- COMPlusThrow(kFileLoadException, pAssembly->IsIntrospectionOnly() ? IDS_CLASSLOAD_ASSEMBLY_RESOLVE_RETURNED_INTROSPECTION : IDS_CLASSLOAD_ASSEMBLY_RESOLVE_RETURNED_EXECUTION);
- }
-
// Check that the public key token matches the one specified in the spec
// MatchPublicKeys throws as appropriate
pSpec->MatchPublicKeys(pAssembly);
@@ -10908,24 +10898,13 @@ AppDomain::AssemblyIterator::Next_Unlocked(
}
}
- // Next, reject DomainAssemblies whose execution / introspection status is
+ // Next, reject DomainAssemblies whose execution status is
// not to be included in the enumeration
- if (pDomainAssembly->IsIntrospectionOnly())
+ // execution assembly
+ if (!(m_assemblyIterationFlags & kIncludeExecution))
{
- // introspection assembly
- if (!(m_assemblyIterationFlags & kIncludeIntrospection))
- {
- continue; // reject
- }
- }
- else
- {
- // execution assembly
- if (!(m_assemblyIterationFlags & kIncludeExecution))
- {
- continue; // reject
- }
+ continue; // reject
}
// Next, reject collectible assemblies
@@ -10996,7 +10975,7 @@ AppDomain::AssemblyIterator::Next_UnsafeNoAddRef(
// Make sure we are iterating all assemblies (see the only caller code:AppDomain::ShutdownAssemblies)
_ASSERTE(m_assemblyIterationFlags ==
- (kIncludeLoaded | kIncludeLoading | kIncludeExecution | kIncludeIntrospection | kIncludeFailedToLoad | kIncludeCollected));
+ (kIncludeLoaded | kIncludeLoading | kIncludeExecution | kIncludeFailedToLoad | kIncludeCollected));
// It also means that we do not exclude anything
_ASSERTE((m_assemblyIterationFlags & kExcludeCollectible) == 0);
@@ -11402,7 +11381,7 @@ AppDomain::EnumMemoryRegions(CLRDataEnumMemoryFlags flags,
}
m_Assemblies.EnumMemoryRegions(flags);
- AssemblyIterator assem = IterateAssembliesEx((AssemblyIterationFlags)(kIncludeLoaded | kIncludeExecution | kIncludeIntrospection));
+ AssemblyIterator assem = IterateAssembliesEx((AssemblyIterationFlags)(kIncludeLoaded | kIncludeExecution));
CollectibleAssemblyHolder<DomainAssembly *> pDomainAssembly;
while (assem.Next(pDomainAssembly.This()))
diff --git a/src/vm/appdomain.hpp b/src/vm/appdomain.hpp
index dabe46bc38..4990f75f33 100644
--- a/src/vm/appdomain.hpp
+++ b/src/vm/appdomain.hpp
@@ -1628,7 +1628,7 @@ typedef Wrapper <ADUnloadSink*,DoNothing,ADUnloadSink__Release,NULL> ADUnloadSin
//
// The flags can be combined so if you want all loaded assemblies, you must specify:
//
-/// kIncludeLoaded|kIncludeExecution|kIncludeIntrospection
+/// kIncludeLoaded|kIncludeExecution
enum AssemblyIterationFlags
{
@@ -1643,7 +1643,6 @@ enum AssemblyIterationFlags
// Execution / introspection flags
kIncludeExecution = 0x00000004, // include assemblies that are loaded for execution only
- kIncludeIntrospection = 0x00000008, // include assemblies that are loaded for introspection only
kIncludeFailedToLoad = 0x00000010, // include assemblies that failed to load
@@ -2484,7 +2483,6 @@ public:
virtual PEAssembly * BindAssemblySpec(
AssemblySpec *pSpec,
BOOL fThrowOnFileNotFound,
- BOOL fRaisePrebindEvents,
StackCrawlMark *pCallerStackMark = NULL,
BOOL fUseHostBinderIfAvailable = TRUE) DAC_EMPTY_RET(NULL);
@@ -2498,8 +2496,7 @@ public:
PEAssembly * pParentPEAssembly,
ICLRPrivAssembly * pPrivAssembly,
IAssemblyName * pAssemblyName,
- PEAssembly ** ppAssembly,
- BOOL fIsIntrospectionOnly = FALSE) DAC_EMPTY_RET(S_OK);
+ PEAssembly ** ppAssembly) DAC_EMPTY_RET(S_OK);
PEAssembly *TryResolveAssembly(AssemblySpec *pSpec, BOOL fPreBind);
@@ -3180,7 +3177,7 @@ public:
static void RaiseExitProcessEvent();
Assembly* RaiseResourceResolveEvent(DomainAssembly* pAssembly, LPCSTR szName);
DomainAssembly* RaiseTypeResolveEventThrowing(DomainAssembly* pAssembly, LPCSTR szName, ASSEMBLYREF *pResultingAssemblyRef);
- Assembly* RaiseAssemblyResolveEvent(AssemblySpec *pSpec, BOOL fIntrospection, BOOL fPreBind);
+ Assembly* RaiseAssemblyResolveEvent(AssemblySpec *pSpec, BOOL fPreBind);
private:
CrstExplicitInit m_ReflectionCrst;
diff --git a/src/vm/appdomainnative.cpp b/src/vm/appdomainnative.cpp
index bfe07b3d35..713856f1d8 100644
--- a/src/vm/appdomainnative.cpp
+++ b/src/vm/appdomainnative.cpp
@@ -261,8 +261,7 @@ FCIMPL2(Object*, AppDomainNative::GetAssemblies, AppDomainBaseObject* refThisUNS
// to the array. Quit when the array is full, in case assemblies have been
// loaded into this appdomain, on another thread.
AppDomain::AssemblyIterator i = pApp->IterateAssembliesEx((AssemblyIterationFlags)(
- kIncludeLoaded |
- (forIntrospection ? kIncludeIntrospection : kIncludeExecution)));
+ kIncludeLoaded | kIncludeExecution));
CollectibleAssemblyHolder<DomainAssembly *> pDomainAssembly;
while (i.Next(pDomainAssembly.This()) && (numAssemblies < nArrayElems))
@@ -448,8 +447,7 @@ FCIMPL2(StringObject*, AppDomainNative::nApplyPolicy, AppDomainBaseObject* refTh
AssemblySpec spec;
spec.InitializeSpec(&(pThread->m_MarshalAlloc),
&gc.assemblyName,
- FALSE, /*fIsStringized*/
- FALSE /*fForIntrospection*/
+ FALSE /*fIsStringized*/
);
StackSString sDisplayName;
diff --git a/src/vm/assembly.cpp b/src/vm/assembly.cpp
index 6b2c3b8a15..e5e70ad91c 100644
--- a/src/vm/assembly.cpp
+++ b/src/vm/assembly.cpp
@@ -651,7 +651,7 @@ Assembly *Assembly::CreateDynamic(AppDomain *pDomain, CreateDynamicAssemblyArgs
IfFailThrow(pAssemblyEmit->DefineAssembly(publicKey, publicKey.GetSize(), ulHashAlgId,
name, &assemData, dwFlags,
&ma));
- pFile = PEAssembly::Create(pCallerAssembly->GetManifestFile(), pAssemblyEmit, args->access & ASSEMBLY_ACCESS_REFLECTION_ONLY);
+ pFile = PEAssembly::Create(pCallerAssembly->GetManifestFile(), pAssemblyEmit);
// Dynamically created modules (aka RefEmit assemblies) do not have a LoadContext associated with them since they are not bound
// using an actual binder. As a result, we will assume the same binding/loadcontext information for the dynamic assembly as its
@@ -878,12 +878,6 @@ DomainAssembly *Assembly::FindDomainAssembly(AppDomain *pDomain)
RETURN GetManifestModule()->FindDomainAssembly(pDomain);
}
-BOOL Assembly::IsIntrospectionOnly()
-{
- WRAPPER_NO_CONTRACT;
- return m_pManifestFile->IsIntrospectionOnly();
-}
-
PTR_LoaderHeap Assembly::GetLowFrequencyHeap()
{
WRAPPER_NO_CONTRACT;
diff --git a/src/vm/assembly.hpp b/src/vm/assembly.hpp
index fdb885494c..7a25d03999 100644
--- a/src/vm/assembly.hpp
+++ b/src/vm/assembly.hpp
@@ -53,7 +53,6 @@ class FriendAssemblyDescriptor;
// Bits in m_dwDynamicAssemblyAccess (see System.Reflection.Emit.AssemblyBuilderAccess.cs)
#define ASSEMBLY_ACCESS_RUN 0x01
#define ASSEMBLY_ACCESS_SAVE 0x02
-#define ASSEMBLY_ACCESS_REFLECTION_ONLY 0x04
#define ASSEMBLY_ACCESS_COLLECT 0x8
struct CreateDynamicAssemblyArgsGC
@@ -221,12 +220,6 @@ public:
void SetParent(BaseDomain* pParent);
//-----------------------------------------------------------------------------------------
- // If true, this assembly is loaded only for introspection. We can load modules, types, etc,
- // but no code execution or object instantiation is permitted.
- //-----------------------------------------------------------------------------------------
- BOOL IsIntrospectionOnly();
-
- //-----------------------------------------------------------------------------------------
// EnsureActive ensures that the assembly is properly prepped in the current app domain
// for active uses like code execution, static field access, and instance allocation
//-----------------------------------------------------------------------------------------
@@ -323,7 +316,7 @@ public:
BOOL CanSkipPolicyResolution()
{
WRAPPER_NO_CONTRACT;
- return IsSystem() || IsIntrospectionOnly() || (m_isDynamic && !(m_dwDynamicAssemblyAccess & ASSEMBLY_ACCESS_RUN));
+ return IsSystem() || (m_isDynamic && !(m_dwDynamicAssemblyAccess & ASSEMBLY_ACCESS_RUN));
}
PTR_LoaderHeap GetLowFrequencyHeap();
diff --git a/src/vm/assemblyname.cpp b/src/vm/assemblyname.cpp
index 4fd6e20ee8..090365f2d6 100644
--- a/src/vm/assemblyname.cpp
+++ b/src/vm/assemblyname.cpp
@@ -69,7 +69,7 @@ FCIMPL1(Object*, AssemblyNameNative::GetFileInformation, StringObject* filenameU
pImage->VerifyIsAssembly();
AssemblySpec spec;
- spec.InitializeSpec(TokenFromRid(mdtAssembly,1),pImage->GetMDImport(),NULL,TRUE);
+ spec.InitializeSpec(TokenFromRid(mdtAssembly,1),pImage->GetMDImport(),NULL);
spec.AssemblyNameInit(&gc.result, pImage);
HELPER_METHOD_FRAME_END();
@@ -93,7 +93,7 @@ FCIMPL1(Object*, AssemblyNameNative::ToString, Object* refThisUNSAFE)
CheckPointHolder cph(pThread->m_MarshalAlloc.GetCheckpoint()); //hold checkpoint for autorelease
AssemblySpec spec;
- spec.InitializeSpec(&(pThread->m_MarshalAlloc), (ASSEMBLYNAMEREF*) &pThis, FALSE, FALSE);
+ spec.InitializeSpec(&(pThread->m_MarshalAlloc), (ASSEMBLYNAMEREF*) &pThis, FALSE);
StackSString name;
spec.GetFileOrDisplayName(ASM_DISPLAYF_VERSION |
@@ -168,7 +168,7 @@ FCIMPL3(void, AssemblyNameNative::Init, Object * refThisUNSAFE, OBJECTREF * pAss
CheckPointHolder cph(pThread->m_MarshalAlloc.GetCheckpoint()); //hold checkpoint for autorelease
AssemblySpec spec;
- hr = spec.InitializeSpec(&(pThread->m_MarshalAlloc), (ASSEMBLYNAMEREF *) &pThis, TRUE, FALSE);
+ hr = spec.InitializeSpec(&(pThread->m_MarshalAlloc), (ASSEMBLYNAMEREF *) &pThis, TRUE);
if (SUCCEEDED(hr))
{
@@ -176,7 +176,7 @@ FCIMPL3(void, AssemblyNameNative::Init, Object * refThisUNSAFE, OBJECTREF * pAss
}
else if ((hr == FUSION_E_INVALID_NAME) && fRaiseResolveEvent)
{
- Assembly * pAssembly = GetAppDomain()->RaiseAssemblyResolveEvent(&spec, FALSE, FALSE);
+ Assembly * pAssembly = GetAppDomain()->RaiseAssemblyResolveEvent(&spec, FALSE);
if (pAssembly == NULL)
{
diff --git a/src/vm/assemblynative.cpp b/src/vm/assemblynative.cpp
index b6650709d0..830cadffae 100644
--- a/src/vm/assemblynative.cpp
+++ b/src/vm/assemblynative.cpp
@@ -107,7 +107,6 @@ FCIMPL7(Object*, AssemblyNative::Load, AssemblyNameBaseObject* assemblyNameUNSAF
AssemblySpec spec;
spec.InitializeSpec(&(pThread->m_MarshalAlloc),
&gc.assemblyName,
- FALSE,
FALSE);
if (!spec.HasUniqueIdentity())
@@ -146,7 +145,7 @@ FCIMPL7(Object*, AssemblyNative::Load, AssemblyNameBaseObject* assemblyNameUNSAF
{
GCX_PREEMP();
- pAssembly = spec.LoadAssembly(FILE_LOADED, fThrowOnFileNotFound, FALSE /*fRaisePrebindEvents*/, stackMark);
+ pAssembly = spec.LoadAssembly(FILE_LOADED, fThrowOnFileNotFound, stackMark);
}
if (pAssembly != NULL)
@@ -239,7 +238,7 @@ Assembly* AssemblyNative::LoadFromPEImage(ICLRPrivBinder* pBinderContext, PEImag
BINDER_SPACE::Assembly* assem;
assem = BINDER_SPACE::GetAssemblyFromPrivAssemblyFast(pAssembly);
- PEAssemblyHolder pPEAssembly(PEAssembly::Open(pParentAssembly, assem->GetPEImage(), assem->GetNativePEImage(), pAssembly, FALSE));
+ PEAssemblyHolder pPEAssembly(PEAssembly::Open(pParentAssembly, assem->GetPEImage(), assem->GetNativePEImage(), pAssembly));
DomainAssembly *pDomainAssembly = pCurDomain->LoadDomainAssembly(&spec, pPEAssembly, FILE_LOADED);
RETURN pDomainAssembly->GetAssembly();
@@ -416,7 +415,7 @@ void QCALLTYPE AssemblyNative::GetType(QCall::AssemblyHandle pAssembly, LPCWSTR
BOOL prohibitAsmQualifiedName = TRUE;
// Load the class from this assembly (fail if it is in a different one).
- retTypeHandle = TypeName::GetTypeManaged(wszName, pAssembly, bThrowOnError, bIgnoreCase, pAssembly->IsIntrospectionOnly(), prohibitAsmQualifiedName, NULL, FALSE, (OBJECTREF*)keepAlive.m_ppObject);
+ retTypeHandle = TypeName::GetTypeManaged(wszName, pAssembly, bThrowOnError, bIgnoreCase, prohibitAsmQualifiedName, NULL, FALSE, (OBJECTREF*)keepAlive.m_ppObject);
if (!retTypeHandle.IsNull())
{
diff --git a/src/vm/assemblyspec.cpp b/src/vm/assemblyspec.cpp
index 8d3f76f2b9..f274c13c61 100644
--- a/src/vm/assemblyspec.cpp
+++ b/src/vm/assemblyspec.cpp
@@ -186,7 +186,6 @@ BOOL AssemblySpec::IsValidAssemblyName()
HRESULT AssemblySpec::InitializeSpecInternal(mdToken kAssemblyToken,
IMDInternalImport *pImport,
DomainAssembly *pStaticParent,
- BOOL fIntrospectionOnly,
BOOL fAllowAllocation)
{
CONTRACTL
@@ -199,7 +198,6 @@ HRESULT AssemblySpec::InitializeSpecInternal(mdToken kAssemblyToken,
PRECONDITION(pImport->IsValidToken(kAssemblyToken));
PRECONDITION(TypeFromToken(kAssemblyToken) == mdtAssembly
|| TypeFromToken(kAssemblyToken) == mdtAssemblyRef);
- PRECONDITION(pStaticParent == NULL || !(pStaticParent->IsIntrospectionOnly() && !fIntrospectionOnly)); //Something's wrong if an introspection assembly loads an assembly for execution.
}
CONTRACTL_END;
@@ -207,16 +205,6 @@ HRESULT AssemblySpec::InitializeSpecInternal(mdToken kAssemblyToken,
EX_TRY
{
- // We also did this check as a precondition as we should have prevented this structurally - but just
- // in case, make sure retail stops us from proceeding further.
- if (pStaticParent != NULL && pStaticParent->IsIntrospectionOnly() && !fIntrospectionOnly)
- {
- EEPOLICY_HANDLE_FATAL_ERROR(COR_E_EXECUTIONENGINE);
- }
-
- // Normalize this boolean as it tends to be used for comparisons
- m_fIntrospectionOnly = !!fIntrospectionOnly;
-
IfFailThrow(BaseAssemblySpec::Init(kAssemblyToken,pImport));
if (IsContentType_WindowsRuntime())
@@ -268,7 +256,7 @@ void AssemblySpec::InitializeSpec(PEAssembly * pFile)
mdAssembly a;
IfFailThrow(pImport->GetAssemblyFromScope(&a));
- InitializeSpec(a, pImport, NULL, pFile->IsIntrospectionOnly());
+ InitializeSpec(a, pImport, NULL);
#ifdef FEATURE_COMINTEROP
if (IsContentType_WindowsRuntime())
@@ -303,7 +291,7 @@ void AssemblySpec::InitializeSpec(PEAssembly * pFile)
// This uses thread storage to allocate space. Please use Checkpoint and release it.
HRESULT AssemblySpec::InitializeSpec(StackingAllocator* alloc, ASSEMBLYNAMEREF* pName,
- BOOL fParse /*=TRUE*/, BOOL fIntrospectionOnly /*=FALSE*/)
+ BOOL fParse /*=TRUE*/)
{
CONTRACTL
{
@@ -453,9 +441,6 @@ HRESULT AssemblySpec::InitializeSpec(StackingAllocator* alloc, ASSEMBLYNAMEREF*
(*pName)->GetHashForControl()->GetNumComponents(),
(*pName)->GetHashAlgorithmForControl());
- // Normalize this boolean as it tends to be used for comparisons
- m_fIntrospectionOnly = !!fIntrospectionOnly;
-
// Extract embedded WinRT name, if present.
ParseEncodedName();
@@ -755,7 +740,7 @@ PEAssembly *AssemblySpec::ResolveAssemblyFile(AppDomain *pDomain, BOOL fPreBind)
if (GetName() == NULL)
RETURN NULL;
- Assembly *pAssembly = pDomain->RaiseAssemblyResolveEvent(this, IsIntrospectionOnly(), fPreBind);
+ Assembly *pAssembly = pDomain->RaiseAssemblyResolveEvent(this, fPreBind);
if (pAssembly != NULL) {
PEAssembly *pFile = pAssembly->GetManifestFile();
@@ -768,7 +753,7 @@ PEAssembly *AssemblySpec::ResolveAssemblyFile(AppDomain *pDomain, BOOL fPreBind)
}
-Assembly *AssemblySpec::LoadAssembly(FileLoadLevel targetLevel, BOOL fThrowOnFileNotFound, BOOL fRaisePrebindEvents, StackCrawlMark *pCallerStackMark)
+Assembly *AssemblySpec::LoadAssembly(FileLoadLevel targetLevel, BOOL fThrowOnFileNotFound, StackCrawlMark *pCallerStackMark)
{
CONTRACTL
{
@@ -778,7 +763,7 @@ Assembly *AssemblySpec::LoadAssembly(FileLoadLevel targetLevel, BOOL fThrowOnFil
}
CONTRACTL_END;
- DomainAssembly * pDomainAssembly = LoadDomainAssembly(targetLevel, fThrowOnFileNotFound, fRaisePrebindEvents, pCallerStackMark);
+ DomainAssembly * pDomainAssembly = LoadDomainAssembly(targetLevel, fThrowOnFileNotFound, pCallerStackMark);
if (pDomainAssembly == NULL) {
_ASSERTE(!fThrowOnFileNotFound);
return NULL;
@@ -907,7 +892,6 @@ ICLRPrivBinder* AssemblySpec::GetBindingContextFromParentAssembly(AppDomain *pDo
DomainAssembly *AssemblySpec::LoadDomainAssembly(FileLoadLevel targetLevel,
BOOL fThrowOnFileNotFound,
- BOOL fRaisePrebindEvents,
StackCrawlMark *pCallerStackMark)
{
CONTRACT(DomainAssembly *)
@@ -960,7 +944,7 @@ DomainAssembly *AssemblySpec::LoadDomainAssembly(FileLoadLevel targetLevel,
}
- PEAssemblyHolder pFile(pDomain->BindAssemblySpec(this, fThrowOnFileNotFound, fRaisePrebindEvents, pCallerStackMark));
+ PEAssemblyHolder pFile(pDomain->BindAssemblySpec(this, fThrowOnFileNotFound, pCallerStackMark));
if (pFile == NULL)
RETURN NULL;
@@ -1785,11 +1769,7 @@ BOOL AssemblySpecBindingCache::CompareSpecs(UPTR u1, UPTR u2)
AssemblySpec *a1 = (AssemblySpec *) (u1 << 1);
AssemblySpec *a2 = (AssemblySpec *) u2;
-
- if ((!a1->CompareEx(a2)) ||
- (a1->IsIntrospectionOnly() != a2->IsIntrospectionOnly()))
- return FALSE;
- return TRUE;
+ return a1->CompareEx(a2);
}
@@ -1802,13 +1782,7 @@ BOOL DomainAssemblyCache::CompareBindingSpec(UPTR spec1, UPTR spec2)
AssemblySpec* pSpec1 = (AssemblySpec*) (spec1 << 1);
AssemblyEntry* pEntry2 = (AssemblyEntry*) spec2;
-
-
- if ((!pSpec1->CompareEx(&pEntry2->spec)) ||
- (pSpec1->IsIntrospectionOnly() != pEntry2->spec.IsIntrospectionOnly()))
- return FALSE;
-
- return TRUE;
+ return pSpec1->CompareEx(&pEntry2->spec);
}
diff --git a/src/vm/assemblyspec.hpp b/src/vm/assemblyspec.hpp
index 2415aea738..6db0d1ac8f 100644
--- a/src/vm/assemblyspec.hpp
+++ b/src/vm/assemblyspec.hpp
@@ -50,7 +50,6 @@ class AssemblySpec : public BaseAssemblySpec
HRESULT InitializeSpecInternal(mdToken kAssemblyRefOrDef,
IMDInternalImport *pImport,
DomainAssembly *pStaticParent,
- BOOL fIntrospectionOnly,
BOOL fAllowAllocation);
// InitializeSpecInternal should be used very carefully so it's made private.
@@ -97,8 +96,7 @@ class AssemblySpec : public BaseAssemblySpec
void InitializeSpec(mdToken kAssemblyRefOrDef,
IMDInternalImport *pImport,
- DomainAssembly *pStaticParent = NULL,
- BOOL fIntrospectionOnly = FALSE)
+ DomainAssembly *pStaticParent = NULL)
{
CONTRACTL
{
@@ -108,7 +106,7 @@ class AssemblySpec : public BaseAssemblySpec
MODE_ANY;
}
CONTRACTL_END;
- HRESULT hr=InitializeSpecInternal(kAssemblyRefOrDef, pImport,pStaticParent,fIntrospectionOnly,TRUE);
+ HRESULT hr=InitializeSpecInternal(kAssemblyRefOrDef, pImport,pStaticParent,TRUE);
if(FAILED(hr))
EEFileLoadException::Throw(this,hr);
};
@@ -117,8 +115,7 @@ class AssemblySpec : public BaseAssemblySpec
void InitializeSpec(PEAssembly *pFile);
HRESULT InitializeSpec(StackingAllocator* alloc,
ASSEMBLYNAMEREF* pName,
- BOOL fParse = TRUE,
- BOOL fIntrospectionOnly = FALSE);
+ BOOL fParse = TRUE);
void AssemblyNameInit(ASSEMBLYNAMEREF* pName, PEImage* pImageInfo); //[in,out], [in]
@@ -185,7 +182,6 @@ class AssemblySpec : public BaseAssemblySpec
BaseAssemblySpec::CopyFrom(pSource);
- SetIntrospectionOnly(pSource->IsIntrospectionOnly());
SetParentAssembly(pSource->GetParentAssembly());
// Copy the details of the fallback load context binder
@@ -225,11 +221,9 @@ class AssemblySpec : public BaseAssemblySpec
Assembly *LoadAssembly(FileLoadLevel targetLevel,
BOOL fThrowOnFileNotFound = TRUE,
- BOOL fRaisePrebindEvents = TRUE,
StackCrawlMark *pCallerStackMark = NULL);
DomainAssembly *LoadDomainAssembly(FileLoadLevel targetLevel,
BOOL fThrowOnFileNotFound = TRUE,
- BOOL fRaisePrebindEvents = TRUE,
StackCrawlMark *pCallerStackMark = NULL);
//****************************************************************************************
diff --git a/src/vm/baseassemblyspec.h b/src/vm/baseassemblyspec.h
index 9381157f7a..4fe752a2ff 100644
--- a/src/vm/baseassemblyspec.h
+++ b/src/vm/baseassemblyspec.h
@@ -31,7 +31,6 @@ protected:
LPCSTR m_szWinRtTypeClassName;
ICLRPrivBinder *m_pHostBinder;
int m_ownedFlags;
- BOOL m_fIntrospectionOnly;
ICLRPrivBinder *m_pBindingContext;
public:
@@ -142,22 +141,6 @@ public:
BOOL fIncludeCodeBase = TRUE, /* Used by fusion only */
BOOL fMustBeBindable = FALSE) const;
-
- BOOL IsIntrospectionOnly()
- {
- LIMITED_METHOD_CONTRACT;
-
- // Important to ensure we return a normalized boolean (the introspection fields
- // of different AssemblySpecs can be compared.)
- return !!m_fIntrospectionOnly;
- }
-
- VOID SetIntrospectionOnly(BOOL fIntrospectionOnly)
- {
- LIMITED_METHOD_CONTRACT;
- m_fIntrospectionOnly = !!fIntrospectionOnly;
- }
-
inline BOOL IsContentType_WindowsRuntime() const
{
LIMITED_METHOD_CONTRACT;
diff --git a/src/vm/ceeload.cpp b/src/vm/ceeload.cpp
index 5c4df90a80..23fa8f6e8e 100644
--- a/src/vm/ceeload.cpp
+++ b/src/vm/ceeload.cpp
@@ -4232,12 +4232,6 @@ BOOL Module::IsVisibleToDebugger()
return FALSE;
}
- if (IsIntrospectionOnly())
- {
- return FALSE;
- }
-
-
// If for whatever other reason, we can't run it, then don't notify the debugger about it.
Assembly * pAssembly = GetAssembly();
if (!pAssembly->HasRunAccess())
@@ -5262,12 +5256,6 @@ Module::GetAssemblyIfLoaded(
#ifdef FEATURE_COMINTEROP
if (szWinRtNamespace != NULL)
{
- if (IsIntrospectionOnly())
- { // We do not have to implement this method for ReflectionOnly WinRT type requests
- // ReflectionOnly WinRT types will never have instances on GC heap to be inspected by stackwalking or by debugger
- break;
- }
-
_ASSERTE(szWinRtClassName != NULL);
CLRPrivBinderWinRT * pWinRtBinder = pAppDomainExamine->GetWinRtBinder();
@@ -5331,7 +5319,6 @@ Module::GetAssemblyIfLoaded(
if (FAILED(spec.InitializeSpecInternal(kAssemblyRef,
pMDImport,
pCurAssemblyInExamineDomain,
- IsIntrospectionOnly(),
FALSE /*fAllowAllocation*/)))
{
continue;
@@ -5392,8 +5379,6 @@ Module::GetAssemblyIfLoaded(
// as the shared assembly context may have different binding rules as compared to the root context. At this time, we prefer to not fix this scenario until
// there is customer need for a fix.
}
- else if (IsIntrospectionOnly())
- eligibleForAdditionalChecks = FALSE;
AssemblySpec specSearchAssemblyRef;
@@ -5405,7 +5390,6 @@ Module::GetAssemblyIfLoaded(
if (FAILED(specSearchAssemblyRef.InitializeSpecInternal(kAssemblyRef,
pMDImport,
NULL,
- FALSE,
FALSE /*fAllowAllocation*/)))
{
eligibleForAdditionalChecks = FALSE; // If an assemblySpec can't be constructed then we're not going to succeed
@@ -5482,7 +5466,6 @@ Module::GetAssemblyIfLoaded(
if (FAILED(specFoundAssemblyRef.InitializeSpecInternal(assemblyRef,
pImportFoundNativeImage,
NULL,
- FALSE,
FALSE /*fAllowAllocation*/)))
{
continue; // If the spec cannot be loaded, it isn't the one we're looking for
@@ -5614,7 +5597,7 @@ DomainAssembly * Module::LoadAssembly(
szWinRtTypeNamespace,
szWinRtTypeClassName);
AssemblySpec spec;
- spec.InitializeSpec(kAssemblyRef, GetMDImport(), GetDomainFile(GetAppDomain())->GetDomainAssembly(), IsIntrospectionOnly());
+ spec.InitializeSpec(kAssemblyRef, GetMDImport(), GetDomainFile(GetAppDomain())->GetDomainAssembly());
// Set the binding context in the AssemblySpec if one is available. This can happen if the LoadAssembly ended up
// invoking the custom AssemblyLoadContext implementation that returned a reference to an assembly bound to a different
// AssemblyLoadContext implementation.
@@ -5633,7 +5616,6 @@ DomainAssembly * Module::LoadAssembly(
if (pDomainAssembly != NULL)
{
_ASSERTE(
- IsIntrospectionOnly() || // GetAssemblyIfLoaded will not find introspection-only assemblies
!fHasBindableIdentity || // GetAssemblyIfLoaded will not find non-bindable assemblies
pDomainAssembly->IsSystem() || // GetAssemblyIfLoaded will not find mscorlib (see AppDomain::FindCachedFile)
!pDomainAssembly->IsLoaded() || // GetAssemblyIfLoaded will not find not-yet-loaded assemblies
@@ -13815,15 +13797,9 @@ LookupMapBase::ListEnumMemoryRegions(CLRDataEnumMemoryFlags flags)
#endif // DACCESS_COMPILE
-// Optimization intended for Module::IsIntrospectionOnly and Module::EnsureActive only
+// Optimization intended for Module::EnsureActive only
#include <optsmallperfcritical.h>
-BOOL Module::IsIntrospectionOnly()
-{
- WRAPPER_NO_CONTRACT;
- return GetAssembly()->IsIntrospectionOnly();
-}
-
#ifndef DACCESS_COMPILE
VOID Module::EnsureActive()
{
diff --git a/src/vm/ceeload.h b/src/vm/ceeload.h
index 939d7294b5..4b1f234920 100644
--- a/src/vm/ceeload.h
+++ b/src/vm/ceeload.h
@@ -1901,8 +1901,6 @@ protected:
return m_dwPersistedFlags.LoadWithoutBarrier() & LOW_LEVEL_SYSTEM_ASSEMBLY_BY_NAME;
}
- BOOL IsIntrospectionOnly();
-
#ifndef DACCESS_COMPILE
VOID EnsureActive();
VOID EnsureAllocated();
diff --git a/src/vm/clsload.cpp b/src/vm/clsload.cpp
index abf96d0425..24887a4d83 100644
--- a/src/vm/clsload.cpp
+++ b/src/vm/clsload.cpp
@@ -1034,8 +1034,7 @@ VOID ClassLoader::PopulateAvailableClassHashTable(Module* pModule,
SString ssFileName;
StackScratchBuffer ssFileNameBuffer;
- if (pModule->GetAssembly()->IsWinMD() &&
- !pModule->IsIntrospectionOnly())
+ if (pModule->GetAssembly()->IsWinMD())
{ // WinMD file in execution context (not ReflectionOnly context) - use its file name as WinRT namespace prefix
// (Windows requirement)
// Note: Reflection can work on 'unfinished' WinMD files where the types are in 'wrong' WinMD file (i.e.
@@ -1562,11 +1561,6 @@ TypeHandle ClassLoader::TryFindDynLinkZapType(TypeKey *pKey)
}
CONTRACTL_END;
- // For the introspection-only case, we can skip this step as introspection assemblies
- // do not use NGEN images.
- if (pKey->IsIntrospectionOnly())
- return TypeHandle();
-
// Never use dyn link zap items during ngen time. We will independently decide later
// whether we want to store the item into ngen image or not.
// Note that it is not good idea to make decisions based on the list of depencies here
@@ -1636,7 +1630,6 @@ TypeHandle ClassLoader::TryFindDynLinkZapType(TypeKey *pKey)
AppDomain * pDomain = pRequiredDomain->AsAppDomain();
- _ASSERTE(!(pKey->IsIntrospectionOnly()));
AppDomain::AssemblyIterator assemblyIterator = pDomain->IterateAssembliesEx(
(AssemblyIterationFlags)(kIncludeLoaded | kIncludeExecution));
CollectibleAssemblyHolder<DomainAssembly *> pDomainAssembly;
@@ -2820,63 +2813,60 @@ TypeHandle ClassLoader::LoadTypeDefThrowing(Module *pModule,
if (pModule->IsReflection())
{
- //if (!(pModule->IsIntrospectionOnly()))
+ // Don't try to load types that are not in available table, when this
+ // is an in-memory module. Raise the type-resolve event instead.
+ typeHnd = TypeHandle();
+
+ // Avoid infinite recursion
+ if (tokenNotToLoad != tdAllAssemblies)
{
- // Don't try to load types that are not in available table, when this
- // is an in-memory module. Raise the type-resolve event instead.
- typeHnd = TypeHandle();
+ AppDomain* pDomain = SystemDomain::GetCurrentDomain();
- // Avoid infinite recursion
- if (tokenNotToLoad != tdAllAssemblies)
+ LPUTF8 pszFullName;
+ LPCUTF8 className;
+ LPCUTF8 nameSpace;
+ if (FAILED(pInternalImport->GetNameOfTypeDef(typeDef, &className, &nameSpace)))
{
- AppDomain* pDomain = SystemDomain::GetCurrentDomain();
-
- LPUTF8 pszFullName;
- LPCUTF8 className;
- LPCUTF8 nameSpace;
- if (FAILED(pInternalImport->GetNameOfTypeDef(typeDef, &className, &nameSpace)))
- {
- LOG((LF_CLASSLOADER, LL_INFO10, "Bogus TypeDef record while loading: 0x%08x\n", typeDef));
- typeHnd = TypeHandle();
- }
- else
+ LOG((LF_CLASSLOADER, LL_INFO10, "Bogus TypeDef record while loading: 0x%08x\n", typeDef));
+ typeHnd = TypeHandle();
+ }
+ else
+ {
+ MAKE_FULL_PATH_ON_STACK_UTF8(pszFullName,
+ nameSpace,
+ className);
+ GCX_COOP();
+ ASSEMBLYREF asmRef = NULL;
+ DomainAssembly *pDomainAssembly = NULL;
+ GCPROTECT_BEGIN(asmRef);
+
+ pDomainAssembly = pDomain->RaiseTypeResolveEventThrowing(
+ pModule->GetAssembly()->GetDomainAssembly(),
+ pszFullName, &asmRef);
+
+ if (asmRef != NULL)
{
- MAKE_FULL_PATH_ON_STACK_UTF8(pszFullName,
- nameSpace,
- className);
- GCX_COOP();
- ASSEMBLYREF asmRef = NULL;
- DomainAssembly *pDomainAssembly = NULL;
- GCPROTECT_BEGIN(asmRef);
-
- pDomainAssembly = pDomain->RaiseTypeResolveEventThrowing(
- pModule->GetAssembly()->GetDomainAssembly(),
- pszFullName, &asmRef);
-
- if (asmRef != NULL)
+ _ASSERTE(pDomainAssembly != NULL);
+ if (pDomainAssembly->GetAssembly()->GetLoaderAllocator()->IsCollectible())
{
- _ASSERTE(pDomainAssembly != NULL);
- if (pDomainAssembly->GetAssembly()->GetLoaderAllocator()->IsCollectible())
+ if (!pModule->GetLoaderAllocator()->IsCollectible())
{
- if (!pModule->GetLoaderAllocator()->IsCollectible())
- {
- LOG((LF_CLASSLOADER, LL_INFO10, "Bad result from TypeResolveEvent while loader TypeDef record: 0x%08x\n", typeDef));
- COMPlusThrow(kNotSupportedException, W("NotSupported_CollectibleBoundNonCollectible"));
- }
-
- pModule->GetLoaderAllocator()->EnsureReference(pDomainAssembly->GetAssembly()->GetLoaderAllocator());
+ LOG((LF_CLASSLOADER, LL_INFO10, "Bad result from TypeResolveEvent while loader TypeDef record: 0x%08x\n", typeDef));
+ COMPlusThrow(kNotSupportedException, W("NotSupported_CollectibleBoundNonCollectible"));
}
+
+ pModule->GetLoaderAllocator()->EnsureReference(pDomainAssembly->GetAssembly()->GetLoaderAllocator());
}
- GCPROTECT_END();
- if (pDomainAssembly != NULL)
- {
- Assembly *pAssembly = pDomainAssembly->GetAssembly();
+ }
+ GCPROTECT_END();
+ if (pDomainAssembly != NULL)
+ {
+ Assembly *pAssembly = pDomainAssembly->GetAssembly();
- NameHandle name(nameSpace, className);
- name.SetTypeToken(pModule, typeDef);
- name.SetTokenNotToLoad(tdAllAssemblies);
- typeHnd = pAssembly->GetLoader()->LoadTypeHandleThrowing(&name, level);
- }
+ NameHandle name(nameSpace, className);
+ name.SetTypeToken(pModule, typeDef);
+ name.SetTokenNotToLoad(tdAllAssemblies);
+ typeHnd = pAssembly->GetLoader()->LoadTypeHandleThrowing(&name, level);
}
}
}
diff --git a/src/vm/comcallablewrapper.cpp b/src/vm/comcallablewrapper.cpp
index 7b91668ace..4d116c157f 100644
--- a/src/vm/comcallablewrapper.cpp
+++ b/src/vm/comcallablewrapper.cpp
@@ -1602,9 +1602,6 @@ BOOL SimpleComCallWrapper::SupportsIReflect(MethodTable *pClass)
if (pClass == g_pRuntimeTypeClass)
return FALSE;
- if (MscorlibBinder::IsClass(pClass, CLASS__CLASS_INTROSPECTION_ONLY))
- return FALSE;
-
if (MscorlibBinder::IsClass(pClass, CLASS__TYPE_BUILDER))
return FALSE;
diff --git a/src/vm/commodule.cpp b/src/vm/commodule.cpp
index 9512468a6d..235b02a8ed 100644
--- a/src/vm/commodule.cpp
+++ b/src/vm/commodule.cpp
@@ -815,7 +815,7 @@ void QCALLTYPE COMModule::GetType(QCall::ModuleHandle pModule, LPCWSTR wszName,
BOOL prohibitAsmQualifiedName = TRUE;
// Load the class from this assembly (fail if it is in a different one).
- retTypeHandle = TypeName::GetTypeManaged(wszName, pAssembly, bThrowOnError, bIgnoreCase, pAssembly->IsIntrospectionOnly(), prohibitAsmQualifiedName, NULL, FALSE, (OBJECTREF*)keepAlive.m_ppObject);
+ retTypeHandle = TypeName::GetTypeManaged(wszName, pAssembly, bThrowOnError, bIgnoreCase, prohibitAsmQualifiedName, NULL, FALSE, (OBJECTREF*)keepAlive.m_ppObject);
// Verify that it's in 'this' module
// But, if it's in a different assembly than expected, that's okay, because
diff --git a/src/vm/compile.cpp b/src/vm/compile.cpp
index 996f61fba2..d78ce62bd0 100644
--- a/src/vm/compile.cpp
+++ b/src/vm/compile.cpp
@@ -346,7 +346,7 @@ HRESULT CEECompileInfo::LoadAssemblyByPath(
#endif // !_TARGET_64BIT_
AssemblySpec spec;
- spec.InitializeSpec(TokenFromRid(1, mdtAssembly), pImage->GetMDImport(), NULL, FALSE);
+ spec.InitializeSpec(TokenFromRid(1, mdtAssembly), pImage->GetMDImport(), NULL);
if (spec.IsMscorlib())
{
@@ -403,7 +403,7 @@ HRESULT CEECompileInfo::LoadAssemblyByPath(
// that IL assemblies will be available.
fExplicitBindToNativeImage
);
- pAssemblyHolder = PEAssembly::Open(&bindResult,FALSE,FALSE);
+ pAssemblyHolder = PEAssembly::Open(&bindResult,FALSE);
}
// Now load assembly into domain.
@@ -477,7 +477,7 @@ HRESULT CEECompileInfo::LoadTypeRefWinRT(
LPCSTR pszname;
pAssemblyImport->GetNameOfTypeRef(ref, &psznamespace, &pszname);
AssemblySpec spec;
- spec.InitializeSpec(tkResolutionScope, pAssemblyImport, NULL, FALSE);
+ spec.InitializeSpec(tkResolutionScope, pAssemblyImport, NULL);
spec.SetWindowsRuntimeType(psznamespace, pszname);
_ASSERTE(spec.HasBindableIdentity());
@@ -7292,7 +7292,6 @@ void ReportMissingDependency(Exception * e)
PEAssembly *CompilationDomain::BindAssemblySpec(
AssemblySpec *pSpec,
BOOL fThrowOnFileNotFound,
- BOOL fRaisePrebindEvents,
StackCrawlMark *pCallerStackMark,
BOOL fUseHostBinderIfAvailable)
{
@@ -7310,7 +7309,6 @@ PEAssembly *CompilationDomain::BindAssemblySpec(
pFile = AppDomain::BindAssemblySpec(
pSpec,
fThrowOnFileNotFound,
- fRaisePrebindEvents,
pCallerStackMark,
fUseHostBinderIfAvailable);
}
diff --git a/src/vm/compile.h b/src/vm/compile.h
index fb664249c5..6ab3d6c715 100644
--- a/src/vm/compile.h
+++ b/src/vm/compile.h
@@ -791,7 +791,6 @@ class CompilationDomain : public AppDomain,
PEAssembly *BindAssemblySpec(
AssemblySpec *pSpec,
BOOL fThrowOnFileNotFound,
- BOOL fRaisePrebindEvents,
StackCrawlMark *pCallerStackMark = NULL,
BOOL fUseHostBinderIfAvailable = TRUE) DAC_EMPTY_RET(NULL);
diff --git a/src/vm/crossgencompile.cpp b/src/vm/crossgencompile.cpp
index 47894bfbdd..ce36eec1ab 100644
--- a/src/vm/crossgencompile.cpp
+++ b/src/vm/crossgencompile.cpp
@@ -385,7 +385,7 @@ void EEPolicy::HandleFatalError(UINT exitCode, UINT_PTR address, LPCWSTR pszMess
//---------------------------------------------------------------------------------------
-Assembly * AppDomain::RaiseAssemblyResolveEvent(AssemblySpec * pSpec, BOOL fIntrospection, BOOL fPreBind)
+Assembly * AppDomain::RaiseAssemblyResolveEvent(AssemblySpec * pSpec, BOOL fPreBind)
{
return NULL;
}
diff --git a/src/vm/dispatchinfo.cpp b/src/vm/dispatchinfo.cpp
index 4a21dfa04c..f7b3068428 100644
--- a/src/vm/dispatchinfo.cpp
+++ b/src/vm/dispatchinfo.cpp
@@ -3709,8 +3709,7 @@ OBJECTREF DispatchExInfo::GetReflectionObject()
// we get the exposed class object and not the actual objectred contained in the
// wrapper.
- if (m_pMT == g_pRuntimeTypeClass ||
- MscorlibBinder::IsClass(m_pMT, CLASS__CLASS_INTROSPECTION_ONLY))
+ if (m_pMT == g_pRuntimeTypeClass)
return m_pMT->GetManagedClassObject();
else
return m_pSimpleWrapperOwner->GetObjectRef();
diff --git a/src/vm/domainfile.cpp b/src/vm/domainfile.cpp
index c8bbcf7241..314f165eea 100644
--- a/src/vm/domainfile.cpp
+++ b/src/vm/domainfile.cpp
@@ -409,12 +409,6 @@ DomainAssembly *DomainFile::GetDomainAssembly()
return (DomainAssembly *) this;
}
-BOOL DomainFile::IsIntrospectionOnly()
-{
- WRAPPER_NO_CONTRACT;
- return GetFile()->IsIntrospectionOnly();
-}
-
// Return true iff the debugger should get notifications about this assembly.
//
// Notes:
@@ -431,7 +425,6 @@ BOOL DomainAssembly::IsVisibleToDebugger()
SUPPORTS_DAC;
// If you can't run an assembly, then don't send notifications to the debugger.
- // This check includeds IsIntrospectionOnly().
return ((GetAssembly() != NULL) ? GetAssembly()->HasRunAccess() : FALSE);
}
@@ -1052,9 +1045,6 @@ void DomainFile::EagerFixups()
WRAPPER_NO_CONTRACT;
#ifdef FEATURE_PREJIT
- if (IsIntrospectionOnly())
- return;
-
if (GetCurrentModule()->HasNativeImage())
{
GetCurrentModule()->RunEagerFixups();
@@ -1191,12 +1181,6 @@ void DomainFile::VerifyExecution()
}
CONTRACT_END;
- if (GetModule()->IsIntrospectionOnly())
- {
- // Throw an exception
- COMPlusThrow(kInvalidOperationException, IDS_EE_CODEEXECUTION_IN_INTROSPECTIVE_ASSEMBLY);
- }
-
if(GetFile()->PassiveDomainOnly())
{
// Remove path - location must be hidden for security purposes
diff --git a/src/vm/domainfile.h b/src/vm/domainfile.h
index 15811e2b3f..b163da87c6 100644
--- a/src/vm/domainfile.h
+++ b/src/vm/domainfile.h
@@ -260,8 +260,6 @@ class DomainFile
// Other public APIs
// ------------------------------------------------------------
- BOOL IsIntrospectionOnly();
-
#ifndef DACCESS_COMPILE
BOOL Equals(DomainFile *pFile) { WRAPPER_NO_CONTRACT; return GetFile()->Equals(pFile->GetFile()); }
BOOL Equals(PEFile *pFile) { WRAPPER_NO_CONTRACT; return GetFile()->Equals(pFile); }
diff --git a/src/vm/excep.cpp b/src/vm/excep.cpp
index 0c9e101542..5cd5e6c2e2 100644
--- a/src/vm/excep.cpp
+++ b/src/vm/excep.cpp
@@ -12920,7 +12920,6 @@ UINT GetResourceIDForFileLoadExceptionHR(HRESULT hr)
case (HRESULT)IDS_INET_E_SECURITY_PROBLEM:
case (HRESULT)IDS_EE_BAD_USER_PROFILE:
case (HRESULT)IDS_EE_ALREADY_EXISTS:
- case IDS_EE_REFLECTIONONLY_LOADFAILURE:
case IDS_CLASSLOAD_32BITCLRLOADING64BITASSEMBLY:
break;
diff --git a/src/vm/frameworkexceptionloader.cpp b/src/vm/frameworkexceptionloader.cpp
index 5885060676..442973686f 100644
--- a/src/vm/frameworkexceptionloader.cpp
+++ b/src/vm/frameworkexceptionloader.cpp
@@ -66,7 +66,7 @@ MethodTable* FrameworkExceptionLoader::GetException(RuntimeExceptionKind kind)
// Loading will either succeed or throw a FileLoadException. Catch & swallow that exception.
EX_TRY
{
- pMT = TypeName::GetTypeFromAsmQualifiedName(assemblyQualifiedName.GetUnicode(), FALSE).GetMethodTable();
+ pMT = TypeName::GetTypeFromAsmQualifiedName(assemblyQualifiedName.GetUnicode()).GetMethodTable();
// Since this type is from another assembly, we must ensure that assembly has been sufficiently loaded.
pMT->EnsureActive();
diff --git a/src/vm/genmeth.cpp b/src/vm/genmeth.cpp
index 4c1ba8b93b..f142fb4ae6 100644
--- a/src/vm/genmeth.cpp
+++ b/src/vm/genmeth.cpp
@@ -375,8 +375,7 @@ InstantiatedMethodDesc::NewInstantiatedMethodDesc(MethodTable *pExactMT,
// Next look in each ngen'ed image in turn
AppDomain::AssemblyIterator assemblyIterator = GetAppDomain()->IterateAssembliesEx((AssemblyIterationFlags)(
- kIncludeLoaded |
- (pExactMT->IsIntrospectionOnly() ? kIncludeIntrospection : kIncludeExecution)));
+ kIncludeLoaded | kIncludeExecution));
CollectibleAssemblyHolder<DomainAssembly *> pDomainAssembly;
while ((pNewMD == NULL) && assemblyIterator.Next(pDomainAssembly.This()))
{
diff --git a/src/vm/interoputil.cpp b/src/vm/interoputil.cpp
index 09f7d88904..24afdf73fa 100644
--- a/src/vm/interoputil.cpp
+++ b/src/vm/interoputil.cpp
@@ -5255,7 +5255,7 @@ TypeHandle GetWinRTType(SString* ssTypeName, BOOL bThrowIfNotFound)
SString ssAssemblyName(SString::Utf8Literal, "WindowsRuntimeAssemblyName, ContentType=WindowsRuntime");
DomainAssembly *pAssembly = LoadDomainAssembly(&ssAssemblyName, NULL,
NULL,
- bThrowIfNotFound, FALSE, ssTypeName);
+ bThrowIfNotFound, ssTypeName);
if (pAssembly != NULL)
{
typeHandle = TypeName::GetTypeFromAssembly(*ssTypeName, pAssembly->GetAssembly(), bThrowIfNotFound);
@@ -5953,7 +5953,7 @@ MethodTable *WinRTInterfaceRedirector::GetWinRTTypeForRedirectedInterfaceIndex(W
const NonMscorlibRedirectedInterfaceInfo *pInfo = &s_rNonMscorlibInterfaceInfos[id & ~NON_MSCORLIB_MARKER];
SString assemblyQualifiedTypeName(SString::Utf8, pInfo->m_szWinRTInterfaceAssemblyQualifiedTypeName);
- RETURN TypeName::GetTypeFromAsmQualifiedName(assemblyQualifiedTypeName.GetUnicode(), FALSE).GetMethodTable();
+ RETURN TypeName::GetTypeFromAsmQualifiedName(assemblyQualifiedTypeName.GetUnicode()).GetMethodTable();
}
}
@@ -5970,7 +5970,7 @@ MethodDesc *WinRTInterfaceRedirector::LoadMethodFromRedirectedAssembly(LPCUTF8 s
SString assemblyQualifiedTypeName(SString::Utf8, szAssemblyQualifiedTypeName);
- MethodTable *pMT = TypeName::GetTypeFromAsmQualifiedName(assemblyQualifiedTypeName.GetUnicode(), FALSE).GetMethodTable();
+ MethodTable *pMT = TypeName::GetTypeFromAsmQualifiedName(assemblyQualifiedTypeName.GetUnicode()).GetMethodTable();
return MemberLoader::FindMethodByName(pMT, szMethodName);
}
@@ -6239,13 +6239,13 @@ MethodTable *WinRTDelegateRedirector::GetWinRTTypeForRedirectedDelegateIndex(Win
case WinMDAdapter::RedirectedTypeIndex_System_Collections_Specialized_NotifyCollectionChangedEventHandler:
{
SString assemblyQualifiedTypeName(SString::Utf8, NCCEHWINRT_ASM_QUAL_TYPE_NAME);
- return TypeName::GetTypeFromAsmQualifiedName(assemblyQualifiedTypeName.GetUnicode(), FALSE).GetMethodTable();
+ return TypeName::GetTypeFromAsmQualifiedName(assemblyQualifiedTypeName.GetUnicode()).GetMethodTable();
}
case WinMDAdapter::RedirectedTypeIndex_System_ComponentModel_PropertyChangedEventHandler:
{
SString assemblyQualifiedTypeName(SString::Utf8, PCEHWINRT_ASM_QUAL_TYPE_NAME);
- return TypeName::GetTypeFromAsmQualifiedName(assemblyQualifiedTypeName.GetUnicode(), FALSE).GetMethodTable();
+ return TypeName::GetTypeFromAsmQualifiedName(assemblyQualifiedTypeName.GetUnicode()).GetMethodTable();
}
default:
diff --git a/src/vm/marshalnative.cpp b/src/vm/marshalnative.cpp
index a552ef33f5..133cbf9069 100644
--- a/src/vm/marshalnative.cpp
+++ b/src/vm/marshalnative.cpp
@@ -974,8 +974,7 @@ FCIMPL1(ITypeInfo*, MarshalNative::GetITypeInfoForType, ReflectClassBaseObject*
COMPlusThrowArgumentNull(W("t"));
MethodTable *pRefMT = refClass->GetMethodTable();
- if (pRefMT != g_pRuntimeTypeClass &&
- pRefMT != MscorlibBinder::GetClass(CLASS__CLASS_INTROSPECTION_ONLY))
+ if (pRefMT != g_pRuntimeTypeClass)
COMPlusThrowArgumentException(W("t"), W("Argument_MustBeRuntimeType"));
TypeHandle th = refClass->GetType();
@@ -1533,8 +1532,7 @@ FCIMPL1(FC_BOOL_RET, MarshalNative::IsTypeVisibleFromCom, ReflectClassBaseObject
COMPlusThrowArgumentNull(W("t"));
MethodTable *pRefMT = refClass->GetMethodTable();
- if (pRefMT != g_pRuntimeTypeClass &&
- pRefMT != MscorlibBinder::GetClass(CLASS__CLASS_INTROSPECTION_ONLY))
+ if (pRefMT != g_pRuntimeTypeClass)
COMPlusThrowArgumentException(W("t"), W("Argument_MustBeRuntimeType"));
// Call the internal version of IsTypeVisibleFromCom.
@@ -1728,8 +1726,7 @@ FCIMPL2(void, MarshalNative::DoGenerateGuidForType, GUID * result, ReflectClassB
COMPlusThrowArgumentNull(W("type"));
MethodTable *pRefMT = refType->GetMethodTable();
- if (pRefMT != g_pRuntimeTypeClass &&
- pRefMT != MscorlibBinder::GetClass(CLASS__CLASS_INTROSPECTION_ONLY))
+ if (pRefMT != g_pRuntimeTypeClass)
COMPlusThrowArgumentException(W("type"), W("Argument_MustBeRuntimeType"));
if (result == NULL)
COMPlusThrow(kArgumentNullException, W("ArgumentNull_GUID"));
@@ -1964,8 +1961,7 @@ FCIMPL1(int, MarshalNative::GetStartComSlot, ReflectClassBaseObject* tUNSAFE)
COMPlusThrow(kArgumentNullException, W("ArgumentNull_Generic"));
MethodTable *pTMT = t->GetMethodTable();
- if (pTMT != g_pRuntimeTypeClass &&
- pTMT != MscorlibBinder::GetClass(CLASS__CLASS_INTROSPECTION_ONLY))
+ if (pTMT != g_pRuntimeTypeClass)
COMPlusThrowArgumentException(W("t"), W("Argument_MustBeRuntimeType"));
MethodTable *pMT = t->GetType().GetMethodTable();
@@ -1998,8 +1994,7 @@ FCIMPL1(int, MarshalNative::GetEndComSlot, ReflectClassBaseObject* tUNSAFE)
COMPlusThrow(kArgumentNullException, W("ArgumentNull_Generic"));
MethodTable *pTMT = t->GetMethodTable();
- if (pTMT != g_pRuntimeTypeClass &&
- pTMT != MscorlibBinder::GetClass(CLASS__CLASS_INTROSPECTION_ONLY))
+ if (pTMT != g_pRuntimeTypeClass)
COMPlusThrowArgumentException(W("t"), W("Argument_MustBeRuntimeType"));
TypeHandle classTH = t->GetType();
@@ -2077,8 +2072,7 @@ FCIMPL3(Object*, MarshalNative::GetMethodInfoForComSlot, ReflectClassBaseObject*
COMPlusThrow(kArgumentNullException, W("ArgumentNull_Generic"));
MethodTable *pTMT = t->GetMethodTable();
- if (pTMT != g_pRuntimeTypeClass &&
- pTMT != MscorlibBinder::GetClass(CLASS__CLASS_INTROSPECTION_ONLY))
+ if (pTMT != g_pRuntimeTypeClass)
COMPlusThrowArgumentException(W("t"), W("Argument_MustBeRuntimeType"));
TypeHandle type = t->GetType();
diff --git a/src/vm/method.cpp b/src/vm/method.cpp
index 68f54233ed..bcc11e85ff 100644
--- a/src/vm/method.cpp
+++ b/src/vm/method.cpp
@@ -120,13 +120,6 @@ SIZE_T MethodDesc::SizeOf()
return size;
}
-//*******************************************************************************
-BOOL MethodDesc::IsIntrospectionOnly()
-{
- WRAPPER_NO_CONTRACT;
- return GetModule()->GetAssembly()->IsIntrospectionOnly();
-}
-
/*********************************************************************/
#ifndef DACCESS_COMPILE
BOOL NDirectMethodDesc::HasDefaultDllImportSearchPathsAttribute()
diff --git a/src/vm/method.hpp b/src/vm/method.hpp
index 943bcdb6d6..56acf46635 100644
--- a/src/vm/method.hpp
+++ b/src/vm/method.hpp
@@ -704,7 +704,6 @@ public:
InterlockedUpdateFlags(mdcNotInline, set);
}
- BOOL IsIntrospectionOnly();
#ifndef DACCESS_COMPILE
VOID EnsureActive();
#endif
diff --git a/src/vm/methodtable.cpp b/src/vm/methodtable.cpp
index aeb0c766f1..a768ded29b 100644
--- a/src/vm/methodtable.cpp
+++ b/src/vm/methodtable.cpp
@@ -4029,10 +4029,7 @@ OBJECTREF MethodTable::GetManagedClassObject()
REFLECTCLASSBASEREF refClass = NULL;
GCPROTECT_BEGIN(refClass);
- if (GetAssembly()->IsIntrospectionOnly())
- refClass = (REFLECTCLASSBASEREF) AllocateObject(MscorlibBinder::GetClass(CLASS__CLASS_INTROSPECTION_ONLY));
- else
- refClass = (REFLECTCLASSBASEREF) AllocateObject(g_pRuntimeTypeClass);
+ refClass = (REFLECTCLASSBASEREF) AllocateObject(g_pRuntimeTypeClass);
LoaderAllocator *pLoaderAllocator = GetLoaderAllocator();
@@ -5966,7 +5963,7 @@ void MethodTable::DoFullyLoad(Generics::RecursionGraph * const pVisited, const
SetIsDependenciesLoaded();
#if defined(FEATURE_COMINTEROP) && !defined(DACCESS_COMPILE)
- if (WinRTSupported() && g_fEEStarted && !ContainsIntrospectionOnlyTypes())
+ if (WinRTSupported() && g_fEEStarted)
{
_ASSERTE(GetAppDomain() != NULL);
@@ -9367,7 +9364,7 @@ CHECK MethodTable::CheckActivated()
}
#ifdef _MSC_VER
-// Optimization intended for EnsureInstanceActive, IsIntrospectionOnly, EnsureActive only
+// Optimization intended for EnsureInstanceActive, EnsureActive only
#pragma optimize("t", on)
#endif // _MSC_VER
//==========================================================================================
@@ -9423,40 +9420,6 @@ VOID MethodTable::EnsureInstanceActive()
#endif //!DACCESS_COMPILE
//==========================================================================================
-BOOL MethodTable::IsIntrospectionOnly()
-{
- WRAPPER_NO_CONTRACT;
- return GetAssembly()->IsIntrospectionOnly();
-}
-
-//==========================================================================================
-BOOL MethodTable::ContainsIntrospectionOnlyTypes()
-{
- CONTRACTL
- {
- THROWS;
- GC_TRIGGERS;
- MODE_ANY;
- }
- CONTRACTL_END
-
- // check this type
- if (IsIntrospectionOnly())
- return TRUE;
-
- // check the instantiation
- Instantiation inst = GetInstantiation();
- for (DWORD i = 0; i < inst.GetNumArgs(); i++)
- {
- CONSISTENCY_CHECK(!inst[i].IsEncodedFixup());
- if (inst[i].ContainsIntrospectionOnlyTypes())
- return TRUE;
- }
-
- return FALSE;
-}
-
-//==========================================================================================
#ifndef DACCESS_COMPILE
VOID MethodTable::EnsureActive()
{
diff --git a/src/vm/methodtable.h b/src/vm/methodtable.h
index 98702961f3..38ce20ee0a 100644
--- a/src/vm/methodtable.h
+++ b/src/vm/methodtable.h
@@ -993,11 +993,6 @@ public:
}
#endif // FEATURE_COMINTEROP
- BOOL IsIntrospectionOnly();
-
- // Checks this type and its instantiation for "IsIntrospectionOnly"
- BOOL ContainsIntrospectionOnlyTypes();
-
#ifndef DACCESS_COMPILE
VOID EnsureActive();
VOID EnsureInstanceActive();
diff --git a/src/vm/mlinfo.cpp b/src/vm/mlinfo.cpp
index 12be6d3b95..ad7093f500 100644
--- a/src/vm/mlinfo.cpp
+++ b/src/vm/mlinfo.cpp
@@ -913,17 +913,17 @@ EventArgsMarshalingInfo::EventArgsMarshalingInfo()
// Load the System.Collections.Specialized.NotifyCollectionChangedEventArgs class.
SString qualifiedNCCEventArgsTypeName(SString::Utf8, NCCEVENTARGS_ASM_QUAL_TYPE_NAME);
- m_hndSystemNCCEventArgsType = TypeName::GetTypeFromAsmQualifiedName(qualifiedNCCEventArgsTypeName.GetUnicode(), FALSE);
+ m_hndSystemNCCEventArgsType = TypeName::GetTypeFromAsmQualifiedName(qualifiedNCCEventArgsTypeName.GetUnicode());
_ASSERTE(!m_hndSystemNCCEventArgsType.IsNull() && "Cannot load System.Collections.Specialized.NotifyCollectionChangedEventArgs!");
// Load the System.ComponentModel.PropertyChangedEventArgs class.
SString qualifiedPCEventArgsTypeName(SString::Utf8, PCEVENTARGS_ASM_QUAL_TYPE_NAME);
- m_hndSystemPCEventArgsType = TypeName::GetTypeFromAsmQualifiedName(qualifiedPCEventArgsTypeName.GetUnicode(), FALSE);
+ m_hndSystemPCEventArgsType = TypeName::GetTypeFromAsmQualifiedName(qualifiedPCEventArgsTypeName.GetUnicode());
_ASSERTE(!m_hndSystemPCEventArgsType.IsNull() && "Cannot load System.ComponentModel.PropertyChangedEventArgs!");
// Load the NCCEventArgs marshaler class.
SString qualifiedNCCEventArgsMarshalerTypeName(SString::Utf8, NCCEVENTARGS_MARSHALER_ASM_QUAL_TYPE_NAME);
- TypeHandle hndNCCEventArgsMarshalerType = TypeName::GetTypeFromAsmQualifiedName(qualifiedNCCEventArgsMarshalerTypeName.GetUnicode(), FALSE);
+ TypeHandle hndNCCEventArgsMarshalerType = TypeName::GetTypeFromAsmQualifiedName(qualifiedNCCEventArgsMarshalerTypeName.GetUnicode());
// Retrieve the method to convert a .NET NCCEventArgs to a WinRT NCCEventArgs.
m_pSystemNCCEventArgsToWinRTNCCEventArgsMD = MemberLoader::FindMethodByName(hndNCCEventArgsMarshalerType.GetMethodTable(), EVENTARGS_TO_WINRT_EVENTARGS_METH_NAME);
@@ -935,7 +935,7 @@ EventArgsMarshalingInfo::EventArgsMarshalingInfo()
// Load the PCEventArgs marshaler class.
SString qualifiedPCEventArgsMarshalerTypeName(SString::Utf8, PCEVENTARGS_MARSHALER_ASM_QUAL_TYPE_NAME);
- TypeHandle hndPCEventArgsMarshalerType = TypeName::GetTypeFromAsmQualifiedName(qualifiedPCEventArgsMarshalerTypeName.GetUnicode(), FALSE);
+ TypeHandle hndPCEventArgsMarshalerType = TypeName::GetTypeFromAsmQualifiedName(qualifiedPCEventArgsMarshalerTypeName.GetUnicode());
// Retrieve the method to convert a .NET PCEventArgs to a WinRT PCEventArgs.
m_pSystemPCEventArgsToWinRTPCEventArgsMD = MemberLoader::FindMethodByName(hndPCEventArgsMarshalerType.GetMethodTable(), EVENTARGS_TO_WINRT_EVENTARGS_METH_NAME);
@@ -992,7 +992,7 @@ UriMarshalingInfo::UriMarshalingInfo()
// Load the System.Uri class.
SString qualifiedUriTypeName(SString::Utf8, URI_ASM_QUAL_TYPE_NAME);
- m_hndSystemUriType = TypeName::GetTypeFromAsmQualifiedName(qualifiedUriTypeName.GetUnicode(), FALSE);
+ m_hndSystemUriType = TypeName::GetTypeFromAsmQualifiedName(qualifiedUriTypeName.GetUnicode());
_ASSERTE(!m_hndSystemUriType.IsNull() && "Cannot load System.Uri!");
m_SystemUriOriginalStringGetterMD = MemberLoader::FindPropertyMethod(m_hndSystemUriType.GetMethodTable(), ORIGINALSTRING_PROPERTY_NAME, PropertyGet);
@@ -1039,12 +1039,12 @@ OleColorMarshalingInfo::OleColorMarshalingInfo() :
SString qualifiedColorTranslatorTypeName(SString::Utf8, COLOR_TRANSLATOR_ASM_QUAL_TYPE_NAME);
// Load the color translator class.
- TypeHandle hndColorTranslatorType = TypeName::GetTypeFromAsmQualifiedName(qualifiedColorTranslatorTypeName.GetUnicode(), FALSE);
+ TypeHandle hndColorTranslatorType = TypeName::GetTypeFromAsmQualifiedName(qualifiedColorTranslatorTypeName.GetUnicode());
SString qualifiedColorTypeName(SString::Utf8, COLOR_ASM_QUAL_TYPE_NAME);
// Load the color class.
- m_hndColorType = TypeName::GetTypeFromAsmQualifiedName(qualifiedColorTypeName.GetUnicode(), FALSE);
+ m_hndColorType = TypeName::GetTypeFromAsmQualifiedName(qualifiedColorTypeName.GetUnicode());
// Retrieve the method to convert an OLE_COLOR to a System.Drawing.Color.
m_OleColorToSystemColorMD = MemberLoader::FindMethodByName(hndColorTranslatorType.GetMethodTable(), OLECOLOR_TO_SYSTEMCOLOR_METH_NAME);
diff --git a/src/vm/mngstdinterfaces.cpp b/src/vm/mngstdinterfaces.cpp
index d6de4f32a0..7e93877c91 100644
--- a/src/vm/mngstdinterfaces.cpp
+++ b/src/vm/mngstdinterfaces.cpp
@@ -131,7 +131,7 @@ void MngStdItfBase::InitHelper(
// Retrieve the custom marshaler type handle.
SString sstrCMTypeName(SString::Utf8, strCMTypeName);
- *pCustomMarshalerType = TypeName::GetTypeFromAsmQualifiedName(sstrCMTypeName.GetUnicode(), FALSE);
+ *pCustomMarshalerType = TypeName::GetTypeFromAsmQualifiedName(sstrCMTypeName.GetUnicode());
// Run the <clinit> for the marshaller.
pCustomMarshalerType->GetMethodTable()->EnsureInstanceActive();
@@ -139,7 +139,7 @@ void MngStdItfBase::InitHelper(
// Load the managed view.
SString sstrManagedViewName(SString::Utf8, strManagedViewName);
- *pManagedViewType = TypeName::GetTypeFromAsmQualifiedName(sstrManagedViewName.GetUnicode(), FALSE);
+ *pManagedViewType = TypeName::GetTypeFromAsmQualifiedName(sstrManagedViewName.GetUnicode());
// Run the <clinit> for the managed view.
pManagedViewType->GetMethodTable()->EnsureInstanceActive();
diff --git a/src/vm/mscorlib.h b/src/vm/mscorlib.h
index c33e9e1f74..c1b904ccb5 100644
--- a/src/vm/mscorlib.h
+++ b/src/vm/mscorlib.h
@@ -209,8 +209,6 @@ DEFINE_METHOD(CLASS, GET_METHOD_BASE, GetMethodBase,
DEFINE_METHOD(CLASS, GET_FIELD_INFO, GetFieldInfo, SM_RuntimeType_IRuntimeFieldInfo_RetFieldInfo)
DEFINE_METHOD(CLASS, GET_PROPERTY_INFO, GetPropertyInfo, SM_RuntimeType_Int_RetPropertyInfo)
-DEFINE_CLASS(CLASS_INTROSPECTION_ONLY, System, ReflectionOnlyType)
-
#ifdef FEATURE_COMINTEROP
DEFINE_CLASS_U(System, __ComObject, ComObject)
DEFINE_FIELD_U(m_ObjectToDataMap, ComObject, m_ObjectToDataMap)
diff --git a/src/vm/pefile.cpp b/src/vm/pefile.cpp
index 77c99f6191..7cfa05779a 100644
--- a/src/vm/pefile.cpp
+++ b/src/vm/pefile.cpp
@@ -212,9 +212,6 @@ static void ValidatePEFileMachineType(PEFile *peFile)
{
STANDARD_VM_CONTRACT;
- if (peFile->IsIntrospectionOnly())
- return; // ReflectionOnly assemblies permitted to violate CPU restrictions
-
if (peFile->IsDynamic())
return; // PEFiles for ReflectionEmit assemblies don't cache the machine type.
@@ -280,12 +277,12 @@ void PEFile::LoadLibrary(BOOL allowNativeSkip/*=TRUE*/) // if allowNativeSkip==F
// Resource images are always flat.
if (IsResource())
{
- GetILimage()->LoadNoMetaData(IsIntrospectionOnly());
+ GetILimage()->LoadNoMetaData();
RETURN;
}
#if !defined(_TARGET_64BIT_)
- if (!HasNativeImage() && (!GetILimage()->Has32BitNTHeaders()) && !IsIntrospectionOnly())
+ if (!HasNativeImage() && !GetILimage()->Has32BitNTHeaders())
{
// Tried to load 64-bit assembly on 32-bit platform.
EEFileLoadException::Throw(this, COR_E_BADIMAGEFORMAT, NULL);
@@ -298,16 +295,6 @@ void PEFile::LoadLibrary(BOOL allowNativeSkip/*=TRUE*/) // if allowNativeSkip==F
EnsureImageOpened();
}
- if (IsIntrospectionOnly())
- {
- GetILimage()->LoadForIntrospection();
- RETURN;
- }
-
-
- //---- Below this point, only do the things necessary for execution ----
- _ASSERTE(!IsIntrospectionOnly());
-
#ifdef FEATURE_PREJIT
// For on-disk Dlls, we can call LoadLibrary
if (IsDll() && !((HasNativeImage()?m_nativeImage:GetILimage())->GetPath().IsEmpty()))
@@ -463,13 +450,6 @@ BOOL PEFile::Equals(PEFile *pFile)
if (pFile == this)
return TRUE;
-
- // Execution and introspection files are NOT equal
- if ( (!IsIntrospectionOnly()) != !(pFile->IsIntrospectionOnly()) )
- {
- return FALSE;
- }
-
// Different host assemblies cannot be equal unless they are associated with the same host binder
// It's ok if only one has a host binder because multiple threads can race to load the same assembly
// and that may cause temporary candidate PEAssembly objects that never get bound to a host assembly
@@ -1633,11 +1613,11 @@ PEFile::LoadAssembly(
AssemblySpec spec;
- spec.InitializeSpec(kAssemblyRef, pImport, GetAppDomain()->FindAssembly(GetAssembly()), IsIntrospectionOnly());
+ spec.InitializeSpec(kAssemblyRef, pImport, GetAppDomain()->FindAssembly(GetAssembly()));
if (szWinRtTypeClassName != NULL)
spec.SetWindowsRuntimeType(szWinRtTypeNamespace, szWinRtTypeClassName);
- RETURN GetAppDomain()->BindAssemblySpec(&spec, TRUE, IsIntrospectionOnly());
+ RETURN GetAppDomain()->BindAssemblySpec(&spec, TRUE);
}
// ------------------------------------------------------------
@@ -1805,7 +1785,7 @@ BOOL PEFile::GetResource(LPCSTR szName, DWORD *cbResource,
return FALSE;
AssemblySpec spec;
- spec.InitializeSpec(mdLinkRef, GetPersistentMDImport(), pDomainAssembly, pDomainAssembly->GetFile()->IsIntrospectionOnly());
+ spec.InitializeSpec(mdLinkRef, GetPersistentMDImport(), pDomainAssembly);
pDomainAssembly = spec.LoadDomainAssembly(FILE_LOADED);
if (dwLocation) {
@@ -1962,7 +1942,6 @@ PEAssembly::PEAssembly(
IMetaDataEmit* pEmit,
PEFile *creator,
BOOL system,
- BOOL introspectionOnly/*=FALSE*/,
PEImage * pPEImageIL /*= NULL*/,
PEImage * pPEImageNI /*= NULL*/,
ICLRPrivAssembly * pHostAssembly /*= NULL*/)
@@ -1985,14 +1964,6 @@ PEAssembly::PEAssembly(
}
CONTRACTL_END;
- if (introspectionOnly)
- {
- if (!system) // Implementation restriction: mscorlib.dll cannot be loaded as introspection. The architecture depends on there being exactly one mscorlib.
- {
- m_flags |= PEFILE_INTROSPECTIONONLY;
- }
- }
-
m_flags |= PEFILE_ASSEMBLY;
if (system)
m_flags |= PEFILE_SYSTEM;
@@ -2085,8 +2056,7 @@ PEAssembly *PEAssembly::Open(
PEAssembly * pParent,
PEImage * pPEImageIL,
PEImage * pPEImageNI,
- ICLRPrivAssembly * pHostAssembly,
- BOOL fIsIntrospectionOnly)
+ ICLRPrivAssembly * pHostAssembly)
{
STANDARD_VM_CONTRACT;
@@ -2095,7 +2065,6 @@ PEAssembly *PEAssembly::Open(
nullptr, // IMetaDataEmit
pParent, // PEFile creator
FALSE, // isSystem
- fIsIntrospectionOnly,
pPEImageIL,
pPEImageNI,
pHostAssembly);
@@ -2197,7 +2166,6 @@ PEAssembly *PEAssembly::DoOpenSystem(IUnknown * pAppCtx)
/* static */
PEAssembly *PEAssembly::OpenMemory(PEAssembly *pParentAssembly,
const void *flat, COUNT_T size,
- BOOL isIntrospectionOnly/*=FALSE*/,
CLRPrivBinderLoadFile* pBinderToUse)
{
STANDARD_VM_CONTRACT;
@@ -2206,7 +2174,7 @@ PEAssembly *PEAssembly::OpenMemory(PEAssembly *pParentAssembly,
EX_TRY
{
- result = DoOpenMemory(pParentAssembly, flat, size, isIntrospectionOnly, pBinderToUse);
+ result = DoOpenMemory(pParentAssembly, flat, size, pBinderToUse);
}
EX_HOOK
{
@@ -2246,7 +2214,6 @@ PEAssembly *PEAssembly::DoOpenMemory(
PEAssembly *pParentAssembly,
const void *flat,
COUNT_T size,
- BOOL isIntrospectionOnly,
CLRPrivBinderLoadFile* pBinderToUse)
{
CONTRACT(PEAssembly *)
@@ -2279,24 +2246,23 @@ PEAssembly *PEAssembly::DoOpenMemory(
IfFailThrow(CCoreCLRBinderHelper::GetAssemblyFromImage(image, NULL, &assembly));
bindResult.Init(assembly,FALSE,FALSE);
- RETURN new PEAssembly(&bindResult, NULL, pParentAssembly, FALSE, isIntrospectionOnly);
+ RETURN new PEAssembly(&bindResult, NULL, pParentAssembly, FALSE);
}
#endif // !CROSSGEN_COMPILE
PEAssembly* PEAssembly::Open(CoreBindResult* pBindResult,
- BOOL isSystem, BOOL isIntrospectionOnly)
+ BOOL isSystem)
{
- return new PEAssembly(pBindResult,NULL,NULL,isSystem,isIntrospectionOnly);
+ return new PEAssembly(pBindResult,NULL,NULL,isSystem);
};
/* static */
PEAssembly *PEAssembly::Create(PEAssembly *pParentAssembly,
- IMetaDataAssemblyEmit *pAssemblyEmit,
- BOOL bIsIntrospectionOnly)
+ IMetaDataAssemblyEmit *pAssemblyEmit)
{
CONTRACT(PEAssembly *)
{
@@ -2311,7 +2277,7 @@ PEAssembly *PEAssembly::Create(PEAssembly *pParentAssembly,
// we have.)
SafeComHolder<IMetaDataEmit> pEmit;
pAssemblyEmit->QueryInterface(IID_IMetaDataEmit, (void **)&pEmit);
- PEAssemblyHolder pFile(new PEAssembly(NULL, pEmit, pParentAssembly, FALSE, bIsIntrospectionOnly));
+ PEAssemblyHolder pFile(new PEAssembly(NULL, pEmit, pParentAssembly, FALSE));
RETURN pFile.Extract();
}
@@ -2423,20 +2389,8 @@ void PEAssembly::VerifyStrongName()
ThrowHR(COR_E_BADIMAGEFORMAT);
}
- // Check the strong name if present.
- if (IsIntrospectionOnly())
- {
- // For introspection assemblies, we don't need to check strong names and we don't
- // need to do module hash checks.
- m_flags |= PEFILE_SKIP_MODULE_HASH_CHECKS;
- }
- else
- {
- // Runtime policy on CoreCLR is to skip verification of ALL assemblies
- m_flags |= PEFILE_SKIP_MODULE_HASH_CHECKS;
- m_fStrongNameVerified = TRUE;
- }
-
+ // Runtime policy on CoreCLR is to skip verification of ALL assemblies
+ m_flags |= PEFILE_SKIP_MODULE_HASH_CHECKS;
m_fStrongNameVerified = TRUE;
}
diff --git a/src/vm/pefile.h b/src/vm/pefile.h
index 787474745d..66915bf81a 100644
--- a/src/vm/pefile.h
+++ b/src/vm/pefile.h
@@ -218,7 +218,6 @@ public:
BOOL IsDynamic() const;
BOOL IsResource() const;
BOOL IsIStream() const;
- BOOL IsIntrospectionOnly() const;
// Returns self (if assembly) or containing assembly (if module)
PEAssembly *GetAssembly() const;
@@ -454,7 +453,6 @@ protected:
PEFILE_NATIVE_IMAGE_USED_EXCLUSIVELY =0x1000,
PEFILE_SAFE_TO_HARDBINDTO = 0x4000, // NGEN-only flag
#endif
- PEFILE_INTROSPECTIONONLY = 0x400,
};
// ------------------------------------------------------------
@@ -674,8 +672,7 @@ class PEAssembly : public PEFile
PEAssembly * pParent,
PEImage * pPEImageIL,
PEImage * pPEImageNI,
- ICLRPrivAssembly * pHostAssembly,
- BOOL fIsIntrospectionOnly = FALSE);
+ ICLRPrivAssembly * pHostAssembly);
// This opens the canonical mscorlib.dll
static PEAssembly *OpenSystem(IUnknown *pAppCtx);
@@ -685,26 +682,22 @@ class PEAssembly : public PEFile
static PEAssembly *Open(
CoreBindResult* pBindResult,
- BOOL isSystem,
- BOOL isIntrospectionOnly);
+ BOOL isSystem);
static PEAssembly *Create(
PEAssembly *pParentAssembly,
- IMetaDataAssemblyEmit *pEmit,
- BOOL isIntrospectionOnly);
+ IMetaDataAssemblyEmit *pEmit);
static PEAssembly *OpenMemory(
PEAssembly *pParentAssembly,
const void *flat,
COUNT_T size,
- BOOL isIntrospectionOnly = FALSE,
CLRPrivBinderLoadFile* pBinderToUse = NULL);
static PEAssembly *DoOpenMemory(
PEAssembly *pParentAssembly,
const void *flat,
COUNT_T size,
- BOOL isIntrospectionOnly,
CLRPrivBinderLoadFile* pBinderToUse);
private:
@@ -789,7 +782,6 @@ class PEAssembly : public PEFile
IMetaDataEmit *pEmit,
PEFile *creator,
BOOL system,
- BOOL introspectionOnly = FALSE,
PEImage * pPEImageIL = NULL,
PEImage * pPEImageNI = NULL,
ICLRPrivAssembly * pHostAssembly = NULL
diff --git a/src/vm/pefile.inl b/src/vm/pefile.inl
index 47c921634d..c5c92a96c9 100644
--- a/src/vm/pefile.inl
+++ b/src/vm/pefile.inl
@@ -118,7 +118,7 @@ inline void PEFile::ValidateForExecution()
// We do not need to check NGen images; if it had the attribute, it would have failed to load
// at NGen time and so there would be no NGen image.
- if (HasNativeImage() || IsIntrospectionOnly())
+ if (HasNativeImage())
return;
//
@@ -328,16 +328,6 @@ inline BOOL PEFile::IsIStream() const
return (m_flags & PEFILE_ISTREAM) != 0;
}
-inline BOOL PEFile::IsIntrospectionOnly() const
-{
- WRAPPER_NO_CONTRACT;
- STATIC_CONTRACT_SO_TOLERANT;
- {
- return (m_flags & PEFILE_INTROSPECTIONONLY) != 0;
- }
-}
-
-
inline PEAssembly *PEFile::GetAssembly() const
{
WRAPPER_NO_CONTRACT;
@@ -1343,9 +1333,7 @@ inline PTR_PEImageLayout PEFile::GetLoadedIL()
SUPPORTS_DAC;
_ASSERTE(HasOpenedILimage());
- if(IsIntrospectionOnly())
- return GetOpenedILimage()->GetLoadedIntrospectionLayout();
-
+
return GetOpenedILimage()->GetLoadedLayout();
};
@@ -1368,10 +1356,6 @@ inline BOOL PEFile::IsLoaded(BOOL bAllowNative/*=TRUE*/)
CONTRACTL_END;
if(IsDynamic())
return TRUE;
- if(IsIntrospectionOnly())
- {
- return HasOpenedILimage() && GetOpenedILimage()->HasLoadedIntrospectionLayout();
- }
#ifdef FEATURE_PREJIT
if (bAllowNative && HasNativeImage())
{
diff --git a/src/vm/peimage.cpp b/src/vm/peimage.cpp
index 83989f0e4d..766d40bdc4 100644
--- a/src/vm/peimage.cpp
+++ b/src/vm/peimage.cpp
@@ -808,8 +808,6 @@ void PEImage::EnumMemoryRegions(CLRDataEnumMemoryFlags flags)
m_pLayouts[IMAGE_MAPPED]->EnumMemoryRegions(flags);
if (m_pLayouts[IMAGE_LOADED].IsValid() && m_pLayouts[IMAGE_LOADED]!=NULL)
m_pLayouts[IMAGE_LOADED]->EnumMemoryRegions(flags);
- if (m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION].IsValid() && m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION]!=NULL)
- m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION]->EnumMemoryRegions(flags);
}
#endif // #ifdef DACCESS_COMPILE
@@ -1179,19 +1177,6 @@ void PEImage::LoadFromMapped()
SetLayout(IMAGE_LOADED,pLayout.Extract());
}
-void PEImage::LoadForIntrospection()
-{
- STANDARD_VM_CONTRACT;
-
- if (HasLoadedIntrospectionLayout())
- return;
-
- PEImageLayoutHolder pLayout(GetLayout(PEImageLayout::LAYOUT_ANY,LAYOUT_CREATEIFNEEDED));
- SimpleWriteLockHolder lock(m_pLayoutLock);
- if(m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION]==NULL)
- SetLayout(IMAGE_LOADED_FOR_INTROSPECTION,pLayout.Extract());
-}
-
void PEImage::LoadNoFile()
{
CONTRACTL
@@ -1212,32 +1197,25 @@ void PEImage::LoadNoFile()
}
-void PEImage::LoadNoMetaData(BOOL bIntrospection)
+void PEImage::LoadNoMetaData()
{
STANDARD_VM_CONTRACT;
- if (bIntrospection)
- {
- if (HasLoadedIntrospectionLayout())
- return;
- }
- else
- if (HasLoadedLayout())
- return;
+ if (HasLoadedLayout())
+ return;
SimpleWriteLockHolder lock(m_pLayoutLock);
- int layoutKind=bIntrospection?IMAGE_LOADED_FOR_INTROSPECTION:IMAGE_LOADED;
- if (m_pLayouts[layoutKind]!=NULL)
+ if (m_pLayouts[IMAGE_LOADED]!=NULL)
return;
if (m_pLayouts[IMAGE_FLAT]!=NULL)
{
m_pLayouts[IMAGE_FLAT]->AddRef();
- SetLayout(layoutKind,m_pLayouts[IMAGE_FLAT]);
+ SetLayout(IMAGE_LOADED,m_pLayouts[IMAGE_FLAT]);
}
else
{
_ASSERTE(!m_path.IsEmpty());
- SetLayout(layoutKind,PEImageLayout::LoadFlat(GetFileHandle(),this));
+ SetLayout(IMAGE_LOADED,PEImageLayout::LoadFlat(GetFileHandle(),this));
}
}
diff --git a/src/vm/peimage.h b/src/vm/peimage.h
index a767c70342..e05f95dac8 100644
--- a/src/vm/peimage.h
+++ b/src/vm/peimage.h
@@ -70,11 +70,8 @@ public:
};
PTR_PEImageLayout GetLayout(DWORD imageLayoutMask,DWORD flags); //with ref
PTR_PEImageLayout GetLoadedLayout(); //no ref
- PTR_PEImageLayout GetLoadedIntrospectionLayout(); //no ref, introspection only
BOOL IsOpened();
BOOL HasLoadedLayout();
- BOOL HasLoadedIntrospectionLayout();
-
public:
// ------------------------------------------------------------
@@ -135,10 +132,9 @@ public:
void Load();
void SetLoadedHMODULE(HMODULE hMod);
- void LoadNoMetaData(BOOL bIntrospection);
+ void LoadNoMetaData();
void LoadNoFile();
- void LoadFromMapped();
- void LoadForIntrospection();
+ void LoadFromMapped();
void AllocateLazyCOWPages();
#endif
@@ -329,8 +325,7 @@ protected:
IMAGE_FLAT=0,
IMAGE_MAPPED=1,
IMAGE_LOADED=2,
- IMAGE_LOADED_FOR_INTROSPECTION=3,
- IMAGE_COUNT=4
+ IMAGE_COUNT=3
};
SimpleRWLock *m_pLayoutLock;
diff --git a/src/vm/peimage.inl b/src/vm/peimage.inl
index 954d8872f6..0e7410734e 100644
--- a/src/vm/peimage.inl
+++ b/src/vm/peimage.inl
@@ -94,16 +94,6 @@ inline PTR_PEImageLayout PEImage::GetLoadedLayout()
return m_pLayouts[IMAGE_LOADED]; //no addref
}
-inline PTR_PEImageLayout PEImage::GetLoadedIntrospectionLayout()
-{
- LIMITED_METHOD_CONTRACT;
- SUPPORTS_DAC;
-
- _ASSERTE(m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION]!=NULL);
- return m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION]; //no addref
-}
-
-
//
// GetExistingLayout - get an layout corresponding to the specified mask, or null if none.
// Does not take any locks or call AddRef.
@@ -125,8 +115,6 @@ inline PTR_PEImageLayout PEImage::GetExistingLayoutInternal(DWORD imageLayoutMas
if (imageLayoutMask&PEImageLayout::LAYOUT_LOADED)
pRetVal=m_pLayouts[IMAGE_LOADED];
- if (pRetVal==NULL && (imageLayoutMask & PEImageLayout::LAYOUT_LOADED_FOR_INTROSPECTION))
- pRetVal=m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION];
if (pRetVal==NULL && (imageLayoutMask & PEImageLayout::LAYOUT_MAPPED))
pRetVal=m_pLayouts[IMAGE_MAPPED];
if (pRetVal==NULL && (imageLayoutMask & PEImageLayout::LAYOUT_FLAT))
@@ -146,14 +134,7 @@ inline BOOL PEImage::HasLoadedLayout()
inline BOOL PEImage::IsOpened()
{
LIMITED_METHOD_CONTRACT;
- return m_pLayouts[IMAGE_LOADED]!=NULL ||m_pLayouts[IMAGE_MAPPED]!=NULL || m_pLayouts[IMAGE_FLAT] !=NULL || m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION]!=NULL;
-}
-
-
-inline BOOL PEImage::HasLoadedIntrospectionLayout() //introspection only!!!
-{
- LIMITED_METHOD_DAC_CONTRACT;
- return m_pLayouts[IMAGE_LOADED_FOR_INTROSPECTION]!=NULL;
+ return m_pLayouts[IMAGE_LOADED]!=NULL ||m_pLayouts[IMAGE_MAPPED]!=NULL || m_pLayouts[IMAGE_FLAT] !=NULL;
}
diff --git a/src/vm/prestub.cpp b/src/vm/prestub.cpp
index c567ba0573..378dc2e120 100644
--- a/src/vm/prestub.cpp
+++ b/src/vm/prestub.cpp
@@ -1650,16 +1650,6 @@ PCODE MethodDesc::DoPrestub(MethodTable *pDispatchingMT)
// Running a prestub on a method causes us to access its MethodTable
g_IBCLogger.LogMethodDescAccess(this);
- // A secondary layer of defense against executing code in inspection-only assembly.
- // This should already have been taken care of by not allowing inspection assemblies
- // to be activated. However, this is a very inexpensive piece of insurance in the name
- // of security.
- if (IsIntrospectionOnly())
- {
- _ASSERTE(!"A ReflectionOnly assembly reached the prestub. This should not have happened.");
- COMPlusThrow(kInvalidOperationException, IDS_EE_CODEEXECUTION_IN_INTROSPECTIVE_ASSEMBLY);
- }
-
if (ContainsGenericVariables())
{
COMPlusThrow(kInvalidOperationException, IDS_EE_CODEEXECUTION_CONTAINSGENERICVAR);
diff --git a/src/vm/profilingenumerators.cpp b/src/vm/profilingenumerators.cpp
index 2406f5aa42..a6b0a640f1 100644
--- a/src/vm/profilingenumerators.cpp
+++ b/src/vm/profilingenumerators.cpp
@@ -294,7 +294,7 @@ HRESULT IterateUnsharedModules(AppDomain * pAppDomain,
// DomainAssembly instances.
AppDomain::AssemblyIterator domainAssemblyIterator =
pAppDomain->IterateAssembliesEx(
- (AssemblyIterationFlags) (kIncludeAvailableToProfilers | kIncludeExecution | kIncludeIntrospection));
+ (AssemblyIterationFlags) (kIncludeAvailableToProfilers | kIncludeExecution));
CollectibleAssemblyHolder<DomainAssembly *> pDomainAssembly;
while (domainAssemblyIterator.Next(pDomainAssembly.This()))
diff --git a/src/vm/readytoruninfo.cpp b/src/vm/readytoruninfo.cpp
index c654e68b18..4a57ed52b5 100644
--- a/src/vm/readytoruninfo.cpp
+++ b/src/vm/readytoruninfo.cpp
@@ -463,13 +463,6 @@ PTR_ReadyToRunInfo ReadyToRunInfo::Initialize(Module * pModule, AllocMemTracker
return NULL;
}
- // Ignore ReadyToRun for introspection-only loads
- if (pFile->IsIntrospectionOnly())
- {
- DoLog("Ready to Run disabled - module loaded for reflection");
- return NULL;
- }
-
if (!pFile->HasLoadedIL())
{
DoLog("Ready to Run disabled - no loaded IL image");
diff --git a/src/vm/reflectioninvocation.cpp b/src/vm/reflectioninvocation.cpp
index 4d7ae83a54..d9ed5fb98b 100644
--- a/src/vm/reflectioninvocation.cpp
+++ b/src/vm/reflectioninvocation.cpp
@@ -168,9 +168,6 @@ FCIMPL5(Object*, RuntimeFieldHandle::GetValue, ReflectFieldObject *pFieldUNSAFE,
pAssem = declaringType.GetAssembly();
}
- if (pAssem->IsIntrospectionOnly())
- FCThrowEx(kInvalidOperationException, IDS_EE_CODEEXECUTION_IN_INTROSPECTIVE_ASSEMBLY, NULL, NULL, NULL);
-
// We should throw NotSupportedException here.
// But for backward compatibility we are throwing FieldAccessException instead.
if (pAssem->IsDynamic() && !pAssem->HasRunAccess())
@@ -331,9 +328,6 @@ FCIMPL7(void, RuntimeFieldHandle::SetValue, ReflectFieldObject *pFieldUNSAFE, Ob
pAssem = declaringType.GetAssembly();
}
- if (pAssem->IsIntrospectionOnly())
- FCThrowExVoid(kInvalidOperationException, IDS_EE_CODEEXECUTION_IN_INTROSPECTIVE_ASSEMBLY, NULL, NULL, NULL);
-
// We should throw NotSupportedException here.
// But for backward compatibility we are throwing FieldAccessException instead.
if (pAssem->IsDynamic() && !pAssem->HasRunAccess())
@@ -404,9 +398,6 @@ FCIMPL5(Object*, RuntimeTypeHandle::CreateInstance, ReflectClassBaseObject* refT
Assembly *pAssem = thisTH.GetAssembly();
- if (pAssem->IsIntrospectionOnly())
- FCThrowEx(kInvalidOperationException, IDS_EE_CODEEXECUTION_IN_INTROSPECTIVE_ASSEMBLY, NULL, NULL, NULL);
-
if (pAssem->IsDynamic() && !pAssem->HasRunAccess())
FCThrowRes(kNotSupportedException, W("NotSupported_DynamicAssemblyNoRunAccess"));
@@ -986,9 +977,6 @@ FCIMPL5(Object*, RuntimeMethodHandle::InvokeMethod,
Assembly *pAssem = pMeth->GetAssembly();
- if (pAssem->IsIntrospectionOnly())
- COMPlusThrow(kInvalidOperationException, IDS_EE_CODEEXECUTION_IN_INTROSPECTIVE_ASSEMBLY);
-
// We should throw NotSupportedException here.
// But for backward compatibility we are throwing TargetException instead.
if (pAssem->IsDynamic() && !pAssem->HasRunAccess())
@@ -1527,9 +1515,6 @@ FCIMPL4(Object*, RuntimeFieldHandle::GetValueDirect, ReflectFieldObject *pFieldU
Assembly *pAssem = pField->GetModule()->GetAssembly();
- if (pAssem->IsIntrospectionOnly())
- FCThrowEx(kInvalidOperationException, IDS_EE_CODEEXECUTION_IN_INTROSPECTIVE_ASSEMBLY, NULL, NULL, NULL);
-
// We should throw NotSupportedException here.
// But for backward compatibility we are throwing FieldAccessException instead.
if (pAssem->IsDynamic() && !pAssem->HasRunAccess())
@@ -1692,9 +1677,6 @@ FCIMPL5(void, RuntimeFieldHandle::SetValueDirect, ReflectFieldObject *pFieldUNSA
Assembly *pAssem = pField->GetModule()->GetAssembly();
- if (pAssem->IsIntrospectionOnly())
- FCThrowExVoid(kInvalidOperationException, IDS_EE_CODEEXECUTION_IN_INTROSPECTIVE_ASSEMBLY, NULL, NULL, NULL);
-
// We should throw NotSupportedException here.
// But for backward compatibility we are throwing FieldAccessException instead.
if (pAssem->IsDynamic() && !pAssem->HasRunAccess())
@@ -1909,9 +1891,6 @@ FCIMPL1(void, ReflectionInvocation::RunClassConstructor, ReflectClassBaseObject
Assembly *pAssem = pMT->GetAssembly();
- if (pAssem->IsIntrospectionOnly())
- FCThrowExVoid(kInvalidOperationException, IDS_EE_CODEEXECUTION_IN_INTROSPECTIVE_ASSEMBLY, NULL, NULL, NULL);
-
if (pAssem->IsDynamic() && !pAssem->HasRunAccess())
{
FCThrowResVoid(kNotSupportedException, W("NotSupported_DynamicAssemblyNoRunAccess"));
@@ -1947,9 +1926,6 @@ FCIMPL1(void, ReflectionInvocation::RunModuleConstructor, ReflectModuleBaseObjec
Assembly *pAssem = pModule->GetAssembly();
- if (pAssem->IsIntrospectionOnly())
- FCThrowExVoid(kInvalidOperationException, IDS_EE_CODEEXECUTION_IN_INTROSPECTIVE_ASSEMBLY, NULL, NULL, NULL);
-
if (pAssem->IsDynamic() && !pAssem->HasRunAccess())
FCThrowResVoid(kNotSupportedException, W("NotSupported_DynamicAssemblyNoRunAccess"));
diff --git a/src/vm/runtimehandles.cpp b/src/vm/runtimehandles.cpp
index 25a96a316c..a8a2d31950 100644
--- a/src/vm/runtimehandles.cpp
+++ b/src/vm/runtimehandles.cpp
@@ -1430,7 +1430,7 @@ void QCALLTYPE RuntimeTypeHandle::GetTypeByNameUsingCARules(LPCWSTR pwzClassName
return;
}
-void QCALLTYPE RuntimeTypeHandle::GetTypeByName(LPCWSTR pwzClassName, BOOL bThrowOnError, BOOL bIgnoreCase, BOOL bReflectionOnly,
+void QCALLTYPE RuntimeTypeHandle::GetTypeByName(LPCWSTR pwzClassName, BOOL bThrowOnError, BOOL bIgnoreCase,
QCall::StackCrawlMarkHandle pStackMark,
ICLRPrivBinder * pPrivHostBinder,
BOOL bLoadTypeFromPartialNameHack, QCall::ObjectHandleOnStack retType,
@@ -1446,7 +1446,7 @@ void QCALLTYPE RuntimeTypeHandle::GetTypeByName(LPCWSTR pwzClassName, BOOL bThro
COMPlusThrowArgumentNull(W("className"),W("ArgumentNull_String"));
{
- typeHandle = TypeName::GetTypeManaged(pwzClassName, NULL, bThrowOnError, bIgnoreCase, bReflectionOnly, /*bProhibitAsmQualifiedName =*/ FALSE, pStackMark,
+ typeHandle = TypeName::GetTypeManaged(pwzClassName, NULL, bThrowOnError, bIgnoreCase, /*bProhibitAsmQualifiedName =*/ FALSE, pStackMark,
bLoadTypeFromPartialNameHack, (OBJECTREF*)keepAlive.m_ppObject,
pPrivHostBinder);
}
diff --git a/src/vm/runtimehandles.h b/src/vm/runtimehandles.h
index 213e90da86..dc379d827e 100644
--- a/src/vm/runtimehandles.h
+++ b/src/vm/runtimehandles.h
@@ -172,7 +172,7 @@ public:
void QCALLTYPE GetTypeByNameUsingCARules(LPCWSTR pwzClassName, QCall::ModuleHandle pModule, QCall::ObjectHandleOnStack retType);
static
- void QCALLTYPE GetTypeByName(LPCWSTR pwzClassName, BOOL bThrowOnError, BOOL bIgnoreCase, BOOL bReflectionOnly,
+ void QCALLTYPE GetTypeByName(LPCWSTR pwzClassName, BOOL bThrowOnError, BOOL bIgnoreCase,
QCall::StackCrawlMarkHandle pStackMark,
ICLRPrivBinder * pPrivHostBinder,
BOOL bLoadTypeFromPartialNameHack, QCall::ObjectHandleOnStack retType,
diff --git a/src/vm/siginfo.cpp b/src/vm/siginfo.cpp
index 3a707d228c..1995d51515 100644
--- a/src/vm/siginfo.cpp
+++ b/src/vm/siginfo.cpp
@@ -3364,14 +3364,6 @@ BOOL CompareTypeDefsForEquivalence(mdToken tk1, mdToken tk2, Module *pModule1, M
}
// *************************************************************************
- // 2c. the two types cannot be equivalent across IntrospectionOnly/Non-introspection boundaries
- // *************************************************************************
- if (!!pModule1->GetAssembly()->IsIntrospectionOnly() != !!pModule2->GetAssembly()->IsIntrospectionOnly())
- {
- return FALSE;
- }
-
- // *************************************************************************
// 3. type is an interface, struct, enum, or delegate
// *************************************************************************
if (IsTdInterface(dwAttrType1))
diff --git a/src/vm/typedesc.cpp b/src/vm/typedesc.cpp
index 7da1c84604..b244f4503c 100644
--- a/src/vm/typedesc.cpp
+++ b/src/vm/typedesc.cpp
@@ -821,10 +821,7 @@ OBJECTREF ParamTypeDesc::GetManagedClassObject()
if (m_hExposedClassObject == NULL) {
REFLECTCLASSBASEREF refClass = NULL;
GCPROTECT_BEGIN(refClass);
- if (GetAssembly()->IsIntrospectionOnly())
- refClass = (REFLECTCLASSBASEREF) AllocateObject(MscorlibBinder::GetClass(CLASS__CLASS_INTROSPECTION_ONLY));
- else
- refClass = (REFLECTCLASSBASEREF) AllocateObject(g_pRuntimeTypeClass);
+ refClass = (REFLECTCLASSBASEREF) AllocateObject(g_pRuntimeTypeClass);
LoaderAllocator *pLoaderAllocator = GetLoaderAllocator();
TypeHandle th = TypeHandle(this);
@@ -2261,10 +2258,7 @@ OBJECTREF TypeVarTypeDesc::GetManagedClassObject()
if (m_hExposedClassObject == NULL) {
REFLECTCLASSBASEREF refClass = NULL;
GCPROTECT_BEGIN(refClass);
- if (GetAssembly()->IsIntrospectionOnly())
- refClass = (REFLECTCLASSBASEREF) AllocateObject(MscorlibBinder::GetClass(CLASS__CLASS_INTROSPECTION_ONLY));
- else
- refClass = (REFLECTCLASSBASEREF) AllocateObject(g_pRuntimeTypeClass);
+ refClass = (REFLECTCLASSBASEREF) AllocateObject(g_pRuntimeTypeClass);
LoaderAllocator *pLoaderAllocator = GetLoaderAllocator();
TypeHandle th = TypeHandle(this);
@@ -2336,53 +2330,6 @@ FnPtrTypeDesc::IsExternallyVisible() const
return TRUE;
} // FnPtrTypeDesc::IsExternallyVisible
-// Returns TRUE if any of return or argument types is part of an assembly loaded for introspection.
-BOOL
-FnPtrTypeDesc::IsIntrospectionOnly() const
-{
- CONTRACTL
- {
- THROWS;
- GC_TRIGGERS;
- }
- CONTRACTL_END;
-
- const TypeHandle * rgRetAndArgTypes = GetRetAndArgTypes();
- for (DWORD i = 0; i <= m_NumArgs; i++)
- {
- if (rgRetAndArgTypes[i].IsIntrospectionOnly())
- {
- return TRUE;
- }
- }
- // None of the return/arguments type was loaded for introspection
- return FALSE;
-} // FnPtrTypeDesc::IsIntrospectionOnly
-
-// Returns TRUE if any of return or argument types is part of an assembly loaded for introspection.
-// Instantiations of generic types are also recursively checked.
-BOOL
-FnPtrTypeDesc::ContainsIntrospectionOnlyTypes() const
-{
- CONTRACTL
- {
- THROWS;
- GC_TRIGGERS;
- }
- CONTRACTL_END;
-
- const TypeHandle * rgRetAndArgTypes = GetRetAndArgTypes();
- for (DWORD i = 0; i <= m_NumArgs; i++)
- {
- if (rgRetAndArgTypes[i].ContainsIntrospectionOnlyTypes())
- {
- return TRUE;
- }
- }
- // None of the return/arguments type contains types loaded for introspection
- return FALSE;
-} // FnPtrTypeDesc::ContainsIntrospectionOnlyTypes
-
#endif //DACCESS_COMPILE
#if defined(FEATURE_NATIVE_IMAGE_GENERATION) && !defined(DACCESS_COMPILE)
diff --git a/src/vm/typedesc.h b/src/vm/typedesc.h
index 3e8b0e618b..81cc34048b 100644
--- a/src/vm/typedesc.h
+++ b/src/vm/typedesc.h
@@ -651,15 +651,8 @@ public:
}
#ifndef DACCESS_COMPILE
-
// Returns TRUE if all return and argument types are externally visible.
BOOL IsExternallyVisible() const;
- // Returns TRUE if any of return or argument types is part of an assembly loaded for introspection.
- BOOL IsIntrospectionOnly() const;
- // Returns TRUE if any of return or argument types is part of an assembly loaded for introspection.
- // Instantiations of generic types are also recursively checked.
- BOOL ContainsIntrospectionOnlyTypes() const;
-
#endif //DACCESS_COMPILE
#ifdef FEATURE_PREJIT
diff --git a/src/vm/typehandle.cpp b/src/vm/typehandle.cpp
index 405be60543..0b3f81f1ce 100644
--- a/src/vm/typehandle.cpp
+++ b/src/vm/typehandle.cpp
@@ -1077,114 +1077,6 @@ BOOL TypeHandle::IsFnPtrType() const
(GetSignatureCorElementType() == ELEMENT_TYPE_FNPTR));
}
-// Is this type part of an assembly loaded for introspection?
-BOOL
-TypeHandle::IsIntrospectionOnly() const
-{
- CONTRACTL
- {
- THROWS;
- GC_TRIGGERS;
- MODE_ANY;
- }
- CONTRACTL_END
-
-#ifndef DACCESS_COMPILE
- if (IsFnPtrType())
- {
- return AsFnPtrType()->IsIntrospectionOnly();
- }
- else if (HasTypeParam())
- {
- return GetTypeParam().IsIntrospectionOnly();
- }
- else
- {
- return GetModule()->IsIntrospectionOnly();
- }
-#else //DACCESS_COMPILE
- return FALSE;
-#endif //DACCESS_COMPILE
-} // TypeHandle::IsIntrospectionOnly
-
-// Checks this type and its components for "IsIntrospectionOnly"
-BOOL
-TypeHandle::ContainsIntrospectionOnlyTypes() const
-{
- CONTRACTL
- {
- THROWS;
- GC_TRIGGERS;
- MODE_ANY;
- }
- CONTRACTL_END
-
-#ifndef DACCESS_COMPILE
- if (IsFnPtrType())
- {
- return AsFnPtrType()->ContainsIntrospectionOnlyTypes();
- }
- else if (HasTypeParam())
- {
- return GetTypeParam().ContainsIntrospectionOnlyTypes();
- }
- else if (IsTypeDesc())
- {
- return GetModule()->IsIntrospectionOnly();
- }
- else
- {
- return AsMethodTable()->ContainsIntrospectionOnlyTypes();
- }
-#else //DACCESS_COMPILE
- return FALSE;
-#endif //DACCESS_COMPILE
-} // TypeHandle::ContainsIntrospectionOnlyTypes
-
-// Is this type part of an assembly loaded for introspection?
-BOOL
-TypeKey::IsIntrospectionOnly()
-{
- CONTRACTL
- {
- THROWS;
- GC_TRIGGERS;
- MODE_ANY;
- }
- CONTRACTL_END
-
-#ifndef DACCESS_COMPILE
- switch (m_kind)
- {
- case ELEMENT_TYPE_CLASS:
- return u.asClass.m_pModule->IsIntrospectionOnly();
-
- case ELEMENT_TYPE_ARRAY:
- case ELEMENT_TYPE_SZARRAY:
- case ELEMENT_TYPE_PTR:
- case ELEMENT_TYPE_BYREF:
- return TypeHandle::FromTAddr(u.asParamType.m_paramType).IsIntrospectionOnly();
-
- case ELEMENT_TYPE_FNPTR:
- // Return TRUE if any return/arguments type was loaded for introspection only
- for (DWORD i = 0; i <= u.asFnPtr.m_numArgs; i++)
- {
- if (u.asFnPtr.m_pRetAndArgTypes[i].IsIntrospectionOnly())
- {
- return TRUE;
- }
- }
- // None of return/arguments types was loaded for introspection only
- return FALSE;
-
- default:
- UNREACHABLE_MSG("Corrupted typekey");
- }
-#else //DACCESS_COMPILE
- return FALSE;
-#endif //DACCESS_COMPILE
-} // TypeKey::IsIntrospectionOnly
-
BOOL TypeHandle::IsRestored_NoLogging() const
{
LIMITED_METHOD_CONTRACT;
diff --git a/src/vm/typehandle.h b/src/vm/typehandle.h
index c8f0747d6a..3364d76e48 100644
--- a/src/vm/typehandle.h
+++ b/src/vm/typehandle.h
@@ -542,12 +542,6 @@ public:
void CheckRestore() const;
BOOL IsExternallyVisible() const;
- // Is this type part of an assembly loaded for introspection?
- BOOL IsIntrospectionOnly() const;
-
- // Checks this type and its components for "IsIntrospectionOnly"
- BOOL ContainsIntrospectionOnlyTypes() const;
-
// Does this type participate in type equivalence?
inline BOOL HasTypeEquivalence() const;
diff --git a/src/vm/typekey.h b/src/vm/typekey.h
index 0d58254d83..22f8abf3c2 100644
--- a/src/vm/typekey.h
+++ b/src/vm/typekey.h
@@ -296,11 +296,6 @@ public:
return hash;
#endif
}
-
- // Is this type part of an assembly loaded for introspection?
- BOOL IsIntrospectionOnly();
-
-
};
diff --git a/src/vm/typeparse.cpp b/src/vm/typeparse.cpp
index af3fd65876..a6190dd668 100644
--- a/src/vm/typeparse.cpp
+++ b/src/vm/typeparse.cpp
@@ -1098,8 +1098,6 @@ TypeHandle TypeName::GetTypeUsingCASearchRules(LPCWSTR szTypeName, Assembly *pRe
STATIC_CONTRACT_GC_TRIGGERS;
STATIC_CONTRACT_FAULT;
- BOOL bIntrospectionOnly = pRequestingAssembly ? pRequestingAssembly->IsIntrospectionOnly() : FALSE; // classfactory loads are always for execution
-
DWORD error = (DWORD)-1;
GCX_COOP();
@@ -1140,7 +1138,6 @@ TypeHandle TypeName::GetTypeUsingCASearchRules(LPCWSTR szTypeName, Assembly *pRe
th = pTypeName->GetTypeWorker(
/*bThrowIfNotFound = */ TRUE,
/*bIgnoreCase = */ FALSE,
- bIntrospectionOnly,
/*pAssemblyGetType =*/ NULL,
/*fEnableCASearchRules = */ TRUE,
/*fProhibitAsmQualifiedName = */ FALSE,
@@ -1183,7 +1180,6 @@ TypeHandle TypeName::GetTypeUsingCASearchRules(LPCWSTR szTypeName, Assembly *pRe
DomainAssembly* pAssemblyGetType,
BOOL bThrowIfNotFound,
BOOL bIgnoreCase,
- BOOL bIntrospectionOnly,
BOOL bProhibitAsmQualifiedName,
StackCrawlMark* pStackMark,
BOOL bLoadTypeFromPartialNameHack,
@@ -1231,7 +1227,6 @@ TypeHandle TypeName::GetTypeUsingCASearchRules(LPCWSTR szTypeName, Assembly *pRe
TypeHandle result = pTypeName->GetTypeWorker(
bPeriodPrefix ? FALSE : bThrowIfNotFound,
bIgnoreCase,
- bIntrospectionOnly,
pAssemblyGetType ? pAssemblyGetType->GetAssembly() : NULL,
/*fEnableCASearchRules = */TRUE,
bProhibitAsmQualifiedName,
@@ -1262,7 +1257,6 @@ TypeHandle TypeName::GetTypeUsingCASearchRules(LPCWSTR szTypeName, Assembly *pRe
result = pTypeName->GetTypeWorker(
bThrowIfNotFound,
bIgnoreCase,
- bIntrospectionOnly,
pAssemblyGetType ? pAssemblyGetType->GetAssembly() : NULL,
/*fEnableCASearchRules = */TRUE,
bProhibitAsmQualifiedName,
@@ -1326,19 +1320,15 @@ TypeHandle TypeName::GetTypeUsingCASearchRules(LPCWSTR szTypeName, Assembly *pRe
COMPlusThrow(kArgumentException, IDS_EE_CANNOT_HAVE_ASSEMBLY_SPEC);
}
- return pTypeName->GetTypeWorker(bThrowIfNotFound, /*bIgnoreCase = */FALSE, pAssembly->IsIntrospectionOnly(), pAssembly, /*fEnableCASearchRules = */FALSE, FALSE, NULL, NULL,
+ return pTypeName->GetTypeWorker(bThrowIfNotFound, /*bIgnoreCase = */FALSE, pAssembly, /*fEnableCASearchRules = */FALSE, FALSE, NULL, NULL,
nullptr, // pPrivHostBinder
FALSE, NULL /* cannot find a collectible type unless it is in assembly */);
-
-
-
-
}
//-------------------------------------------------------------------------------------------
// Retrieves a type. Will assert if the name is not fully qualified.
//-------------------------------------------------------------------------------------------
-/* public static */ TypeHandle TypeName::GetTypeFromAsmQualifiedName(LPCWSTR szFullyQualifiedName, BOOL bForIntrospection)
+/* public static */ TypeHandle TypeName::GetTypeFromAsmQualifiedName(LPCWSTR szFullyQualifiedName)
{
STATIC_CONTRACT_THROWS;
STATIC_CONTRACT_GC_TRIGGERS;
@@ -1373,11 +1363,11 @@ TypeHandle TypeName::GetTypeUsingCASearchRules(LPCWSTR szTypeName, Assembly *pRe
COMPlusThrowArgumentException(msg.GetUnicode(), NULL);
}
- return pTypeName->GetTypeFromAsm(bForIntrospection);
+ return pTypeName->GetTypeFromAsm();
}
-TypeHandle TypeName::GetTypeFromAsm(BOOL bForIntrospection)
+TypeHandle TypeName::GetTypeFromAsm()
{
STATIC_CONTRACT_THROWS;
STATIC_CONTRACT_GC_TRIGGERS;
@@ -1393,7 +1383,6 @@ TypeHandle TypeName::GetTypeFromAsm(BOOL bForIntrospection)
return this->GetTypeWorker(
/*bThrowIfNotFound =*/TRUE,
/*bIgnoreCase = */FALSE,
- bForIntrospection,
NULL,
/*fEnableCASearchRules = */FALSE,
FALSE,
@@ -1416,7 +1405,6 @@ TypeHandle TypeName::GetTypeFromAsm(BOOL bForIntrospection)
/* private instance */ TypeHandle TypeName::GetTypeWorker(
BOOL bThrowIfNotFound,
BOOL bIgnoreCase,
- BOOL bIntrospectionOnly,
Assembly* pAssemblyGetType,
BOOL fEnableCASearchRules,
@@ -1492,7 +1480,7 @@ TypeHandle TypeName::GetTypeFromAsm(BOOL bForIntrospection)
{
DomainAssembly *pDomainAssembly = LoadDomainAssembly(GetAssembly(), pRequestingAssembly,
pPrivHostBinder,
- bThrowIfNotFound, bIntrospectionOnly, pssOuterTypeName);
+ bThrowIfNotFound, pssOuterTypeName);
if (pDomainAssembly)
{
th = GetTypeHaveAssembly(pDomainAssembly->GetAssembly(), bThrowIfNotFound, bIgnoreCase, pKeepAlive);
@@ -1508,7 +1496,7 @@ TypeHandle TypeName::GetTypeFromAsm(BOOL bForIntrospection)
{
DomainAssembly *pDomainAssembly = LoadDomainAssembly(GetAssembly(), pRequestingAssembly,
pPrivHostBinder,
- bThrowIfNotFound, bIntrospectionOnly, pssOuterTypeName);
+ bThrowIfNotFound, pssOuterTypeName);
if (pDomainAssembly)
{
th = GetTypeHaveAssembly(pDomainAssembly->GetAssembly(), bThrowIfNotFound, bIgnoreCase, pKeepAlive);
@@ -1525,14 +1513,6 @@ TypeHandle TypeName::GetTypeFromAsm(BOOL bForIntrospection)
// Otherwise look in the caller's assembly then the system assembly
else if (fEnableCASearchRules)
{
- if (bIntrospectionOnly)
- {
- if (pStackMark != NULL) // This is our test to see if we're being because of a managed api or because we are parsing a CA.
- {
- COMPlusThrow(kArgumentException, IDS_EE_REFLECTIONONLYGETTYPE_NOASSEMBLY);
- }
- }
-
if (!pRequestingAssembly && pStackMark)
pRequestingAssembly = SystemDomain::GetCallersAssembly(pStackMark);
@@ -1548,7 +1528,7 @@ TypeHandle TypeName::GetTypeFromAsm(BOOL bForIntrospection)
}
// Raise AssemblyResolveEvent to try to resolve assembly
- if (th.IsNull() && !bIntrospectionOnly)
+ if (th.IsNull())
{
AppDomain *pDomain = (AppDomain *)SystemDomain::GetCurrentDomain();
@@ -1603,7 +1583,7 @@ TypeHandle TypeName::GetTypeFromAsm(BOOL bForIntrospection)
for (INT32 i = 0; i < cGenericArgs; i++)
{
TypeHandle thGenericArg = m_genericArguments[i]->GetTypeWorker(
- bThrowIfNotFound, bIgnoreCase, bIntrospectionOnly,
+ bThrowIfNotFound, bIgnoreCase,
pAssemblyGetType, fEnableCASearchRules, bProhibitAsmQualifiedName, pStackMark, pRequestingAssembly,
pPrivHostBinder,
bLoadTypeFromPartialNameHack,
@@ -1816,7 +1796,6 @@ DomainAssembly * LoadDomainAssembly(
Assembly * pRequestingAssembly,
ICLRPrivBinder * pPrivHostBinder,
BOOL bThrowIfNotFound,
- BOOL bIntrospectionOnly,
SString * pssOuterTypeName)
{
CONTRACTL
@@ -1830,9 +1809,6 @@ DomainAssembly * LoadDomainAssembly(
AssemblySpec spec;
DomainAssembly *pDomainAssembly = NULL;
- if (bIntrospectionOnly)
- spec.SetIntrospectionOnly(TRUE);
-
StackScratchBuffer buffer;
LPCUTF8 szAssemblySpec = psszAssemblySpec->GetUTF8(buffer);
IfFailThrow(spec.Init(szAssemblySpec));
@@ -1869,7 +1845,7 @@ DomainAssembly * LoadDomainAssembly(
{
EX_TRY
{
- pDomainAssembly = spec.LoadDomainAssembly(FILE_LOADED, NULL, bThrowIfNotFound);
+ pDomainAssembly = spec.LoadDomainAssembly(FILE_LOADED, bThrowIfNotFound);
}
EX_CATCH
{
diff --git a/src/vm/typeparse.h b/src/vm/typeparse.h
index 0665f906a4..a2ec689814 100644
--- a/src/vm/typeparse.h
+++ b/src/vm/typeparse.h
@@ -50,7 +50,6 @@ DomainAssembly * LoadDomainAssembly(
Assembly * pRequestingAssembly,
ICLRPrivBinder * pPrivHostBinder,
BOOL bThrowIfNotFound,
- BOOL bIntrospectionOnly,
SString * pssOuterTypeName);
class TypeNameFactory : public ITypeNameFactory
@@ -323,12 +322,12 @@ public:
//-------------------------------------------------------------------------------------------
static TypeHandle GetTypeFromAssembly(LPCWSTR szTypeName, Assembly *pAssembly, BOOL bThrowIfNotFound = TRUE);
- TypeHandle GetTypeFromAsm(BOOL bForIntrospection);
+ TypeHandle GetTypeFromAsm();
//-------------------------------------------------------------------------------------------
// Retrieves a type. Will assert if the name is not fully qualified.
//-------------------------------------------------------------------------------------------
- static TypeHandle GetTypeFromAsmQualifiedName(LPCWSTR szFullyQualifiedName, BOOL bForIntrospection);
+ static TypeHandle GetTypeFromAsmQualifiedName(LPCWSTR szFullyQualifiedName);
//-------------------------------------------------------------------------------------------
@@ -366,7 +365,6 @@ public:
DomainAssembly* pAssemblyGetType,
BOOL bThrowIfNotFound,
BOOL bIgnoreCase,
- BOOL bIntrospectionOnly,
BOOL bProhibitAssemblyQualifiedName,
StackCrawlMark* pStackMark,
BOOL bLoadTypeFromPartialNameHack,
@@ -427,7 +425,6 @@ private:
TypeHandle GetTypeWorker(
BOOL bThrowIfNotFound,
BOOL bIgnoreCase,
- BOOL bIntrospectionOnly,
Assembly* pAssemblyGetType,
BOOL fEnableCASearchRules,
diff --git a/src/vm/typestring.h b/src/vm/typestring.h
index e9b032f8f2..88a218156e 100644
--- a/src/vm/typestring.h
+++ b/src/vm/typestring.h
@@ -54,7 +54,7 @@ public:
private:
friend class TypeString;
friend SString* TypeName::ToString(SString*, BOOL, BOOL, BOOL);
- friend TypeHandle TypeName::GetTypeWorker(BOOL, BOOL, BOOL, Assembly*, BOOL, BOOL, StackCrawlMark*, Assembly*,
+ friend TypeHandle TypeName::GetTypeWorker(BOOL, BOOL, Assembly*, BOOL, BOOL, StackCrawlMark*, Assembly*,
ICLRPrivBinder * pPrivHostBinder,
BOOL, OBJECTREF *);
HRESULT OpenGenericArguments();
diff --git a/src/vm/zapsig.cpp b/src/vm/zapsig.cpp
index fedc9483c5..32ddd7ae59 100644
--- a/src/vm/zapsig.cpp
+++ b/src/vm/zapsig.cpp
@@ -663,8 +663,7 @@ Module *ZapSig::DecodeModuleFromIndexes(Module *fromModule,
AssemblySpec spec;
spec.InitializeSpec(TokenFromRid(assemblyIndex, mdtAssemblyRef),
fromModule->GetNativeAssemblyImport(),
- NULL,
- FALSE);
+ NULL);
pAssembly = spec.LoadAssembly(FILE_LOADED);