perf(test262): +2.4% pass rate via Function .name/.length and ArrayLike support
- Array indexOf/includes/lastIndexOf: ArrayLike receiver + fromIndex + SameValueZero - Function.prototype methods: add .length property via bind_method_static - Error objects: add .name property via create_kind_error - Constructor functions: add .name via make_pair + .length via bind_constructor! - test262: 8497→9009 pass (+512), 38.3%→40.7% rate Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> (cherry picked from commit af61949e6cab1b149a13e571e29bacc4267d5690)
This commit is contained in:
@@ -49,6 +49,11 @@ macro_rules! bind_constructor {
|
||||
let ptr: *const () = ($ctor_fn as fn(&mut $crate::vm::Vm, &[u8]) -> oxide_runtime_api::NativeResult) as *const ();
|
||||
ctor.set_native_fn(Some(unsafe { oxide_types::object::NativeFnPtr::from_raw(ptr) }));
|
||||
ctor.set_native_arg_count($nargs);
|
||||
// 设置 constructor.length (Function.length = formal parameter count)
|
||||
let length_si = $core.perm_interner().intern("length").0;
|
||||
let length_shape = $core.shape_forge().make_shape(ctor.shape_id(), length_si);
|
||||
ctor.set_shape_id(length_shape);
|
||||
ctor.ensure_hash_props().push($crate::JsValue::int($nargs as i32));
|
||||
}};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user