native aot suite passes

This commit is contained in:
2026-02-17 11:12:51 -06:00
parent 2d054fcf21
commit 5ef3381fff
3 changed files with 109 additions and 22 deletions

View File

@@ -102,6 +102,9 @@ var qbe_emit = function(ir, qbe, export_name) {
var pat_label = null
var flg_label = null
var in_handler = false
var tol = null
var fn_arity = 0
var arity_tmp = null
// Function signature: (ctx, frame_ptr) → JSValue
emit(`export function l $${name}(l %ctx, l %fp) {`)
@@ -572,8 +575,10 @@ var qbe_emit = function(ir, qbe, export_name) {
if (op == "eq_tol" || op == "ne_tol") {
lhs = s_read(a2)
rhs = s_read(a3)
a4 = instr[4]
tol = s_read(a4)
p = fresh()
emit(` %${p} =l call $cell_rt_${op}(l %ctx, l ${lhs}, l ${rhs})`)
emit(` %${p} =l call $cell_rt_${op}(l %ctx, l ${lhs}, l ${rhs}, l ${tol})`)
s_write(a1, `%${p}`)
continue
}
@@ -700,7 +705,7 @@ var qbe_emit = function(ir, qbe, export_name) {
p = fresh()
if (pn != null) {
sl = intern_str(pn)
emit(` %${p} =l call $cell_rt_load_field(l %ctx, l ${v}, l ${sl})`)
emit(` %${p} =l call $cell_rt_load_prop_str(l %ctx, l ${v}, l ${sl})`)
} else {
lhs = s_read(a3)
emit(` %${p} =l call $cell_rt_load_dynamic(l %ctx, l ${v}, l ${lhs})`)
@@ -899,8 +904,14 @@ var qbe_emit = function(ir, qbe, export_name) {
// --- Function object creation [G] ---
if (op == "function") {
fn_arity = 0
if (a2 >= 0 && a2 < length(ir.functions)) {
fn_arity = ir.functions[a2].nr_args
}
p = fresh()
emit(` %${p} =l call $cell_rt_make_function(l %ctx, l ${text(a2)}, l %fp)`)
arity_tmp = fresh()
emit(` %${arity_tmp} =l copy ${text(fn_arity)}`)
emit(` %${p} =l call $cell_rt_make_function(l %ctx, l ${text(a2)}, l %fp, l %${arity_tmp})`)
refresh_fp()
s_write(a1, `%${p}`)
continue
@@ -980,7 +991,7 @@ var qbe_emit = function(ir, qbe, export_name) {
p = fresh()
if (pn != null) {
sl = intern_str(pn)
emit(` %${p} =l call $cell_rt_delete(l %ctx, l ${v}, l ${sl})`)
emit(` %${p} =l call $cell_rt_delete_str(l %ctx, l ${v}, l ${sl})`)
} else {
lhs = s_read(a3)
emit(` %${p} =l call $cell_rt_delete(l %ctx, l ${v}, l ${lhs})`)