runtime: print raw values for console handle shims (#135)

This commit is contained in:
moe-charm
2025-09-11 03:54:35 +09:00
committed by GitHub
parent 4201c63001
commit f124731764

View File

@ -2386,50 +2386,66 @@ pub extern "C" fn nyash_console_log_export(ptr: *const i8) -> i64 {
0
}
// Exported as: nyash.console.log_handle(i64 handle) -> i64
// Exported as: nyash.console.log_handle(i64 handle) -> i64
#[export_name = "nyash.console.log_handle"]
pub extern "C" fn nyash_console_log_handle(handle: i64) -> i64 {
if handle <= 0 { return 0; }
if handle <= 0 {
return 0;
}
if let Some(obj) = nyash_rust::jit::rt::handles::get(handle as u64) {
let s = obj.to_string_box().value; // 既存の統一文字列変換メソッド
println!("{}", s);
} else {
println!("{}", handle);
}
0
}
// Exported as: nyash.console.warn_handle(i64 handle) -> i64
// Exported as: nyash.console.warn_handle(i64 handle) -> i64
#[export_name = "nyash.console.warn_handle"]
pub extern "C" fn nyash_console_warn_handle(handle: i64) -> i64 {
if handle <= 0 { return 0; }
if handle <= 0 {
return 0;
}
if let Some(obj) = nyash_rust::jit::rt::handles::get(handle as u64) {
let s = obj.to_string_box().value;
eprintln!("WARN: {}", s);
} else {
eprintln!("WARN: {}", handle);
}
0
}
// Exported as: nyash.console.error_handle(i64 handle) -> i64
// Exported as: nyash.console.error_handle(i64 handle) -> i64
#[export_name = "nyash.console.error_handle"]
pub extern "C" fn nyash_console_error_handle(handle: i64) -> i64 {
if handle <= 0 { return 0; }
if handle <= 0 {
return 0;
}
if let Some(obj) = nyash_rust::jit::rt::handles::get(handle as u64) {
let s = obj.to_string_box().value;
eprintln!("ERROR: {}", s);
} else {
eprintln!("ERROR: {}", handle);
}
0
}
// Exported as: nyash.debug.trace_handle(i64 handle) -> i64
// Exported as: nyash.debug.trace_handle(i64 handle) -> i64
#[export_name = "nyash.debug.trace_handle"]
pub extern "C" fn nyash_debug_trace_handle(handle: i64) -> i64 {
if handle <= 0 { return 0; }
if handle <= 0 {
return 0;
}
if let Some(obj) = nyash_rust::jit::rt::handles::get(handle as u64) {
let s = obj.to_string_box().value;
eprintln!("TRACE: {}", s);
} else {
eprintln!("TRACE: {}", handle);
}
0
}