aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2019-04-12 10:25:39 +0200
committerBjörn Gustavsson <[email protected]>2019-04-12 10:25:39 +0200
commit2277e30d3dd207a81037d43a7328bbc91552bb76 (patch)
tree747a18948dfa9374e0c79d417fabfd094d7de40b /erts/emulator/beam
parent07be518a33d934837fe9745f0ec9399cc34a367f (diff)
parent7e4c18d1a750f53e16e4b06707722164411bf462 (diff)
downloadotp-2277e30d3dd207a81037d43a7328bbc91552bb76.tar.gz
otp-2277e30d3dd207a81037d43a7328bbc91552bb76.tar.bz2
otp-2277e30d3dd207a81037d43a7328bbc91552bb76.zip
Merge branch 'bjorn/erts/measure-process_main/OTP-15620'
* bjorn/erts/measure-process_main/OTP-15620: Add benchmark Add erts_debug:interpreter_size/0
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r--erts/emulator/beam/beam_debug.c16
-rw-r--r--erts/emulator/beam/bif.tab1
2 files changed, 17 insertions, 0 deletions
diff --git a/erts/emulator/beam/beam_debug.c b/erts/emulator/beam/beam_debug.c
index 762c5da9be..4d52435139 100644
--- a/erts/emulator/beam/beam_debug.c
+++ b/erts/emulator/beam/beam_debug.c
@@ -353,6 +353,22 @@ erts_debug_disassemble_1(BIF_ALIST_1)
return TUPLE3(hp, addr, bin, mfa);
}
+BIF_RETTYPE
+erts_debug_interpreter_size_0(BIF_ALIST_0)
+{
+ int i;
+ BeamInstr low, high;
+
+ low = high = (BeamInstr) process_main;
+ for (i = 0; i < NUM_SPECIFIC_OPS; i++) {
+ BeamInstr a = BeamOpCodeAddr(i);
+ if (a > high) {
+ high = a;
+ }
+ }
+ return erts_make_integer(high - low, BIF_P);
+}
+
void
dbg_bt(Process* p, Eterm* sp)
{
diff --git a/erts/emulator/beam/bif.tab b/erts/emulator/beam/bif.tab
index 34a0be4f2d..db9c258cb7 100644
--- a/erts/emulator/beam/bif.tab
+++ b/erts/emulator/beam/bif.tab
@@ -437,6 +437,7 @@ bif erts_debug:set_internal_state/2
bif erts_debug:display/1
bif erts_debug:dist_ext_to_term/2
bif erts_debug:instructions/0
+bif erts_debug:interpreter_size/0
bif erts_debug:dirty_cpu/2
bif erts_debug:dirty_io/2
bif erts_debug:dirty/3