wip(jit): AOTコア機能の継続的改善

JIT/AOTシステムのコア部分の改修を継続。
ChatGPTによる詳細な実装作業。

主な変更点:
- extern/collections.rs: 外部関数コレクション管理の改善
- lower/builder/cranelift.rs: Craneliftビルダーの最適化
- lower/core.rs: コア lowering ロジックの改修
- lower/core/ops_ext.rs: 拡張演算子のlowering処理
- lower/extern_thunks.rs: 外部関数サンクの実装改善

AOTビルドの安定性向上に向けた継続的な作業。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Tomoaki
2025-09-06 06:46:04 +09:00
parent 7d88c04c0e
commit 4c5301e700
5 changed files with 65 additions and 19 deletions

View File

@ -189,15 +189,20 @@ impl LowerCore {
fn emit_len_with_fallback_param(&mut self, b: &mut dyn IRBuilder, pidx: usize) {
use super::builder::CmpKind;
// Temp locals
let hslot = self.next_local; self.next_local += 1; // receiver handle slot
let t_string = self.next_local; self.next_local += 1;
let t_any = self.next_local; self.next_local += 1;
let t_cond = self.next_local; self.next_local += 1;
// String.len_h
// Materialize receiver handle from param index
b.emit_param_i64(pidx);
b.emit_host_call("nyash.handle.of", 1, true);
b.store_local_i64(hslot);
// String.len_h
b.load_local_i64(hslot);
b.emit_host_call("nyash.string.len_h", 1, true);
b.store_local_i64(t_string);
// Any.length_h
b.emit_param_i64(pidx);
b.load_local_i64(hslot);
b.emit_host_call(crate::jit::r#extern::collections::SYM_ANY_LEN_H, 1, true);
b.store_local_i64(t_any);
// cond = (string_len == 0)