Imported Upstream version 6.4.0.137

Former-commit-id: 943baa9f16a098c33e129777827f3a9d20da00d6
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2019-07-26 19:53:28 +00:00
parent e9207cf623
commit ef583813eb
2712 changed files with 74169 additions and 40587 deletions

View File

@@ -1,5 +1,3 @@
#if MONOTOUCH && FULL_AOT_RUNTIME
using Crimson.CommonCrypto;
namespace System
@@ -21,5 +19,3 @@ namespace System
}
}
}
#endif

View File

@@ -3,7 +3,8 @@
<assembly fullname="mscorlib">
<!-- domain.c: mono_defaults.appdomain_class -->
<type fullname="System.AppDomain" preserve="fields">
<type fullname="System.AppDomain">
<field name="_mono_app_domain" />
<!-- appdomain.c: mono_domain_try_type_resolve -->
<method name="DoTypeResolve" />
<!-- appdomain.c: mono_try_assembly_resolve -->
@@ -100,10 +101,14 @@
</type>
<!-- domain.c: mono_defaults.boolean_class -->
<type fullname="System.Boolean" preserve="fields" />
<type fullname="System.Boolean">
<field name="m_value"/>
</type>
<!-- domain.c: mono_defaults.byte_class -->
<type fullname="System.Byte" preserve="fields" />
<type fullname="System.Byte">
<field name="m_value"/>
</type>
<!-- exception.c" mono_get_exception_cannot_unload_appdomain (called by appdomain.c) -->
<type fullname="System.CannotUnloadAppDomainException">
@@ -112,7 +117,9 @@
</type>
<!-- domain.c: mono_defaults.char_class -->
<type fullname="System.Char" preserve="fields" />
<type fullname="System.Char">
<field name="m_value"/>
</type>
<!-- marshal.c: emit_marshal_vtype -->
<type fullname="System.DateTime" preserve="fields" />
@@ -153,7 +160,9 @@
</type>
<!-- domain.c: mono_defaults.double_class -->
<type fullname="System.Double" preserve="fields" />
<type fullname="System.Double">
<field name="m_value"/>
</type>
<!-- domain.c: mono_defaults.enum_class -->
<type fullname="System.Enum" preserve="fields" />
@@ -203,16 +212,24 @@
</type>
<!-- domain.c: mono_defaults.int16_class -->
<type fullname="System.Int16" preserve="fields" />
<type fullname="System.Int16">
<field name="m_value"/>
</type>
<!-- domain.c: mono_defaults.int32_class -->
<type fullname="System.Int32" preserve="fields" />
<type fullname="System.Int32">
<field name="m_value"/>
</type>
<!-- domain.c: mono_defaults.int64_class -->
<type fullname="System.Int64" preserve="fields" />
<type fullname="System.Int64">
<field name="m_value"/>
</type>
<!-- domain.c: mono_defaults.int_class -->
<type fullname="System.IntPtr" preserve="fields" />
<type fullname="System.IntPtr">
<field name="m_value"/>
</type>
<!-- exception.c (mono_get_exception_invalid_cast) -->
<type fullname="System.InvalidCastException">
@@ -284,6 +301,12 @@
<!-- mono_get_exception_not_implemented -->
<method signature="System.Void .ctor(System.String)" />
</type>
<!-- mono-error.c (mono_error_set_ambiguous_implementation) -->
<type fullname="System.Runtime.AmbiguousImplementationException">
<!-- mono_error_set_ambiguous_implementation -->
<method signature="System.Void .ctor(System.String)" />
</type>
<!-- appdomain.c (create_domain_objects) domain->null_reference_ex -->
<!-- exception.c (mono_get_exception_null_reference) -->
@@ -344,11 +367,16 @@
<!-- domain.c: mono_defaults.typehandle_class -->
<type fullname="System.RuntimeTypeHandle" preserve="fields" />
<!-- domain.c: mono_defaults.sbyte_class -->
<type fullname="System.SByte" preserve="fields" />
<type fullname="System.SByte">
<field name="m_value"/>
</type>
<!-- domain.c: mono_defaults.single_class -->
<type fullname="System.Single" preserve="fields" />
<type fullname="System.Single">
<field name="m_value"/>
</type>
<!-- appdomain.c (create_domain_objects) domain->stack_overflow_ex -->
<type fullname="System.StackOverflowException">
@@ -414,16 +442,24 @@
<type fullname="System.TypedReference" preserve="fields" />
<!-- domain.c: mono_defaults.uint16_class -->
<type fullname="System.UInt16" preserve="fields" />
<type fullname="System.UInt16">
<field name="m_value"/>
</type>
<!-- domain.c: mono_defaults.uint32_class -->
<type fullname="System.UInt32" preserve="fields" />
<type fullname="System.UInt32">
<field name="m_value"/>
</type>
<!-- domain.c: mono_defaults.uint64_class -->
<type fullname="System.UInt64" preserve="fields" />
<type fullname="System.UInt64">
<field name="m_value"/>
</type>
<!-- domain.c: mono_defaults.uint_class -->
<type fullname="System.UIntPtr" preserve="fields" />
<type fullname="System.UIntPtr">
<field name="m_value"/>
</type>
<!-- object.c: create_unhandled_exception_eventargs (assert) -->
<type fullname="System.UnhandledExceptionEventArgs">
@@ -562,9 +598,11 @@
</type>
<type fullname="System.Reflection.ParameterInfo" preserve="fields" />
<!-- reflection.c: ves_icall_get_parameter_info -->
<type fullname="System.Reflection.RuntimeParameterInfo" preserve="fields" >
<type fullname="System.Reflection.RuntimeParameterInfo" >
<!-- reflection.c mono_object_new_checked in event_object_construct -->
<method signature="System.Void .ctor()" />
<!-- reflection.c add_parameter_object_to_array -->
<method signature="System.Void .ctor(System.String,System.Type,System.Int32,System.Int32,System.Object,System.Reflection.MemberInfo,System.Runtime.InteropServices.MarshalAsAttribute)" />
</type>
<!-- object.c: mono_field_get_value_object and mono_runtime_invoke_array -->
@@ -638,7 +676,7 @@
<type fullname="System.Runtime.InteropServices.ICustomMarshaler" />
<!-- domain.c: mono_defaults.marshal_class -->
<type fullname="System.Runtime.InteropServices.Marshal" preserve="fields" >
<type fullname="System.Runtime.InteropServices.Marshal">
<!-- marshal.c (mono_marshal_get_struct_to_ptr) -->
<method name="StructureToPtr" />
</type>

