Sfoglia il codice sorgente

add `bool reset` to settrace

blueloveTH 9 mesi fa
parent
commit
6708c85f57
3 ha cambiato i file con 4 aggiunte e 3 eliminazioni
  1. 1 1
      include/pocketpy/pocketpy.h
  2. 2 1
      src/interpreter/ceval.c
  3. 1 1
      src2/main.c

+ 1 - 1
include/pocketpy/pocketpy.h

@@ -107,7 +107,7 @@ PK_API void py_setvmctx(void* ctx);
 /// Set `sys.argv`. Used for storing command-line arguments.
 PK_API void py_sys_setargv(int argc, char** argv);
 /// Set the trace function for the current VM.
-PK_API void py_sys_settrace(py_TraceFunc func);
+PK_API void py_sys_settrace(py_TraceFunc func, bool reset);
 /// Setup the callbacks for the current VM.
 PK_API py_Callbacks* py_callbacks();
 

+ 2 - 1
src/interpreter/ceval.c

@@ -1454,9 +1454,10 @@ static bool stack_format_object(VM* self, c11_sv spec) {
 #undef INSERT_THIRD
 #undef vectorcall_opcall
 
-void py_sys_settrace(py_TraceFunc func) {
+void py_sys_settrace(py_TraceFunc func, bool reset) {
     TraceInfo* info = &pk_current_vm->trace_info;
     info->func = func;
+    if(!reset) return;
     if(info->prev_loc.src) {
         PK_DECREF(info->prev_loc.src);
         info->prev_loc.src = NULL;

+ 1 - 1
src2/main.c

@@ -95,7 +95,7 @@ int main(int argc, char** argv) {
     py_initialize();
     py_sys_setargv(argc, argv);
 
-    if(trace) py_sys_settrace(tracefunc);
+    if(trace) py_sys_settrace(tracefunc, true);
 
     if(filename == NULL) {
         printf("pocketpy " PK_VERSION " (" __DATE__ ", " __TIME__ ") ");