mirror of
https://github.com/servo/servo.git
synced 2025-07-25 16:20:36 +01:00
Replace squirrel_away_unique by boxed::into_raw.
This commit is contained in:
parent
b655b54f80
commit
b5440a6257
2 changed files with 6 additions and 11 deletions
|
@ -1800,7 +1800,7 @@ def CreateBindingJSObject(descriptor, parent=None):
|
||||||
assert not descriptor.isGlobal()
|
assert not descriptor.isGlobal()
|
||||||
create += """
|
create += """
|
||||||
let handler = RegisterBindings::proxy_handlers[PrototypeList::Proxies::%s as uint];
|
let handler = RegisterBindings::proxy_handlers[PrototypeList::Proxies::%s as uint];
|
||||||
let mut private = PrivateValue(squirrel_away_unique(object) as *const libc::c_void);
|
let mut private = PrivateValue(boxed::into_raw(object) as *const libc::c_void);
|
||||||
let obj = with_compartment(cx, proto, || {
|
let obj = with_compartment(cx, proto, || {
|
||||||
NewProxyObject(cx, handler,
|
NewProxyObject(cx, handler,
|
||||||
&private,
|
&private,
|
||||||
|
@ -1820,7 +1820,7 @@ assert!(!obj.is_null());\
|
||||||
assert!(!obj.is_null());
|
assert!(!obj.is_null());
|
||||||
|
|
||||||
JS_SetReservedSlot(obj, DOM_OBJECT_SLOT as u32,
|
JS_SetReservedSlot(obj, DOM_OBJECT_SLOT as u32,
|
||||||
PrivateValue(squirrel_away_unique(object) as *const libc::c_void));"""
|
PrivateValue(boxed::into_raw(object) as *const libc::c_void));"""
|
||||||
return create
|
return create
|
||||||
|
|
||||||
class CGWrapMethod(CGAbstractMethod):
|
class CGWrapMethod(CGAbstractMethod):
|
||||||
|
@ -3978,7 +3978,7 @@ let this: *const %s = unwrap::<%s>(obj);
|
||||||
def finalizeHook(descriptor, hookName, context):
|
def finalizeHook(descriptor, hookName, context):
|
||||||
release = """\
|
release = """\
|
||||||
let value = unwrap::<%s>(obj);
|
let value = unwrap::<%s>(obj);
|
||||||
let _: Box<%s> = mem::transmute(value);
|
let _ = Box::from_raw(value as *mut %s);
|
||||||
debug!("%s finalize: {:p}", this);\
|
debug!("%s finalize: {:p}", this);\
|
||||||
""" % (descriptor.concreteType, descriptor.concreteType, descriptor.concreteType)
|
""" % (descriptor.concreteType, descriptor.concreteType, descriptor.concreteType)
|
||||||
return release
|
return release
|
||||||
|
@ -4557,7 +4557,6 @@ class CGBindingRoot(CGThing):
|
||||||
'dom::bindings::utils::has_property_on_prototype',
|
'dom::bindings::utils::has_property_on_prototype',
|
||||||
'dom::bindings::utils::is_platform_object',
|
'dom::bindings::utils::is_platform_object',
|
||||||
'dom::bindings::utils::{Reflectable}',
|
'dom::bindings::utils::{Reflectable}',
|
||||||
'dom::bindings::utils::{squirrel_away_unique}',
|
|
||||||
'dom::bindings::utils::throwing_constructor',
|
'dom::bindings::utils::throwing_constructor',
|
||||||
'dom::bindings::utils::get_dictionary_property',
|
'dom::bindings::utils::get_dictionary_property',
|
||||||
'dom::bindings::utils::{NativeProperties, NativePropertyHooks}',
|
'dom::bindings::utils::{NativeProperties, NativePropertyHooks}',
|
||||||
|
@ -4587,6 +4586,7 @@ class CGBindingRoot(CGThing):
|
||||||
'libc',
|
'libc',
|
||||||
'util::str::DOMString',
|
'util::str::DOMString',
|
||||||
'std::borrow::ToOwned',
|
'std::borrow::ToOwned',
|
||||||
|
'std::boxed',
|
||||||
'std::cmp',
|
'std::cmp',
|
||||||
'std::iter::repeat',
|
'std::iter::repeat',
|
||||||
'std::mem',
|
'std::mem',
|
||||||
|
|
|
@ -15,9 +15,9 @@ use dom::window;
|
||||||
|
|
||||||
use libc;
|
use libc;
|
||||||
use libc::c_uint;
|
use libc::c_uint;
|
||||||
|
use std::boxed;
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
use std::ffi::CString;
|
use std::ffi::CString;
|
||||||
use std::mem;
|
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use js::glue::UnwrapObject;
|
use js::glue::UnwrapObject;
|
||||||
use js::glue::{IsWrapper, RUST_JSID_IS_INT, RUST_JSID_TO_INT};
|
use js::glue::{IsWrapper, RUST_JSID_IS_INT, RUST_JSID_TO_INT};
|
||||||
|
@ -64,11 +64,6 @@ impl GlobalStaticData {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Leak the given pointer.
|
|
||||||
pub unsafe fn squirrel_away_unique<T>(x: Box<T>) -> *const T {
|
|
||||||
mem::transmute(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NOTE: This is baked into the Ion JIT as 0 in codegen for LGetDOMProperty and
|
// NOTE: This is baked into the Ion JIT as 0 in codegen for LGetDOMProperty and
|
||||||
// LSetDOMProperty. Those constants need to be changed accordingly if this value
|
// LSetDOMProperty. Those constants need to be changed accordingly if this value
|
||||||
// changes.
|
// changes.
|
||||||
|
@ -343,7 +338,7 @@ pub fn initialize_global(global: *mut JSObject) {
|
||||||
([0 as *mut JSObject; PrototypeList::ID::Count as uint]);
|
([0 as *mut JSObject; PrototypeList::ID::Count as uint]);
|
||||||
unsafe {
|
unsafe {
|
||||||
assert!(((*JS_GetClass(global)).flags & JSCLASS_DOM_GLOBAL) != 0);
|
assert!(((*JS_GetClass(global)).flags & JSCLASS_DOM_GLOBAL) != 0);
|
||||||
let box_ = squirrel_away_unique(proto_array);
|
let box_ = boxed::into_raw(proto_array);
|
||||||
JS_SetReservedSlot(global,
|
JS_SetReservedSlot(global,
|
||||||
DOM_PROTOTYPE_SLOT,
|
DOM_PROTOTYPE_SLOT,
|
||||||
PrivateValue(box_ as *const libc::c_void));
|
PrivateValue(box_ as *const libc::c_void));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue