Add bytecode function creation with defaults and shared closures
Verify databases and deploy Aster VM / verify-and-deploy (push) Successful in 6m28s
Verify databases and deploy Aster VM / verify-and-deploy (push) Successful in 6m28s
This commit is contained in:
@@ -16,6 +16,8 @@ VM 由宿主持有,VM 持有对象堆,每次调用临时创建执行帧。
|
||||
|
||||
ObjectRef 拷贝、Value::clone 和句柄变量离开 Rust 作用域,都不会自动 retain/release。宿主为每份显式持有配对 retain/release。借用读取在所有者删除内容前需要 retain,详见 [对象模型](objects.md)。
|
||||
|
||||
MakeFunction 成功时将新函数的一份分配根压入求值栈;函数通过托管边保活代码、globals、builtins、默认值及闭包 Cell,再释放原输入栈根。返回新函数后,这些依赖不随外围帧清理而销毁。创建失败保留原栈供错误清理,创建成功后的后续错误也会释放临时函数及其独占依赖。
|
||||
|
||||
## 返回与失败
|
||||
|
||||
call/execute 返回 Value::Object 时,结果拥有一份根。执行器将这份根从帧移交给调用者或宿主,避免帧清理回收结果;使用后须 release_value,或取出对象句柄后 release。Native 回调原始返回值仍是借用值,由 VM 在移除输入根之前保活。
|
||||
|
||||
Reference in New Issue
Block a user