Files
hakorune/crates/nyash_kernel/src/encode.rs
Selfhosting Dev f4fe548787 feat: Phase 2.4 NyRT→NyKernel Architecture Revolution 100%完了!
ChatGPT5 Pro設計分析による42%コード削減の完全実現:
- crates/nyrt → crates/nyash_kernel 完全移行
- with_legacy_vm_args系統11箇所削除(encode/birth/future/invoke系)
- Plugin-First Architecture統一(VM依存根絶)
- libnyash_kernel.a生成成功(0エラー・0警告)
- LLVM統合更新(build_llvm.sh, ny-llvmc対応)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 12:57:33 +09:00

70 lines
3.2 KiB
Rust

// ✂️ REMOVED: Legacy VM encoding system - part of 42% deletable functions
// This entire encoding system was replaced by Plugin-First architecture
// Legacy VMValue and with_legacy_vm_args no longer available
use nyash_rust::runtime::plugin_loader_v2::PluginBoxV2;
/// Simplified encoding for Plugin-First architecture (replaces legacy VM encoding)
pub(crate) fn nyrt_encode_from_legacy_at(_buf: &mut Vec<u8>, _pos: usize) {
// ✂️ REMOVED: Legacy VM argument processing
// This function is no longer needed in Plugin-First architecture
// All encoding now handled directly through unified plugin system
}
/// Simplified encoding for Plugin-First architecture (replaces legacy encoding)
pub(crate) fn nyrt_encode_arg_or_legacy(buf: &mut Vec<u8>, val: i64, _pos: usize) {
use nyash_rust::jit::rt::handles;
// Handle direct values and plugin objects, bypass legacy VM fallback
if val > 0 {
if let Some(obj) = handles::get(val) {
if let Some(bufbox) = obj
.as_any()
.downcast_ref::<nyash_rust::boxes::buffer::BufferBox>()
{
nyash_rust::runtime::plugin_ffi_common::encode::bytes(buf, &bufbox.to_vec());
return;
}
if let Some(p) = obj.as_any().downcast_ref::<PluginBoxV2>() {
let host = nyash_rust::runtime::get_global_plugin_host();
if let Ok(hg) = host.read() {
if p.box_type == "StringBox" {
if let Ok(Some(sb)) =
hg.invoke_instance_method("StringBox", "toUtf8", p.instance_id(), &[])
{
if let Some(s) = sb
.as_any()
.downcast_ref::<nyash_rust::box_trait::StringBox>()
{
nyash_rust::runtime::plugin_ffi_common::encode::string(
buf, &s.value,
);
return;
}
}
} else if p.box_type == "IntegerBox" {
if let Ok(Some(ibx)) =
hg.invoke_instance_method("IntegerBox", "get", p.instance_id(), &[])
{
if let Some(i) = ibx
.as_any()
.downcast_ref::<nyash_rust::box_trait::IntegerBox>()
{
nyash_rust::runtime::plugin_ffi_common::encode::i64(buf, i.value);
return;
}
}
}
}
nyash_rust::runtime::plugin_ffi_common::encode::plugin_handle(
buf,
p.inner.type_id,
p.instance_id(),
);
return;
}
}
}
// ✂️ REMOVED: Legacy VM fallback - directly encode as i64 in Plugin-First architecture
nyash_rust::runtime::plugin_ffi_common::encode::i64(buf, val);
}