Add dev normalized→MIR bridge for P1/P2 mini and JP _atoi

This commit is contained in:
nyash-codex
2025-12-11 22:12:46 +09:00
parent af6f95cd4b
commit a4756f3ce1
13 changed files with 539 additions and 94 deletions

View File

@ -7,6 +7,7 @@ use nyash_rust::mir::join_ir::{
JoinFunction, JoinInst, JoinIrPhase, JoinModule, MirLikeInst,
};
use nyash_rust::mir::join_ir::normalized::fixtures::{
build_jsonparser_atoi_structured_for_normalized_dev,
build_jsonparser_skip_ws_structured_for_normalized_dev,
build_pattern2_break_fixture_structured, build_pattern2_minimal_structured,
};
@ -331,7 +332,7 @@ fn normalized_pattern2_jsonparser_runner_dev_switch_matches_structured() {
}
#[test]
fn normalized_pattern2_vm_bridge_dev_switch_matches_structured() {
fn normalized_pattern2_vm_bridge_direct_matches_structured() {
let structured = build_pattern2_break_fixture_structured();
let entry = structured.entry.expect("structured entry required");
let cases = [0, 1, 3, 5];
@ -353,7 +354,7 @@ fn normalized_pattern2_vm_bridge_dev_switch_matches_structured() {
}
#[test]
fn normalized_pattern1_vm_bridge_dev_switch_matches_structured() {
fn normalized_pattern1_vm_bridge_direct_matches_structured() {
let structured = build_structured_pattern1();
let entry = structured.entry.expect("structured entry required");
let cases = [0, 5, 7];
@ -369,7 +370,7 @@ fn normalized_pattern1_vm_bridge_dev_switch_matches_structured() {
}
#[test]
fn normalized_pattern2_jsonparser_vm_bridge_dev_switch_matches_structured() {
fn normalized_pattern2_jsonparser_vm_bridge_direct_matches_structured() {
let structured = build_jsonparser_skip_ws_structured_for_normalized_dev();
let entry = structured.entry.expect("structured entry required");
let cases = [0, 1, 2, 5];
@ -383,3 +384,29 @@ fn normalized_pattern2_jsonparser_vm_bridge_dev_switch_matches_structured() {
assert_eq!(dev, JoinValue::Int(len), "unexpected result at len={}", len);
}
}
#[test]
fn normalized_pattern2_jsonparser_atoi_vm_bridge_direct_matches_structured() {
let structured = build_jsonparser_atoi_structured_for_normalized_dev();
let entry = structured.entry.expect("structured entry required");
let cases = [
("42", 2, 42),
("123abc", 6, 123),
("007", 3, 7),
("", 0, 0),
];
for (s, len, expected) in cases {
let input = [JoinValue::Str(s.to_string()), JoinValue::Int(len)];
let base = run_joinir_vm_bridge(&structured, entry, &input, false);
let dev = run_joinir_vm_bridge(&structured, entry, &input, true);
assert_eq!(base, dev, "vm bridge mismatch for input '{}'", s);
assert_eq!(
dev,
JoinValue::Int(expected),
"unexpected result for input '{}'",
s
);
}
}