Commit graph

54 commits

Author SHA1 Message Date
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
Ms2ger
d575345fb2 servo: Merge #4750 - Don't shadow lifetimes in script (from Ms2ger:shadowing); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 4a3e4032fe9ce33d52f36d77fc388b38de214fdf
2015-01-28 06:09:51 -07:00
Manish Goregaokar
0baa68ddf8 servo: Merge #4739 - Fix some warnings (from Manishearth:warning-patrol); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: d373f8dc26239310dec8d2fd66ed72385548cf6f
2015-01-28 02:27:50 -07:00
Ms2ger
96aa650091 servo: Merge #4717 - Document proxyhandler.rs, and related changes (from Ms2ger:doc-proxy); r=saneyuki
Source-Repo: https://github.com/servo/servo
Source-Revision: 1a2a08aa501dd0da8bcdf362b55acb31093f5c9c
2015-01-28 01:48:52 -07:00
Josh Matthews
78741af324 servo: Merge #4719 - Update rustc to 00b112c45a604fa6f4b59af2a40c9deeadfdb7c6/rustc-1.0.0-dev (from servo:rustup_20150109); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 3f9012864a2cd927cf17a8e11dfa6922add1b7df
2015-01-27 18:15:50 -07:00
Ms2ger
9b3f8fdb5e servo: Merge #4713 - Return *const T from JS::unsafe_get() (fixes #4712) (from Ms2ger:unsafe_get-const); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: ff8cbff81016c157373c1675f3eee69dd70ae544
2015-01-24 08:48:48 -07:00
Ms2ger
d01d9349ee servo: Merge #4711 - Don't call transmute_copy in JS::unsafe_get (from Ms2ger:transmute); r=jdm
It hasn't had borrow flags for quite a while.

Source-Repo: https://github.com/servo/servo
Source-Revision: 4c9d7ce5d071efe1ffac9f2fbb2b08bca2ca7158
2015-01-24 08:03:47 -07:00
Ms2ger
7363fc6372 servo: Merge #4708 - Prepare for the rust upgrade (from Ms2ger:rustup-prepare); r=SimonSapin
Source-Repo: https://github.com/servo/servo
Source-Revision: 55fbf1f2b6924c50cff6e4ddf359289654f4858a
2015-01-22 08:06:50 -07:00
Ms2ger
003cea7472 servo: Merge #4674 - Document js.rs (from Ms2ger:doc-js); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 2629445748b047434db01bee15273576e229d802
2015-01-20 04:13:01 -07:00
Matthew Rasmus
66118e1666 servo: Merge #4575 - Post-rustup warning fixes (from mttr:warnings); r=jdm
Notes:

