diff options
author | Björn-Egil Dahlberg <[email protected]> | 2010-04-10 17:27:24 +0200 |
---|---|---|
committer | Raimo Niskanen <[email protected]> | 2010-06-03 14:54:20 +0200 |
commit | b937b42d2f98c4e0024418dbbd55ff545bcf65d6 (patch) | |
tree | 7de7932e20255f1bf4ecf17ab0128f171083424b /erts/emulator/beam/beam_emu.c | |
parent | cbd1378ee1fde835e55614bac9290b281bafe49a (diff) | |
download | otp-b937b42d2f98c4e0024418dbbd55ff545bcf65d6.tar.gz otp-b937b42d2f98c4e0024418dbbd55ff545bcf65d6.tar.bz2 otp-b937b42d2f98c4e0024418dbbd55ff545bcf65d6.zip |
Call time breakpoint tracing framework
Initial commit with a new breakpoint instruction and PSD areas
for temporary time storage during tracing.
Diffstat (limited to 'erts/emulator/beam/beam_emu.c')
-rw-r--r-- | erts/emulator/beam/beam_emu.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c index d42e74ccc9..145ae48590 100644 --- a/erts/emulator/beam/beam_emu.c +++ b/erts/emulator/beam/beam_emu.c @@ -4408,6 +4408,22 @@ apply_bif_or_nif_epilogue: Goto(real_I); } + OpCase(i_time_breakpoint): { + BeamInstr real_I; + BpDataTime *bdt = (BpDataTime *) (I)[-4]; + + ASSERT((I)[-5] == (Uint) BeamOp(op_i_func_info_IaaI)); + ASSERT(bdt); + bdt = (BpDataTime *) bdt->next; + ASSERT(bdt); + (I)[-4] = (Uint) bdt; + real_I = bdt->orig_instr; + erts_do_time_break(c_p, bdt); + + ASSERT(VALID_INSTR(real_I)); + Goto(real_I); + } + OpCase(i_trace_breakpoint): if (! IS_TRACED_FL(c_p, F_TRACE_CALLS)) { BeamInstr real_I; |