1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #ifndef AFUN__ENV_H
- #define AFUN__ENV_H
- #include "macro.h"
- #include "__object.h"
- #include "__var.h"
- #include "__bytecode.h"
- #include "env.h"
- #include "__gc.h"
- struct af_Core { // 解释器核心
- // GC基本信息
- af_ObjectData(*gc_ObjectData);
- af_Object(*gc_Object);
- af_Var(*gc_Var);
- af_VarSpace(*gc_VarSpace);
- // 基本量信息
- struct af_Object *global; // 顶级属对象
- struct af_Object *belong; // 顶级继承对象
- // 保护空间
- bool in_init; // 是否在初始化模式
- struct af_VarSpace *protect; // 顶级保护变量空间
- };
- struct af_Activity { // 活动记录器
- struct af_Activity *prev; // 上一个活动记录器
- struct af_ByteCode *bt_start; // 代码的起始位置
- struct af_ByteCode *bt; // 指示代码运行的地方
- struct af_VarSpaceListNode *var_list; // 变量空间
- bool var_free; // 是否需要释放变量空间
- };
- struct af_Environment { // 运行环境
- struct af_Core *core;
- struct af_Activity *activity;
- };
- #endif //AFUN__ENV_H
|