mirror of
https://github.com/servo/servo
synced 2026-05-09 00:22:16 +02:00
Rust 1.90 uses lld by default on linux, which should improve link time and memory usage (I personally override ld with lld globally). And because of miscompilations we observed on 1.90 we need to skip to 1.91. Testing: Existing tests. try run: https://github.com/sagudev/servo/actions/runs/18951980580 --------- Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
63 lines
1.7 KiB
Rust
63 lines
1.7 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
//! Machinery to initialise namespace objects.
|
|
|
|
use std::ffi::CStr;
|
|
use std::ptr;
|
|
|
|
use js::jsapi::{JSClass, JSFunctionSpec};
|
|
use js::rust::{HandleObject, MutableHandleObject};
|
|
|
|
use crate::DomTypes;
|
|
use crate::constant::ConstantSpec;
|
|
use crate::guard::Guard;
|
|
use crate::interface::{create_object, define_on_global_object};
|
|
use crate::script_runtime::JSContext;
|
|
|
|
/// The class of a namespace object.
|
|
#[derive(Clone, Copy)]
|
|
pub(crate) struct NamespaceObjectClass(JSClass);
|
|
|
|
unsafe impl Sync for NamespaceObjectClass {}
|
|
|
|
impl NamespaceObjectClass {
|
|
/// Create a new `NamespaceObjectClass` structure.
|
|
pub(crate) const unsafe fn new(name: &'static CStr) -> Self {
|
|
NamespaceObjectClass(JSClass {
|
|
name: name.as_ptr(),
|
|
flags: 0,
|
|
cOps: ptr::null(),
|
|
spec: ptr::null(),
|
|
ext: ptr::null(),
|
|
oOps: ptr::null(),
|
|
})
|
|
}
|
|
}
|
|
|
|
/// Create a new namespace object.
|
|
#[allow(clippy::too_many_arguments)]
|
|
pub(crate) fn create_namespace_object<D: DomTypes>(
|
|
cx: JSContext,
|
|
global: HandleObject,
|
|
proto: HandleObject,
|
|
class: &'static NamespaceObjectClass,
|
|
methods: &[Guard<&'static [JSFunctionSpec]>],
|
|
constants: &[Guard<&'static [ConstantSpec]>],
|
|
name: &CStr,
|
|
mut rval: MutableHandleObject,
|
|
) {
|
|
create_object::<D>(
|
|
cx,
|
|
global,
|
|
proto,
|
|
&class.0,
|
|
methods,
|
|
&[],
|
|
constants,
|
|
rval.reborrow(),
|
|
);
|
|
define_on_global_object(cx, global, name, rval.handle());
|
|
}
|