Commit graph

150 commits

Author SHA1 Message Date
Anthony Ramine
13ea3ac413 Introduce trait Castable
This trait is used to hold onto the downcast and upcast functions of all
castable IDL interfaces. A castable IDL interface is one which either derives
from or is derived by other interfaces.

The deriving relation is represented by implementations of marker trait
DerivedFrom<T: Castable> generated in InheritTypes.

/^[ ]*use dom::bindings::codegen::InheritTypes::.*(Base|Cast|Derived)/ {
    /::[a-zA-Z]+(Base|Cast|Derived);/d
    s/([{ ])[a-zA-Z]+(Base|Cast|Derived), /\1/g
    s/([{ ])[a-zA-Z]+(Base|Cast|Derived), /\1/g
    s/, [a-zA-Z]+(Base|Cast|Derived)([},])/\2/g
    s/, [a-zA-Z]+(Base|Cast|Derived)([},])/\2/g
    /\{([a-zA-Z]+(Base|Cast|Derived))?\};$/d
    s/\{([a-zA-Z_]+)\};$/\1;/
}

s/([a-zA-Z]+)Cast::from_ref\(\&?\**([a-zA-Z_]+)(\.r\(\))?\)/\2.upcast::<\1>()/g
s/([a-zA-Z]+)Cast::from_ref\(\&?\**([a-zA-Z_]+)(\.[a-zA-Z_]+\(\))?\)/\2\3.upcast::<\1>()/g
s/\(([a-zA-Z]+)Cast::from_ref\)/\(Castable::upcast::<\1>\)/g

s/([a-zA-Z]+)Cast::from_root/Root::upcast::<\1>/g

s/([a-zA-Z]+)Cast::from_layout_js\(\&([a-zA-Z_.]+)\)/\2.upcast::<\1>()/g

s/([a-zA-Z]+)Cast::to_ref\(\&?\**([a-zA-Z_]+)(\.r\(\))?\)/\2.downcast::<\1>()/g
s/([a-zA-Z]+)Cast::to_ref\(\&?\**([a-zA-Z_]+)(\.[a-zA-Z_]+\(\))?\)/\2\3.downcast::<\1>()/g
s/\(([a-zA-Z]+)Cast::to_ref\)/\(Castable::downcast::<\1>\)/g

s/([a-zA-Z]+)Cast::to_root/Root::downcast::<\1>/g

s/([a-zA-Z]+)Cast::to_layout_js\(&?([a-zA-Z_.]+(\(\))?)\)/\2.downcast::<\1>()/g

