Imported Upstream version 4.2.2.10

Former-commit-id: 925376e1db46149d14f7949fcd7b08805ea8aba9
This commit is contained in:
Xamarin Public Jenkins 2015-12-18 19:40:30 -05:00
parent d11e8b35fd
commit 8cb7d04924
45 changed files with 399 additions and 122 deletions

View File

@ -1 +1 @@
1895650fb1b5a365ada5bcdf3fef86a448da51d2
08afe9df2791baac02e8201b01cce1aca3beb124

View File

@ -1 +1 @@
2317c4f2abf300ae9f452f4dbfd8b9d63c944e1c
4fa615ca8fe030cfede44041b86cf5bfc38aceaf

View File

@ -1 +1 @@
530bd396504a300e1f44e8bb369913299172f01f
3db9a4bafdb7398647430f25ef9f145d369259ca

View File

@ -34,7 +34,7 @@ static class Consts
// Use these assembly version constants to make code more maintainable.
//
public const string MonoVersion = "4.2.1.0";
public const string MonoVersion = "4.2.2.0";
public const string MonoCompany = "Mono development team";
public const string MonoProduct = "Mono Common Language Infrastructure";
public const string MonoCopyright = "(c) Various Mono authors";

View File

@ -1263,20 +1263,29 @@ namespace System.Data.SqlClient
throw new ArgumentNullException ("values");
int len = values.Length;
int bigDecimalIndex = command.Tds.ColumnValues.BigDecimalIndex;
var tds = command.Tds;
int columns = Math.Min (len, tds.Columns.Count);
// If a four-byte decimal is stored, then we can't convert to
// a native type. Throw an OverflowException.
if (bigDecimalIndex >= 0 && bigDecimalIndex < len)
throw new OverflowException ();
try {
command.Tds.ColumnValues.CopyTo (0, values, 0,
len > command.Tds.ColumnValues.Count ? command.Tds.ColumnValues.Count : len);
} catch (TdsInternalException ex) {
command.Connection.Close ();
throw SqlException.FromTdsInternalException ((TdsInternalException) ex);
if ((command.CommandBehavior & CommandBehavior.SequentialAccess) != 0) {
for (int i = 0; i < columns; ++i) {
values [i] = tds.GetSequentialColumnValue (i);
}
} else {
int bigDecimalIndex = tds.ColumnValues.BigDecimalIndex;
// If a four-byte decimal is stored, then we can't convert to
// a native type. Throw an OverflowException.
if (bigDecimalIndex >= 0 && bigDecimalIndex < len)
throw new OverflowException ();
try {
tds.ColumnValues.CopyTo (0, values, 0, columns);
} catch (TdsInternalException ex) {
command.Connection.Close ();
throw SqlException.FromTdsInternalException ((TdsInternalException)ex);
}
}
return (len < FieldCount ? len : FieldCount);
return columns;
}

View File

@ -36,7 +36,10 @@ namespace System
return false;
var from = Type.GetTypeCode (source);
switch (Type.GetTypeCode (target)) {
var to = Type.GetTypeCode (target);
if (from == to && source.IsPrimitive)
return true;
switch (to) {
case TypeCode.Char:
switch (from) {
case TypeCode.Byte:
@ -146,4 +149,4 @@ namespace System
return st == type || CanConvertPrimitive ((RuntimeType) st, type);
}
}
}
}

View File

@ -102,17 +102,7 @@ namespace System
public MethodInfo Method {
get {
if (method_info != null) {
return method_info;
} else {
if (method != IntPtr.Zero) {
if (!method_is_virtual)
method_info = (MethodInfo)MethodBase.GetMethodFromHandleNoGenericCheck (new RuntimeMethodHandle (method));
else
method_info = GetVirtualMethod_internal ();
}
return method_info;
}
return GetMethodImpl ();
}
}
@ -511,7 +501,17 @@ namespace System
protected virtual MethodInfo GetMethodImpl ()
{
return Method;
if (method_info != null) {
return method_info;
} else {
if (method != IntPtr.Zero) {
if (!method_is_virtual)
method_info = (MethodInfo)MethodBase.GetMethodFromHandleNoGenericCheck (new RuntimeMethodHandle (method));
else
method_info = GetVirtualMethod_internal ();
}
return method_info;
}
}
// This is from ISerializable

View File

@ -33,6 +33,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.Serialization;
using System.Runtime.InteropServices;
@ -112,6 +113,14 @@ namespace System
return base.GetHashCode ();
}
protected override MethodInfo GetMethodImpl ()
{
if (delegates != null)
return delegates [delegates.Length - 1].Method;
return base.GetMethodImpl ();
}
// <summary>
// Return, in order of invocation, the invocation list
// of a MulticastDelegate

View File

