From 14749457ff716cebd043b4e41aad622f9ac89586 Mon Sep 17 00:00:00 2001 From: Alhad Deshpande Date: Wed, 19 Oct 2022 06:29:54 +0000 Subject: [PATCH] Fixed FSharp crash issue --- src/mono/mono/mini/mini-ppc.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/runtime/src/mono/mono/mini/mini-ppc.c b/src/runtime/src/mono/mono/mini/mini-ppc.c index bc97b497af93a..3df60c6a925f6 100644 --- a/src/runtime/src/mono/mono/mini/mini-ppc.c +++ b/src/runtime/src/mono/mono/mini/mini-ppc.c @@ -3782,23 +3782,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) ppc_addis (code, ppc_r12, cfg->frame_reg, ppc_ha(cfg->stack_usage)); ppc_addi (code, ppc_r12, ppc_r12, cfg->stack_usage); } - if (!cfg->method->save_lmf) { - pos = 0; - for (i = 31; i >= 13; --i) { - if (cfg->used_int_regs & (1 << i)) { - pos += sizeof (target_mgreg_t); - ppc_ldptr (code, i, -pos, ppc_r12); - } - } - } else { - /* FIXME restore from MonoLMF: though this can't happen yet */ - } /* Copy arguments on the stack to our argument area */ if (call->stack_usage) { code = emit_memcpy (code, call->stack_usage, ppc_r12, PPC_STACK_PARAM_OFFSET, ppc_sp, PPC_STACK_PARAM_OFFSET); /* r12 was clobbered */ - g_assert (cfg->frame_reg == ppc_sp); if (ppc_is_imm16 (cfg->stack_usage)) { ppc_addi (code, ppc_r12, cfg->frame_reg, cfg->stack_usage); } else { @@ -3809,6 +3797,18 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) } } + if (!cfg->method->save_lmf) { + pos = 0; + for (i = 31; i >= 13; --i) { + if (cfg->used_int_regs & (1 << i)) { + pos += sizeof (target_mgreg_t); + ppc_ldptr (code, i, -pos, ppc_r12); + } + } + } else { + /* FIXME restore from MonoLMF: though this can't happen yet */ + } + ppc_mr (code, ppc_sp, ppc_r12); mono_add_patch_info (cfg, (guint8*) code - cfg->native_code, MONO_PATCH_INFO_METHOD_JUMP, call->method); cfg->thunk_area += THUNK_SIZE;