mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-24 18:51:13 +08:00
refactor: 内置符号键与符号值改经 realm 维度编码
This commit is contained in:
@@ -8,7 +8,7 @@ use oxide_runtime_api::{NativeResult, VmHost};
|
||||
use crate::builtins_debug;
|
||||
use crate::builtins_error;
|
||||
|
||||
use oxide_types::private_key::{make_well_known_symbol_key, WELL_KNOWN_SYMBOL_IS_CONCAT_SPREADABLE};
|
||||
use oxide_types::private_key::{encode_symbol_key, WELL_KNOWN_SYMBOL_IS_CONCAT_SPREADABLE};
|
||||
|
||||
use super::common::{
|
||||
array_ptr, array_type_error, arraylike_get, arraylike_get_or_err, arraylike_index_present, check_array_create_len,
|
||||
@@ -499,7 +499,7 @@ pub fn array_concat<H: VmHost>(vm: &mut H, args: &[u8]) -> NativeResult {
|
||||
// 结果钉入返回寄存器:其后的元素读取 / 写入窗口保 GC 根,返回时自钉位读回。
|
||||
vm.set_reg(0, JsValue::from_js_object(a_ptr));
|
||||
|
||||
let spread_key = make_well_known_symbol_key(WELL_KNOWN_SYMBOL_IS_CONCAT_SPREADABLE);
|
||||
let spread_key = encode_symbol_key(vm.realm_id(), WELL_KNOWN_SYMBOL_IS_CONCAT_SPREADABLE);
|
||||
let length_si = vm.string_key_si("length");
|
||||
let mut n_acc: u64 = 0;
|
||||
let mut holes: Vec<usize> = Vec::new();
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
use oxide_kernel::shape_forge::EMPTY_SHAPE_ID;
|
||||
use oxide_types::object::{JsObject, PropAttributes, MAX_DENSE_PROPS};
|
||||
use oxide_types::private_key::make_well_known_symbol_key;
|
||||
use oxide_types::private_key::encode_symbol_key;
|
||||
use oxide_types::value::JsValue;
|
||||
|
||||
use oxide_runtime_api::{NativeResult, VmHost};
|
||||
@@ -333,7 +333,7 @@ pub(crate) fn array_species_create<H: VmHost>(
|
||||
}
|
||||
// 一切对象 C 均须查 @@species(null 归一为 undefined):S 为 undefined 回退
|
||||
// ArrayCreate,S 非构造器抛 TypeError,否则以 S 构造。
|
||||
let species_key = make_well_known_symbol_key(10);
|
||||
let species_key = encode_symbol_key(vm.realm_id(), 10);
|
||||
let s = match vm.ordinary_get(unsafe { &*c.as_js_object_ptr() }, species_key, c) {
|
||||
Ok(v) => v,
|
||||
Err(msg) => return Err(from_engine_error(vm, &msg)),
|
||||
|
||||
Reference in New Issue
Block a user