diff options
author | Josh Matthews <josh@joshmatthews.net> | 2014-03-14 12:55:57 -0400 |
---|---|---|
committer | Lars Bergstrom <lars@lars.com> | 2014-03-18 09:30:35 -0500 |
commit | f279abbf9f894641f592fee7f70fa0e29d955dad (patch) | |
tree | 807167e3e53339ac6342c2c71e0062bfd4b0d82b /src | |
parent | bbac8aa5c3d95e70151b824ca3443f0fb4d9b5a5 (diff) | |
download | servo-f279abbf9f894641f592fee7f70fa0e29d955dad.tar.gz servo-f279abbf9f894641f592fee7f70fa0e29d955dad.zip |
Remove all traces of Box representation from bindings. Work around file read runtime problem.
Diffstat (limited to 'src')
-rw-r--r-- | src/components/net/file_loader.rs | 5 | ||||
-rw-r--r-- | src/components/script/dom/bindings/codegen/CodegenRust.py | 37 | ||||
-rw-r--r-- | src/components/script/dom/bindings/js.rs | 8 | ||||
-rw-r--r-- | src/components/script/dom/bindings/utils.rs | 15 | ||||
-rw-r--r-- | src/components/script/dom/node.rs | 4 | ||||
-rw-r--r-- | src/components/script/html/hubbub_html_parser.rs | 1 | ||||
-rw-r--r-- | src/components/script/script_task.rs | 4 | ||||
m--------- | src/support/spidermonkey/rust-mozjs | 0 |
8 files changed, 30 insertions, 44 deletions
diff --git a/src/components/net/file_loader.rs b/src/components/net/file_loader.rs index 336df6e0193..900e295298a 100644 --- a/src/components/net/file_loader.rs +++ b/src/components/net/file_loader.rs @@ -13,8 +13,9 @@ static READ_SIZE: uint = 1024; fn read_all(reader: &mut io::Stream, progress_chan: &Chan<ProgressMsg>) -> Result<(), ()> { loop { - match (reader.read_bytes(READ_SIZE)) { - Ok(data) => progress_chan.send(Payload(data)), + let mut buf = ~[]; + match (reader.push_bytes(&mut buf, READ_SIZE)) { + Ok(_) => progress_chan.send(Payload(buf)), Err(e) => match e.kind { io::EndOfFile => return Ok(()), _ => return Err(()), diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index fa0d28ac90a..9874268a1eb 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -389,7 +389,7 @@ class CGMethodCall(CGThing): class FakeCastableDescriptor(): def __init__(self, descriptor): self.castable = True - self.nativeType = "*Box<%s>" % descriptor.concreteType + self.nativeType = "*%s" % descriptor.concreteType self.name = descriptor.name class FakeInterface: def inheritanceDepth(self): @@ -2066,7 +2066,7 @@ def CreateBindingJSObject(descriptor, parent=None): let handler = js_info.get().get_ref().dom_static.proxy_handlers.get(&(PrototypeList::id::%s as uint)); """ % descriptor.name create += handler + """ let obj = NewProxyObject(aCx, *handler, - &PrivateValue(squirrel_away_unique(aObject) as *libc::c_void), + &PrivateValue(squirrel_away_unboxed(aObject) as *libc::c_void), proto, %s, ptr::null(), ptr::null()); if obj.is_null() { @@ -2084,7 +2084,7 @@ def CreateBindingJSObject(descriptor, parent=None): } JS_SetReservedSlot(obj, DOM_OBJECT_SLOT as u32, - PrivateValue(squirrel_away_unique(aObject) as *libc::c_void)); + PrivateValue(squirrel_away_unboxed(aObject) as *libc::c_void)); """ return create @@ -2388,7 +2388,7 @@ class CGDefineDOMInterfaceMethod(CGAbstractMethod): body = "" #XXXjdm xray stuff isn't necessary yet return (body + """ let cx = js_info.js_context.borrow().ptr; - let receiver = js_info.js_compartment.borrow().global_obj.borrow().ptr; + let receiver = js_info.js_compartment.borrow().global_obj; let global: *JSObject = JS_GetGlobalForObject(cx, receiver); return %s(cx, global, receiver).is_not_null();""" % (getter)) @@ -2693,7 +2693,7 @@ class CGAbstractBindingMethod(CGAbstractExternMethod): " return false as JSBool;\n" "}\n" "\n" - "let this: *Box<%s>;" % self.descriptor.concreteType)) + "let this: *%s;" % self.descriptor.concreteType)) def generate_code(self): assert(False) # Override me @@ -2721,7 +2721,7 @@ class CGSpecializedMethod(CGAbstractExternMethod): self.method = method name = method.identifier.name args = [Argument('*JSContext', 'cx'), Argument('JSHandleObject', 'obj'), - Argument('*mut Box<%s>' % descriptor.concreteType, 'this'), + Argument('*mut %s' % descriptor.concreteType, 'this'), Argument('libc::c_uint', 'argc'), Argument('*mut JSVal', 'vp')] CGAbstractExternMethod.__init__(self, descriptor, name, 'JSBool', args) @@ -2732,13 +2732,13 @@ class CGSpecializedMethod(CGAbstractExternMethod): argsPre = [] if name in self.descriptor.needsAbstract: abstractName = re.sub(r'<\w+>', '', self.descriptor.nativeType) - extraPre = ' let mut abstract_this = %s::from_box(this);\n' % abstractName + extraPre = ' let mut abstract_this = %s::from_raw(this);\n' % abstractName argsPre = ['&mut abstract_this'] return CGWrapper(CGMethodCall(argsPre, nativeName, self.method.isStatic(), self.descriptor, self.method), pre=extraPre + " let obj = (*obj.unnamed);\n" + - " let this = &mut (*this).data;\n").define() + " let this = &mut *this;\n").define() class CGGenericGetter(CGAbstractBindingMethod): """ @@ -2776,7 +2776,7 @@ class CGSpecializedGetter(CGAbstractExternMethod): name = 'get_' + attr.identifier.name args = [ Argument('*JSContext', 'cx'), Argument('JSHandleObject', 'obj'), - Argument('*mut Box<%s>' % descriptor.concreteType, 'this'), + Argument('*mut %s' % descriptor.concreteType, 'this'), Argument('*mut JSVal', 'vp') ] CGAbstractExternMethod.__init__(self, descriptor, name, "JSBool", args) @@ -2790,7 +2790,7 @@ class CGSpecializedGetter(CGAbstractExternMethod): getter=True)) if name in self.descriptor.needsAbstract: abstractName = re.sub(r'<\w+>', '', self.descriptor.nativeType) - extraPre = ' let mut abstract_this = %s::from_box(this);\n' % abstractName + extraPre = ' let mut abstract_this = %s::from_raw(this);\n' % abstractName argsPre = ['&mut abstract_this'] if self.attr.type.nullable() or not infallible: nativeName = "Get" + nativeName @@ -2798,7 +2798,7 @@ class CGSpecializedGetter(CGAbstractExternMethod): self.descriptor, self.attr)), pre=extraPre + " let obj = (*obj.unnamed);\n" + - " let this = &mut (*this).data;\n").define() + " let this = &mut *this;\n").define() class CGGenericSetter(CGAbstractBindingMethod): """ @@ -2842,7 +2842,7 @@ class CGSpecializedSetter(CGAbstractExternMethod): name = 'set_' + attr.identifier.name args = [ Argument('*JSContext', 'cx'), Argument('JSHandleObject', 'obj'), - Argument('*mut Box<%s>' % descriptor.concreteType, 'this'), + Argument('*mut %s' % descriptor.concreteType, 'this'), Argument('*mut JSVal', 'argv')] CGAbstractExternMethod.__init__(self, descriptor, name, "JSBool", args) @@ -2853,13 +2853,13 @@ class CGSpecializedSetter(CGAbstractExternMethod): extraPre = '' if name in self.descriptor.needsAbstract: abstractName = re.sub(r'<\w+>', '', self.descriptor.nativeType) - extraPre = ' let mut abstract_this = %s::from_box(this);\n' % abstractName + extraPre = ' let mut abstract_this = %s::from_raw(this);\n' % abstractName argsPre = ['&mut abstract_this'] return CGWrapper(CGIndenter(CGSetterCall(argsPre, self.attr.type, nativeName, self.descriptor, self.attr)), pre=extraPre + " let obj = (*obj.unnamed);\n" + - " let this = &mut (*this).data;\n").define() + " let this = &mut *this;\n").define() def infallibleForMember(member, type, descriptorProvider): """ @@ -3891,8 +3891,8 @@ class CGProxyUnwrap(CGAbstractMethod): obj = js::UnwrapObject(obj); }*/ //MOZ_ASSERT(IsProxy(obj)); - let box_: *Box<%s> = cast::transmute(GetProxyPrivate(obj).to_private()); - return cast::transmute(&(*box_).data);""" % (self.descriptor.concreteType) + let box_: *%s = cast::transmute(GetProxyPrivate(obj).to_private()); + return cast::transmute(&*box_);""" % (self.descriptor.concreteType) class CGDOMJSProxyHandler_getOwnPropertyDescriptor(CGAbstractExternMethod): def __init__(self, descriptor): @@ -4201,7 +4201,7 @@ class CGAbstractClassHook(CGAbstractExternMethod): def definition_body_prologue(self): return """ - let this: *%s = &(*unwrap::<*Box<%s>>(obj)).data; + let this: *%s = &*unwrap::<*%s>(obj); """ % (self.descriptor.concreteType, self.descriptor.concreteType) def definition_body(self): @@ -4796,7 +4796,7 @@ class CGBindingRoot(CGThing): 'dom::bindings::utils::{NativePropertyHooks}', 'dom::bindings::utils::global_object_for_js_object', 'dom::bindings::utils::{Reflectable}', - 'dom::bindings::utils::{squirrel_away_unique}', + 'dom::bindings::utils::{squirrel_away_unboxed}', 'dom::bindings::utils::{ThrowingConstructor, unwrap, unwrap_jsmanaged}', 'dom::bindings::utils::{unwrap_object, VoidVal, with_gc_disabled}', 'dom::bindings::utils::{with_gc_enabled, XrayResolveProperty}', @@ -4825,7 +4825,6 @@ class CGBindingRoot(CGThing): 'std::str', 'std::num', 'std::intrinsics::uninit', - 'std::raw::Box', ]) # Add the auto-generated comment. diff --git a/src/components/script/dom/bindings/js.rs b/src/components/script/dom/bindings/js.rs index e6e16d8dbdd..69758f2980a 100644 --- a/src/components/script/dom/bindings/js.rs +++ b/src/components/script/dom/bindings/js.rs @@ -9,7 +9,6 @@ use layout_interface::TrustedNodeAddress; use std::cast; use std::cell::RefCell; -use std::raw::Box; pub struct JS<T> { priv ptr: RefCell<*mut T> @@ -50,13 +49,6 @@ impl<T: Reflectable> JS<T> { } - pub unsafe fn from_box(box_: *mut Box<T>) -> JS<T> { - let raw: *mut T = &mut (*box_).data; - JS { - ptr: RefCell::new(raw) - } - } - pub unsafe fn from_trusted_node_address(inner: TrustedNodeAddress) -> JS<T> { JS { ptr: RefCell::new(inner as *mut T) diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index a6eb81588df..a441a297aed 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -17,7 +17,6 @@ use std::ptr; use std::ptr::null; use std::str; use std::vec; -use std::raw::Box; use js::glue::*; use js::glue::{js_IsObjectProxyClass, js_IsFunctionProxyClass, IsProxyHandlerFamily}; use js::jsapi::{JS_AlreadyHasOwnProperty, JS_NewFunction}; @@ -121,10 +120,10 @@ pub fn unwrap_object<T>(obj: *JSObject, proto_id: PrototypeList::id::ID, proto_d pub fn unwrap_jsmanaged<T: Reflectable>(obj: *JSObject, proto_id: PrototypeList::id::ID, proto_depth: uint) -> Result<JS<T>, ()> { - let result: Result<*mut Box<T>, ()> = unwrap_object(obj, proto_id, proto_depth); + let result: Result<*mut T, ()> = unwrap_object(obj, proto_id, proto_depth); result.map(|unwrapped| { unsafe { - JS::from_box(unwrapped) + JS::from_raw(unwrapped) } }) } @@ -136,10 +135,6 @@ pub fn unwrap_value<T>(val: *JSVal, proto_id: PrototypeList::id::ID, proto_depth } } -pub unsafe fn squirrel_away_unique<T>(x: ~T) -> *Box<T> { - cast::transmute(x) -} - pub unsafe fn squirrel_away_unboxed<T>(x: ~T) -> *T { cast::transmute(x) } @@ -437,7 +432,6 @@ pub fn reflect_dom_object<T: Reflectable> #[deriving(Eq)] pub struct Reflector { object: *JSObject, - force_box_layout: @int, } impl Reflector { @@ -455,7 +449,6 @@ impl Reflector { pub fn new() -> Reflector { Reflector { object: ptr::null(), - force_box_layout: @1, } } } @@ -651,8 +644,8 @@ pub fn global_object_for_js_object(obj: *JSObject) -> JS<window::Window> { let clasp = JS_GetClass(global); assert!(((*clasp).flags & (JSCLASS_IS_DOMJSCLASS | JSCLASS_IS_GLOBAL)) != 0); // FIXME(jdm): Either don't hardcode or sanity assert prototype stuff. - match unwrap_object::<*mut Box<window::Window>>(global, PrototypeList::id::Window, 1) { - Ok(win) => JS::from_box(win), + match unwrap_object::<*mut window::Window>(global, PrototypeList::id::Window, 1) { + Ok(win) => JS::from_raw(win), Err(_) => fail!("found DOM global that doesn't unwrap to Window"), } } diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs index df9e7107f3e..38d3f5f4baf 100644 --- a/src/components/script/dom/node.rs +++ b/src/components/script/dom/node.rs @@ -561,8 +561,8 @@ impl NodeHelpers for JS<Node> { if object.is_null() { fail!("Attempted to create a `JS<Node>` from an invalid pointer!") } - let boxed_node: *mut Box<Node> = utils::unwrap(object); - JS::from_box(boxed_node) + let boxed_node: *mut Node = utils::unwrap(object); + JS::from_raw(boxed_node) } } diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index f8291d3dbf0..9f6ed010609 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -521,6 +521,7 @@ pub fn parse_html(page: &Page, } } + debug!("finished parsing"); css_chan.send(CSSTaskExit); js_chan.send(JSTaskExit); diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs index 0e002f4c068..5e38a8a79c7 100644 --- a/src/components/script/script_task.rs +++ b/src/components/script/script_task.rs @@ -655,7 +655,7 @@ impl ScriptTask { let this_value = if timer_data.args.len() > 0 { fail!("NYI") } else { - js_info.get().get_ref().js_compartment.borrow().global_obj.borrow().ptr + js_info.get().get_ref().js_compartment.borrow().global_obj }; // TODO: Support extra arguments. This requires passing a `*JSVal` array as `argv`. @@ -880,7 +880,7 @@ impl ScriptTask { let (cx, global_obj) = { let js_info = page.js_info(); (js_info.get().get_ref().js_context.clone(), - js_info.get().get_ref().js_compartment.borrow().global_obj.clone()) + js_info.get().get_ref().js_compartment.borrow().global_obj) }; cx.borrow().evaluate_script(global_obj, file.data.clone(), diff --git a/src/support/spidermonkey/rust-mozjs b/src/support/spidermonkey/rust-mozjs -Subproject ed44fea3c91cd664cde0ea672309ca460e32cc5 +Subproject b6981797b0177de75fa003e8921912f7e42ead9 |