Commit graph

74 commits

Author SHA1 Message Date
rohan.prinja
258086b9fa servo: Merge #8250 - remove get_rooted() and replace all references to it with references … (from ajnirp:8246-remove-get-rooted); r=Ms2ger
…to get()

for #8246

Source-Repo: https://github.com/servo/servo
Source-Revision: 00b60b93860d32e1c5aaf0f9b4a2ce5110880652
2015-10-30 06:08:44 +05:01
Ms2ger
17fbd59d9a servo: Merge #8247 - Add thread assertions to js.rs (from Ms2ger:assert); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 430578355b75a3d58bec48b865cccbcf7eb8c990
2015-10-29 16:39:50 +05:01
Bobby Holley
b3fb877c87 servo: Merge #8098 - Track event state changes on Document and do the dirtying from layout (from bholley:dirty_from_layout); r=jdm
This is a first step in fixing #6942.

Source-Repo: https://github.com/servo/servo
Source-Revision: 285e29c06637f31a8b8a27c2e454468717924ebd
2015-10-28 23:55:53 +05:01
Rohan Prinja
d6cfa43728 servo: Merge #8097 - implement PartialEq for MutHeap<JS<T>> and MutNullableHeap<JS<T>> (from ajnirp:8090-partialeq-for-mutheap); r=nox
for #8090

Source-Repo: https://github.com/servo/servo
Source-Revision: 6b95c3957b32db1f7a25738229381e046e9be6e7
2015-10-26 06:08:01 -05:00
Eli Friedman
362ec775db servo: Merge #8073 - Make unrooted_must_root a bit more aggressive (from eefriedman:root-lint); r=Manishearth
Basically, instead of trying to check for specific kinds of statements,
just check the types of all local variables.

Also included are some commented-out proposals for some slightly more
aggressive lints which might be useful (but trigger a little too
frequently at the moment).

Source-Repo: https://github.com/servo/servo
Source-Revision: bb88832c078fbb14fa03c413fac1252b2b755015
2015-10-24 20:20:04 -05:00
Matt Brubeck
fe4642d13b servo: Merge #8136 - Fix type in MutHeap docs (from mbrubeck:typo); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: f9e17d33bb3cd5cfe103bb1631f390123bcddc04
2015-10-21 14:15:28 -06:00
Anthony Ramine
bb8125a3da servo: Merge #8041 - Introduce trait Castable (from nox:castable); r=jdm
Removes all those messy FooCast structures in InheritTypes.rs.

Source-Repo: https://github.com/servo/servo
Source-Revision: 674589c370d978f543e71f995d58c5b28e6e9842
2015-10-21 07:57:32 -06:00
Ms2ger
14c56e26ce servo: Merge #8124 - Remove unused JS::assign (from Ms2ger:js-assign); r=saneyuki
Source-Repo: https://github.com/servo/servo
Source-Revision: 20ea0f4755d2249a6abf9a4ade9d3df753f23bcf
2015-10-21 05:15:15 -06:00
Anthony Ramine
1c1210fbba servo: Merge #8060 - Implement Deref<Target=T> for JS<T> where T: Reflectable (from nox:deref-js); r=Ms2ger
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.

Source-Repo: https://github.com/servo/servo
Source-Revision: 1a376aa75d5de8781b17a673850860f8afd2c28f
2015-10-19 06:32:05 -06:00
Eli Friedman
7cf10cb041 servo: Merge #8026 - Fix uses of JS<T> as a type on the stack (from eefriedman:js-rooting); r=nox
`JS<T>` belongs on the heap, and only on the heap.  This is a collection of fixes so that code uses either `Root<T>` or `&T` to pass around garbage-collected pointers.

Ideally, we could completely ban constructing a `JS<T>` outside of constructor functions, but we aren't quite there yet.