* This adds `#![allow(missing_copy_implementations)]` to components/*/lib.rs. I'm not sure how to approach the missing Copy warnings (are there things for which Copy should NOT be implemented, and how can I tell?) so I stuck this in to make life easier when looking through the warnings. I can easily remove this if necessary.
* This leaves the following type of warnings, which I couldn't figure out how to approach (I'll investigate it later if no one else wants to).
```
css/matching.rs:72:23: 72:35 warning: use of deprecated item: Use overloaded core::cmp::PartialEq, #[warn(deprecated)] on by default
css/matching.rs:72         this_as_query.equiv(other)
                                         ^~~~~~~~~~~~
css/matching.rs:95:10: 95:49 warning: use of deprecated item: Use overloaded core::cmp::PartialEq, #[warn(deprecated)] on by default
css/matching.rs:95 impl<'a> Equiv<ApplicableDeclarationsCacheEntry> for ApplicableDeclarationsCacheQuery<'a> {
```

Source-Repo: https://github.com/servo/servo
Source-Revision: 0793137631cbe4ebbff8fb85639206ce8e41bbb7
2015-01-08 16:03:55 -07:00
Ms2ger
e5578c14fd servo: Merge #4554 - Update rustc to revision 2cfb5acb5a2751c759627377e602bac4f88f2d19 (from servo:rustup_20141221); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 1d7148c79f9124779a910fd5291c5fa0543b2dae
2015-01-08 08:00:57 -07:00
Ms2ger
3d0a04c20a servo: Merge #4526 - Move away from Root::deref (from servo:deref-1); r=Manishearth
This is a start towards fixing #3868. Not all callers have been fixed yet, so the `Deref` implementation remains for now.

Source-Repo: https://github.com/servo/servo
Source-Revision: 141b5d038fad3c0c44a6f1b309b8ca9edea54580
2015-01-02 09:22:51 -07:00
Josh Matthews
3df7a65e2a servo: Merge #4057 - Enable refcounting arbitrary DOM types (from jdm:refcountdom); r=Ms2ger
This replaces the specialized TrustedXHRAddress and TrustedWorkerAddress code that was used for the same purpose. A non-zero refcount pins the given DOM object's reflector and prevents it from being GCed even when there are no other outstanding references visible to SpiderMonkey. This will enable us to implement asynchronous operations that refer to particular DOM objects (such as "queue a task to fire a simple event named load at the iframe element" from the spec) safely and conveniently, and paves the way for things like asynchronous network responses.

Some concerns about the resulting size of XHR progress messages have been expressed, but I believe optimizations to reduce that can be implemented in subsequent PRs.

r? @Ms2ger - note in particular the changes to the worker lifetime code. I couldn't figure out how to achieve an identical lifetime to the previous addref/release pairing, and I also was having trouble figuring out why the existing setup was safe. The new implementation now holds the main script task Worker object alive via the TrustedWorkerAddress field in the dedicated worker global scope, which is a significant difference.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2c259f477c41331e66beab8bda865971982a1ff4
2014-12-29 11:57:45 -07:00
Josh Matthews
5be4e8a1fb servo: Merge #4401 - Create a replacement for Cell<SM primitive>. Fixes #4337 (from jdm:heapsm2); r=Manishearth
We still will need a lint to ban any further uses, but that can be a followup.

Source-Repo: https://github.com/servo/servo
Source-Revision: c17d5330af88eb919195ac39d7795548f6683541
2014-12-19 09:18:46 -07:00
Manish Goregaokar
895099501f servo: Merge #4002 - Implement framework for element activation (fixes #3999) (from Manishearth:activation); r=jdm
Still need to impl `Activatable` on all activatable elements. I'll probably push those changes to this PR, however they can be made separately as well.

Source-Repo: https://github.com/servo/servo
Source-Revision: 19c69b1625dda46d3c5501292e7e2d0328e400b4
2014-12-06 03:55:04 -07:00
Ms2ger
7b333b9954 servo: Merge #4245 - Introduce MutNullableJS::or_init (from Ms2ger:lazy-getters); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: 66d4acef8d591b5516d99cb4c7dd9e379242b928
2014-12-05 03:46:07 -07:00
Glenn Watson
22c4035692 servo: Merge #3948 - Rust upgrade to rustc hash b03a2755193cd756583bcf5831cf4545d75ecb8a (from servo:rustup-20141105_2); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: c5e1b0d32e17fad29799023c85e2e73ac89c3af7
2014-11-12 20:48:31 -07:00
Patrick Walton
0856071fc3 servo: Merge #3835 - script: Implement various microoptimizations (from pcwalton:script-microoptzns); r=Ms2ger
This is a grab bag of various microoptimizations for script that I came across when profiling our performance on RoboHornet.

r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 69f8b46f362a828ffaefe9623355bc1ad76dc5e0
2014-11-03 15:48:34 -07:00
Josh Matthews
179c7b7dcc servo: Merge #3531 - Implement MutNullableJS for mutable, nullable member pointers to DOM objects (from Ms2ger:MutNullableJS); r=Ms2ger
Extracted from #3527.

Source-Repo: https://github.com/servo/servo
Source-Revision: bae5440689c67f425f94ec27bf0f61ff955dc290
2014-10-01 09:09:28 -06:00
Cameron Zwarich
27470f19ae servo: Merge #3497 - Add an extended_deref method to JSRef (from zwarich:extended-deref)
Reviewed-by: Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: c10948736f1f7a8e6d6dcb1987a92818fb1f4003
2014-09-27 12:48:30 -06:00
Cameron Zwarich
64b691ae3c servo: Merge #3493 - Improve the correctness of Root lifetimes (from zwarich:root-lifetimes)
Reviewed-by: jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 86eec63a02161de84f2404ff2292d3a8d1273784
2014-09-26 19:57:33 -06:00