Imported Upstream version 4.4.0.122

Former-commit-id: a99f46acaeba3ab496c7afc02c29b839e30a0d0b
This commit is contained in:
Xamarin Public Jenkins
2016-04-12 13:19:31 -04:00
parent a632333cc7
commit d444f0caa4
118 changed files with 4121 additions and 1632 deletions

View File

@@ -49,10 +49,12 @@
#include <mach-o/dyld.h>
#endif
/* AssemblyVersionMap: an assembly name and the assembly version set on which it is based */
/* AssemblyVersionMap: an assembly name, the assembly version set on which it is based, the assembly name it is replaced with and whether only versions lower than the current runtime version should be remapped */
typedef struct {
const char* assembly_name;
guint8 version_set_index;
const char* new_assembly_name;
gboolean only_lower_versions;
} AssemblyVersionMap;
/* the default search path is empty, the first slot is replaced with the computed value */
@@ -88,8 +90,12 @@ static const AssemblyVersionMap framework_assemblies [] = {
{"I18N.Other", 0},
{"I18N.Rare", 0},
{"I18N.West", 0},
{"Microsoft.Build.Engine", 2},
{"Microsoft.Build.Framework", 2},
{"Microsoft.Build.Engine", 2, NULL, TRUE},
{"Microsoft.Build.Framework", 2, NULL, TRUE},
{"Microsoft.Build.Tasks", 2, "Microsoft.Build.Tasks.v4.0"},
{"Microsoft.Build.Tasks.v3.5", 2, "Microsoft.Build.Tasks.v4.0"},
{"Microsoft.Build.Utilities", 2, "Microsoft.Build.Utilities.v4.0"},
{"Microsoft.Build.Utilities.v3.5", 2, "Microsoft.Build.Utilities.v4.0"},
{"Microsoft.VisualBasic", 1},
{"Microsoft.VisualC", 1},
{"Mono.Cairo", 0},
@@ -1013,6 +1019,9 @@ mono_assembly_remap_version (MonoAssemblyName *aname, MonoAssemblyName *dest_ana
aname->build == vset->build && aname->revision == vset->revision)
return aname;
if (framework_assemblies[pos].only_lower_versions && compare_versions ((AssemblyVersionSet*)vset, aname) < 0)
return aname;
if ((aname->major | aname->minor | aname->build | aname->revision) != 0)
mono_trace (G_LOG_LEVEL_WARNING, MONO_TRACE_ASSEMBLY,
"The request to load the assembly %s v%d.%d.%d.%d was remapped to v%d.%d.%d.%d",
@@ -1026,6 +1035,13 @@ mono_assembly_remap_version (MonoAssemblyName *aname, MonoAssemblyName *dest_ana
dest_aname->minor = vset->minor;
dest_aname->build = vset->build;
dest_aname->revision = vset->revision;
if (framework_assemblies[pos].new_assembly_name != NULL) {
dest_aname->name = framework_assemblies[pos].new_assembly_name;
mono_trace (G_LOG_LEVEL_WARNING, MONO_TRACE_ASSEMBLY,
"The assembly name %s was remapped to %s",
aname->name,
dest_aname->name);
}
return dest_aname;
} else if (res < 0) {
last = pos - 1;
@@ -2546,8 +2562,9 @@ mono_assembly_load_publisher_policy (MonoAssemblyName *aname)
if (strstr (aname->name, ".dll")) {
len = strlen (aname->name) - 4;
name = (gchar *)g_malloc (len);
name = (gchar *)g_malloc (len + 1);
strncpy (name, aname->name, len);
name[len] = 0;
} else
name = g_strdup (aname->name);
@@ -2857,8 +2874,9 @@ mono_assembly_load_from_gac (MonoAssemblyName *aname, gchar *filename, MonoImag
if (strstr (aname->name, ".dll")) {
len = strlen (filename) - 4;
name = (gchar *)g_malloc (len);
name = (gchar *)g_malloc (len + 1);
strncpy (name, aname->name, len);
name[len] = 0;
} else {
name = g_strdup (aname->name);
}

View File

@@ -517,7 +517,6 @@ struct _MonoMethodInflated {
MonoMethod method;
MonoMethodPInvoke pinvoke;
} method;
MonoMethodHeader *header;
MonoMethod *declaring; /* the generic method definition. */
MonoGenericContext context; /* The current instantiation */
MonoImageSet *owner; /* The image set that the inflated method belongs to. */

View File

@@ -935,8 +935,8 @@ mono_cleanup (void)
mono_loader_cleanup ();
mono_classes_cleanup ();
mono_assemblies_cleanup ();
mono_images_cleanup ();
mono_debug_cleanup ();
mono_images_cleanup ();
mono_metadata_cleanup ();
mono_native_tls_free (appdomain_thread_id);

View File

@@ -1 +1 @@
e48934f8d82dd4794e2fc56288e9dd994bc370a8
6f8827dfb84f99f9c320aaf3b0ab5c9ac82e720e

View File

@@ -509,9 +509,19 @@ load_metadata_ptrs (MonoImage *image, MonoCLIImageInfo *iinfo)
i = ((MonoImageLoader*)image->loader)->load_tables (image);
g_assert (image->heap_guid.data);
g_assert (image->heap_guid.size >= 16);
image->guid = mono_guid_to_string ((guint8*)image->heap_guid.data);
if (!image->metadata_only) {
g_assert (image->heap_guid.size >= 16);
image->guid = mono_guid_to_string ((guint8*)image->heap_guid.data);
} else {
/* PPDB files have no guid */
guint8 empty_guid [16];
memset (empty_guid, 0, sizeof (empty_guid));
image->guid = mono_guid_to_string (empty_guid);
}
return i;
}

View File

@@ -873,21 +873,25 @@ mono_inflate_generic_signature (MonoMethodSignature *sig, MonoGenericContext *co
static MonoMethodHeader*
inflate_generic_header (MonoMethodHeader *header, MonoGenericContext *context)
{
MonoMethodHeader *res;
int i;
res = (MonoMethodHeader *)g_malloc0 (MONO_SIZEOF_METHOD_HEADER + sizeof (gpointer) * header->num_locals);
size_t locals_size = sizeof (gpointer) * header->num_locals;
size_t clauses_size = header->num_clauses * sizeof (MonoExceptionClause);
size_t header_size = MONO_SIZEOF_METHOD_HEADER + locals_size + clauses_size;
MonoMethodHeader *res = (MonoMethodHeader *)g_malloc0 (header_size);
res->num_locals = header->num_locals;
res->clauses = (MonoExceptionClause *) &res->locals [res->num_locals] ;
memcpy (res->clauses, header->clauses, clauses_size);
res->code = header->code;
res->code_size = header->code_size;
res->max_stack = header->max_stack;
res->num_clauses = header->num_clauses;
res->init_locals = header->init_locals;
res->num_locals = header->num_locals;
res->clauses = header->clauses;
for (i = 0; i < header->num_locals; ++i)
res->is_transient = TRUE;
for (int i = 0; i < header->num_locals; ++i)
res->locals [i] = mono_class_inflate_generic_type (header->locals [i], context);
if (res->num_clauses) {
res->clauses = (MonoExceptionClause *)g_memdup (header->clauses, sizeof (MonoExceptionClause) * res->num_clauses);
for (i = 0; i < header->num_clauses; ++i) {
for (int i = 0; i < header->num_clauses; ++i) {
MonoExceptionClause *clause = &res->clauses [i];
if (clause->flags != MONO_EXCEPTION_CLAUSE_NONE)
continue;
@@ -2821,20 +2825,7 @@ mono_method_get_header (MonoMethod *method)
iheader = inflate_generic_header (header, mono_method_get_context (method));
mono_metadata_free_mh (header);
mono_image_lock (img);
if (imethod->header) {
mono_metadata_free_mh (iheader);
mono_image_unlock (img);
return imethod->header;
}
mono_memory_barrier ();
imethod->header = iheader;
mono_image_unlock (img);
return imethod->header;
return iheader;
}
if (method->wrapper_type != MONO_WRAPPER_NONE || method->sre_method) {

View File

@@ -1 +1 @@
e50ad0288c968135460f054b7e73e34f5406f363
a4ff3a17390cd25aa67e4084019cd0777669b06d

View File

@@ -239,6 +239,8 @@ bb_split (MonoSimpleBasicBlock *first, MonoSimpleBasicBlock *hint, MonoSimpleBas
{
MonoSimpleBasicBlock *res, *bb = first;
mono_error_init (error);
if (bb_idx_is_contained (hint, target)) {
first = hint;
} else if (hint->next && bb_idx_is_contained (hint->next, target)) {
@@ -335,6 +337,8 @@ bb_formation_il_pass (const unsigned char *start, const unsigned char *end, Mono
MonoSimpleBasicBlock *branch, *next, *current;
const MonoOpcode *opcode;
mono_error_init (error);
current = bb;
while (ip < end) {
@@ -463,6 +467,9 @@ bb_formation_eh_pass (MonoMethodHeader *header, MonoSimpleBasicBlock *bb, MonoSi
{
int i;
int end = header->code_size;
mono_error_init (error);
/*We must split at all points to verify for targets in the middle of an instruction*/
for (i = 0; i < header->num_clauses; ++i) {
MonoExceptionClause *clause = header->clauses + i;
@@ -514,19 +521,13 @@ mono_basic_block_free (MonoSimpleBasicBlock *bb)
* Return the list of basic blocks of method. Return NULL on failure and set @error.
*/
MonoSimpleBasicBlock*
mono_basic_block_split (MonoMethod *method, MonoError *error)
mono_basic_block_split (MonoMethod *method, MonoError *error, MonoMethodHeader *header)
{
MonoSimpleBasicBlock *bb, *root;
const unsigned char *start, *end;
MonoMethodHeader *header = mono_method_get_header (method);
mono_error_init (error);
if (!header) {
mono_error_set_not_verifiable (error, method, "Could not decode header");
return NULL;
}
start = header->code;
end = start + header->code_size;
@@ -551,11 +552,9 @@ mono_basic_block_split (MonoMethod *method, MonoError *error)
dump_bb_list (bb, &root, g_strdup_printf("AFTER LIVENESS %s", mono_method_full_name (method, TRUE)));
#endif
mono_metadata_free_mh (header);
return bb;
fail:
mono_metadata_free_mh (header);
mono_basic_block_free (bb);
return NULL;
}

View File

@@ -19,7 +19,7 @@ struct _MonoSimpleBasicBlock {
};
MonoSimpleBasicBlock*
mono_basic_block_split (MonoMethod *method, MonoError *error);
mono_basic_block_split (MonoMethod *method, MonoError *error, MonoMethodHeader *header);
void
mono_basic_block_free (MonoSimpleBasicBlock *bb);

View File

@@ -285,8 +285,8 @@ dllmap_start (gpointer user_data,
char *result;
result = (char *)g_malloc (libdir_len-strlen("$mono_libdir")+strlen(attribute_values[i])+1);
strncpy (result, attribute_names[i], p-attribute_values[i]);
strcat (result, libdir);
strncpy (result, attribute_values[i], p-attribute_values[i]);
strcpy (result+(p-attribute_values[i]), libdir);
strcat (result, p+strlen("$mono_libdir"));
info->target = result;
} else

View File

@@ -867,7 +867,7 @@ gint64 ves_icall_System_Diagnostics_Process_StartTime_internal (HANDLE process)
gint32 ves_icall_System_Diagnostics_Process_ExitCode_internal (HANDLE process)
{
DWORD code;
DWORD code = 0;
GetExitCodeProcess (process, &code);

View File

@@ -8,6 +8,9 @@
#include <mono/utils/mono-compiler.h>
#include <mono/utils/mono-error.h>
MonoType*
mono_reflection_get_type_checked (MonoImage *rootimage, MonoImage* image, MonoTypeNameParse *info, mono_bool ignorecase, mono_bool *type_resolve);
MonoObject*
mono_custom_attrs_get_attr_checked (MonoCustomAttrInfo *ainfo, MonoClass *attr_klass, MonoError *error);

View File

@@ -1 +1 @@
9765c61de2ebb89a23549f49a6cafb7c0c0ca36d
258308a0a883826613bae9322e5a1463ac1a5a2c

View File

@@ -522,7 +522,7 @@ worker_park (void)
if (interrupted)
goto done;
if (mono_coop_cond_timedwait (&threadpool->parked_threads_cond, &threadpool->active_threads_lock, rand_next ((void **)rand_handle, 5 * 1000, 60 * 1000)) != 0)
if (mono_coop_cond_timedwait (&threadpool->parked_threads_cond, &threadpool->active_threads_lock, rand_next (&rand_handle, 5 * 1000, 60 * 1000)) != 0)
timeout = TRUE;
mono_thread_info_uninstall_interrupt (&interrupted);

View File

@@ -1 +1 @@
e9af9516a1b4652f3e43ca9b3dd254addad43a0f
711107ac5200b078d25785ce5854a2ab4ef20e5e

View File

@@ -801,7 +801,7 @@ EXTRA_DIST = TestDriver.cs \
Makefile.am.in
version.h: Makefile
echo "#define FULL_VERSION \"Stable 4.4.0.40/f8474c4\"" > version.h
echo "#define FULL_VERSION \"Stable 4.4.0.122/a3fabf1\"" > version.h
# Utility target for patching libtool to speed up linking
patch-libtool:

View File

@@ -801,7 +801,7 @@ EXTRA_DIST = TestDriver.cs \
Makefile.am.in
version.h: Makefile
echo "#define FULL_VERSION \"Stable 4.4.0.40/f8474c4\"" > version.h
echo "#define FULL_VERSION \"Stable 4.4.0.122/a3fabf1\"" > version.h
# Utility target for patching libtool to speed up linking
patch-libtool:

View File

@@ -1 +1 @@
feaddf3ea0bb6cd34b061a30d89031f0d11d66ec
c30141f67c9a2e03366c40284ff6f85c7ec12f08

View File

@@ -1 +1 @@
26979427a0ebbb4e979939dad6a0e766cc2b6917
c40ca98ce5a35a78b5c13a82796c7d90c988d66e

View File

@@ -1 +1 @@
26d4d91456e706536c43cb083afe6adde5d651e0
1c829de55ab1a77e98f4eee2f2db9532481d0839

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