Source-Repo: https://github.com/servo/servo
Source-Revision: 7c7dbde0f4372037aac3635b8d81531ca9cdced3
2015-10-16 08:05:59 -06:00
Manish Goregaokar
64fbfa46fb servo: Merge #8030 - Fix unrooted_must_root lint to handle arguments/return types properly (from Manishearth:fix-lint-fn); r=frewsxcv
r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 9d5f09e09c64d878e6c2bb273195c3c6ca9fe82c
2015-10-15 15:00:00 -06:00
Ravi Shankar
7d512d50d1 servo: Merge #7698 - sorted the declarations in various files (from Wafflespeanut:sorting); r=frewsxcv
This is a direct extract from my abandoned PR for a lint (#7546), along with some rather clumsy modifications (only on `components/script/dom/mod.rs` and `components/style/lib.rs`), because I had to sort some of the files again to make peace with tidy, which hasn't been educated about sorting yet!

Source-Repo: https://github.com/servo/servo
Source-Revision: a7208869f2903e36f9b2f540b55b50283d7df466
2015-09-23 15:02:56 -06:00
Brandon Fairchild
f7fb1e4b4a servo: Merge #7662 - Check for multiple import blocks separated by whitespace (from nerith:import); r=frewsxcv
Fixes #7381.

Source-Repo: https://github.com/servo/servo
Source-Revision: a0d3c9223f09757124b1520c4f17e94fa8bbe249
2015-09-19 13:34:51 -06:00
Ms2ger
788c16881b servo: Merge #7616 - Stop implementing Reflectable for JS<T> (from Ms2ger:js-reflector); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: e10c5c74cc48a203aaeb7da3fd51b062c1311eac
2015-09-13 09:20:25 -06:00
Manish Goregaokar
cf0446c9f9 servo: Merge #7536 - More clippy fixes (from Manishearth:clippyfix); r=Ms2ger
Elided almost all the lifetimes and removed needless returns. Mostly done by sed + manual fixes.

r? @nox

Source-Repo: https://github.com/servo/servo
Source-Revision: c2c2646d37614ece5869af861993c3d619f6e003
2015-09-04 07:59:04 -06:00
João Oliveira
d39bd47b08 servo: Merge #7361 - make dom_struct derive HeapSizeOf (from jxs:master); r=Ms2ger
closes #7357

Source-Repo: https://github.com/servo/servo
Source-Revision: 532fd19d69fd11d06bca7539c722a46fab2c4419
2015-08-27 02:35:45 -06:00
João Oliveira
d5f3a6c35b servo: Merge #7403 - Remove get_unsound_ref_forever function (from jxs:delete_get_unsound_ref_forever); r=nox
closes #7383

Source-Repo: https://github.com/servo/servo
Source-Revision: 7a6d8a30d316fb65c2c846d3d6d0d5e33b29bc5c
2015-08-26 18:37:58 -06:00
Josh Matthews
6a81d499fc servo: Merge #7203 - Add automated style nit checks to test-tidy (from jdm:style); r=Ms2ger
Expands on the work by @wilmoz and cleans up the existing errors. Closes #7180. Closes #7111.

Source-Repo: https://github.com/servo/servo
Source-Revision: e74825f9fde8e222f4ba9bb24b2c2a3864c73e5f
2015-08-16 08:37:40 -06:00
João Oliveira
8410286b02 servo: Merge #7225 - Replace uses of for foo in bar.iter() and for foo in bar.iter_mut() (from jxs:master); r=nox
closes #7197

Source-Repo: https://github.com/servo/servo
Source-Revision: a1b3f477aa541fda4d1b6ccb02c3e56143f4d217
2015-08-15 03:03:21 -06:00
Bogdan Cuza
b3e4dcef5f servo: Merge #7097 - Measure heap memory usage for more types. Fixes #6951 (from boghison:memtypes); r=jdm
Also adds HeapSizeOf implementations/derive for some types. I've used "Cannot calculate Heap size" as a reason everywhere, because my imagination is rather limited. If you'd like me to change this message for specific types, please write something like this: "Trusted - Cannot calculate Heap size for Trusted" so that it would be easier for me to replace them through a script :)

Source-Repo: https://github.com/servo/servo
Source-Revision: a03616f379c255cc6c9b6e1d04dd7d98bd9926ce
2015-08-13 13:16:14 -06:00
Josh Matthews
2f1aaef81d servo: Merge #6874 - Start reporting memory usage for Window and all nodes in all DOM tree… (from jdm:domreporting); r=njn
…s for frame treese in script tasks.

This underreports by a significant amount, since only Document, Window and CharacterData (ie. text) nodes are fully represented. That being said, every HTML element in the tree is measured, but only counted as a Node. It's easy to improve this, it just requires adding the appropriate HeapSizeOf derives and increasing the granularity of `measure_memory_for_eventtarget`. google.com shows a dom-tree value of 0.24 MB for me at the moment.

