Phase 10.7: Implement Cranelift block wiring hooks (prepare/switch/seal, brif/jump) and integrate in LowerCore; build passes with cranelift-jit; JIT branch demo runs (no side-effects inline).
This commit is contained in:
@ -177,6 +177,11 @@ extern "C" fn nyash_map_size(map_param_index: i64) -> i64 {
|
|||||||
|
|
||||||
#[cfg(feature = "cranelift-jit")]
|
#[cfg(feature = "cranelift-jit")]
|
||||||
impl IRBuilder for CraneliftBuilder {
|
impl IRBuilder for CraneliftBuilder {
|
||||||
|
fn emit_param_i64(&mut self, index: usize) {
|
||||||
|
if let Some(v) = self.entry_param(index) {
|
||||||
|
self.value_stack.push(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
fn prepare_signature_i64(&mut self, argc: usize, has_ret: bool) {
|
fn prepare_signature_i64(&mut self, argc: usize, has_ret: bool) {
|
||||||
self.desired_argc = argc;
|
self.desired_argc = argc;
|
||||||
self.desired_has_ret = has_ret;
|
self.desired_has_ret = has_ret;
|
||||||
@ -402,8 +407,7 @@ impl IRBuilder for CraneliftBuilder {
|
|||||||
let zero = fb.ins().iconst(types::I64, 0);
|
let zero = fb.ins().iconst(types::I64, 0);
|
||||||
fb.ins().icmp_imm(IntCC::NotEqual, zero, 0)
|
fb.ins().icmp_imm(IntCC::NotEqual, zero, 0)
|
||||||
};
|
};
|
||||||
fb.ins().brif(cond_b1, self.blocks[then_index], &[]);
|
fb.ins().brif(cond_b1, self.blocks[then_index], &[], self.blocks[else_index], &[]);
|
||||||
fb.ins().jump(self.blocks[else_index], &[]);
|
|
||||||
self.stats.3 += 1;
|
self.stats.3 += 1;
|
||||||
fb.finalize();
|
fb.finalize();
|
||||||
}
|
}
|
||||||
@ -433,14 +437,7 @@ impl CraneliftBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "cranelift-jit")]
|
// removed duplicate impl IRBuilder for CraneliftBuilder (emit_param_i64 moved into main impl)
|
||||||
impl IRBuilder for CraneliftBuilder {
|
|
||||||
fn emit_param_i64(&mut self, index: usize) {
|
|
||||||
if let Some(v) = self.entry_param(index) {
|
|
||||||
self.value_stack.push(v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "cranelift-jit")]
|
#[cfg(feature = "cranelift-jit")]
|
||||||
impl CraneliftBuilder {
|
impl CraneliftBuilder {
|
||||||
|
|||||||
Reference in New Issue
Block a user