From 9b83117c876f285ffc08a6888fbbf2503daad205 Mon Sep 17 00:00:00 2001 From: Vlad Brezae Date: Tue, 2 Aug 2022 23:02:12 +0300 Subject: [PATCH 1/2] [mono][interp] Improve check for tiering enabled --- src/mono/mono/mini/interp/interp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/mono/mini/interp/interp.c b/src/mono/mono/mini/interp/interp.c index 0504d5e4234596..fc7e4927784304 100644 --- a/src/mono/mono/mini/interp/interp.c +++ b/src/mono/mono/mini/interp/interp.c @@ -479,7 +479,7 @@ mono_interp_get_imethod (MonoMethod *method) imethod->code_type = IMETHOD_CODE_UNKNOWN; // always optimize code if tiering is disabled // always optimize wrappers - if (!(mono_interp_opt & INTERP_OPT_TIERING) || method->wrapper_type != MONO_WRAPPER_NONE) + if (!mono_interp_tiering_enabled () || method->wrapper_type != MONO_WRAPPER_NONE) imethod->optimized = TRUE; if (imethod->method->string_ctor) imethod->rtype = m_class_get_byval_arg (mono_defaults.string_class); From 84b10d71ab778f45d4642a1add9dd1f6ad754668 Mon Sep 17 00:00:00 2001 From: Vlad Brezae Date: Tue, 2 Aug 2022 23:03:18 +0300 Subject: [PATCH 2/2] [mono][interp] Make sure containing klass has field offsets initialized --- src/mono/mono/mini/interp/transform.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mono/mono/mini/interp/transform.c b/src/mono/mono/mini/interp/transform.c index e1ca942b7ed324..4ebc7f02c1b21c 100644 --- a/src/mono/mono/mini/interp/transform.c +++ b/src/mono/mono/mini/interp/transform.c @@ -5900,6 +5900,7 @@ generate_code (TransformData *td, MonoMethod *method, MonoMethodHeader *header, MonoType *ftype = mono_field_get_type_internal (field); gboolean is_static = !!(ftype->attrs & FIELD_ATTRIBUTE_STATIC); mono_class_init_internal (klass); + mono_class_setup_fields (klass); { if (is_static) { td->sp--; @@ -5939,6 +5940,7 @@ generate_code (TransformData *td, MonoMethod *method, MonoMethodHeader *header, MonoType *ftype = mono_field_get_type_internal (field); gboolean is_static = !!(ftype->attrs & FIELD_ATTRIBUTE_STATIC); mono_class_init_internal (klass); + mono_class_setup_fields (klass); MonoClass *field_klass = mono_class_from_mono_type_internal (ftype); mt = mint_type (ftype); @@ -6014,6 +6016,7 @@ generate_code (TransformData *td, MonoMethod *method, MonoMethodHeader *header, gboolean is_static = !!(ftype->attrs & FIELD_ATTRIBUTE_STATIC); MonoClass *field_klass = mono_class_from_mono_type_internal (ftype); mono_class_init_internal (klass); + mono_class_setup_fields (klass); mt = mint_type (ftype); BARRIER_IF_VOLATILE (td, MONO_MEMORY_BARRIER_REL);