@ -855,6 +855,32 @@ namespace MonoTests.System.Threading
Assert.AreSame (Thread.GetNamedDataSlot ("te#st"), Thread.GetNamedDataSlot ("te#st"), "#2");
}
class DomainClass : MarshalByRefObject {
Thread m_thread;
bool success;
public bool Run () {
m_thread = new Thread(ThreadProc);
m_thread.Start(Thread.CurrentThread);
m_thread.Join();
return success;
}
public void ThreadProc (object arg) {
success = m_thread == Thread.CurrentThread;
}
}
[Test]
public void CurrentThread_Domains ()
{
AppDomain ad = AppDomain.CreateDomain ("foo");
ad.Load (typeof (DomainClass).Assembly.GetName ());
var o = (DomainClass)ad.CreateInstanceAndUnwrap (typeof (DomainClass).Assembly.FullName, typeof (DomainClass).FullName);
Assert.IsTrue (o.Run ());
AppDomain.Unload (ad);
}
void CheckIsRunning (string s, Thread t)
{
int c = counter;

View File

@ -1 +1 @@
9f87bcd74d19a29f1b4e41b2d7171f2c1af2835c
bc4d15d32cfe0aba953847153e27ae46f18e35c1

View File

@ -1 +1 @@
06f7fdab7429fe3c9ed22771dfe9380d208f037d
b937698af090202f18c31201001eb77a3e464dc5

View File

@ -1 +1 @@
f41bbb4a396f59eec461720dfc065f676523d1c1
3fa77ec9258a44fd81c7433c3534093f2984d1cf

View File

@ -1 +1 @@
ff03cd74a2624bd0a4a51658bb41e7d90f3144c9
b656909fcd7c7447aa1b8639357c6c089a918a74

View File

@ -1 +1 @@
d8009a94148589526c8dc39f0e1c0ca9e77217e8
ec8668e105a38b35bf91110fe79e06e0dca1ead6

View File

@ -1 +1 @@
22fc25a9bdf68807d3d57dc73d711bbd3bc8bc79
47b95db8a26f7b940063993c07b77a5ee36746fe

View File

@ -1 +1 @@
f815830cd5626bb85f053420b1d6fcf19e0aeb2a
3c2d3fbe2cac6adc7835cf53aa766fffd4381e86

View File

@ -0,0 +1,13 @@
class M
{
public static void Main ()
{
string s = null;
s?.CompareTo ("xx").CompareTo(s?.EndsWith ("x")).GetHashCode ();
string s1 = "abcd";
string s2 = null;
var idx = s1.Substring(1)[s2?.GetHashCode () ?? 0].GetHashCode ();
}
}

View File

@ -1 +1 @@
08b0ee8ce9da391ffa51e1cc3eb0a3611adf5b5e
7e6d08d8664395f0f877e388bd40276cefe0c2e9

View File

@ -2339,6 +2339,8 @@ sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean p
FOREACH_THREAD (info) {
int skip_reason = 0;
void *aligned_stack_start = (void*)(mword) ALIGN_TO ((mword)info->client_info.stack_start, SIZEOF_VOID_P);
if (info->client_info.skip) {
SGEN_LOG (3, "Skipping dead thread %p, range: %p-%p, size: %zd", info, info->client_info.stack_start, info->client_info.stack_end, (char*)info->client_info.stack_end - (char*)info->client_info.stack_start);
skip_reason = 1;
@ -2358,13 +2360,13 @@ sgen_client_scan_thread_data (void *start_nursery, void *end_nursery, gboolean p
g_assert (info->client_info.suspend_done);
SGEN_LOG (3, "Scanning thread %p, range: %p-%p, size: %zd, pinned=%zd", info, info->client_info.stack_start, info->client_info.stack_end, (char*)info->client_info.stack_end - (char*)info->client_info.stack_start, sgen_get_pinned_count ());
if (mono_gc_get_gc_callbacks ()->thread_mark_func && !conservative_stack_mark) {
mono_gc_get_gc_callbacks ()->thread_mark_func (info->client_info.runtime_data, info->client_info.stack_start, info->client_info.stack_end, precise, &ctx);
mono_gc_get_gc_callbacks ()->thread_mark_func (info->client_info.runtime_data, aligned_stack_start, info->client_info.stack_end, precise, &ctx);
} else if (!precise) {
if (!conservative_stack_mark) {
fprintf (stderr, "Precise stack mark not supported - disabling.\n");
conservative_stack_mark = TRUE;
}
sgen_conservatively_pin_objects_from (info->client_info.stack_start, info->client_info.stack_end, start_nursery, end_nursery, PIN_TYPE_STACK);
sgen_conservatively_pin_objects_from (aligned_stack_start, info->client_info.stack_end, start_nursery, end_nursery, PIN_TYPE_STACK);
}
if (!precise) {

View File

@ -480,11 +480,13 @@ domain_get_next (ThreadPoolDomain *current)
return tpdomain;
}
static void
/* return TRUE if timeout, FALSE otherwise (worker unpark or interrupt) */
static gboolean
worker_park (void)
{
mono_cond_t cond;
MonoInternalThread *thread = mono_thread_internal_current ();
gboolean timeout = FALSE;
mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] current worker parking", GetCurrentThreadId ());
@ -495,10 +497,17 @@ worker_park (void)
mono_mutex_lock (&threadpool->active_threads_lock);
if (!mono_runtime_is_shutting_down ()) {
static gpointer rand_handle = NULL;
if (!rand_handle)
rand_handle = rand_create ();
g_assert (rand_handle);
g_ptr_array_add (threadpool->parked_threads, &cond);
g_ptr_array_remove_fast (threadpool->working_threads, thread);
mono_cond_wait (&cond, &threadpool->active_threads_lock);
if (mono_cond_timedwait_ms (&cond, &threadpool->active_threads_lock, rand_next (rand_handle, 5 * 1000, 60 * 1000)) != 0)
timeout = TRUE;
g_ptr_array_add (threadpool->working_threads, thread);
g_ptr_array_remove (threadpool->parked_threads, &cond);
@ -511,6 +520,8 @@ worker_park (void)
mono_cond_destroy (&cond);
mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_THREADPOOL, "[%p] current worker unparking", GetCurrentThreadId ());
return timeout;
}
static gboolean
@ -585,13 +596,15 @@ worker_thread (gpointer data)
}
if (retire || !(tpdomain = domain_get_next (previous_tpdomain))) {
gboolean timeout;
COUNTER_ATOMIC (counter, {
counter._.working --;
counter._.parked ++;
});
mono_mutex_unlock (&threadpool->domains_lock);
worker_park ();
timeout = worker_park ();
mono_mutex_lock (&threadpool->domains_lock);
COUNTER_ATOMIC (counter, {
@ -599,6 +612,9 @@ worker_thread (gpointer data)
counter._.parked --;
});
if (timeout)
break;
if (retire)
retire = FALSE;

View File

@ -1 +1 @@
4b6a091a05719bcaeae9c139036b3b64e47d3685
6a8f7210854722081b142d053b3a793f67637e5e

View File

@ -749,7 +749,7 @@ EXTRA_DIST = TestDriver.cs \
Makefile.am.in
version.h: Makefile
echo "#define FULL_VERSION \"Stable 4.2.1.124/39edf24\"" > version.h
echo "#define FULL_VERSION \"Stable 4.2.2.10/7b87787\"" > version.h
# Utility target for patching libtool to speed up linking
patch-libtool:

View File

@ -749,7 +749,7 @@ EXTRA_DIST = TestDriver.cs \
Makefile.am.in
version.h: Makefile
echo "#define FULL_VERSION \"Stable 4.2.1.124/39edf24\"" > version.h
echo "#define FULL_VERSION \"Stable 4.2.2.10/7b87787\"" > version.h
# Utility target for patching libtool to speed up linking
patch-libtool:

View File

@ -1 +1 @@
3cfd458f71bd744fd88bb6d83cb1577e532349ed
4b2d84dd6668bd0561add9df9659b3a3dbe4586b

View File

@ -291,4 +291,112 @@ class Tests
return 1;
return 0;
}
enum LongEnum : ulong {
A = 1
}
public static int test_0_long_enum_eq_comparer () {
var c = EqualityComparer<LongEnum>.Default;
c.GetHashCode (LongEnum.A);
return 0;
}
enum UInt32Enum : uint {
A = 1
}
enum Int32Enum : int {
A = 1
}
enum Int16Enum : short {
A = 1
}
enum UInt16Enum : ushort {
A = 1
}
enum Int8Enum : sbyte {
A = 1
}
enum UInt8Enum : byte {
A = 1
}
public static int test_0_int_enum_eq_comparer () {
var t1 = new Dictionary<Int32Enum, object> ();
t1 [Int32Enum.A] = "foo";
var t2 = new Dictionary<UInt32Enum, object> ();
t2 [UInt32Enum.A] = "foo";
var t3 = new Dictionary<UInt16Enum, object> ();
t3 [UInt16Enum.A] = "foo";
var t4 = new Dictionary<Int16Enum, object> ();
t4 [Int16Enum.A] = "foo";
var t5 = new Dictionary<Int8Enum, object> ();
t5 [Int8Enum.A] = "foo";
var t6 = new Dictionary<UInt8Enum, object> ();
t6 [UInt8Enum.A] = "foo";
return 0;
}
public static int test_0_array_accessor_runtime_invoke_ref () {
var t = typeof (string[]);
var arr = Array.CreateInstance (typeof (string), 1);
arr.GetType ().GetMethod ("Set").Invoke (arr, new object [] { 0, "A" });
var res = (string)arr.GetType ().GetMethod ("Get").Invoke (arr, new object [] { 0 });
if (res != "A")
return 1;
return 0;
}
public static void SetArrayValue_<T> (T[] values) {
values.Select (x => x).ToArray ();
}
public static int test_0_delegate_invoke_wrappers_gsharedvt () {
var enums = new LongEnum [] { LongEnum.A };
SetArrayValue_ (enums);
return 0;
}
struct LargeStruct {
public int a, b, c, d;
}
[MethodImplAttribute (MethodImplOptions.NoInlining)]
public static bool GetHasValue<T>(T? value) where T : struct
{
return value.HasValue;
}
[Category ("DYNCALL")]
public static int test_0_large_nullable_invoke () {
var s = new LargeStruct () { a = 1, b = 2, c = 3, d = 4 };
GetHasValue<LargeStruct> (s);
#if __MOBILE__
var m = typeof(AotTests).GetMethod("GetHasValue", BindingFlags.Static | BindingFlags.Public);
#else
var m = typeof(Tests).GetMethod("GetHasValue", BindingFlags.Static | BindingFlags.Public);
#endif
Type type = typeof (LargeStruct?).GetGenericArguments () [0];
bool b1 = (bool)m.MakeGenericMethod (new Type[] {type}).Invoke (null, new object[] { s });
if (!b1)
return 1;
bool b2 = (bool)m.MakeGenericMethod (new Type[] {type}).Invoke (null, new object[] { null });
if (b2)
return 2;
return 0;
}
}

View File

@ -58,6 +58,9 @@
#include <locale.h>
#include "version.h"
#include "debugger-agent.h"
#if TARGET_OSX
# include <sys/resource.h>
#endif
static FILE *mini_stats_fd;
@ -1462,6 +1465,26 @@ switch_gc (char* argv[], const char* target_gc)
#endif
}
#ifdef TARGET_OSX
/*
* tries to increase the minimum number of files, if the number is below 1024
*/
static void
darwin_change_default_file_handles ()
{
struct rlimit limit;
if (getrlimit (RLIMIT_NOFILE, &limit) == 0){
if (limit.rlim_cur < 1024){
limit.rlim_cur = MAX(1024,limit.rlim_cur);
setrlimit (RLIMIT_NOFILE, &limit);
}
}
}
#endif
/**
* mono_main:
* @argc: number of arguments in the argv array
@ -1514,6 +1537,10 @@ mono_main (int argc, char* argv[])
setlocale (LC_ALL, "");
#if TARGET_OSX
darwin_change_default_file_handles ();
#endif
if (g_getenv ("MONO_NO_SMP"))
mono_set_use_smp (FALSE);

View File

@ -1 +1 @@
b4605733bb4bb4fa16d13db526cb439680307bba
4ebbe548d71b7a3556b34b718274beb4d108c38a

View File

@ -1 +1 @@
#define FULL_VERSION "Stable 4.2.1.124/39edf24"
#define FULL_VERSION "Stable 4.2.2.10/7b87787"

View File

@ -19,7 +19,7 @@ if HAVE_VTUNE
vtune_lib = libmono-profiler-vtune.la
endif
lib_LTLIBRARIES = libmono-profiler-aot.la libmono-profiler-iomap.la libmono-profiler-log.la $(vtune_lib)
lib_LTLIBRARIES = libmono-profiler-aot.la libmono-profiler-iomap.la libmono-profiler-log.la libmono-profiler-log-static.la $(vtune_lib)
if PLATFORM_DARWIN
libmono_profiler_log_la_LDFLAGS = -Wl,-undefined -Wl,suppress -Wl,-flat_namespace
@ -68,6 +68,14 @@ libmono_profiler_vtune_la_CFLAGS = $(VTUNE_CFLAGS)
libmono_profiler_vtune_la_LIBADD = $(VTUNE_LIBS) $(LIBMONO) $(GLIB_LIBS) $(LIBICONV)
endif
# The log profile uses eglib functions, so it needs to be linked against
# libeglib in shared mode, but not in static mode, since that would
# leads to duplicate symbols when it is linked into an app which
# also uses eglib (e.g. the runtime). Automake doesn't support this
# functionality, so create a separate static version of the library.
libmono_profiler_log_static_la_SOURCES = proflog.c
libmono_profiler_log_static_la_LDFLAGS = -static
mprof_report_SOURCES = decode.c
mprof_report_LDADD = $(Z_LIBS) $(GLIB_LIBS) $(LIBICONV)

View File

@ -160,6 +160,16 @@ libmono_profiler_iomap_la_OBJECTS = \
$(am_libmono_profiler_iomap_la_OBJECTS)
@DISABLE_LIBRARIES_FALSE@@DISABLE_PROFILER_FALSE@@HOST_WIN32_FALSE@am_libmono_profiler_iomap_la_rpath = -rpath \
@DISABLE_LIBRARIES_FALSE@@DISABLE_PROFILER_FALSE@@HOST_WIN32_FALSE@ $(libdir)
libmono_profiler_log_static_la_LIBADD =
am_libmono_profiler_log_static_la_OBJECTS = proflog.lo
libmono_profiler_log_static_la_OBJECTS = \
$(am_libmono_profiler_log_static_la_OBJECTS)
libmono_profiler_log_static_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(AM_CFLAGS) $(CFLAGS) \
$(libmono_profiler_log_static_la_LDFLAGS) $(LDFLAGS) -o $@
@DISABLE_LIBRARIES_FALSE@@DISABLE_PROFILER_FALSE@@HOST_WIN32_FALSE@am_libmono_profiler_log_static_la_rpath = -rpath \
@DISABLE_LIBRARIES_FALSE@@DISABLE_PROFILER_FALSE@@HOST_WIN32_FALSE@ $(libdir)
libmono_profiler_log_la_DEPENDENCIES = $(am__DEPENDENCIES_3) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
am_libmono_profiler_log_la_OBJECTS = proflog.lo
@ -221,10 +231,12 @@ am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libmono_profiler_aot_la_SOURCES) \
$(libmono_profiler_iomap_la_SOURCES) \
$(libmono_profiler_log_static_la_SOURCES) \
$(libmono_profiler_log_la_SOURCES) \
$(libmono_profiler_vtune_la_SOURCES) $(mprof_report_SOURCES)
DIST_SOURCES = $(libmono_profiler_aot_la_SOURCES) \
$(libmono_profiler_iomap_la_SOURCES) \
$(libmono_profiler_log_static_la_SOURCES) \
$(libmono_profiler_log_la_SOURCES) \
$(am__libmono_profiler_vtune_la_SOURCES_DIST) \
$(mprof_report_SOURCES)
@ -471,7 +483,7 @@ AM_CPPFLAGS = \
$(GLIB_CFLAGS)
@DISABLE_LIBRARIES_FALSE@@DISABLE_PROFILER_FALSE@@HAVE_VTUNE_TRUE@@HOST_WIN32_FALSE@vtune_lib = libmono-profiler-vtune.la
@DISABLE_LIBRARIES_FALSE@@DISABLE_PROFILER_FALSE@@HOST_WIN32_FALSE@lib_LTLIBRARIES = libmono-profiler-aot.la libmono-profiler-iomap.la libmono-profiler-log.la $(vtune_lib)
@DISABLE_LIBRARIES_FALSE@@DISABLE_PROFILER_FALSE@@HOST_WIN32_FALSE@lib_LTLIBRARIES = libmono-profiler-aot.la libmono-profiler-iomap.la libmono-profiler-log.la libmono-profiler-log-static.la $(vtune_lib)
@DISABLE_LIBRARIES_FALSE@@DISABLE_PROFILER_FALSE@@HOST_WIN32_FALSE@@PLATFORM_ANDROID_TRUE@libmono_profiler_log_la_LDFLAGS = -avoid-version
@DISABLE_LIBRARIES_FALSE@@DISABLE_PROFILER_FALSE@@HOST_WIN32_FALSE@@PLATFORM_DARWIN_TRUE@libmono_profiler_log_la_LDFLAGS = -Wl,-undefined -Wl,suppress -Wl,-flat_namespace
@DISABLE_EXECUTABLES_FALSE@@SHARED_MONO_FALSE@@SUPPORT_BOEHM_TRUE@LIBMONO = $(top_builddir)/mono/mini/$(LIBMONO_LA) $(static_libs)
@ -496,6 +508,14 @@ libmono_profiler_log_la_LIBADD = $(LIBMONO) $(GLIB_LIBS) $(Z_LIBS)
@HAVE_VTUNE_TRUE@libmono_profiler_vtune_la_SOURCES = mono-profiler-vtune.c
@HAVE_VTUNE_TRUE@libmono_profiler_vtune_la_CFLAGS = $(VTUNE_CFLAGS)
@HAVE_VTUNE_TRUE@libmono_profiler_vtune_la_LIBADD = $(VTUNE_LIBS) $(LIBMONO) $(GLIB_LIBS) $(LIBICONV)
# The log profile uses eglib functions, so it needs to be linked against
# libeglib in shared mode, but not in static mode, since that would
# leads to duplicate symbols when it is linked into an app which
# also uses eglib (e.g. the runtime). Automake doesn't support this
# functionality, so create a separate static version of the library.
libmono_profiler_log_static_la_SOURCES = proflog.c
libmono_profiler_log_static_la_LDFLAGS = -static
mprof_report_SOURCES = decode.c
mprof_report_LDADD = $(Z_LIBS) $(GLIB_LIBS) $(LIBICONV)
PLOG_TESTS_SRC = test-alloc.cs test-busy.cs test-monitor.cs test-excleave.cs \
@ -587,6 +607,9 @@ libmono-profiler-aot.la: $(libmono_profiler_aot_la_OBJECTS) $(libmono_profiler_a
libmono-profiler-iomap.la: $(libmono_profiler_iomap_la_OBJECTS) $(libmono_profiler_iomap_la_DEPENDENCIES) $(EXTRA_libmono_profiler_iomap_la_DEPENDENCIES)
$(AM_V_CCLD)$(LINK) $(am_libmono_profiler_iomap_la_rpath) $(libmono_profiler_iomap_la_OBJECTS) $(libmono_profiler_iomap_la_LIBADD) $(LIBS)
libmono-profiler-log-static.la: $(libmono_profiler_log_static_la_OBJECTS) $(libmono_profiler_log_static_la_DEPENDENCIES) $(EXTRA_libmono_profiler_log_static_la_DEPENDENCIES)
$(AM_V_CCLD)$(libmono_profiler_log_static_la_LINK) $(am_libmono_profiler_log_static_la_rpath) $(libmono_profiler_log_static_la_OBJECTS) $(libmono_profiler_log_static_la_LIBADD) $(LIBS)
libmono-profiler-log.la: $(libmono_profiler_log_la_OBJECTS) $(libmono_profiler_log_la_DEPENDENCIES) $(EXTRA_libmono_profiler_log_la_DEPENDENCIES)
$(AM_V_CCLD)$(libmono_profiler_log_la_LINK) $(am_libmono_profiler_log_la_rpath) $(libmono_profiler_log_la_OBJECTS) $(libmono_profiler_log_la_LIBADD) $(LIBS)

View File

@ -1 +1 @@
f72a4476c3a46011d9e92c33d1ed3a6034ee3647
d019b1cf2962cfa266f0b7e6f75396789273ef1c

View File

@ -247,7 +247,7 @@ sgen_card_table_mark_range (mword address, mword size)
SGEN_ASSERT (0, num_cards <= CARD_COUNT_IN_BYTES, "How did we get an object larger than the card table?");
if (end > SGEN_CARDTABLE_END) {
memset (start, 1, SGEN_CARDTABLE_END - start);
memset (sgen_cardtable, 1, end - sgen_cardtable);
memset (sgen_cardtable, 1, end - SGEN_CARDTABLE_END);
return;
}
#endif

View File

@ -1 +1 @@
21fd9dab9e70d3456026645e195f183d4ffb2739
2fc21552caddc04ff91dd8a266149ea98d4f0dc0

View File

@ -182,6 +182,7 @@ BASE_TEST_CS_SRC= \
delegate10.cs \
delegate11.cs \
delegate12.cs \
delegate13.cs \
remoting1.cs \
remoting2.cs \
remoting3.cs \

View File

@ -601,6 +601,7 @@ BASE_TEST_CS_SRC = \
delegate10.cs \
delegate11.cs \
delegate12.cs \
delegate13.cs \
remoting1.cs \
remoting2.cs \
remoting3.cs \

31
mono/tests/delegate13.cs Normal file
View File

@ -0,0 +1,31 @@
using System;
public static class Program
{
public static int Main ()
{
Action d1 = new Action (Method1);
Action d2 = new Action (Method2);
Action d12 = d1 + d2;
Action d21 = d2 + d1;
if (d1.Method.Name != "Method1")
return 1;
if (d2.Method.Name != "Method2")
return 2;
if (d12.Method.Name != "Method2")
return 3;
if (d21.Method.Name != "Method1")
return 4;
return 0;
}
public static void Method1 ()
{
}
public static void Method2 ()
{
}
}

Binary file not shown.

View File

@ -1 +1 @@
3e835f3bc1a499969b1ba8432073eaf96cfe1005
1d929b1ba2d06509548b3aa70c1fb24d06087c0e

Binary file not shown.

View File

@ -1 +1 @@
28b44b354af0dba167d05874ae1a09d29417eda7
a87738a936bb99fc19aec669debef384ab553bdb

Binary file not shown.

View File

@ -1 +1 @@
c6e4de5919e4185763e2cde8f71db3c462da5e53
2d540bc9e9610e2115706b4863b3faf6be94ae02

View File

@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: mono 4.2.1\n"
"Project-Id-Version: mono 4.2.2\n"
"Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n"
"POT-Creation-Date: 2015-12-08 12:30-0500\n"
"POT-Creation-Date: 2015-12-18 19:12-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -1359,8 +1359,8 @@ msgstr ""
msgid "Internal compiler error: {0}"
msgstr ""
#: mcs/mcs/ecore.cs:581 mcs/mcs/expression.cs:1874 mcs/mcs/expression.cs:7940
#: mcs/mcs/expression.cs:7948
#: mcs/mcs/ecore.cs:581 mcs/mcs/expression.cs:1874 mcs/mcs/expression.cs:7943
#: mcs/mcs/expression.cs:7951
msgid "A constant value is expected"
msgstr ""
@ -1978,160 +1978,160 @@ msgstr ""
msgid "Use of unassigned out parameter `{0}'"
msgstr ""
#: mcs/mcs/expression.cs:7119
#: mcs/mcs/expression.cs:7122
#, csharp-format
msgid "Cannot invoke a non-delegate type `{0}'"
msgstr ""
#: mcs/mcs/expression.cs:7130
#: mcs/mcs/expression.cs:7133
#, csharp-format
msgid "The member `{0}' cannot be used as method or delegate"
msgstr ""
#: mcs/mcs/expression.cs:7152
#: mcs/mcs/expression.cs:7155
msgid ""
"Do not directly call your base class Finalize method. It is called "
"automatically from your destructor"
msgstr ""
#: mcs/mcs/expression.cs:7154
#: mcs/mcs/expression.cs:7157
msgid ""
"Destructors and object.Finalize cannot be called directly. Consider calling "
"IDisposable.Dispose if available"
msgstr ""
#: mcs/mcs/expression.cs:7183
#: mcs/mcs/expression.cs:7186
#, csharp-format
msgid ""
"The base call to method `{0}' cannot be dynamically dispatched. Consider "
"casting the dynamic arguments or eliminating the base access"
msgstr ""
#: mcs/mcs/expression.cs:7278
#: mcs/mcs/expression.cs:7281
#, csharp-format
msgid "`{0}': cannot explicitly call operator or accessor"
msgstr ""
#: mcs/mcs/expression.cs:7468
#: mcs/mcs/expression.cs:7471
#, csharp-format
msgid "Unsafe type `{0}' cannot be used in an object creation expression"
msgstr ""
#: mcs/mcs/expression.cs:7491
#: mcs/mcs/expression.cs:7494
#, csharp-format
msgid ""
"Cannot create an instance of the variable type `{0}' because it does not "
"have the new() constraint"
msgstr ""
#: mcs/mcs/expression.cs:7497
#: mcs/mcs/expression.cs:7500
#, csharp-format
msgid ""
"`{0}': cannot provide arguments when creating an instance of a variable type"
msgstr ""
#: mcs/mcs/expression.cs:7506
#: mcs/mcs/expression.cs:7509
#, csharp-format
msgid "Cannot create an instance of the static class `{0}'"
msgstr ""
#: mcs/mcs/expression.cs:7518
#: mcs/mcs/expression.cs:7521
#, csharp-format
msgid "Cannot create an instance of the abstract class or interface `{0}'"
msgstr ""
#: mcs/mcs/expression.cs:7791
#: mcs/mcs/expression.cs:7794
msgid ""
"An implicitly typed local variable declarator cannot use an array initializer"
msgstr ""
#: mcs/mcs/expression.cs:7954 mcs/mcs/expression.cs:7979
#: mcs/mcs/expression.cs:7957 mcs/mcs/expression.cs:7982
#, csharp-format
msgid "An array initializer of length `{0}' was expected"
msgstr ""
#: mcs/mcs/expression.cs:7970
#: mcs/mcs/expression.cs:7973
msgid ""
"Array initializers can only be used in a variable or field initializer. Try "
"using a new expression instead"
msgstr ""
#: mcs/mcs/expression.cs:7987
#: mcs/mcs/expression.cs:7990
msgid "A nested array initializer was expected"
msgstr ""
#: mcs/mcs/expression.cs:8034
#: mcs/mcs/expression.cs:8037
msgid "An expression tree cannot contain a multidimensional array initializer"
msgstr ""
#: mcs/mcs/expression.cs:8070
#: mcs/mcs/expression.cs:8073
msgid "Cannot create an array with a negative size"
msgstr ""
#: mcs/mcs/expression.cs:8162
#: mcs/mcs/expression.cs:8165
msgid ""
"Can only use array initializer expressions to assign to array types. Try "
"using a new expression instead"
msgstr ""
#: mcs/mcs/expression.cs:8586
#: mcs/mcs/expression.cs:8589
msgid ""
"The type of an implicitly typed array cannot be inferred from the "
"initializer. Try specifying array type explicitly"
msgstr ""
#: mcs/mcs/expression.cs:8741
#: mcs/mcs/expression.cs:8744
msgid ""
"The `this' object cannot be used before all of its fields are assigned to"
msgstr ""
#: mcs/mcs/expression.cs:8747
#: mcs/mcs/expression.cs:8750
msgid ""
"Keyword `this' is not valid in a static property, static method, or static "
"field initializer"
msgstr ""
#: mcs/mcs/expression.cs:8750
#: mcs/mcs/expression.cs:8753
msgid ""
"Anonymous methods inside structs cannot access instance members of `this'. "
"Consider copying `this' to a local variable outside the anonymous method and "
"using the local instead"
msgstr ""
#: mcs/mcs/expression.cs:8753
#: mcs/mcs/expression.cs:8756
msgid "Keyword `this' is not available in the current context"
msgstr ""
#: mcs/mcs/expression.cs:8829
#: mcs/mcs/expression.cs:8832
msgid "Cannot take the address of `this' because it is read-only"
msgstr ""
#: mcs/mcs/expression.cs:8831
#: mcs/mcs/expression.cs:8834
msgid "Cannot pass `this' as a ref or out argument because it is read-only"
msgstr ""
#: mcs/mcs/expression.cs:8833
#: mcs/mcs/expression.cs:8836
msgid "Cannot assign to `this' because it is read-only"
msgstr ""
#: mcs/mcs/expression.cs:8901
#: mcs/mcs/expression.cs:8904
msgid "The __arglist construct is valid only within a variable argument method"
msgstr ""
#: mcs/mcs/expression.cs:8962
#: mcs/mcs/expression.cs:8965
msgid "An expression tree cannot contain a method with variable arguments"
msgstr ""
#: mcs/mcs/expression.cs:9236
#: mcs/mcs/expression.cs:9239
msgid "The typeof operator cannot be used on the dynamic type"
msgstr ""
#: mcs/mcs/expression.cs:9277
#: mcs/mcs/expression.cs:9280
#, csharp-format
msgid "`{0}': an attribute argument cannot use type parameters"
msgstr ""
#: mcs/mcs/expression.cs:9492
#: mcs/mcs/expression.cs:9495
#, csharp-format
msgid ""
"`{0}' does not have a predefined size, therefore sizeof can only be used in "
@ -2139,154 +2139,154 @@ msgid ""
"SizeOf)"
msgstr ""
#: mcs/mcs/expression.cs:9557
#: mcs/mcs/expression.cs:9560
#, csharp-format
msgid "Alias `{0}' not found"
msgstr ""
#: mcs/mcs/expression.cs:9598
#: mcs/mcs/expression.cs:9601
msgid ""
"The namespace alias qualifier `::' cannot be used to invoke a method. "
"Consider using `.' instead"
msgstr ""
#: mcs/mcs/expression.cs:9688
#: mcs/mcs/expression.cs:9691
msgid "Cannot perform member binding on `null' value"
msgstr ""
#: mcs/mcs/expression.cs:9850
#: mcs/mcs/expression.cs:9853
#, csharp-format
msgid ""
"`{0}': cannot reference a type through an expression. Consider using `{1}' "
"instead"
msgstr ""
#: mcs/mcs/expression.cs:9929
#: mcs/mcs/expression.cs:9932
#, csharp-format
msgid "A nested type cannot be specified through a type parameter `{0}'"
msgstr ""
#: mcs/mcs/expression.cs:9937
#: mcs/mcs/expression.cs:9940
#, csharp-format
msgid ""
"Alias `{0}' cannot be used with `::' since it denotes a type. Consider "
"replacing `::' with `.'"
msgstr ""
#: mcs/mcs/expression.cs:10006
#: mcs/mcs/expression.cs:10009
#, csharp-format
msgid "The nested type `{0}' does not exist in the type `{1}'"
msgstr ""
#: mcs/mcs/expression.cs:10030
#: mcs/mcs/expression.cs:10033
#, csharp-format
msgid ""
"Type `{0}' does not contain a definition for `{1}' and no extension method "
"`{1}' of type `{0}' could be found. Are you missing {2}?"
msgstr ""
#: mcs/mcs/expression.cs:10322
#: mcs/mcs/expression.cs:10325
#, csharp-format
msgid "Cannot apply indexing with [] to an expression of type `{0}'"
msgstr ""
#: mcs/mcs/expression.cs:10459
#: mcs/mcs/expression.cs:10462
#, csharp-format
msgid "Wrong number of indexes `{0}' inside [], expected `{1}'"
msgstr ""
#: mcs/mcs/expression.cs:10899
#: mcs/mcs/expression.cs:10904
msgid ""
"The indexer base access cannot be dynamically dispatched. Consider casting "
"the dynamic arguments or eliminating the base access"
msgstr ""
#: mcs/mcs/expression.cs:10989
#: mcs/mcs/expression.cs:10994
msgid "An expression tree may not contain a base access"
msgstr ""
#: mcs/mcs/expression.cs:11007
#: mcs/mcs/expression.cs:11012
msgid "Keyword `base' is not available in a static method"
msgstr ""
#: mcs/mcs/expression.cs:11009
#: mcs/mcs/expression.cs:11014
msgid "Keyword `base' is not available in the current context"
msgstr ""
#: mcs/mcs/expression.cs:11047
#: mcs/mcs/expression.cs:11052
msgid ""
"A property, indexer or dynamic member access may not be passed as `ref' or "
"`out' parameter"
msgstr ""
#: mcs/mcs/expression.cs:11392
#: mcs/mcs/expression.cs:11397
#, csharp-format
msgid "Array elements cannot be of type `{0}'"
msgstr ""
#: mcs/mcs/expression.cs:11395
#: mcs/mcs/expression.cs:11400
#, csharp-format
msgid "Array elements cannot be of static type `{0}'"
msgstr ""
#: mcs/mcs/expression.cs:11571
#: mcs/mcs/expression.cs:11576
msgid "Cannot use a negative size with stackalloc"
msgstr ""
#: mcs/mcs/expression.cs:11575
#: mcs/mcs/expression.cs:11580
msgid "Cannot use stackalloc in finally or catch"
msgstr ""
#: mcs/mcs/expression.cs:11735
#: mcs/mcs/expression.cs:11740
#, csharp-format
msgid ""
"Member `{0}' cannot be initialized. An object initializer may only be used "
"for fields, or properties"
msgstr ""
#: mcs/mcs/expression.cs:11743
#: mcs/mcs/expression.cs:11748
#, csharp-format
msgid ""
"Static field or property `{0}' cannot be assigned in an object initializer"
msgstr ""
#: mcs/mcs/expression.cs:11847
#: mcs/mcs/expression.cs:11852
msgid "Expression tree cannot contain a dictionary initializer"
msgstr ""
#: mcs/mcs/expression.cs:11972
#: mcs/mcs/expression.cs:11977
#, csharp-format
msgid ""
"A field or property `{0}' cannot be initialized with a collection object "
"initializer because type `{1}' does not implement `{2}' interface"
msgstr ""
#: mcs/mcs/expression.cs:11983
#: mcs/mcs/expression.cs:11988
#, csharp-format
msgid "Inconsistent `{0}' member declaration"
msgstr ""
#: mcs/mcs/expression.cs:11991
#: mcs/mcs/expression.cs:11996
#, csharp-format
msgid ""
"An object initializer includes more than one member `{0}' initialization"
msgstr ""
#: mcs/mcs/expression.cs:12009
#: mcs/mcs/expression.cs:12014
#, csharp-format
msgid "Cannot initialize object of type `{0}' with a collection initializer"
msgstr ""
#: mcs/mcs/expression.cs:12154
#: mcs/mcs/expression.cs:12159
msgid ""
"Object and collection initializers cannot be used to instantiate a delegate"
msgstr ""
#: mcs/mcs/expression.cs:12362
#: mcs/mcs/expression.cs:12367
msgid "Anonymous types cannot be used in this expression"
msgstr ""
#: mcs/mcs/expression.cs:12456
#: mcs/mcs/expression.cs:12461
#, csharp-format
msgid "An anonymous type property `{0}' cannot be initialized with `{1}'"
msgstr ""

Binary file not shown.

View File

@ -1 +1 @@
64d8a39b13e9397974c8baea2aa9b3cad380c1b4
87b1481e5fb0387bb972cc8ff65492ccec2a8ba3