r? @nnethercote

Source-Repo: https://github.com/servo/servo
Source-Revision: 84e25befdd97cf74fb00707dbe150d59d980e977
2015-08-03 21:24:41 -06:00
Manish Goregaokar
d990887177 servo: Merge #6688 - Handle type parameters in unused_must_root (from Manishearth:smarter-root-lint); r=jdm
fixes #6651

Source-Repo: https://github.com/servo/servo
Source-Revision: 8a6681ba70c4e8dc524aff7b8fbc3c71167e8745
2015-07-22 07:05:31 -06:00
David Winslow
b9c1f245a1 servo: Merge #6529 - Refactor #[jstraceable] to #[derive(JSTraceable)] (from dwins:master); r=Manishearth
fixes #6524.  I had to make an additional change not mentioned in the ticket - adding the `#[feature]` to enable deriving custom traits but I assume that's expected at this time.

Source-Repo: https://github.com/servo/servo
Source-Revision: bbb39082e0f640400546d2084a450a8675820a82
2015-07-01 18:27:40 -06:00
Michael Wu
6a46bbff4b servo: Merge #6433 - Fix some warnings caused by the SM upgrade (from michaelwu:fix-smup-warnings); r=metajack
Source-Repo: https://github.com/servo/servo
Source-Revision: 72ead882c08fbd66d59457efd1ebf86ee4ee97f2
2015-06-19 20:56:29 -06:00
Michael Wu
7512d04e93 servo: Merge #6150 - Upgrade to Spidermonkey 39 (from servo:smupgrade3); r=mbrubeck
> Here it is.
>
> ~~There's two major things that are unfinished here:~~
> - ~~Dealing with the unroot_must_root lint. I'm not sure about the value of this lint with the new rooting API.~~ Done.
> - ~~Updating the Cargo.locks to point to the new SM and SM binding.~~ Done.
>
> I also included my fixes for the rust update, but these will disappear in a rebase. A rust update is necessary to support calling `Drop` on `Heap<T>` correctly when `Heap<T>` is inside a `Rc<T>`. Otherwise `&self` points to the wrong location.
>
> Incremental GC is disabled here. I'm not sure how to deal with the incremental barriers so that's left for later.
>
> Generational GC works. SM doesn't work without it.
>
> The biggest change here is to the rooting API. `Root` was made movable, and `Temporary` and `JSRef` was removed. Movable `Root`s means there's no need for `Temporary`, and `JSRef`s aren't needed generally since it can be assumed that being able to obtain a reference to a dom object means it's already rooted. References have their lifetime bound to the Roots that provided them. DOM objects that haven't passed through `reflect_dom_object` don't need to be rooted, and DOM objects that have passed through `reflect_dom_object` can't be obtained without being rooted through `native_from_reflector_jsmanaged` or `JS::<T>::root()`.
>
> Support for `Heap<T>` ended up messier than I expected. It's split into two commits, but only because it's a bit difficult to fold them together. Supporting `Heap<T>` properly requires that that `Heap::<T>::set()` be called on something that won't move. I removed the Copy and Clone trait from `Heap<T>` so `Cell` can't hold `Heap<T>` - only `UnsafeCell` can hold it.
>
> `CallbackObject` is a bit tricky - I moved all callbacks into `Rc<T>` in order to make sure that the pointer inside to a `*mut JSObject` doesn't move. This is necessary for supporting `Heap<T>`.
>
> `RootedCollectionSet` is very general purpose now. Anything with `JSTraceable` can be rooted by `RootedCollectionSet`/`RootedTraceable`. Right now, `RootedTraceable` is only used to hold down dom objects before they're fully attached to their reflector. I had to make a custom mechanism to dispatch the trace call - couldn't figure out how to get trait objects working for this case.
>
> This has been tested with the following zeal settings:
>
> GC after every allocation
> JS_GC_ZEAL=2,1
>
> GC after every 100 allocations (important for catching use-after-free bugs)
> JS_GC_ZEAL=2,100
>
> Verify pre barriers
> JS_GC_ZEAL=4,1
>
> Verify post barriers
> JS_GC_ZEAL=11,1