View File

@@ -59,7 +59,8 @@ RESX_RESOURCE_STRING = \
../../../external/corefx/src/System.ObjectModel/src/Resources/Strings.resx \
../../../external/corert/src/System.Private.CoreLib/src/Resources/Strings.resx \
../../../external/corefx/src/System.Private.Uri/src/Resources/Strings.resx \
../../../external/corefx/src/Microsoft.Win32.Registry/src/Resources/Strings.resx
../../../external/corefx/src/Microsoft.Win32.Registry/src/Resources/Strings.resx \
../../../external/corefx/src/System.Security.Cryptography.Algorithms/src/Resources/Strings.resx
LIBRARY_COMPILE = $(BOOT_COMPILE)
LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)
@@ -71,18 +72,26 @@ RESOURCE_STRINGS_FILES = --mscorlib-debug
RESOURCE_STRINGS = ../referencesource/mscorlib/mscorlib.txt
MODULE_DEPS = $(IL_REPLACE) LinkerDescriptor/mscorlib.xml
RESOURCE_FILES = \
resources/charinfo.nlp \
ifdef WASM
MANAGED_COLLATOR_RESOURCES_FILES =
else
MANAGED_COLLATOR_RESOURCES_FILES = \
resources/collation.core.bin \
resources/collation.tailoring.bin \
resources/collation.cjkCHS.bin \
resources/collation.cjkCHT.bin \
resources/collation.cjkJA.bin \
resources/collation.cjkKO.bin \
resources/collation.cjkKOlv2.bin \
resources/collation.cjkKOlv2.bin
endif
RESOURCE_FILES = \
resources/charinfo.nlp \
$(MANAGED_COLLATOR_RESOURCES_FILES) \
LinkerDescriptor/mscorlib.xml
REFERENCE_SOURCES_FLAGS = -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ENCODINGNLS,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT,HAS_CORLIB_CONTRACTS
REFERENCE_SOURCES_FLAGS = -d:FEATURE_PAL,GENERICS_WORK,FEATURE_LIST_PREDICATES,FEATURE_SERIALIZATION,FEATURE_ENCODINGNLS,FEATURE_ASCII,FEATURE_LATIN1,FEATURE_UTF7,FEATURE_UTF32,MONO_HYBRID_ENCODING_SUPPORT,FEATURE_ASYNC_IO,NEW_EXPERIMENTAL_ASYNC_IO,FEATURE_UTF32,FEATURE_EXCEPTIONDISPATCHINFO,FEATURE_CORRUPTING_EXCEPTIONS,FEATURE_EXCEPTION_NOTIFICATIONS,FEATURE_STRONGNAME_MIGRATION,FEATURE_USE_LCID,FEATURE_FUSION,FEATURE_CRYPTO,FEATURE_X509_SECURESTRINGS,FEATURE_SYNCHRONIZATIONCONTEXT,FEATURE_SYNCHRONIZATIONCONTEXT_WAIT,FEATURE_DEFAULT_INTERFACES,HAS_CORLIB_CONTRACTS
ifndef NO_SRE
LIB_MCS_FLAGS += -d:MONO_FEATURE_SRE
@@ -93,7 +102,11 @@ REFERENCE_SOURCES_FLAGS += -d:FEATURE_MACL
endif
ifndef AOT_FRIENDLY_PROFILE
ifndef DISABLE_REMOTING
REFERENCE_SOURCES_FLAGS += -d:FEATURE_REMOTING,MONO_COM,FEATURE_COMINTEROP,FEATURE_ROLE_BASED_SECURITY
else
REFERENCE_SOURCES_FLAGS += -d:FEATURE_ROLE_BASED_SECURITY
endif
endif
ifndef NO_THREAD_ABORT
@@ -150,7 +163,7 @@ endif
endif
# System.IO/DirectoryInfoTest.cs needs Mono.Posix
TEST_MCS_FLAGS += -debug -nowarn:168,219,618,672 -unsafe \
TEST_MCS_FLAGS += -debug -nowarn:168,219,618,672 -unsafe -nowarn:67,114,162,169,649,659 \
-define:MONO_DATACONVERTER_STATIC_METHODS $(TEST_RESX_RESOURCES:%=-resource:%) -resource:LinkerDescriptor/mscorlib_test.xml,$(test_lib:.dll=.xml)
ifeq ($(PROFILE),net_4_x)
@@ -280,6 +293,10 @@ ifdef NO_TEST
NO_VTS_TEST = yes
endif
ifdef DISABLE_REMOTING
NO_VTS_TEST = yes
endif
ifndef NO_VTS_TEST
test: test-vts
run-test: run-test-vts

