fix: 降低函数体寄存器压力

This commit is contained in:
爱特每羊队
2026-06-15 00:33:58 +08:00
parent 98cc47c212
commit fdaedc060b
6 changed files with 201 additions and 116 deletions
+19
View File
@@ -151,3 +151,22 @@ fn regression_delete_dynamic_property_throws_type_error() {
"vm error: uncaught TypeError: property deletion not supported"
);
}
#[test]
fn regression_large_expression_no_register_overflow() {
let expr = std::iter::repeat("1").take(120).collect::<Vec<_>>().join(" + ");
let source = format!("function f() {{ return {expr}; }} f()");
assert_eq!(eval(&source), "120");
}
#[test]
fn regression_many_declarations_keep_stable_registers() {
let decls = (0..120).map(|i| format!("var v{i} = {i};")).collect::<Vec<_>>().join("");
let source = format!("{decls} v0 + v57 + v119");
assert_eq!(eval(&source), "176");
}
#[test]
fn regression_method_call_receiver_survives_register_reuse() {
assert_eq!(eval("var o = { x: 41, f: function() { return this.x + 1; } }; o.f()"), "42");
}