1
0

gc.hpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. #ifndef AFUN_GC
  2. #define AFUN_GC
  3. #include "aFunCoreExport.h"
  4. #include "object.hpp"
  5. #include "var.hpp"
  6. typedef uint32_t GcCount;
  7. typedef struct af_GcList af_GcList;
  8. enum af_GcListType {
  9. glt_obj = 1,
  10. glt_vs,
  11. glt_var,
  12. glt_vsl,
  13. };
  14. /* GcList 创建与释放 */
  15. AFUN_CORE_EXPORT af_GcList *makeGcList(enum af_GcListType type, void *data);
  16. AFUN_CORE_EXPORT void freeAllGcList(af_GcList *gl);
  17. /* GcList 相关操作 */
  18. AFUN_CORE_EXPORT af_GcList *pushGcList(enum af_GcListType type, void *data, af_GcList *base);
  19. /* gc Reference 相关操作 */
  20. AFUN_CORE_EXPORT void gc_addObjectReference(af_Object *obj, af_Environment *base);
  21. AFUN_CORE_EXPORT void gc_addVarReference(af_Var *obj, af_Environment *base);
  22. AFUN_CORE_EXPORT void gc_addVarSpaceReference(af_VarSpace *obj, af_Environment *base);
  23. AFUN_CORE_EXPORT void gc_delObjectReference(af_Object *obj, af_Environment *base);
  24. AFUN_CORE_EXPORT void gc_delVarReference(af_Var *obj, af_Environment *base);
  25. AFUN_CORE_EXPORT void gc_delVarSpaceReference(af_VarSpace *obj, af_Environment *base);
  26. AFUN_CORE_EXPORT void gc_delVarListReference(af_VarList *vsl, af_Environment *base);
  27. /* gc 操控函数 : gc的启动由解释器完全管理 */
  28. AFUN_CORE_EXPORT af_GuardianList *gc_RunGC(af_Environment *env);
  29. #endif //AFUN_GC