View File

@@ -595,7 +595,7 @@ namespace Mono.Globalization.Unicode
{
int size;
Module module;
return Assembly.GetExecutingAssembly ().GetManifestResourceInternal (name, out size, out module);
return ((RuntimeAssembly)Assembly.GetExecutingAssembly ()).GetManifestResourceInternal (name, out size, out module);
}
#elif USE_C_HEADER
const int CollationTableIdxIgnorables = 0;

View File

@@ -75,7 +75,7 @@ using COpt = System.Globalization.CompareOptions;
namespace Mono.Globalization.Unicode
{
internal class SimpleCollator
internal class SimpleCollator : ISimpleCollator
{
/*
// this environment variable is for debugging quick check.
@@ -756,6 +756,13 @@ Console.WriteLine (" -> '{0}'", c.Replacement);
len1 == min ? - 1 : 1;
}
*/
int ISimpleCollator.Compare (string s1, int idx1, int len1,
string s2, int idx2, int len2, CompareOptions options)
{
return Compare (s1, idx1, len1, s2, idx2, len2, options);
}
internal unsafe int Compare (string s1, int idx1, int len1,
string s2, int idx2, int len2, CompareOptions options)
{

View File

@@ -128,9 +128,6 @@ namespace Mono.Interop
public override IMessage Invoke (IMessage msg)
{
Console.WriteLine ("Invoke");
Console.WriteLine (System.Environment.StackTrace);
throw new Exception ("The method or operation is not implemented.");
}

View File

@@ -13,136 +13,124 @@ using System;
using System.Reflection;
using System.Runtime.CompilerServices;
namespace Mono {
namespace Mono
{
unsafe struct RuntimeClassHandle
{
RuntimeStructs.MonoClass* value;
internal struct RuntimeClassHandle {
unsafe RuntimeStructs.MonoClass* value;
internal unsafe RuntimeClassHandle (RuntimeStructs.MonoClass* value) {
internal RuntimeClassHandle (RuntimeStructs.MonoClass* value)
{
this.value = value;
}
internal unsafe RuntimeClassHandle (IntPtr ptr) {
internal RuntimeClassHandle (IntPtr ptr)
{
this.value = (RuntimeStructs.MonoClass*) ptr;
}
internal unsafe RuntimeStructs.MonoClass* Value {
get { return value; }
}
internal RuntimeStructs.MonoClass* Value => value;
public override bool Equals (object obj)
{
if (obj == null || GetType () != obj.GetType ())
return false;
unsafe { return value == ((RuntimeClassHandle)obj).Value; }
return value == ((RuntimeClassHandle)obj).Value;
}
public override int GetHashCode ()
{
unsafe { return ((IntPtr)value).GetHashCode (); }
}
public override int GetHashCode () => ((IntPtr)value).GetHashCode ();
public bool Equals (RuntimeClassHandle handle)
{
unsafe { return value == handle.Value; }
return value == handle.Value;
}
public static bool operator == (RuntimeClassHandle left, Object right)
public static bool operator == (RuntimeClassHandle left, object right)
{
return (right != null) && (right is RuntimeClassHandle) && left.Equals ((RuntimeClassHandle)right);
return right != null && right is RuntimeClassHandle rch && left.Equals (rch);
}
public static bool operator != (RuntimeClassHandle left, Object right)
public static bool operator != (RuntimeClassHandle left, object right)
{
return (right == null) || !(right is RuntimeClassHandle) || !left.Equals ((RuntimeClassHandle)right);
return !(left == right);
}
public static bool operator == (Object left, RuntimeClassHandle right)
public static bool operator == (object left, RuntimeClassHandle right)
{
return (left != null) && (left is RuntimeClassHandle) && ((RuntimeClassHandle)left).Equals (right);
return left != null && left is RuntimeClassHandle rch && rch.Equals (right);
}
public static bool operator != (Object left, RuntimeClassHandle right)
public static bool operator != (object left, RuntimeClassHandle right)
{
return (left == null) || !(left is RuntimeClassHandle) || !((RuntimeClassHandle)left).Equals (right);
return !(left == right);
}
[MethodImpl(MethodImplOptions.InternalCall)]
internal unsafe extern static IntPtr GetTypeFromClass (RuntimeStructs.MonoClass *klass);
internal RuntimeTypeHandle GetTypeHandle ()
{
unsafe { return new RuntimeTypeHandle (GetTypeFromClass (value)); }
}
internal RuntimeTypeHandle GetTypeHandle () => new RuntimeTypeHandle (GetTypeFromClass (value));
}
internal struct RuntimeRemoteClassHandle {
unsafe RuntimeStructs.RemoteClass* value;
unsafe struct RuntimeRemoteClassHandle
{
RuntimeStructs.RemoteClass* value;
internal unsafe RuntimeRemoteClassHandle (RuntimeStructs.RemoteClass* value)
internal RuntimeRemoteClassHandle (RuntimeStructs.RemoteClass* value)
{
this.value = value;
}
internal RuntimeClassHandle ProxyClass {
get {
unsafe {
return new RuntimeClassHandle (value->proxy_class);
}
return new RuntimeClassHandle (value->proxy_class);
}
}
}
internal struct RuntimeGenericParamInfoHandle {
unsafe RuntimeStructs.GenericParamInfo* value;
unsafe struct RuntimeGenericParamInfoHandle
{
RuntimeStructs.GenericParamInfo* value;
internal unsafe RuntimeGenericParamInfoHandle (RuntimeStructs.GenericParamInfo* value)
internal RuntimeGenericParamInfoHandle (RuntimeStructs.GenericParamInfo* value)
{
this.value = value;
}
internal unsafe RuntimeGenericParamInfoHandle (IntPtr ptr)
internal RuntimeGenericParamInfoHandle (IntPtr ptr)
{
this.value = (RuntimeStructs.GenericParamInfo*) ptr;
}
internal Type[] Constraints => GetConstraints ();
internal Type[] Constraints { get { return GetConstraints (); } }
internal GenericParameterAttributes Attributes => (GenericParameterAttributes) value->flags;
internal GenericParameterAttributes Attributes {
get {
unsafe {
return (GenericParameterAttributes) value->flags;
}
}
}
Type[] GetConstraints () {
Type[] GetConstraints ()
{
int n = GetConstraintsCount ();
var a = new Type[n];
var a = new Type [n];
for (int i = 0; i < n; i++) {
unsafe {
RuntimeClassHandle c = new RuntimeClassHandle (value->constraints[i]);
a[i] = Type.GetTypeFromHandle (c.GetTypeHandle ());
}
RuntimeClassHandle c = new RuntimeClassHandle (value->constraints[i]);
a[i] = Type.GetTypeFromHandle (c.GetTypeHandle ());
}
return a;
}
int GetConstraintsCount () {
int GetConstraintsCount ()
{
int i = 0;
unsafe {
RuntimeStructs.MonoClass** p = value->constraints;
while (p != null && *p != null) {
p++; i++;
}
RuntimeStructs.MonoClass** p = value->constraints;
while (p != null && *p != null) {
p++; i++;
}
return i;
}
}
internal struct RuntimeEventHandle {
internal struct RuntimeEventHandle
{
IntPtr value;
internal RuntimeEventHandle (IntPtr v)
@@ -150,11 +138,7 @@ namespace Mono {
value = v;
}
public IntPtr Value {
get {
return value;
}
}
public IntPtr Value => value;
public override bool Equals (object obj)
{
@@ -185,7 +169,8 @@ namespace Mono {
}
}
internal struct RuntimePropertyHandle {
internal struct RuntimePropertyHandle
{
IntPtr value;
internal RuntimePropertyHandle (IntPtr v)
@@ -193,11 +178,7 @@ namespace Mono {
value = v;
}
public IntPtr Value {
get {
return value;
}
}
public IntPtr Value => value;
public override bool Equals (object obj)
{
@@ -228,47 +209,38 @@ namespace Mono {
}
}
internal struct RuntimeGPtrArrayHandle {
unsafe RuntimeStructs.GPtrArray* value;
unsafe struct RuntimeGPtrArrayHandle
{
RuntimeStructs.GPtrArray* value;
internal unsafe RuntimeGPtrArrayHandle (RuntimeStructs.GPtrArray* value)
internal RuntimeGPtrArrayHandle (RuntimeStructs.GPtrArray* value)
{
this.value = value;
}
internal unsafe RuntimeGPtrArrayHandle (IntPtr ptr)
internal RuntimeGPtrArrayHandle (IntPtr ptr)
{
this.value = (RuntimeStructs.GPtrArray*) ptr;
}
internal int Length {
get {
unsafe {
return value->len;
}
}
}
internal int Length => value->len;
internal IntPtr this[int i] => Lookup (i);
internal IntPtr this [int i] => Lookup (i);
internal IntPtr Lookup (int i)
{
if (i >= 0 && i < Length) {
unsafe {
return value->data[i];
}
return value->data[i];
} else
throw new IndexOutOfRangeException ();
}
[MethodImpl(MethodImplOptions.InternalCall)]
unsafe extern static void GPtrArrayFree (RuntimeStructs.GPtrArray* value);
extern static void GPtrArrayFree (RuntimeStructs.GPtrArray* value);
internal static void DestroyAndFree (ref RuntimeGPtrArrayHandle h) {
unsafe {
GPtrArrayFree (h.value);
h.value = null;
}
GPtrArrayFree (h.value);
h.value = null;
}
}
}

View File

@@ -71,7 +71,11 @@ namespace Mono {
internal uint hash_alg;
internal uint hash_len;
internal uint flags;
#if NETCORE
internal int major, minor, build, revision;
#else
internal ushort major, minor, build, revision;
#endif
internal ushort arch;
}
@@ -117,4 +121,11 @@ namespace Mono {
public T4 Item4;
public T5 Item5;
}
internal class NullByRefReturnException : Exception
{
public NullByRefReturnException ()
{
}
}
}

View File

@@ -26,6 +26,10 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// Disable unreachable code warnings in this entire file.
#pragma warning disable 162
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using Mono.Globalization.Unicode;
@@ -33,16 +37,44 @@ using System.Threading;
namespace System.Globalization
{
interface ISimpleCollator
{
SortKey GetSortKey (string source, CompareOptions options);
int Compare (string s1, string s2);
int Compare (string s1, int idx1, int len1, string s2, int idx2, int len2, CompareOptions options);
bool IsPrefix (string src, string target, CompareOptions opt);
bool IsSuffix (string src, string target, CompareOptions opt);
int IndexOf (string s, string target, int start, int length, CompareOptions opt);
int IndexOf (string s, char target, int start, int length, CompareOptions opt);
int LastIndexOf (string s, string target, CompareOptions opt);
int LastIndexOf (string s, string target, int start, int length, CompareOptions opt);
int LastIndexOf (string s, char target, CompareOptions opt);
int LastIndexOf (string s, char target, int start, int length, CompareOptions opt);
}
partial class CompareInfo
{
[NonSerialized]
SimpleCollator collator;
ISimpleCollator collator;
// Maps culture IDs to SimpleCollator objects
static Dictionary<string, SimpleCollator> collators;
static Dictionary<string, ISimpleCollator> collators;
static bool managedCollation;
static bool managedCollationChecked;
#if WASM
const bool UseManagedCollation = false;
#else
static bool UseManagedCollation {
get {
if (!managedCollationChecked) {
@@ -53,14 +85,18 @@ namespace System.Globalization
return managedCollation;
}
}
#endif
SimpleCollator GetCollator ()
ISimpleCollator GetCollator ()
{
#if WASM
return null;
#else
if (collator != null)
return collator;
if (collators == null) {
Interlocked.CompareExchange (ref collators, new Dictionary<string, SimpleCollator> (StringComparer.Ordinal), null);
Interlocked.CompareExchange (ref collators, new Dictionary<string, ISimpleCollator> (StringComparer.Ordinal), null);
}
lock (collators) {
@@ -71,6 +107,7 @@ namespace System.Globalization
}
return collator;
#endif
}
SortKey CreateSortKeyCore (string source, CompareOptions options)

View File

@@ -624,7 +624,59 @@ namespace System.Globalization
return false;
}
internal void GetNFIValues (NumberFormatInfo nfi)
// mono/metadta/culture-info.h NumberFormatEntryManaged must match
// mcs/class/corlib/ReferenceSources/CultureData.cs NumberFormatEntryManaged.
// This is sorted alphabetically.
[StructLayout (LayoutKind.Sequential)]
internal struct NumberFormatEntryManaged
{
internal int currency_decimal_digits;
internal int currency_decimal_separator;
internal int currency_group_separator;
internal int currency_group_sizes0;
internal int currency_group_sizes1;
internal int currency_negative_pattern;
internal int currency_positive_pattern;
internal int currency_symbol;
internal int nan_symbol;
internal int negative_infinity_symbol;
internal int negative_sign;
internal int number_decimal_digits;
internal int number_decimal_separator;
internal int number_group_separator;
internal int number_group_sizes0;
internal int number_group_sizes1;
internal int number_negative_pattern;
internal int per_mille_symbol;
internal int percent_negative_pattern;
internal int percent_positive_pattern;
internal int percent_symbol;
internal int positive_infinity_symbol;
internal int positive_sign;
}
static private unsafe int strlen (byte* s)
{
int length = 0;
while (s [length] != 0)
++length;
return length;
}
static private unsafe string idx2string (byte* data, int idx)
{
return Encoding.UTF8.GetString (data + idx, strlen (data + idx));
}
private int [] create_group_sizes_array (int gs0, int gs1)
{
// group_sizes is an array of up to two integers, -1 terminated.
return (gs0 == -1) ? new int [ ] { }
: (gs1 == -1) ? new int [ ] {gs0}
: new int [ ] {gs0, gs1};
}
internal unsafe void GetNFIValues (NumberFormatInfo nfi)
{
if (this.IsInvariantCulture)
{
@@ -641,7 +693,29 @@ namespace System.Globalization
// PercentGroupSize
// PercentGroupSeparator
//
fill_number_data (nfi, numberIndex);
var nfe = new NumberFormatEntryManaged ();
byte* data = fill_number_data (numberIndex, ref nfe);
nfi.currencyGroupSizes = create_group_sizes_array (nfe.currency_group_sizes0, nfe.currency_group_sizes1);
nfi.numberGroupSizes = create_group_sizes_array (nfe.number_group_sizes0, nfe.number_group_sizes1);
nfi.NaNSymbol = idx2string (data, nfe.nan_symbol);
nfi.currencyDecimalDigits = nfe.currency_decimal_digits;
nfi.currencyDecimalSeparator = idx2string (data, nfe.currency_decimal_separator);
nfi.currencyGroupSeparator = idx2string (data, nfe.currency_group_separator);
nfi.currencyNegativePattern = nfe.currency_negative_pattern;
nfi.currencyPositivePattern = nfe.currency_positive_pattern;
nfi.currencySymbol = idx2string (data, nfe.currency_symbol);
nfi.negativeInfinitySymbol = idx2string (data, nfe.negative_infinity_symbol);
nfi.negativeSign = idx2string (data, nfe.negative_sign);
nfi.numberDecimalDigits = nfe.number_decimal_digits;
nfi.numberDecimalSeparator = idx2string (data, nfe.number_decimal_separator);
nfi.numberGroupSeparator = idx2string (data, nfe.number_group_separator);
nfi.numberNegativePattern = nfe.number_negative_pattern;
nfi.perMilleSymbol = idx2string (data, nfe.per_mille_symbol);
nfi.percentNegativePattern = nfe.percent_negative_pattern;
nfi.percentPositivePattern = nfe.percent_positive_pattern;
nfi.percentSymbol = idx2string (data, nfe.percent_symbol);
nfi.positiveInfinitySymbol = idx2string (data, nfe.positive_infinity_symbol);
nfi.positiveSign = idx2string (data, nfe.positive_sign);
}
//
@@ -654,6 +728,6 @@ namespace System.Globalization
}
[MethodImplAttribute (MethodImplOptions.InternalCall)]
extern static void fill_number_data (NumberFormatInfo nfi, int numberIndex);
extern unsafe static byte* fill_number_data (int index, ref NumberFormatEntryManaged nfe);
}
}

View File

@@ -17,5 +17,13 @@ namespace System.Runtime.CompilerServices {
{
return Array.UnsafeMov<T, long> (val);
}
#if NETCORE
[Intrinsic]
internal static bool EnumEquals<T>(T x, T y) where T : struct, Enum => throw new NotImplementedException ();
[Intrinsic]
internal static int EnumCompareTo<T>(T x, T y) where T : struct, Enum => throw new NotImplementedException ();
#endif
}
}

View File

@@ -95,19 +95,18 @@ namespace System
[MethodImplAttribute(MethodImplOptions.InternalCall)]
extern ConstructorInfo GetCorrespondingInflatedConstructor (ConstructorInfo generic);
#if !NETCORE
internal override MethodInfo GetMethod (MethodInfo fromNoninstanciated)
{
{
if (fromNoninstanciated == null)
throw new ArgumentNullException ("fromNoninstanciated");
return GetCorrespondingInflatedMethod (fromNoninstanciated);
}
return GetCorrespondingInflatedMethod (fromNoninstanciated);
}
internal override ConstructorInfo GetConstructor (ConstructorInfo fromNoninstanciated)
{
if (fromNoninstanciated == null)
throw new ArgumentNullException ("fromNoninstanciated");
return GetCorrespondingInflatedConstructor (fromNoninstanciated);
return GetCorrespondingInflatedConstructor (fromNoninstanciated);
}
internal override FieldInfo GetField (FieldInfo fromNoninstanciated)
@@ -117,7 +116,6 @@ namespace System
flags |= fromNoninstanciated.IsPublic ? BindingFlags.Public : BindingFlags.NonPublic;
return GetField (fromNoninstanciated.Name, flags);
}
#endif
string GetDefaultMemberName ()
{
@@ -142,7 +140,7 @@ namespace System
return m_serializationCtor;
}
internal Object CreateInstanceSlow(bool publicOnly, bool wrapExceptions, bool skipCheckThis, bool fillCache, ref StackCrawlMark stackMark)
internal Object CreateInstanceSlow(bool publicOnly, bool wrapExceptions, bool skipCheckThis, bool fillCache)
{
//bool bNeedSecurityCheck = true;
//bool bCanBeCached = false;
@@ -161,7 +159,11 @@ namespace System
{
var ctor = GetDefaultConstructor ();
if (!nonPublic && ctor != null && !ctor.IsPublic) {
#if NETCORE
throw new MissingMethodException(SR.Format(SR.Arg_NoDefCTor, FullName));
#else
ctor = null;
#endif
}
if (ctor == null) {
@@ -431,7 +433,7 @@ namespace System
public override StructLayoutAttribute StructLayoutAttribute {
get {
#if NETCORE
throw new NotImplementedException ();
return GetStructLayoutAttribute ();
#else
return StructLayoutAttribute.GetCustomAttribute (this);
#endif
@@ -697,11 +699,7 @@ namespace System
var a = new RuntimeFieldInfo[n];
for (int i = 0; i < n; i++) {
var fh = new RuntimeFieldHandle (h[i]);
#if NETCORE
throw new NotImplementedException ();
#else
a[i] = (RuntimeFieldInfo) FieldInfo.GetFieldFromHandle (fh, refh);
#endif
}
return a;
}
@@ -717,7 +715,7 @@ namespace System
for (int i = 0; i < n; i++) {
var eh = new Mono.RuntimeEventHandle (h[i]);
#if NETCORE
throw new NotImplementedException ();
a[i] = (RuntimeEventInfo) RuntimeEventInfo.GetEventFromHandle (eh, refh);
#else
a[i] = (RuntimeEventInfo) EventInfo.GetEventFromHandle (eh, refh);
#endif
@@ -736,7 +734,8 @@ namespace System
{
string internalName = null;
#if NETCORE
throw new NotImplementedException ();
if (displayName != null)
internalName = displayName;
#else
if (displayName != null)
internalName = TypeIdentifiers.FromDisplay (displayName).InternalName;
@@ -774,7 +773,19 @@ namespace System
get;
}
#if MOBILE
#if NETCORE
public override bool IsSecurityTransparent {
get { return false; }
}
public override bool IsSecurityCritical {
get { return true; }
}
public override bool IsSecuritySafeCritical {
get { return false; }
}
#elif MOBILE
static int get_core_clr_security_level ()
{
return 1;
@@ -797,6 +808,7 @@ namespace System
}
#endif
#if !NETCORE
public override int GetHashCode()
{
Type t = UnderlyingSystemType;
@@ -804,6 +816,7 @@ namespace System
return t.GetHashCode ();
return (int)_impl.Value;
}
#endif
public override string FullName {
get {
@@ -822,9 +835,7 @@ namespace System
}
}
#if !NETCORE
public sealed override bool HasSameMetadataDefinitionAs (MemberInfo other) => HasSameMetadataDefinitionAsCore<RuntimeType> (other);
#endif
public override bool IsSZArray {
get {
@@ -833,13 +844,11 @@ namespace System
}
}
#if !NETCORE
internal override bool IsUserType {
get {
return false;
}
}
#endif
[System.Runtime.InteropServices.ComVisible(true)]
[Pure]
@@ -862,5 +871,44 @@ namespace System
}
public override bool IsTypeDefinition => RuntimeTypeHandle.IsTypeDefinition (this);
#if NETCORE
private const int DEFAULT_PACKING_SIZE = 8;
internal StructLayoutAttribute GetStructLayoutAttribute ()
{
if (IsInterface || HasElementType || IsGenericParameter)
return null;
int pack = 0, size = 0;
LayoutKind layoutKind = LayoutKind.Auto;
switch (Attributes & TypeAttributes.LayoutMask)
{
case TypeAttributes.ExplicitLayout: layoutKind = LayoutKind.Explicit; break;
case TypeAttributes.AutoLayout: layoutKind = LayoutKind.Auto; break;
case TypeAttributes.SequentialLayout: layoutKind = LayoutKind.Sequential; break;
default: Contract.Assume(false); break;
}
CharSet charSet = CharSet.None;
switch (Attributes & TypeAttributes.StringFormatMask)
{
case TypeAttributes.AnsiClass: charSet = CharSet.Ansi; break;
case TypeAttributes.AutoClass: charSet = CharSet.Auto; break;
case TypeAttributes.UnicodeClass: charSet = CharSet.Unicode; break;
default: Contract.Assume(false); break;
}
GetPacking (out pack, out size);
// Metadata parameter checking should not have allowed 0 for packing size.
// The runtime later converts a packing size of 0 to 8 so do the same here
// because it's more useful from a user perspective.
if (pack == 0)
pack = DEFAULT_PACKING_SIZE;
return new StructLayoutAttribute (layoutKind) { Pack = pack, Size = size, CharSet = charSet };
}
#endif // NETCORE
}
}

View File

@@ -28,9 +28,9 @@
namespace System.Diagnostics.Tracing
{
public class EventCounter : IDisposable
public class EventCounter : DiagnosticCounter
{
public EventCounter (string name, EventSource eventSource)
public EventCounter (string name, EventSource eventSource) : base (name, eventSource)
{
}
@@ -38,7 +38,7 @@ namespace System.Diagnostics.Tracing
{
}
public void Dispose ()
public void WriteMetric (double value)
{
}
}

View File

@@ -174,6 +174,10 @@ namespace System.Diagnostics.Tracing
{
}
internal void ReportOutOfBandMessage (string msg, bool flush)
{
}
protected void WriteEvent (int eventId)
{
WriteEvent (eventId, new object[] { } );

View File

@@ -54,6 +54,18 @@ namespace System.Diagnostics.Tracing
internal set;
}
public long OSThreadId
{
get;
internal set;
}
public DateTime TimeStamp
{
get;
internal set;
}
public string EventName
{
get;

View File

@@ -40,7 +40,6 @@ namespace System.Diagnostics
/// Enables communication with a debugger.
/// </summary>
[ComVisible (true)]
[MonoTODO ("The Debugger class is not functional")]
public sealed class Debugger
{
@@ -83,7 +82,6 @@ namespace System.Diagnostics
/// <summary>
/// Launches and attaches a debugger to the process.
/// </summary>
[MonoTODO ("Not implemented")]
public static bool Launch()
{
throw new NotImplementedException();

View File

@@ -202,9 +202,9 @@ namespace System.Diagnostics {
static string GetAotId ()
{
if (!isAotidSet) {
aotid = Assembly.GetAotId ();
if (aotid != null)
aotid = new Guid (aotid).ToString ("N");
var arr = RuntimeAssembly.GetAotId ();
if (arr != null)
aotid = new Guid (arr).ToString ("N");
isAotidSet = true;
}

View File

@@ -555,7 +555,11 @@ namespace System.Globalization
if (!constructed) Construct ();
CheckNeutral ();
var temp = new DateTimeFormatInfo (m_cultureData, Calendar);
DateTimeFormatInfo temp;
if (GlobalizationMode.Invariant)
temp = new DateTimeFormatInfo();
else
temp = new DateTimeFormatInfo(m_cultureData, Calendar);
temp._isReadOnly = m_isReadOnly;
System.Threading.Thread.MemoryBarrier();
dateTimeInfo = temp;

View File

@@ -144,7 +144,7 @@ namespace System.IO.IsolatedStorage {
}
// Methods
protected abstract IsolatedStoragePermission GetPermission (PermissionSet ps);
protected virtual IsolatedStoragePermission GetPermission (PermissionSet ps) => null;
protected void InitStore (IsolatedStorageScope scope, Type domainEvidenceType, Type assemblyEvidenceType)
{

View File

@@ -55,11 +55,11 @@ namespace System.IO {
}
DriveInfo [] drives = GetDrives ();
Array.Sort (drives, (DriveInfo di1, DriveInfo di2) => String.Compare (di2.path, di1.path, true));
foreach (DriveInfo d in drives){
if (d.path == driveName){
if (driveName.StartsWith (d.path, StringComparison.OrdinalIgnoreCase)){
this.path = d.path;
this.drive_format = d.drive_format;
this.path = d.path;
return;
}
}

Some files were not shown because too many files have changed in this diff Show More