From 9e13e726069faf6836bdf9f605906132b5e5c7b6 Mon Sep 17 00:00:00 2001 From: "Xamarin Public Jenkins (auto-signing)" Date: Fri, 27 Apr 2018 08:59:58 +0000 Subject: [PATCH] Imported Upstream version 5.12.0.223 Former-commit-id: c3840b30a5998a62e5368c8f88eef1601a6fc491 --- configure.REMOVED.git-id | 2 +- configure.ac.REMOVED.git-id | 2 +- mcs/build/common/Consts.cs | 2 +- .../Mono.Security.dll.REMOVED.git-id | 2 +- .../System.Configuration.dll.REMOVED.git-id | 2 +- .../System.Numerics.dll.REMOVED.git-id | 2 +- .../System.Security.dll.REMOVED.git-id | 2 +- .../1051200002/System.Xml.dll.REMOVED.git-id | 2 +- .../1051200002/mcs.exe.REMOVED.git-id | 2 +- .../1051200002/mscorlib.dll.REMOVED.git-id | 2 +- .../Mono.Security.dll.REMOVED.git-id | 2 +- .../System.Configuration.dll.REMOVED.git-id | 2 +- .../System.Numerics.dll.REMOVED.git-id | 2 +- .../System.Security.dll.REMOVED.git-id | 2 +- .../1051200002/System.Xml.dll.REMOVED.git-id | 2 +- .../1051200002/mcs.exe.REMOVED.git-id | 2 +- .../1051200002/mscorlib.dll.REMOVED.git-id | 2 +- .../Mono.Security.dll.REMOVED.git-id | 2 +- .../System.Configuration.dll.REMOVED.git-id | 2 +- .../System.Numerics.dll.REMOVED.git-id | 2 +- .../System.Security.dll.REMOVED.git-id | 2 +- .../1051200002/System.Xml.dll.REMOVED.git-id | 2 +- .../1051200002/mcs.exe.REMOVED.git-id | 2 +- .../1051200002/mscorlib.dll.REMOVED.git-id | 2 +- mono/metadata/marshal.h | 3 +- mono/metadata/object-offsets.h | 3 + mono/mini/aot-compiler.c.REMOVED.git-id | 2 +- mono/mini/aot-runtime.c.REMOVED.git-id | 2 +- mono/mini/ee.h | 4 +- mono/mini/exceptions-arm64.c | 6 +- mono/mini/interp/interp.c.REMOVED.git-id | 2 +- mono/mini/mini-amd64.c.REMOVED.git-id | 2 +- mono/mini/mini-arm.c.REMOVED.git-id | 2 +- mono/mini/mini-arm.h | 2 + mono/mini/mini-arm64.c.REMOVED.git-id | 2 +- mono/mini/mini-arm64.h | 1 + mono/mini/mini-exceptions.c | 10 +- .../mini-generic-sharing.c.REMOVED.git-id | 2 +- mono/mini/mini-runtime.c.REMOVED.git-id | 2 +- mono/mini/mini-trampolines.c | 20 +++ mono/mini/mini.h.REMOVED.git-id | 2 +- mono/mini/tramp-arm.c | 117 ++++++++++++++++++ mono/mini/tramp-arm64.c | 84 +++++++++++++ mono/mini/version.h | 2 +- po/mcs/de.gmo | Bin 5406 -> 5406 bytes po/mcs/de.po.REMOVED.git-id | 2 +- po/mcs/es.gmo | Bin 16329 -> 16329 bytes po/mcs/es.po.REMOVED.git-id | 2 +- po/mcs/ja.gmo | Bin 20863 -> 20863 bytes po/mcs/ja.po.REMOVED.git-id | 2 +- po/mcs/mcs.pot | 4 +- po/mcs/pt_BR.gmo | Bin 72806 -> 72806 bytes po/mcs/pt_BR.po.REMOVED.git-id | 2 +- 53 files changed, 284 insertions(+), 46 deletions(-) diff --git a/configure.REMOVED.git-id b/configure.REMOVED.git-id index a00b2c2f88..2368dda29b 100644 --- a/configure.REMOVED.git-id +++ b/configure.REMOVED.git-id @@ -1 +1 @@ -9544823d03e71dc9059564b8c7fbe8be9483d0bc \ No newline at end of file +18fbfd8270e70f42071ea2077a1d057e42223842 \ No newline at end of file diff --git a/configure.ac.REMOVED.git-id b/configure.ac.REMOVED.git-id index a191e99788..f70981946d 100644 --- a/configure.ac.REMOVED.git-id +++ b/configure.ac.REMOVED.git-id @@ -1 +1 @@ -28f60a5aa88f85c58ecdc32445f6a814f3a5fdbc \ No newline at end of file +d5bcc43ef87c733105d69a5bcde120c81608f89f \ No newline at end of file diff --git a/mcs/build/common/Consts.cs b/mcs/build/common/Consts.cs index 32c0cece1c..f4650c95ff 100644 --- a/mcs/build/common/Consts.cs +++ b/mcs/build/common/Consts.cs @@ -34,7 +34,7 @@ static class Consts // Use these assembly version constants to make code more maintainable. // - public const string MonoVersion = "5.12.0.222"; + public const string MonoVersion = "5.12.0.223"; public const string MonoCompany = "Mono development team"; public const string MonoProduct = "Mono Common Language Infrastructure"; public const string MonoCopyright = "(c) Various Mono authors"; diff --git a/mcs/class/lib/monolite-darwin/1051200002/Mono.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051200002/Mono.Security.dll.REMOVED.git-id index 6ff409243e..9fcd1946d8 100644 --- a/mcs/class/lib/monolite-darwin/1051200002/Mono.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051200002/Mono.Security.dll.REMOVED.git-id @@ -1 +1 @@ -d28b6c3703a58531f125c423c27f8adbde573af9 \ No newline at end of file +27fd453a8a108d8d59359580a637bd58c05565e9 \ No newline at end of file diff --git a/mcs/class/lib/monolite-darwin/1051200002/System.Configuration.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051200002/System.Configuration.dll.REMOVED.git-id index cb54aad879..884ccb00ac 100644 --- a/mcs/class/lib/monolite-darwin/1051200002/System.Configuration.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051200002/System.Configuration.dll.REMOVED.git-id @@ -1 +1 @@ -3604c375f47486e552da59ed4a25284180b314e6 \ No newline at end of file +2ef294e45a4cf7f14ae9063fa2ba18d20196dd5e \ No newline at end of file diff --git a/mcs/class/lib/monolite-darwin/1051200002/System.Numerics.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051200002/System.Numerics.dll.REMOVED.git-id index 22479011db..1afb13b44a 100644 --- a/mcs/class/lib/monolite-darwin/1051200002/System.Numerics.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051200002/System.Numerics.dll.REMOVED.git-id @@ -1 +1 @@ -58d245d451489dbeea28505fea734a77300d3616 \ No newline at end of file +80e0eec30e4bf790b0b02079dd2ad3124400ab89 \ No newline at end of file diff --git a/mcs/class/lib/monolite-darwin/1051200002/System.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051200002/System.Security.dll.REMOVED.git-id index b7895cc9bd..ad8ec82231 100644 --- a/mcs/class/lib/monolite-darwin/1051200002/System.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051200002/System.Security.dll.REMOVED.git-id @@ -1 +1 @@ -4c6742c18b8578b8206b12de108cc6a6e225a4ec \ No newline at end of file +95e13d525c52bcd65bd86f6c66f306e4bfff7285 \ No newline at end of file diff --git a/mcs/class/lib/monolite-darwin/1051200002/System.Xml.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051200002/System.Xml.dll.REMOVED.git-id index 0f14d12a99..99dae1f04e 100644 --- a/mcs/class/lib/monolite-darwin/1051200002/System.Xml.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051200002/System.Xml.dll.REMOVED.git-id @@ -1 +1 @@ -dd3b73736ed3fae602f5f62d52f593ca267d37e8 \ No newline at end of file +d8e876168b44d4dc88a526a69165ef7e3b519740 \ No newline at end of file diff --git a/mcs/class/lib/monolite-darwin/1051200002/mcs.exe.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051200002/mcs.exe.REMOVED.git-id index acd8885cff..f644f3537a 100644 --- a/mcs/class/lib/monolite-darwin/1051200002/mcs.exe.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051200002/mcs.exe.REMOVED.git-id @@ -1 +1 @@ -06506c4a96a36fa5f17807f9c4d9047bc2fa413f \ No newline at end of file +45c7d8d59688f506db9d16ea9a1b854604d1ed6c \ No newline at end of file diff --git a/mcs/class/lib/monolite-darwin/1051200002/mscorlib.dll.REMOVED.git-id b/mcs/class/lib/monolite-darwin/1051200002/mscorlib.dll.REMOVED.git-id index c797dcaf09..645f61ed88 100644 --- a/mcs/class/lib/monolite-darwin/1051200002/mscorlib.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-darwin/1051200002/mscorlib.dll.REMOVED.git-id @@ -1 +1 @@ -4ead486d5a9c37a72b0a4e192ba811c507c551f5 \ No newline at end of file +f93e3dea1100aa00ec51aa2eb95a392c9be120e3 \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051200002/Mono.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051200002/Mono.Security.dll.REMOVED.git-id index 6ff409243e..9fcd1946d8 100644 --- a/mcs/class/lib/monolite-linux/1051200002/Mono.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051200002/Mono.Security.dll.REMOVED.git-id @@ -1 +1 @@ -d28b6c3703a58531f125c423c27f8adbde573af9 \ No newline at end of file +27fd453a8a108d8d59359580a637bd58c05565e9 \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051200002/System.Configuration.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051200002/System.Configuration.dll.REMOVED.git-id index cb54aad879..884ccb00ac 100644 --- a/mcs/class/lib/monolite-linux/1051200002/System.Configuration.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051200002/System.Configuration.dll.REMOVED.git-id @@ -1 +1 @@ -3604c375f47486e552da59ed4a25284180b314e6 \ No newline at end of file +2ef294e45a4cf7f14ae9063fa2ba18d20196dd5e \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051200002/System.Numerics.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051200002/System.Numerics.dll.REMOVED.git-id index 22479011db..1afb13b44a 100644 --- a/mcs/class/lib/monolite-linux/1051200002/System.Numerics.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051200002/System.Numerics.dll.REMOVED.git-id @@ -1 +1 @@ -58d245d451489dbeea28505fea734a77300d3616 \ No newline at end of file +80e0eec30e4bf790b0b02079dd2ad3124400ab89 \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051200002/System.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051200002/System.Security.dll.REMOVED.git-id index b7895cc9bd..ad8ec82231 100644 --- a/mcs/class/lib/monolite-linux/1051200002/System.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051200002/System.Security.dll.REMOVED.git-id @@ -1 +1 @@ -4c6742c18b8578b8206b12de108cc6a6e225a4ec \ No newline at end of file +95e13d525c52bcd65bd86f6c66f306e4bfff7285 \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051200002/System.Xml.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051200002/System.Xml.dll.REMOVED.git-id index 0f14d12a99..99dae1f04e 100644 --- a/mcs/class/lib/monolite-linux/1051200002/System.Xml.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051200002/System.Xml.dll.REMOVED.git-id @@ -1 +1 @@ -dd3b73736ed3fae602f5f62d52f593ca267d37e8 \ No newline at end of file +d8e876168b44d4dc88a526a69165ef7e3b519740 \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051200002/mcs.exe.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051200002/mcs.exe.REMOVED.git-id index acd8885cff..f644f3537a 100644 --- a/mcs/class/lib/monolite-linux/1051200002/mcs.exe.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051200002/mcs.exe.REMOVED.git-id @@ -1 +1 @@ -06506c4a96a36fa5f17807f9c4d9047bc2fa413f \ No newline at end of file +45c7d8d59688f506db9d16ea9a1b854604d1ed6c \ No newline at end of file diff --git a/mcs/class/lib/monolite-linux/1051200002/mscorlib.dll.REMOVED.git-id b/mcs/class/lib/monolite-linux/1051200002/mscorlib.dll.REMOVED.git-id index c797dcaf09..645f61ed88 100644 --- a/mcs/class/lib/monolite-linux/1051200002/mscorlib.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-linux/1051200002/mscorlib.dll.REMOVED.git-id @@ -1 +1 @@ -4ead486d5a9c37a72b0a4e192ba811c507c551f5 \ No newline at end of file +f93e3dea1100aa00ec51aa2eb95a392c9be120e3 \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051200002/Mono.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051200002/Mono.Security.dll.REMOVED.git-id index 6ff409243e..9fcd1946d8 100644 --- a/mcs/class/lib/monolite-win32/1051200002/Mono.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051200002/Mono.Security.dll.REMOVED.git-id @@ -1 +1 @@ -d28b6c3703a58531f125c423c27f8adbde573af9 \ No newline at end of file +27fd453a8a108d8d59359580a637bd58c05565e9 \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051200002/System.Configuration.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051200002/System.Configuration.dll.REMOVED.git-id index cb54aad879..884ccb00ac 100644 --- a/mcs/class/lib/monolite-win32/1051200002/System.Configuration.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051200002/System.Configuration.dll.REMOVED.git-id @@ -1 +1 @@ -3604c375f47486e552da59ed4a25284180b314e6 \ No newline at end of file +2ef294e45a4cf7f14ae9063fa2ba18d20196dd5e \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051200002/System.Numerics.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051200002/System.Numerics.dll.REMOVED.git-id index 22479011db..1afb13b44a 100644 --- a/mcs/class/lib/monolite-win32/1051200002/System.Numerics.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051200002/System.Numerics.dll.REMOVED.git-id @@ -1 +1 @@ -58d245d451489dbeea28505fea734a77300d3616 \ No newline at end of file +80e0eec30e4bf790b0b02079dd2ad3124400ab89 \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051200002/System.Security.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051200002/System.Security.dll.REMOVED.git-id index b7895cc9bd..ad8ec82231 100644 --- a/mcs/class/lib/monolite-win32/1051200002/System.Security.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051200002/System.Security.dll.REMOVED.git-id @@ -1 +1 @@ -4c6742c18b8578b8206b12de108cc6a6e225a4ec \ No newline at end of file +95e13d525c52bcd65bd86f6c66f306e4bfff7285 \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051200002/System.Xml.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051200002/System.Xml.dll.REMOVED.git-id index 0f14d12a99..99dae1f04e 100644 --- a/mcs/class/lib/monolite-win32/1051200002/System.Xml.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051200002/System.Xml.dll.REMOVED.git-id @@ -1 +1 @@ -dd3b73736ed3fae602f5f62d52f593ca267d37e8 \ No newline at end of file +d8e876168b44d4dc88a526a69165ef7e3b519740 \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051200002/mcs.exe.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051200002/mcs.exe.REMOVED.git-id index acd8885cff..f644f3537a 100644 --- a/mcs/class/lib/monolite-win32/1051200002/mcs.exe.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051200002/mcs.exe.REMOVED.git-id @@ -1 +1 @@ -06506c4a96a36fa5f17807f9c4d9047bc2fa413f \ No newline at end of file +45c7d8d59688f506db9d16ea9a1b854604d1ed6c \ No newline at end of file diff --git a/mcs/class/lib/monolite-win32/1051200002/mscorlib.dll.REMOVED.git-id b/mcs/class/lib/monolite-win32/1051200002/mscorlib.dll.REMOVED.git-id index c797dcaf09..645f61ed88 100644 --- a/mcs/class/lib/monolite-win32/1051200002/mscorlib.dll.REMOVED.git-id +++ b/mcs/class/lib/monolite-win32/1051200002/mscorlib.dll.REMOVED.git-id @@ -1 +1 @@ -4ead486d5a9c37a72b0a4e192ba811c507c551f5 \ No newline at end of file +f93e3dea1100aa00ec51aa2eb95a392c9be120e3 \ No newline at end of file diff --git a/mono/metadata/marshal.h b/mono/metadata/marshal.h index 56b9ba5663..9981ec9f2e 100644 --- a/mono/metadata/marshal.h +++ b/mono/metadata/marshal.h @@ -121,7 +121,8 @@ typedef enum { /* Subtypes of MONO_WRAPPER_UNKNOWN */ WRAPPER_SUBTYPE_GSHAREDVT_IN_SIG, WRAPPER_SUBTYPE_GSHAREDVT_OUT_SIG, - WRAPPER_SUBTYPE_INTERP_IN + WRAPPER_SUBTYPE_INTERP_IN, + WRAPPER_SUBTYPE_INTERP_LMF } WrapperSubtype; typedef struct { diff --git a/mono/metadata/object-offsets.h b/mono/metadata/object-offsets.h index 79520e6f4a..72d0a0ded6 100644 --- a/mono/metadata/object-offsets.h +++ b/mono/metadata/object-offsets.h @@ -286,6 +286,9 @@ DECL_OFFSET(CallContext, stack_size) DECL_OFFSET(CallContext, stack) #endif +DECL_OFFSET(MonoFtnDesc, arg) +DECL_OFFSET(MonoFtnDesc, addr) + #endif //DISABLE_JIT_OFFSETS #endif //USED_CROSS_COMPILER_OFFSETS diff --git a/mono/mini/aot-compiler.c.REMOVED.git-id b/mono/mini/aot-compiler.c.REMOVED.git-id index 8f7fdeb43f..17138aa7b7 100644 --- a/mono/mini/aot-compiler.c.REMOVED.git-id +++ b/mono/mini/aot-compiler.c.REMOVED.git-id @@ -1 +1 @@ -0a964f9d46c0c1c78cb33cad45bd7be6f537dd4f \ No newline at end of file +dc6ccdd9e32db46edaceb26fd359a8890e0a4244 \ No newline at end of file diff --git a/mono/mini/aot-runtime.c.REMOVED.git-id b/mono/mini/aot-runtime.c.REMOVED.git-id index 8c4d1bc98e..abc4652099 100644 --- a/mono/mini/aot-runtime.c.REMOVED.git-id +++ b/mono/mini/aot-runtime.c.REMOVED.git-id @@ -1 +1 @@ -3897ff261c812f0c8b906c55bc59b56b9cd568db \ No newline at end of file +50774d9173c34a2729f12201de0a24fba264f540 \ No newline at end of file diff --git a/mono/mini/ee.h b/mono/mini/ee.h index fd1f30a718..c65ea5a28d 100644 --- a/mono/mini/ee.h +++ b/mono/mini/ee.h @@ -15,7 +15,7 @@ #ifndef __MONO_EE_H__ #define __MONO_EE_H__ -#define MONO_EE_API_VERSION 0x1 +#define MONO_EE_API_VERSION 0x3 typedef struct _MonoInterpStackIter MonoInterpStackIter; @@ -27,6 +27,7 @@ struct _MonoInterpStackIter { typedef gpointer MonoInterpFrameHandle; struct _MonoEECallbacks { + void (*entry_from_trampoline) (gpointer ccontext, gpointer imethod); gpointer (*create_method_pointer) (MonoMethod *method, MonoError *error); MonoObject* (*runtime_invoke) (MonoMethod *method, void *obj, void **params, MonoObject **exc, MonoError *error); void (*init_delegate) (MonoDelegate *del); @@ -49,6 +50,7 @@ struct _MonoEECallbacks { void (*frame_arg_to_data) (MonoInterpFrameHandle frame, MonoMethodSignature *sig, int index, gpointer data); void (*data_to_frame_arg) (MonoInterpFrameHandle frame, MonoMethodSignature *sig, int index, gpointer data); gpointer (*frame_arg_to_storage) (MonoInterpFrameHandle frame, MonoMethodSignature *sig, int index); + void (*frame_arg_set_storage) (MonoInterpFrameHandle frame, MonoMethodSignature *sig, int index, gpointer storage); MonoInterpFrameHandle (*frame_get_parent) (MonoInterpFrameHandle frame); void (*start_single_stepping) (void); void (*stop_single_stepping) (void); diff --git a/mono/mini/exceptions-arm64.c b/mono/mini/exceptions-arm64.c index 26769714e8..0e4a5ee0f4 100644 --- a/mono/mini/exceptions-arm64.c +++ b/mono/mini/exceptions-arm64.c @@ -458,7 +458,11 @@ mono_arch_unwind_frame (MonoDomain *domain, MonoJitTlsData *jit_tls, guint32 unwind_info_len; guint8 *unwind_info; - frame->type = FRAME_TYPE_MANAGED; + + if (ji->is_trampoline) + frame->type = FRAME_TYPE_TRAMPOLINE; + else + frame->type = FRAME_TYPE_MANAGED; unwind_info = mono_jinfo_get_unwind_info (ji, &unwind_info_len); diff --git a/mono/mini/interp/interp.c.REMOVED.git-id b/mono/mini/interp/interp.c.REMOVED.git-id index e53d658545..04843bb65f 100644 --- a/mono/mini/interp/interp.c.REMOVED.git-id +++ b/mono/mini/interp/interp.c.REMOVED.git-id @@ -1 +1 @@ -cff128861e5b755a79ec07d1bce5fce43e427dad \ No newline at end of file +fc3b9aec0bea8849c001f3ef08f468f0f22b5485 \ No newline at end of file diff --git a/mono/mini/mini-amd64.c.REMOVED.git-id b/mono/mini/mini-amd64.c.REMOVED.git-id index 5c853f7e99..240cd6c56b 100644 --- a/mono/mini/mini-amd64.c.REMOVED.git-id +++ b/mono/mini/mini-amd64.c.REMOVED.git-id @@ -1 +1 @@ -91e1e78fbac343ad581d1761878b8f403ce84f1f \ No newline at end of file +293b7302145f5887e3be21fe4157f186f6c0bdc0 \ No newline at end of file diff --git a/mono/mini/mini-arm.c.REMOVED.git-id b/mono/mini/mini-arm.c.REMOVED.git-id index f02e194a2a..15753f661e 100644 --- a/mono/mini/mini-arm.c.REMOVED.git-id +++ b/mono/mini/mini-arm.c.REMOVED.git-id @@ -1 +1 @@ -06e56484c1395a31e102aecbc301bfcb3f2ab7d2 \ No newline at end of file +c4f30bb0b37fd257d5b466807cf1c977d6c0af40 \ No newline at end of file diff --git a/mono/mini/mini-arm.h b/mono/mini/mini-arm.h index 2211bbe1a3..0ab0aa4a5c 100644 --- a/mono/mini/mini-arm.h +++ b/mono/mini/mini-arm.h @@ -361,6 +361,8 @@ typedef struct MonoCompileArch { #define MONO_ARCH_HAVE_PATCH_CODE_NEW 1 #define MONO_ARCH_HAVE_OP_GENERIC_CLASS_INIT 1 +#define MONO_ARCH_HAVE_INTERP_ENTRY_TRAMPOLINE 1 +#define MONO_ARCH_HAVE_FTNPTR_ARG_TRAMPOLINE 1 #define MONO_ARCH_HAVE_INTERP_PINVOKE_TRAMP 1 #if defined(TARGET_WATCHOS) || (defined(__linux__) && !defined(TARGET_ANDROID)) diff --git a/mono/mini/mini-arm64.c.REMOVED.git-id b/mono/mini/mini-arm64.c.REMOVED.git-id index b49529ece8..ee1804b80b 100644 --- a/mono/mini/mini-arm64.c.REMOVED.git-id +++ b/mono/mini/mini-arm64.c.REMOVED.git-id @@ -1 +1 @@ -a83e686bbdd60f7d511d5e1db1d4b014dafb1957 \ No newline at end of file +c075fc0459f19d3168cab466518d1d12b02717cf \ No newline at end of file diff --git a/mono/mini/mini-arm64.h b/mono/mini/mini-arm64.h index e2c7dc9537..108fcd3160 100644 --- a/mono/mini/mini-arm64.h +++ b/mono/mini/mini-arm64.h @@ -134,6 +134,7 @@ typedef struct { #define MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX 1 #define MONO_ARCH_HAVE_CONTEXT_SET_INT_REG 1 #define MONO_ARCH_GSHARED_SUPPORTED 1 +#define MONO_ARCH_HAVE_INTERP_ENTRY_TRAMPOLINE 1 #define MONO_ARCH_AOT_SUPPORTED 1 #define MONO_ARCH_LLVM_SUPPORTED 1 #define MONO_ARCH_HAVE_FULL_AOT_TRAMPOLINES 1 diff --git a/mono/mini/mini-exceptions.c b/mono/mini/mini-exceptions.c index ce160ba71c..31e2b55b78 100644 --- a/mono/mini/mini-exceptions.c +++ b/mono/mini/mini-exceptions.c @@ -593,7 +593,7 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, if (prev_ji && (ip > prev_ji->code_start && ((guint8*)ip < ((guint8*)prev_ji->code_start) + prev_ji->code_size))) ji = prev_ji; else - ji = mini_jit_info_table_find (domain, (char *)ip, &target_domain); + ji = mini_jit_info_table_find_ext (domain, (char *)ip, TRUE, &target_domain); if (!target_domain) target_domain = domain; @@ -1189,7 +1189,10 @@ mono_walk_stack_full (MonoJitStackWalk func, MonoContext *start_ctx, MonoDomain if (!res) return; - if ((unwind_options & MONO_UNWIND_LOOKUP_IL_OFFSET) && frame.ji && !frame.ji->is_trampoline) { + if (frame.type == FRAME_TYPE_TRAMPOLINE) + goto next; + + if ((unwind_options & MONO_UNWIND_LOOKUP_IL_OFFSET) && frame.ji) { MonoDebugSourceLocation *source; source = mono_debug_lookup_source_location (jinfo_get_method (frame.ji), frame.native_offset, domain); @@ -1208,7 +1211,7 @@ mono_walk_stack_full (MonoJitStackWalk func, MonoContext *start_ctx, MonoDomain frame.il_offset = il_offset; - if ((unwind_options & MONO_UNWIND_LOOKUP_ACTUAL_METHOD) && frame.ji && !frame.ji->is_trampoline) { + if ((unwind_options & MONO_UNWIND_LOOKUP_ACTUAL_METHOD) && frame.ji) { frame.actual_method = get_method_from_stack_frame (frame.ji, get_generic_info_from_stack_frame (frame.ji, &ctx)); } else { frame.actual_method = frame.method; @@ -1220,6 +1223,7 @@ mono_walk_stack_full (MonoJitStackWalk func, MonoContext *start_ctx, MonoDomain if (func (&frame, &ctx, user_data)) return; +next: if (get_reg_locations) { for (i = 0; i < MONO_MAX_IREGS; ++i) if (new_reg_locations [i]) diff --git a/mono/mini/mini-generic-sharing.c.REMOVED.git-id b/mono/mini/mini-generic-sharing.c.REMOVED.git-id index 57564f35c3..df65dbf035 100644 --- a/mono/mini/mini-generic-sharing.c.REMOVED.git-id +++ b/mono/mini/mini-generic-sharing.c.REMOVED.git-id @@ -1 +1 @@ -dff97edefd1576fbe199e3e8370bd0420aff5353 \ No newline at end of file +72a502a095b99e5181288df5a5d9989a45882158 \ No newline at end of file diff --git a/mono/mini/mini-runtime.c.REMOVED.git-id b/mono/mini/mini-runtime.c.REMOVED.git-id index 620db05d50..27e825b982 100644 --- a/mono/mini/mini-runtime.c.REMOVED.git-id +++ b/mono/mini/mini-runtime.c.REMOVED.git-id @@ -1 +1 @@ -bf3d8b37974e590dfaa3878724c9ff2a8945448b \ No newline at end of file +30473fec52330026da763214017ba02e9686702a \ No newline at end of file diff --git a/mono/mini/mini-trampolines.c b/mono/mini/mini-trampolines.c index b4e31d35ba..63ec68c1c8 100644 --- a/mono/mini/mini-trampolines.c +++ b/mono/mini/mini-trampolines.c @@ -141,6 +141,7 @@ mono_create_static_rgctx_trampoline (MonoMethod *m, gpointer addr) return res; } + #else gpointer mono_create_static_rgctx_trampoline (MonoMethod *m, gpointer addr) @@ -153,6 +154,25 @@ mono_create_static_rgctx_trampoline (MonoMethod *m, gpointer addr) } #endif +gpointer +mono_create_ftnptr_arg_trampoline (gpointer arg, gpointer addr) +{ + gpointer res; +#ifdef MONO_ARCH_HAVE_FTNPTR_ARG_TRAMPOLINE + if (mono_aot_only) + g_error ("FIXME"); + else + res = mono_arch_get_ftnptr_arg_trampoline (arg, addr); +#else + if (mono_aot_only) + res = mono_aot_get_static_rgctx_trampoline (arg, addr); + else + res = mono_arch_get_static_rgctx_trampoline (arg, addr); +#endif + + return res; +} + #if 0 #define DEBUG_IMT(stmt) do { stmt; } while (0) #else diff --git a/mono/mini/mini.h.REMOVED.git-id b/mono/mini/mini.h.REMOVED.git-id index cc7077744a..37248205c7 100644 --- a/mono/mini/mini.h.REMOVED.git-id +++ b/mono/mini/mini.h.REMOVED.git-id @@ -1 +1 @@ -042034c359ca78e6a61e590e4c9456e78cb4a5bb \ No newline at end of file +c9ef3d396433f9c5e079412d64ad4a673e61f988 \ No newline at end of file diff --git a/mono/mini/tramp-arm.c b/mono/mini/tramp-arm.c index 7884f08767..a49c7ffa44 100644 --- a/mono/mini/tramp-arm.c +++ b/mono/mini/tramp-arm.c @@ -579,6 +579,36 @@ mono_arch_get_static_rgctx_trampoline (gpointer arg, gpointer addr) return start; } +/* Same as static rgctx trampoline, but clobbering ARMREG_IP, which is scratch */ +gpointer +mono_arch_get_ftnptr_arg_trampoline (gpointer arg, gpointer addr) +{ + guint8 *code, *start; + GSList *unwind_ops; + int buf_len = 16; + MonoDomain *domain = mono_domain_get (); + + start = code = mono_domain_code_reserve (domain, buf_len); + + unwind_ops = mono_arch_get_cie_program (); + + ARM_LDR_IMM (code, ARMREG_IP, ARMREG_PC, 0); + ARM_LDR_IMM (code, ARMREG_PC, ARMREG_PC, 0); + *(guint32*)code = (guint32)arg; + code += 4; + *(guint32*)code = (guint32)addr; + code += 4; + + g_assert ((code - start) <= buf_len); + + mono_arch_flush_icache (start, code - start); + MONO_PROFILER_RAISE (jit_code_buffer, (start, code - start, MONO_PROFILER_CODE_BUFFER_GENERICS_TRAMPOLINE, NULL)); + + mono_tramp_info_register (mono_tramp_info_create (NULL, start, code - start, NULL, unwind_ops), domain); + + return start; +} + gpointer mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info, gboolean aot) { @@ -920,6 +950,79 @@ mono_arch_get_interp_to_native_trampoline (MonoTrampInfo **info) #endif /* DISABLE_INTERPRETER */ } +gpointer +mono_arch_get_native_to_interp_trampoline (MonoTrampInfo **info) +{ +#ifndef DISABLE_INTERPRETER + guint8 *start = NULL, *code; + MonoJumpInfo *ji = NULL; + GSList *unwind_ops = NULL; + int buf_len, i; + const int fp_reg = ARMREG_R7; + int framesize; + + buf_len = 512; + start = code = (guint8 *) mono_global_codeman_reserve (buf_len); + + unwind_ops = mono_arch_get_cie_program (); + + /* iOS ABI */ + ARM_PUSH (code, (1 << fp_reg) | (1 << ARMREG_LR)); + mono_add_unwind_op_def_cfa_offset (unwind_ops, code, start, 2 * sizeof (mgreg_t)); + mono_add_unwind_op_offset (unwind_ops, code, start, ARMREG_LR, -4); + mono_add_unwind_op_offset (unwind_ops, code, start, fp_reg, -8); + + ARM_MOV_REG_REG (code, fp_reg, ARMREG_SP); + mono_add_unwind_op_def_cfa_reg (unwind_ops, code, start, fp_reg); + + /* allocate the CallContext on the stack */ + framesize = ALIGN_TO (sizeof (CallContext), MONO_ARCH_FRAME_ALIGNMENT); + ARM_SUB_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, framesize); + + /* save all general purpose registers into the CallContext */ + for (i = 0; i < PARAM_REGS; i++) + ARM_STR_IMM (code, i, ARMREG_SP, MONO_STRUCT_OFFSET (CallContext, gregs) + i * sizeof (mgreg_t)); + + /* save all floating registers into the CallContext */ + for (i = 0; i < FP_PARAM_REGS; i++) + ARM_FSTD (code, i * 2, ARMREG_SP, MONO_STRUCT_OFFSET (CallContext, fregs) + i * sizeof (double)); + + /* set the stack pointer to the value at call site */ + ARM_ADD_REG_IMM8 (code, ARMREG_R0, fp_reg, 2 * sizeof (mgreg_t)); + ARM_STR_IMM (code, ARMREG_R0, ARMREG_SP, MONO_STRUCT_OFFSET (CallContext, stack)); + + /* call interp_entry with the ccontext and rmethod as arguments */ + ARM_MOV_REG_REG (code, ARMREG_R0, ARMREG_SP); + ARM_LDR_IMM (code, ARMREG_R1, ARMREG_IP, MONO_STRUCT_OFFSET (MonoFtnDesc, arg)); + ARM_LDR_IMM (code, ARMREG_IP, ARMREG_IP, MONO_STRUCT_OFFSET (MonoFtnDesc, addr)); + ARM_BLX_REG (code, ARMREG_IP); + + /* load the return values from the context */ + for (i = 0; i < PARAM_REGS; i++) + ARM_LDR_IMM (code, i, ARMREG_SP, MONO_STRUCT_OFFSET (CallContext, gregs) + i * sizeof (mgreg_t)); + + for (i = 0; i < FP_PARAM_REGS; i++) + ARM_FLDD (code, i * 2, ARMREG_SP, MONO_STRUCT_OFFSET (CallContext, fregs) + i * sizeof (double)); + + /* reset stack and return */ + ARM_MOV_REG_REG (code, ARMREG_SP, fp_reg); + ARM_POP (code, (1 << fp_reg) | (1 << ARMREG_PC)); + + g_assert (code - start < buf_len); + + mono_arch_flush_icache (start, code - start); + MONO_PROFILER_RAISE (jit_code_buffer, (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL)); + + if (info) + *info = mono_tramp_info_create ("native_to_interp_trampoline", start, code - start, ji, unwind_ops); + + return start; +#else + g_assert_not_reached (); + return NULL; +#endif /* DISABLE_INTERPRETER */ +} + #else guchar* @@ -950,6 +1053,13 @@ mono_arch_get_static_rgctx_trampoline (gpointer arg, gpointer addr) return NULL; } +gpointer +mono_arch_get_ftnptr_arg_trampoline (gpointer arg, gpointer addr) +{ + g_assert_not_reached (); + return NULL; +} + gpointer mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info, gboolean aot) { @@ -970,6 +1080,13 @@ mono_arch_get_interp_to_native_trampoline (MonoTrampInfo **info) g_assert_not_reached (); return NULL; } + +gpointer +mono_arch_get_native_to_interp_trampoline (MonoTrampInfo **info) +{ + g_assert_not_reached (); + return NULL; +} #endif /* DISABLE_JIT */ guint8* diff --git a/mono/mini/tramp-arm64.c b/mono/mini/tramp-arm64.c index b7edddaad3..7a58d99bfc 100644 --- a/mono/mini/tramp-arm64.c +++ b/mono/mini/tramp-arm64.c @@ -721,6 +721,82 @@ mono_arch_get_interp_to_native_trampoline (MonoTrampInfo **info) #endif /* DISABLE_INTERPRETER */ } +gpointer +mono_arch_get_native_to_interp_trampoline (MonoTrampInfo **info) +{ +#ifndef DISABLE_INTERPRETER + guint8 *start = NULL, *code; + MonoJumpInfo *ji = NULL; + GSList *unwind_ops = NULL; + int buf_len, i; + int framesize, offset, ccontext_offset; + + buf_len = 512; + start = code = (guint8 *) mono_global_codeman_reserve (buf_len); + + /* Allocate frame (FP + LR + CallContext) */ + offset = 2 * sizeof (mgreg_t); + ccontext_offset = offset; + offset += sizeof (CallContext); + framesize = ALIGN_TO (offset, MONO_ARCH_FRAME_ALIGNMENT); + + mono_add_unwind_op_def_cfa (unwind_ops, code, start, ARMREG_SP, 0); + + arm_subx_imm (code, ARMREG_SP, ARMREG_SP, framesize); + mono_add_unwind_op_def_cfa_offset (unwind_ops, code, start, framesize); + + arm_stpx (code, ARMREG_FP, ARMREG_LR, ARMREG_SP, 0); + mono_add_unwind_op_offset (unwind_ops, code, start, ARMREG_LR, -framesize + 8); + mono_add_unwind_op_offset (unwind_ops, code, start, ARMREG_FP, -framesize); + + arm_movspx (code, ARMREG_FP, ARMREG_SP); + mono_add_unwind_op_def_cfa_reg (unwind_ops, code, start, ARMREG_FP); + + /* save all general purpose registers into the CallContext */ + for (i = 0; i < PARAM_REGS + 1; i++) + arm_strx (code, i, ARMREG_FP, ccontext_offset + MONO_STRUCT_OFFSET (CallContext, gregs) + i * sizeof (mgreg_t)); + + /* save all floating registers into the CallContext */ + for (i = 0; i < FP_PARAM_REGS; i++) + arm_strfpx (code, i, ARMREG_FP, ccontext_offset + MONO_STRUCT_OFFSET (CallContext, fregs) + i * sizeof (double)); + + /* set the stack pointer to the value at call site */ + arm_addx_imm (code, ARMREG_R0, ARMREG_FP, framesize); + arm_strx (code, ARMREG_R0, ARMREG_FP, ccontext_offset + MONO_STRUCT_OFFSET (CallContext, stack)); + + /* call interp_entry with the ccontext and rmethod as arguments */ + arm_addx_imm (code, ARMREG_R0, ARMREG_FP, ccontext_offset); + arm_ldrx (code, ARMREG_R1, MONO_ARCH_RGCTX_REG, MONO_STRUCT_OFFSET (MonoFtnDesc, arg)); + arm_ldrx (code, ARMREG_IP0, MONO_ARCH_RGCTX_REG, MONO_STRUCT_OFFSET (MonoFtnDesc, addr)); + arm_blrx (code, ARMREG_IP0); + + /* load the return values from the context */ + for (i = 0; i < PARAM_REGS; i++) + arm_ldrx (code, i, ARMREG_FP, ccontext_offset + MONO_STRUCT_OFFSET (CallContext, gregs) + i * sizeof (mgreg_t)); + + for (i = 0; i < FP_PARAM_REGS; i++) + arm_ldrfpx (code, i, ARMREG_FP, ccontext_offset + MONO_STRUCT_OFFSET (CallContext, fregs) + i * sizeof (double)); + + /* reset stack and return */ + arm_ldpx (code, ARMREG_FP, ARMREG_LR, ARMREG_SP, 0); + arm_addx_imm (code, ARMREG_SP, ARMREG_SP, framesize); + arm_retx (code, ARMREG_LR); + + g_assert (code - start < buf_len); + + mono_arch_flush_icache (start, code - start); + MONO_PROFILER_RAISE (jit_code_buffer, (start, code - start, MONO_PROFILER_CODE_BUFFER_EXCEPTION_HANDLING, NULL)); + + if (info) + *info = mono_tramp_info_create ("native_to_interp_trampoline", start, code - start, ji, unwind_ops); + + return start; +#else + g_assert_not_reached (); + return NULL; +#endif /* DISABLE_INTERPRETER */ +} + #else /* DISABLE_JIT */ guchar* @@ -778,4 +854,12 @@ mono_arch_get_interp_to_native_trampoline (MonoTrampInfo **info) g_assert_not_reached (); return NULL; } + +gpointer +mono_arch_get_native_to_interp_trampoline (MonoTrampInfo **info) +{ + g_assert_not_reached (); + return NULL; +} + #endif /* !DISABLE_JIT */ diff --git a/mono/mini/version.h b/mono/mini/version.h index b32b4213aa..f6eb724b9c 100644 --- a/mono/mini/version.h +++ b/mono/mini/version.h @@ -1 +1 @@ -#define FULL_VERSION "explicit/9150941" +#define FULL_VERSION "explicit/a022829" diff --git a/po/mcs/de.gmo b/po/mcs/de.gmo index 51bc516ed0882090fb455efe3aee9e6d4ed1a0b1..54a5552a40d330ba3d3b368748d4badc55a8d6cf 100644 GIT binary patch delta 20 bcmbQIHBW29Q!aLM1p^B!W8=+lxQw^}O0Wid delta 20 bcmbQIHBW29Q!aK>1p^B!LzB&KxQw^}N{|M4 diff --git a/po/mcs/de.po.REMOVED.git-id b/po/mcs/de.po.REMOVED.git-id index 17d9e5b16e..2fa50f15fa 100644 --- a/po/mcs/de.po.REMOVED.git-id +++ b/po/mcs/de.po.REMOVED.git-id @@ -1 +1 @@ -900d8c124b72c4dd30803a8afb8e9a2a48614bd9 \ No newline at end of file +568b60d27dfeed69de4e54005d0ab9bdb52630ee \ No newline at end of file diff --git a/po/mcs/es.gmo b/po/mcs/es.gmo index ba957431c62af200dbe33223ae59e06b304f03f1..fff04610b5510846032bf1af94e381215438b8c8 100644 GIT binary patch delta 20 bcmX?Ef3kjqo+7)sf`NsVvGHb8#VK+CQP2jl delta 20 bcmX?Ef3kjqo+7)cf`NsVp~+@b#VK+CQLqNC diff --git a/po/mcs/es.po.REMOVED.git-id b/po/mcs/es.po.REMOVED.git-id index 0591a0b12b..d4436a13bf 100644 --- a/po/mcs/es.po.REMOVED.git-id +++ b/po/mcs/es.po.REMOVED.git-id @@ -1 +1 @@ -f7c2bb79bc946f6d4bd686ff44fe7ffe32e8dbf0 \ No newline at end of file +7754ee7e80a58b21e676fdc99f60ff5d0fcbd1c8 \ No newline at end of file diff --git a/po/mcs/ja.gmo b/po/mcs/ja.gmo index a637b0aa843928af4635c13bbf30e7f5802a4467..6b950d452a73907e84aaec3ee59bbe5d664b470f 100644 GIT binary patch delta 22 dcmeyri1Gg-#tj_m?B)sv7FNc_oB7oXv;biu2MquK delta 22 dcmeyri1Gg-#tj_m?4}9^7FLEPoB7oXv;biO2MPcH diff --git a/po/mcs/ja.po.REMOVED.git-id b/po/mcs/ja.po.REMOVED.git-id index cbf586c90a..d150714e15 100644 --- a/po/mcs/ja.po.REMOVED.git-id +++ b/po/mcs/ja.po.REMOVED.git-id @@ -1 +1 @@ -3245f7d49da55416c78d07f12d0b2ea70ced3b23 \ No newline at end of file +76a6261ab5625732b3876fd8a766a0108a561f4d \ No newline at end of file diff --git a/po/mcs/mcs.pot b/po/mcs/mcs.pot index def601d6f7..9aad68a8e6 100644 --- a/po/mcs/mcs.pot +++ b/po/mcs/mcs.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: mono 5.12.0.222\n" +"Project-Id-Version: mono 5.12.0.223\n" "Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n" -"POT-Creation-Date: 2018-04-25 08:14+0000\n" +"POT-Creation-Date: 2018-04-27 08:33+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/po/mcs/pt_BR.gmo b/po/mcs/pt_BR.gmo index 5adb90067031d0cac29dcc2ffccdc7e88d640a41..6d7560648b33c848101670d906a14dce016dd02a 100644 GIT binary patch delta 22 ecmaF1gXP%{mJM-J+07LUEUb);H>XZzYzF{t83=;_ delta 22 ecmaF1gXP%{mJM-J*-aG;EUXMoHm6QyYzF{s`3Qgj diff --git a/po/mcs/pt_BR.po.REMOVED.git-id b/po/mcs/pt_BR.po.REMOVED.git-id index 1ec3b0e974..64597e77bb 100644 --- a/po/mcs/pt_BR.po.REMOVED.git-id +++ b/po/mcs/pt_BR.po.REMOVED.git-id @@ -1 +1 @@ -58e85a4d934ff61d18241e3ecdebf3df6f88e9ba \ No newline at end of file +828a9fb8b9ca87d2b0bfa5228bad5c307559595d \ No newline at end of file