diff --git a/src/ceval.cpp b/src/ceval.cpp index 221982dd..6b6bc10b 100644 --- a/src/ceval.cpp +++ b/src/ceval.cpp @@ -147,7 +147,6 @@ __NEXT_STEP:; PUSH(_0); } DISPATCH(); TARGET(LOAD_NAME) { - if(heap._should_auto_collect()) heap._auto_collect(); StrName _name(byte.arg); PyObject** slot = frame->_locals.try_get_name(_name); if(slot != nullptr) { diff --git a/src/vm.cpp b/src/vm.cpp index e1519c79..25d41190 100644 --- a/src/vm.cpp +++ b/src/vm.cpp @@ -1196,11 +1196,11 @@ void ManagedHeap::mark() { for(PyObject* obj: _no_gc) PK_OBJ_MARK(obj); for(auto& frame : vm->callstack.data()) frame._gc_mark(); for(PyObject* obj: vm->s_data) PK_OBJ_MARK(obj); - if(_gc_marker_ex) _gc_marker_ex(vm); + for(auto [_, co]: vm->_cached_codes) co->_gc_mark(); if(vm->_last_exception) PK_OBJ_MARK(vm->_last_exception); if(vm->_curr_class) PK_OBJ_MARK(vm->_curr_class); if(vm->_c.error != nullptr) PK_OBJ_MARK(vm->_c.error); - for(auto [_, co]: vm->_cached_codes) co->_gc_mark(); + if(_gc_marker_ex) _gc_marker_ex(vm); } StrName obj_type_name(VM *vm, Type type){