hyengine编译实现问题之复用 quickjs 原代码如何解决

简介: hyengine编译实现问题之复用 quickjs 原代码如何解决

问题一:quickjs 中对 global 对象访问的优化措施是什么,其原理是什么?


quickjs 中对 global 对象访问的优化措施是什么,其原理是什么?


参考回答:

quickjs 中对 global 对象访问的优化措施是加上了 inline cache。由于 quickjs 的 global 对象操作被单独编译为 OP_get_var/OP_put_var 等 op,这些 op 的实现效率较低。inline cache 的原理是缓存某段代码访问的属性在对象属性数组中的偏移,这样下次访问时就可以直接通过偏移来获取属性值,而无需再进行重复的属性数组遍历,从而提高了访问效率。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666240



问题二:hygc 的实现方案是如何复用 quickjs 原有代码的?


hygc 的实现方案是如何复用 quickjs 原有代码的?


参考回答:

hygc 的实现方案复用了部分 quickjs 原有的代码,特别是在 gc 流程的设计和实现上。hygc 采用了多线程三色标记 gc 方案,这一方案在 quickjs 原有的引用计数 + mark sweep gc 方案基础上进行了优化和替换。通过复用 quickjs 的部分代码,hygc 实现了尽可能简单的功能,同时保持了与 quickjs 的兼容性。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666241



问题三:HYJSGlobalIC 数据结构中的 void *obj 字段有什么特殊作用?


HYJSGlobalIC 数据结构中的 void *obj 字段有什么特殊作用?


参考回答:

HYJSGlobalIC 数据结构中的 void obj 字段用于存储对 quickjs 中 global 对象的引用,这个引用可以是 global_obj 或 global_var_obj。由于 quickjs 的 global 可能存在于这两个不同的对象中,因此 void obj 字段用于在 inline cache 中记录具体是哪个对象,以便后续快速访问 global 对象的属性。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666242



问题四:hyjs_GetGlobalICOffset 方法的主要作用是什么?


hyjs_GetGlobalICOffset 方法的主要作用是什么?


参考回答:

hyjs_GetGlobalICOffset 方法的主要作用是为当前执行的 opcode 分配一个 inline cache 的 cache_index。这个 cache_index 用于在后续的 global 属性访问中,快速定位到对应的 inline cache 入口,以便检查缓存是否有效或更新缓存内容。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666243



问题五:在访问 global 对象属性时,如何通过 HYJSGlobalIC 来检查缓存是否有效?


在访问 global 对象属性时,如何通过 HYJSGlobalIC 来检查缓存是否有效?


参考回答:

在访问 global 对象属性时,首先会根据 cache_index 从 inline cache 中取出对应的 HYJSGlobalIC 结构体。然后,比较该结构体中的 prop 字段(即属性 atom)与当前需要访问的属性的 atom 是否相同。如果相同,说明缓存仍然有效,此时可以直接使用 offset 字段从 global 对象的属性数组中取出属性值。如果不同,则说明缓存无效,需要走慢路径来遍历属性数组并更新 inline cache。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/666244

相关文章
|
11月前
|
JSON 数据挖掘 API
抖音商品详情API接口如何使用
使用抖音商品详情 API 需要先注册抖音开放平台账号并创建应用,获取 appkey 和 appsecret。接着阅读 API 文档,构建并发送 HTTP 请求,处理返回的 JSON 数据。注意保护密钥、处理错误和确保数据合规。
|
存储 测试技术 API
OpenStack的文件系统存储(Manila)
【8月更文挑战第24天】
323 2
|
存储 安全 API
OpenStack的块存储卷管理卷 (Volume)
【8月更文挑战第26天】
412 5
|
存储 安全 API
OpenStack的块存储卷管理快照 (Snapshot)
【8月更文挑战第26天】
576 13
|
11月前
|
传感器 机器学习/深度学习 人工智能
仿生机器人:自然界灵感的工程应用
【10月更文挑战第14天】仿生机器人作为自然界灵感与工程技术的完美结合,正逐步改变着我们的生活和工作方式。通过深入了解其设计原理、关键技术、应用领域以及未来的发展趋势,我们可以更加清晰地看到仿生机器人在推动科技创新和社会发展中的重要作用。让我们共同期待仿生机器人在未来带来的更多惊喜和变革!
|
11月前
|
Web App开发 开发者
|
存储 数据管理 API
OpenStack的块存储卷管理快照与克隆
【8月更文挑战第27天】
289 4
|
安全 网络安全
网络安全CTF比赛有哪些事?——《CTF那些事儿》告诉你
网络安全CTF比赛有哪些事?——《CTF那些事儿》告诉你
|
5G 调度
带你读《5G 系统技术原理与实现》——3.3 5G 时频资源
带你读《5G 系统技术原理与实现》——3.3 5G 时频资源
带你读《5G 系统技术原理与实现》——3.3 5G 时频资源