Skip to content

LATX, opt: batch load 4 × 4KB pages in AOT loadee#294

Merged
luzeng87 merged 1 commit into
lat-opensource:masterfrom
ganjue66da:master
May 21, 2026
Merged

LATX, opt: batch load 4 × 4KB pages in AOT loadee#294
luzeng87 merged 1 commit into
lat-opensource:masterfrom
ganjue66da:master

Conversation

@ganjue66da
Copy link
Copy Markdown
Contributor

Load 4 consecutive 4KB pages spanning from current PC to PC + 4 * TARGET_PAGE_SIZE.

Load 4 consecutive 4KB pages spanning from current PC to PC +
4 * TARGET_PAGE_SIZE.
Copy link
Copy Markdown
Contributor

@luzeng87 luzeng87 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

审查总结

重构 AOT 页面加载逻辑:将 load_aot 中的状态检查和批量加载提取为独立函数,load_page 内聚化。

变更分析

1. load_page 内聚化

状态检查(PAGE_LOADED / PAGE_SMC+ELF)和 page_set_page_stateload_aot 移入 load_page

// 新增边界检查
if (pc < info->seg_begin || pc >= info->seg_end) return 0;
// 新增状态检查
int page_state = page_get_page_state(pc);
if (page_state >= PAGE_LOADED || ...) return 0;
page_set_page_state(pc, PAGE_LOADED);

load_page 现在独立可调用,不依赖调用者做前置校验。✅

2. 提取 load_all_seg

option_aot == 2 路径的循环体从 load_aot 提取为独立函数,设置 SEG_RUNNING + 遍历全段加载 + try_aot_link()。同旧行为。✅

3. load_page_4 添加 try_aot_link

旧代码由 load_aot 调用者在成功后调 try_aot_link,新代码移入 load_page_4 内部。load_page 返回 0 时 try_aot_link 也无副作用(无 TB 可链接)。✅

4. page_set_page_state_range → 逐页设置

load_all_seg 不再用 page_set_page_state_range 批量标记,改为各页 load_page 自行设置。行为一致 — 旧代码也是先标记再加载。✅

未发现问题

  • load_page_4 返回值:返回首个 load_page 的返回值,同旧行为
  • 边界检查新增 O(1),安全
  • 无新增变量,无内存泄漏

结论

通过。 干净的内聚化重构,无行为变更,无副作用。

@luzeng87 luzeng87 merged commit f529b93 into lat-opensource:master May 21, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants