codeobject.cpp 767 B

1234567891011121314151617181920212223
  1. #include "pocketpy/codeobject.h"
  2. namespace pkpy{
  3. CodeObject::CodeObject(std::shared_ptr<SourceData> src, const Str& name):
  4. src(src), name(name), start_line(-1), end_line(-1) {
  5. blocks.push_back(CodeBlock(CodeBlockType::NO_BLOCK, -1, 0, 0));
  6. }
  7. void CodeObject::_gc_mark() const {
  8. for(PyObject* v : consts) PK_OBJ_MARK(v);
  9. for(auto& decl: func_decls) decl->_gc_mark();
  10. }
  11. struct PySignalObject: PyObject {
  12. PySignalObject() : PyObject(Type(0)) { gc_enabled = false; }
  13. void _obj_gc_mark() override {}
  14. };
  15. PyObject* const PY_NULL = new PySignalObject();
  16. PyObject* const PY_OP_CALL = new PySignalObject();
  17. PyObject* const PY_OP_YIELD = new PySignalObject();
  18. } // namespace pkpy