blueloveTH 2 лет назад
Родитель
Сommit
c66f8e02e6
2 измененных файлов с 12 добавлено и 0 удалено
  1. 10 0
      src/codeobject.h
  2. 2 0
      src/vm.h

+ 10 - 0
src/codeobject.h

@@ -78,6 +78,16 @@ struct CodeObjectSerializer{
         buffer += END;
     }
 
+    void write_none(){
+        buffer += 'N';
+        buffer += END;
+    }
+
+    void write_ellipsis(){
+        buffer += 'E';
+        buffer += END;
+    }
+
     void write_bool(bool v){
         buffer += 'b';
         buffer += v ? '1' : '0';

+ 2 - 0
src/vm.h

@@ -1569,6 +1569,8 @@ inline void CodeObjectSerializer::write_object(VM *vm, PyObject *obj){
     else if(is_float(obj)) write_float(_CAST(f64, obj));
     else if(is_type(obj, vm->tp_str)) write_str(_CAST(Str&, obj));
     else if(is_type(obj, vm->tp_bool)) write_bool(_CAST(bool, obj));
+    else if(obj == vm->None) write_none();
+    else if(obj == vm->Ellipsis) write_ellipsis();
     else{
         throw std::runtime_error(fmt(OBJ_NAME(vm->_t(obj)).escape(), " is not serializable"));
     }