aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/beam_emu.c
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2010-04-10 17:27:24 +0200
committerRaimo Niskanen <[email protected]>2010-06-03 14:54:20 +0200
commitb937b42d2f98c4e0024418dbbd55ff545bcf65d6 (patch)
tree7de7932e20255f1bf4ecf17ab0128f171083424b /erts/emulator/beam/beam_emu.c
parentcbd1378ee1fde835e55614bac9290b281bafe49a (diff)
downloadotp-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.c16
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;