stage2 大量优化代码使其自举编译时间大幅缩短

This commit is contained in:
zzy committed 2026-09-20 09:33:20 +08:00
1 parent e02b0c633a
commit 846f441e3a
38 files changed
+2418 -835

No files matched your search

+12 -2
View File
@@ -362,7 +362,7 @@ fn frame_build(fl: *FrameLayout, ctx: *Ir2Vm, fid: usize) {
var i: usize = 0;
while i < n {
var blank: Slot = .{ .result_off = 0, .data_off = 0 };
match Vec.push(&fl.slots, &blank as *u8) { .Ok => {}, .Err(error) => {} }
ignore_bool(Vec.push_raw(&fl.slots, &blank as *u8));
i = i + 1;
}
@@ -421,7 +421,17 @@ fixups: *Vec,
terminated: bool,
fn emit(cg: *Cgen, op: Op, ty: VmKind, imm: usize) {
ignore_usize(Mcode.add_instr(&cg.ctx.prog, op, ty, imm));
var prog = &cg.ctx.prog;
var i = prog.insns.len;
if i < prog.insns.cap {
var p = (prog.insns.data as *VmIns) + i;
p.opcode = op;
p.ty = ty;
p.imm = imm;
prog.insns.len = i + 1;
ret;
}
ignore_usize(Mcode.add_instr(prog, op, ty, imm));
}
fn ip_of(cg: *Cgen): usize {