Source-Repo: https://github.com/servo/servo
Source-Revision: e7808c526c348fea5e3b48af70b7f1a066652097
2015-06-19 16:46:55 -06:00
Simon Sapin
95c8716656 servo: Merge #5935 - Upgrade Rust (from servo:rustup_2015-04-25); r=Ms2ger
r? everybody

Source-Repo: https://github.com/servo/servo
Source-Revision: 49aed6555dbc008c1a378c5cbb303f5467232b6b
2015-05-05 09:11:30 -05:00
Ms2ger
bd8631ac9a servo: Merge #5916 - Prepare for the rustup (from servo:prepare-rustup); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 2f0b805fad2419518f0d80e90cf322fbd507a916
2015-05-01 14:44:19 -05:00
Ms2ger
33e1b9c8ab servo: Merge #5888 - Prepare for the rustup (from Ms2ger:prepare-rustup); r=SimonSapin
Source-Repo: https://github.com/servo/servo
Source-Revision: ab2d07db1fabd7ad9590aa7296038bbc91806c3f
2015-04-28 17:52:49 -05:00
Anthony Ramine
39e9571d13 servo: Merge #5871 - Cleanup JS traits and methods (from nox:rootable); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: b8ae33e510ea30e3200834fc2f7fbc426b86701e
2015-04-28 04:23:05 -05:00
Manish Goregaokar
e158f4fca9 servo: Merge #5855 - Add move protection to Root and friends (from Manishearth:nomove); r=kmc,munksgaard
fixes #5724, #5737


uses https://github.com/Manishearth/rust-tenacious (can be moved in-tree if needed)

