Files
hakorune/examples/jit_any_helpers_demo.nyash
Moe Charm 25fbebd650 docs: AOT/ネイティブコンパイル情報をexecution-backends.mdに追加
- 4つ目の実行方式としてAOT(Ahead-of-Time)コンパイルを文書化
- MIR→WASM→.cwasm のコンパイルパイプラインを説明
- wasm-backend featureでのビルド方法を明記
- 現在の実装状況(完全なスタンドアロン実行ファイルはTODO)を記載
- CLAUDE.mdのWASM説明も3種類(Rust→WASM、Nyash→WASM、Nyash→AOT)に更新
- CURRENT_TASK.mdにPhase 10.9/10.10の完了項目を追加

ChatGPT5さんのAOT試行に対応した適切なドキュメント配置を実施

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 02:05:39 +09:00

44 lines
1.3 KiB
Plaintext

// JIT ANY Helpers Demo - JIT内部での統一的な型処理
// ANYヘルパーは nyash.any.length_h と nyash.any.is_empty_h として
// JITのHostCall経由で Array/String/Map を統一的に扱える!
box Helper {
birth() {}
// このメソッドがJITコンパイルされると、内部的にANYヘルパーが使われる
getInfo(obj) {
// JIT内部では nyash.any.length_h が呼ばれる
local len
len = obj.length() // Array/Stringなら動作
// JIT内部では nyash.any.is_empty_h が呼ばれる
local empty
empty = obj.isEmpty() // Array/Stringなら動作
return len
}
}
static box Main {
main() {
local H
H = new Helper()
// Array での使用
local arr
arr = new ArrayBox()
arr.push("cat")
arr.push("dog")
print("Array info: " + H.getInfo(arr)) // 2
// String での使用
local str
str = new StringBox("Hello")
print("String info: " + H.getInfo(str)) // 5
// 注意: MapBoxは現在のインタープリターではlength()未実装
// JITでは nyash.any.length_h が Map.size() にマップされる
return "Done"
}
}