summaryrefslogtreecommitdiff
path: root/py/emitglue.h
diff options
context:
space:
mode:
authorMilan Rossa <rossa.milan@gmail.com>2019-08-14 16:09:36 +0200
committerDamien George <damien.p.george@gmail.com>2019-08-30 16:44:12 +1000
commit310b3d1b81d561e19d719acd89ee47b759e3795c (patch)
tree18beb2d50b30dd525fc57efd43a7e705e777fade /py/emitglue.h
parentc96aedad4691d864c073890a7a20abc7ebd2de27 (diff)
py: Integrate sys.settrace feature into the VM and runtime.
This commit adds support for sys.settrace, allowing to install Python handlers to trace execution of Python code. The interface follows CPython as closely as possible. The feature is disabled by default and can be enabled via MICROPY_PY_SYS_SETTRACE.
Diffstat (limited to 'py/emitglue.h')
-rw-r--r--py/emitglue.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/py/emitglue.h b/py/emitglue.h
index b67d49ed6..a5411dc2e 100644
--- a/py/emitglue.h
+++ b/py/emitglue.h
@@ -27,6 +27,7 @@
#define MICROPY_INCLUDED_PY_EMITGLUE_H
#include "py/obj.h"
+#include "py/bc.h"
// These variables and functions glue the code emitters to the runtime.
@@ -63,6 +64,14 @@ typedef struct _mp_raw_code_t {
size_t fun_data_len;
uint16_t n_obj;
uint16_t n_raw_code;
+ #if MICROPY_PY_SYS_SETTRACE
+ mp_bytecode_prelude_t prelude;
+ // line_of_definition is a Python source line where the raw_code was
+ // created e.g. MP_BC_MAKE_FUNCTION. This is different from lineno info
+ // stored in prelude, which provides line number for first statement of
+ // a function. Required to properly implement "call" trace event.
+ mp_uint_t line_of_definition;
+ #endif
#if MICROPY_EMIT_MACHINE_CODE
uint16_t prelude_offset;
uint16_t n_qstr;