s/\.is_document\(\)/.is::<Document>()/g
s/\.is_htmlanchorelement\(\)/.is::<HTMLAnchorElement>()/g
s/\.is_htmlappletelement\(\)/.is::<HTMLAppletElement>()/g
s/\.is_htmlareaelement\(\)/.is::<HTMLAreaElement>()/g
s/\.is_htmlbodyelement\(\)/.is::<HTMLBodyElement>()/g
s/\.is_htmlembedelement\(\)/.is::<HTMLEmbedElement>()/g
s/\.is_htmlfieldsetelement\(\)/.is::<HTMLFieldSetElement>()/g
s/\.is_htmlformelement\(\)/.is::<HTMLFormElement>()/g
s/\.is_htmlframesetelement\(\)/.is::<HTMLFrameSetElement>()/g
s/\.is_htmlhtmlelement\(\)/.is::<HTMLHtmlElement>()/g
s/\.is_htmlimageelement\(\)/.is::<HTMLImageElement>()/g
s/\.is_htmllegendelement\(\)/.is::<HTMLLegendElement>()/g
s/\.is_htmloptgroupelement\(\)/.is::<HTMLOptGroupElement>()/g
s/\.is_htmloptionelement\(\)/.is::<HTMLOptionElement>()/g
s/\.is_htmlscriptelement\(\)/.is::<HTMLScriptElement>()/g
s/\.is_htmltabledatacellelement\(\)/.is::<HTMLTableDataCellElement>()/g
s/\.is_htmltableheadercellelement\(\)/.is::<HTMLTableHeaderCellElement>()/g
s/\.is_htmltablerowelement\(\)/.is::<HTMLTableRowElement>()/g
s/\.is_htmltablesectionelement\(\)/.is::<HTMLTableSectionElement>()/g
s/\.is_htmltitleelement\(\)/.is::<HTMLTitleElement>()/g
2015-10-21 11:37:16 +02:00
Rohan Prinja
ab70c8c942 implement PartialEq for MutHeap<JS<T>> and MutNullableHeap<JS<T>> 2015-10-21 01:40:19 +09:00
Anthony Ramine
6c7f37061b Implement Deref<Target=T> for JS<T> where T: Reflectable
We can only borrow JS<T> from rooted things, so it's safe to deref it.
The only types that provide mutable JS<T> things are MutHeap<JS<T>> and
MutNullableHeap<JS<T>>, which don't actually expose that they contain
JS<T> values.
2015-10-17 01:58:52 +02:00
Eli Friedman
5713867778 Fix documentation for JS<T> and friends. 2015-10-15 14:03:57 -07:00
Eli Friedman
5bdf6bb1d3 Fix remaining MutHeap methods not to expose JS<T>. 2015-10-15 14:03:57 -07:00
Eli Friedman
57584e74c6 Make get() and set() on MutNullableHeap use the correct types.
get() must always return a rooted value, because we have no way of
ensuring the value won't be invalidated. set() takes an &T because it's
convenient; there isn't any need to expose JS<T>.
2015-10-15 14:03:56 -07:00
Eli Friedman
88a1cbb28b Stop implementing Copy for JS<T>.
A copy of a JS<T> doesn't have the rooting properties of the original,
so it makes no sense for it to implement Copy.
2015-10-15 14:02:45 -07:00
Manish Goregaokar
8819f0d8b8 Update script to work with lint changes 2015-10-16 01:20:27 +05:30
Ravi Shankar
889eec364b sorted the extern crate, mod & use declarations 2015-09-24 02:12:45 +05:30
Brandon Fairchild
de3547e401 Fix reported test-tidy errors for unmerged import blocks
This merges import blocks that were reported by tidy as unmerged.
2015-09-19 12:50:14 -04:00
Ms2ger
3781567c19 Stop implementing Reflectable for JS<T> (fixes #2285).
It's not generally safe to expose the contents of a JS<T>.
2015-09-13 16:47:12 +02:00
Manish Goregaokar
54c036cd66 Elide most 'a lifetimes 2015-09-04 08:55:51 +05:30
bors-servo
532fd19d69 Auto merge of #7361 - jxs:master, r=Ms2ger
make dom_struct derive HeapSizeOf

closes #7357

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7361)
<!-- Reviewable:end -->
2015-08-27 02:35:45 -06:00
João Oliveira
8d86f89f63 Remove get_unsound_ref_forever function
closes #7383
2015-08-27 01:36:43 +01:00
João Oliveira
fd87c8cb3e make dom_struct derive HeapSizeOf,
closes #7357
2015-08-27 01:17:48 +01:00
Josh Matthews
8bb853f643 Fix existing syntactics nits. 2015-08-16 10:30:43 -04:00
João Oliveira
0038580abf Replace uses of for foo in bar.iter() and for foo in bar.iter_mut()
closes #7197
2015-08-15 02:27:39 +01:00
Bogdan Cuza
45145108da Measure heap memory usage for more types. Fixes #6951 2015-08-13 21:44:41 +03:00
Josh Matthews
8620fe5995 Start reporting memory usage for Window and all nodes in all DOM trees for frame treese in script tasks. 2015-08-03 23:05:00 -04:00
Manish Goregaokar
521d8bc32e Make enum/fn part of unrooted_must_root handle type parameters 2015-07-22 10:44:26 +05:30
Manish Goregaokar
511e3337fb Fix rooting in script 2015-07-22 00:00:15 +05:30
Manish Goregaokar
f6f0a7e4aa Make stmt part of unrooted_must_root handle type parameters (fixes #6651) 2015-07-22 00:00:14 +05:30
David Winslow
4cf46bff2d Refactor #[jstraceable] to #[derive(JSTraceable)]
fixes #6524
2015-07-01 18:27:06 -04:00
Michael Wu
b7301ca06c Fix some warnings caused by the SM upgrade 2015-06-19 22:07:08 -04:00
Michael Wu
675267b782 Upgrade to SM 39 2015-06-19 18:42:48 -04:00
Simon Sapin
ef8edd4e87 Upgrade to rustc 551a74dddd84cf01440ee84148ebd18bc68bd7c8. 2015-05-05 10:07:34 -04:00
Ms2ger
b59f54ce81 Add a Reflectable bound to Root's type parameter. 2015-05-01 21:19:37 +02:00
Ms2ger
903305416a Implement Clone for Copy types. 2015-04-28 23:31:10 +02:00
Anthony Ramine
1a30925cad Remove Temporary::new()
Temporary::from_rooted() now takes an Assignable value.
2015-04-28 09:22:46 +02:00
Anthony Ramine
2770886196 Remove unrooted() methods 2015-04-28 09:22:45 +02:00
Anthony Ramine
af21229c0e Remove the Comparable trait 2015-04-28 09:22:45 +02:00
Anthony Ramine
7197052c0d Uniformise root() methods
They now live in traits Rootable, OptionalOptionalRootable, OptionalRootable
and ResultRootable.
2015-04-28 09:22:45 +02:00
Manish Goregaokar
369a568264 Make RootedVec/RootCollection #[no_move]; improve code (fixes #5737) 2015-04-28 04:35:58 +05:30
Manish Goregaokar
63714ebc5f Add the rust-tenacious move-protection lint, use it for Root<T> (fixes #5724) 2015-04-28 04:20:40 +05:30
Anthony Ramine
afafde5191 Change MutNullableJS<T> to MutNullableHeap<JS<T>> 2015-04-27 10:45:38 +02:00
Anthony Ramine
4e7b9d319c Remove useless unsafe methods on LayoutJS<T> 2015-04-26 21:39:11 +02:00
Anthony Ramine
9369b616ce Remove useless unsafe methods on JS<T> 2015-04-26 21:39:09 +02:00
bors-servo
2089c1f285 Auto merge of #5550 - aneeshusa:fix-issue-5540, r=jdm
Fixes issue #5540.

As far as I can tell this is all that's necessary, but I'm new to Rust, so let me know if I missed something!
2015-04-07 23:04:12 -05:00
Aneesh Agrawal
04468a53df Don't consume self when calling root on a Temporary<T>.
Fixes issue #5540.
2015-04-06 18:57:06 -04:00
Jag Talon
6e013d3c9c RootCollection: Start using RootedVec instead of SmallVec32.
dom/bindings/js.rs: Alphabetize `use`.

dom/bindings/js.rs: moved `unsafe` block to a let binding.

dom/bindings/trace.rs: rename alternate constructor of RootedVec.

dom/bindings/trace.rs: `new()` is now using `new_with_destination_address()` internally.

dom/bindings/js.rs: alphabetize imports.
2015-04-06 16:36:10 -04:00
bors-servo
85808c1cdd auto merge of #5425 : pcwalton/servo/optimize-rooting, r=Ms2ger
This was showing up very high in instruction-level profiling.

r? @jdm
2015-04-02 10:51:40 -06:00
Patrick Walton
d1c13faf4b script: Optimize JS rooting to not move the entire Root struct from
the stack to the return out-pointer.

This was showing up very high in instruction-level profiling.
2015-04-02 09:03:45 -07:00
Ms2ger
bc8ed81dc1 Use a larger small vector. 2015-04-02 09:47:30 +02:00
bors-servo
52cc63a262 auto merge of #5166 : JIoJIaJIu/servo/gc, r=jdm 2015-03-31 09:24:58 -06:00
Josh Matthews
48b151948f Fix double-panic when the script task panics. 2015-03-23 19:19:18 +01:00
Ms2ger
5f15eb5fbf Upgrade rustc to d3c49d2140fc65e8bb7d7cf25bfe74dda6ce5ecf/rustc-1.0.0-dev. 2015-03-18 13:18:31 -04:00
Guro Bokum
8de3c01fe4 RootCollection doesn't check if its SmallVec has spilled #5037 2015-03-13 15:43:11 +07:00
Keith Yeung
a07a0cf39f Added type parameter to PartialEq on JSRef (fixes #5112, #3960) 2015-03-03 11:46:13 +08:00
Ms2ger
601e80fa43 Simplify RootCollection::unroot a bit. 2015-02-23 22:46:41 +01:00
Ms2ger
6d30ec77c8 Replace uint/int by usize/isize in various places. 2015-02-20 14:45:47 +01:00