refactor: 字符串值改用 JsString 指针表示,键与字面量改用 PermInterner

This commit is contained in:
爱特每羊队
2026-06-24 20:15:15 +08:00
parent 0de33f1a16
commit 466a0815ca
73 changed files with 768 additions and 860 deletions
+4 -16
View File
@@ -76,11 +76,7 @@ fn number_constructor() {
fn to_string_of_number() {
let mut vm = Vm::new();
let result = eval(&mut vm, "var n = 42; n.toString()").unwrap();
let s = vm
.kernel_core()
.string_forge()
.lookup(result.as_string_index())
.unwrap_or_default();
let s = vm.lookup_str(result).unwrap_or_default();
assert_eq!(s, "42");
}
@@ -88,11 +84,7 @@ fn to_string_of_number() {
fn to_fixed_of_number() {
let mut vm = Vm::new();
let result = eval(&mut vm, "var n = 3.14159; n.toFixed(2)").unwrap();
let s = vm
.kernel_core()
.string_forge()
.lookup(result.as_string_index())
.unwrap_or_default();
let s = vm.lookup_str(result).unwrap_or_default();
assert_eq!(s, "3.14");
}
@@ -121,11 +113,7 @@ fn number_epsilon_is_positive() {
fn number_to_exponential() {
let mut vm = Vm::new();
let result = eval(&mut vm, "var n = 123.456; n.toExponential(2)").unwrap();
let s = vm
.kernel_core()
.string_forge()
.lookup(result.as_string_index())
.unwrap_or_default();
let s = vm.lookup_str(result).unwrap_or_default();
assert_eq!(s, "1.23e2");
}
@@ -155,7 +143,7 @@ fn boxed_number_valueof_preserves_int_and_float() {
fn boxed_number_is_object_and_call_stays_primitive() {
let mut vm = Vm::new();
let ty = eval(&mut vm, "typeof new Number(5)").unwrap();
assert_eq!(vm.kernel_core().string_forge().lookup(ty.as_string_index()).unwrap(), "object");
assert_eq!(vm.lookup_str(ty).unwrap(), "object");
let n = eval(&mut vm, "Number('7')").unwrap();
assert_eq!(n.as_int(), 7);