diff options
| author | John Högberg <john@erlang.org> | 2021-04-16 08:51:50 +0200 |
|---|---|---|
| committer | Björn Gustavsson <bjorn@erlang.org> | 2021-05-24 13:24:42 +0200 |
| commit | e65733cd637e91d8bb38edb66aa0bddb148eb355 (patch) | |
| tree | da6b654873d9bce2825c6f69effbac16a33f3e15 /erts/emulator/beam/jit/x86/instr_trace.cpp | |
| parent | 02c561271d5e64f0bff4b75b83af7d6a3d5cf93b (diff) | |
| download | erlang-e65733cd637e91d8bb38edb66aa0bddb148eb355.tar.gz | |
jit: Break out architecture-agnostic parts to prepare for ARM JIT
Diffstat (limited to 'erts/emulator/beam/jit/x86/instr_trace.cpp')
| -rw-r--r-- | erts/emulator/beam/jit/x86/instr_trace.cpp | 31 |
1 files changed, 1 insertions, 30 deletions
diff --git a/erts/emulator/beam/jit/x86/instr_trace.cpp b/erts/emulator/beam/jit/x86/instr_trace.cpp index f04f3493a8..f464152be9 100644 --- a/erts/emulator/beam/jit/x86/instr_trace.cpp +++ b/erts/emulator/beam/jit/x86/instr_trace.cpp @@ -199,46 +199,17 @@ void BeamModuleAssembler::emit_i_return_time_trace() { emit_return(); } -static void i_return_to_trace(Process *c_p) { - if (IS_TRACED_FL(c_p, F_TRACE_RETURN_TO)) { - ErtsCodePtr return_to_address; - Uint *cpp; - - cpp = (Uint *)c_p->stop; - ASSERT(is_CP(cpp[0])); - - for (;;) { - erts_inspect_frame(cpp, &return_to_address); - - if (BeamIsReturnTrace(return_to_address)) { - cpp += CP_SIZE + 2; - } else if (BeamIsReturnTimeTrace(return_to_address)) { - cpp += CP_SIZE + 1; - } else if (BeamIsReturnToTrace(return_to_address)) { - cpp += CP_SIZE; - } else { - break; - } - } - - ERTS_UNREQ_PROC_MAIN_LOCK(c_p); - erts_trace_return_to(c_p, return_to_address); - ERTS_REQ_PROC_MAIN_LOCK(c_p); - } -} - void BeamModuleAssembler::emit_i_return_to_trace() { emit_enter_runtime<Update::eStack | Update::eHeap>(); a.mov(ARG1, c_p); - runtime_call<1>(i_return_to_trace); + runtime_call<1>(beam_jit_return_to_trace); emit_leave_runtime<Update::eStack | Update::eHeap>(); /* Remove the zero-sized stack frame. (Will actually do nothing if * the native stack is used.) */ emit_deallocate(ArgVal(ArgVal::u, 0)); - emit_return(); } |
