stage2 大量优化代码使其自举编译时间大幅缩短
This commit is contained in:
1 parent
e02b0c633a
commit
846f441e3a
38 files changed
+2418
-835
No files matched your search
+12
-2
@@ -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 {
|
||||
|
||||
Reference in new issue
Block a user