I can make it `Deny` by default too (I'll add a cargo feature to tenacious), though we might want it on
`Warn` until we get some mileage on it.

Source-Repo: https://github.com/servo/servo
Source-Revision: d7987e43c944eb9b156bf3244c08fce4cb570db4
2015-04-27 23:14:25 -05:00
Anthony Ramine
293fcb77e2 servo: Merge #5862 - Change MutNullableJS<T> to MutNullableHeap<JS<T>> (from nox:mutnullableheap); r=jdm
This is useful for union types, in cases where we need MutNullableHeap&lt;NodeOrString&gt;.

Source-Repo: https://github.com/servo/servo
Source-Revision: b0ddd8149b04db6bceba0c0b8de852acc1086838
2015-04-27 03:50:08 -05:00
Anthony Ramine
d4b6a6316e servo: Merge #5852 - Remove unsafe transmute functions in JS and LayoutJS (from nox:rm-unsafe-transmute); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: 56a7981c9c9c6df30fbb3add3d8d0085916fe313
2015-04-26 14:40:31 -05:00
Aneesh Agrawal
18d9e6f48b servo: Merge #5550 - Don't consume self when calling root on a Temporary<T> (from 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!

Source-Repo: https://github.com/servo/servo
Source-Revision: 2089c1f285ae21789b9bff368154de3e7f49ffc7
2015-04-07 23:04:12 -05:00
Jag Talon
c1a292ae31 servo: Merge #5543 - RootCollection: Start using RootedVec instead of SmallVec32 (from jagtalon:jag/slashdot); r=jdm
Partially fixes #5504.

Props to @ehegnes and @jdm for the help!

Source-Repo: https://github.com/servo/servo
Source-Revision: 184d214e260213bafc5801af33f3031289da9361
2015-04-07 11:56:50 -05:00
Patrick Walton
f6c17e1bb2 servo: Merge #5425 - script: Optimize JS rooting to not move the entire Root struct from the stack to the return out-pointer (from pcwalton:optimize-rooting); r=Ms2ger
This was showing up very high in instruction-level profiling.

r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 85808c1cdd39a3afdc9815247ceb6f0fb7e9a31b
2015-04-02 10:51:40 -06:00
Ms2ger
7e83787b33 servo: Merge #5456 - Rewrite NodeChildrenIterator to return Temporary (from Ms2ger:children); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 88bc64444c99fc47febf8e99c0e19c6ae3500990
2015-04-02 05:15:38 -06:00
Guro Bokum
b937bffcbb servo: Merge #5166 - RootCollection doesn't check if its SmallVec has spilled #5037 (from JIoJIaJIu:gc); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 52cc63a2622a77ee317f1b320be8ae7e478b2a43
2015-03-31 09:24:58 -06:00
Josh Matthews
5b0eafa083 servo: Merge #5327 - Fix double-panic when the script task panics (from Ms2ger:memory-explosion); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: 5ce7d8accfc52dd37b19b4400a643a980412bb2f
2015-03-23 13:39:53 -06:00
Ms2ger
66cb126a50 servo: Merge #5256 - Upgrade rustc to d3c49d2140fc65e8bb7d7cf25bfe74dda6ce5ecf/rustc-1.0.0-de (from servo:rustup_20150311); r=jdm
...v.

Relies on:
* https://github.com/servo/rust-geom/pull/72
* https://github.com/servo/rust-glx/pull/10
* https://github.com/servo/gleam/pull/15
* https://github.com/servo/rust-mozjs/pull/137
* https://github.com/servo/rust-core-text/pull/35
* https://github.com/servo/rust-io-surface/pull/28

Source-Repo: https://github.com/servo/servo
Source-Revision: 99cf9dbfc107bacb84dfe5afa9539a0ede3beac2
2015-03-18 11:25:00 -06:00
Keith Yeung
31f44a00d3 servo: Merge #5127 - Added type parameter to PartialEq on JSRef (from KiChjang:partial-eq-jsref); r=Ms2ger
Fixes #5112, #3960

Source-Repo: https://github.com/servo/servo
Source-Revision: 67548a6244f0cf92f6b71507b69dceb2115d1aa2
2015-03-05 01:15:44 -07:00
Ms2ger
12dfb91106 servo: Merge #5040 - Simplify RootCollection::unroot a bit (from Ms2ger:cleanup-unroot); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 9a5970cceacb40a742a3f34292ad6bf5fa56c01f
2015-02-23 14:51:54 -07:00
Ms2ger
8fa61151a1 servo: Merge #4979 - Audit ints and uints in script (from Ms2ger:audit-ints); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: 276f74b1ddec9dfa4cb053eb0802f95bd5ed6b66
2015-02-20 07:09:54 -07:00
Ms2ger
c93c281532 servo: Merge #4908 - Remove some methods from js.rs (from Ms2ger:dead-code-js); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: b351b216c6ac5df1913ddd589d3300d7cd07ebb0
2015-02-12 13:21:47 -07:00
Ms2ger
0d1c95d2b5 servo: Merge #4885 - Update the documentation in js.rs (from Ms2ger:doc-js); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: 1b23c4fd579fc387f79b33989415174a2a821ec6
2015-02-10 06:45:47 -07:00
Ms2ger
200c888b80 servo: Merge #4836 - Implement an Unrooted smart pointer to replace JS when it is not traced (from Ms2ger:unrooted); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 7d32ece0bf3cdfbeb98e106ec6daca5a5f4385bc
2015-02-06 04:36:44 -07:00
Ms2ger
7f6a9f9591 servo: Merge #4850 - Remove the Deref implementation for Root (from Ms2ger:root-deref); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: d439c0d16d6ea1449d207858705d124e191ecc13
2015-02-05 10:51:50 -07:00
Ms2ger
819c89a677 servo: Merge #4818 - Use JS<Node> rather than TrustedNodeAddress in the HTML parser (from Ms2ger:tna-parser); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 45ebcf1df7b2b320502136731ae429eb5498fa43
2015-02-03 09:39:53 -07:00
Tetsuharu OHZEKI
39edf77177 servo: Merge #4613 - Stop using JS<T> in layout (from saneyuki:layoutjs); r=jdm
#4571

Source-Repo: https://github.com/servo/servo
Source-Revision: 462940fc2a2ba76794f37d9a6ac5af8da454aa66
2015-01-31 16:24:48 -07:00
Ms2ger
e968970a56 servo: Merge #4787 - Use NonZero to reduce the size of DOM smart pointers (from Ms2ger:NonZero); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 49dc60cac1ef014621379bedf1fb41aeac34820e
2015-01-30 14:42:52 -07:00
Ms2ger
3cee792603 servo: Merge #4766 - Import the util crate as util rather than servo_util (from Ms2ger:util); r=Manishearth
This used to conflict with the util crate from the standard library, which
has long since been removed.

The import in layout has not been changed because of a conflict with the
util mod there.

Source-Repo: https://github.com/servo/servo
Source-Revision: 27e0f16407629422b5e047e067d458142372c97e
2015-01-29 05:12:49 -07:00