Граф коммитов

404 Коммитов

Автор SHA1 Сообщение Дата
Chris Manchester 9c0704f0de Bug 1499196 - Always use the topobjdir to output rust library dependencies. r=ted,firefox-build-system-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D9039
2018-10-18 10:40:32 +00:00
Margareta Eliza Balazs 6f90611dce Backed out 4 changesets (bug 1499196) for regression author didn't respond on time, depends on 1501178, requested by igoldan. a=backout
Backed out changeset c43c91d2b97b (bug 1499196)
Backed out changeset caaad097961a (bug 1499196)
Backed out changeset 98fad0b05551 (bug 1499196)
Backed out changeset 470e06d78a7b (bug 1499196)
2018-10-29 10:30:22 +02:00
Chris Manchester 8c172cbba2 Bug 1499196 - Always use the topobjdir to output rust library dependencies. r=ted,firefox-build-system-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D9039

--HG--
extra : moz-landing-system : lando
2018-10-18 10:40:32 +00:00
Markus Stange b5d13857e4 Bug 1457481 - Add nsIProfiler.GetSymbolTable and a profiler/rust-helper crate which implements it for ELF binaries. r=njn,jrmuizel
r?njn for the profiler parts
r?jrmuizel for the ELF parsing parts

Depends on D7020

Differential Revision: https://phabricator.services.mozilla.com/D7021

--HG--
extra : moz-landing-system : lando
2018-10-02 01:50:02 +00:00
shindli 2cc7085b7a Backed out 4 changesets (bug 1457481) for c1 failures in devtools/client/performance-new/test/chrome/test_perf-settings-entries.html
Backed out changeset 212450f77860 (bug 1457481)
Backed out changeset ac3deff9340f (bug 1457481)
Backed out changeset 4478820fbcaa (bug 1457481)
Backed out changeset 1c8460b1d6da (bug 1457481)

--HG--
rename : third_party/rust/syn-0.14.6/src/parsers.rs => third_party/rust/syn/src/parsers.rs
rename : third_party/rust/syn-0.14.6/src/verbatim.rs => third_party/rust/syn/src/verbatim.rs
rename : third_party/rust/uuid-0.5.1/.travis.yml => third_party/rust/uuid/.travis.yml
rename : third_party/rust/uuid-0.5.1/src/rustc_serialize.rs => third_party/rust/uuid/src/rustc_serialize.rs
rename : third_party/rust/uuid-0.5.1/src/serde.rs => third_party/rust/uuid/src/serde.rs
2018-10-02 01:43:46 +03:00
Markus Stange 3965dd7110 Bug 1457481 - Add nsIProfiler.GetSymbolTable and a profiler/rust-helper crate which implements it for ELF binaries. r=njn,jrmuizel
r?njn for the profiler parts
r?jrmuizel for the ELF parsing parts

Depends on D7020

Differential Revision: https://phabricator.services.mozilla.com/D7021

--HG--
extra : moz-landing-system : lando
2018-10-01 20:16:07 +00:00
Benjamin Bouvier be8a563409 Bug 1490948: Add build system support for a Rust library in Spidermonkey; r=chmanchester
This introduces two new crates:
- jsrust, for standalone builds. This crate is compiled into a static library
  libjsrust.a, which gets linked into the shared Spidermonkey library when it's
  built, or into the static Spidermonkey library otherwise. This is just a
  static library wrapping jsrust_shared below.
- jsrust_shared, for Gecko embedding. It just references other Rust
  crates actively used in Spidermonkey. It is used to be embedded as part of
  a new Rust dependency in Gecko (in gkrust).

--HG--
rename : js/src/wasm/cranelift/Cargo.toml => js/src/rust/Cargo.toml
extra : rebase_source : 84e440e3f669b73776653182cb7b006cc7febb10
extra : histedit_source : 3a67575ff6871b7dc3558c10a0251b73cedb090c
2018-09-25 15:56:56 +02:00
Chris Manchester 0ba415cc98 Bug 1482299 - Replace libxul.mk with OBJDIR_PP_FILES. r=ted,firefox-build-system-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D3371

--HG--
extra : moz-landing-system : lando
2018-08-15 14:04:00 +00:00
Chris Manchester c346a68ae0 Bug 1474028 - Add a way to exclude libraries from the default build. r=ted
MozReview-Commit-ID: MVfplx9lN2

--HG--
extra : rebase_source : 10b4bd3dcc1386d782531206c84b66207297d00a
2018-08-10 12:07:29 -07:00
Narcis Beleuzu f4e5fb2d0f Backed out 2 changesets (bug 1474028) per chmanchester`s request. a=backout
Backed out changeset 52bd814d3589 (bug 1474028)
Backed out changeset 39a528147c34 (bug 1474028)
2018-08-12 21:22:45 +03:00
Chris Manchester 2476269229 Bug 1474028 - Add a way to exclude libraries from the default build. r=ted
MozReview-Commit-ID: MVfplx9lN2

--HG--
extra : rebase_source : 3eb5352b5bc0d1b9be857c16efa5af0313afb6e7
2018-08-10 12:07:29 -07:00
Chris Manchester 137ac2c7e2 Bug 1478499 - Move symbol version script generation for js shared library to moz.build. r=mshal
MozReview-Commit-ID: 7H287jfbrVF

--HG--
rename : toolkit/library/gen_symverscript.py => build/gen_symverscript.py
extra : rebase_source : b2015cac12daccc4368e263008620532d67ec4ec
2018-08-01 13:25:38 -07:00
Nicholas Nethercote e6f8df84ad Bug 1477622 - Add microbenchmarks measuring hash table performance. r=froydnj
--HG--
extra : rebase_source : 2d76bfcb862b3b690ea8db2b5b007dde2a90f914
2018-07-24 10:38:43 +10:00
Mike Hommey 72fd93fa0f Bug 1471096 - Choose OOM hooking version to use at build time rather than configure time. r=froydnj
When I originally implemented bug 1458161, this is how it was done, but
it was suggested to use a configure-time check. This turned out to not
be great, because the rust compiler changes regularly, and we don't run
the configure tests when the version changes. When people upgraded their
rust compiler to 1.27, the code subsequently failed to build because the
features were still set for the previous version they had installed.

--HG--
extra : rebase_source : 1b5f7a02ad8495d68cd29289f7beea59b8912183
2018-06-23 07:28:26 +09:00
Mike Hommey d0e5083a98 Bug 1465709 - Hook rust OOM handler on rustc 1.28. r=froydnj
Bug 1458161 added a rust OOM handler based on an unstable API that was
removed in 1.27, replaced with something that didn't allow to get the
failed allocation size.

Latest 1.28 nightly (2018-06-13) has
https://github.com/rust-lang/rust/pull/50880,
https://github.com/rust-lang/rust/pull/51264 and
https://github.com/rust-lang/rust/pull/51241 merged, which allow to
hook the OOM handler and get the failed allocation size again.

Because this is still an unstable API, we explicitly depend on strict
versions of rustc. We also explicitly error out if automation builds
end up using a rustc version that doesn't allow us to get the allocation
size for rust OOM, because we don't want that to happen without knowing.

--HG--
extra : rebase_source : 6c097151046d088cf51f4755dd69bde97bb8bd8b
2018-05-31 16:36:05 +09:00
Henri Sivonen e4805fd183 Bug 1466807 - Update encoding_rs to 0.8.0. r=emk
MozReview-Commit-ID: 30vmruy1kiL

--HG--
extra : rebase_source : 0e3e489fde0485919cd03529ba5d6d030863bfc1
2018-06-05 13:50:20 +03:00
Matthew Gregan c34ad7d35b Bug 1457359 - Update mp4parse and disable FallibleVec when jemalloc is disabled. r=glandium,jya
Update mp4parse-rust to 0c8e1d91464aaa63b82ebf076b63cda1df4230d1, which adds
uuid parsing support and exports the mp4parse_fallible feature from
mp4parse_capi.

Update gkrust to pass MOZ_MEMORY as a feature, and use that to conditionally
enable mp4parse_fallible/FallibleVec.

MozReview-Commit-ID: 2HDYbL2CGgJ

--HG--
extra : rebase_source : 6e8cf15241b0282406322cce29220a677edd1585
2018-05-10 12:11:51 +12:00
Mike Hommey ed54beeab0 Bug 1458161 - Hook rust OOM handler. r=froydnj
OOM rust crashes are currently not identified as such in crash reports
because rust libstd handles the OOMs and panics itself.

There are unstable ways to hook into this, which unfortunately are under
active changes in rust 1.27, but we're currently on 1.24 and 1.27 is not
released yet. The APIs didn't change between 1.24 and 1.26, so it's
fine-ish to use them as long as we limit their use to those versions.

As long as the Firefox versions we ship (as opposed to downstream) use
the "right" version of rust, we're good to go.

The APIs are in their phase of stabilization, so there shouldn't be too
many variants of the code to support.

--HG--
extra : rebase_source : 08a85aa102b24380b1f6764effffcc909ef3191b
2018-05-01 10:30:03 +09:00
Matt Brubeck be08cdcdc1 Bug 1381576 - Use a Cargo workspace for rust crates. r=ted
MozReview-Commit-ID: K6B9SifddXu

--HG--
extra : source : bbae7807c164273f6bb123d680a4fc31202d7a61
extra : amend_source : 53505e25f63a8eb228e62a0a9f3bd3ed98950296
extra : histedit_source : 597464181d4b79f5ac1a511d23e2a05aefb266da%2C63b89f3699e0e9598c8355e7293f10795acc80e7
2018-03-01 14:33:35 -08:00
Emilio Cobos Álvarez ebde436970 No bug: Update bindgen to 0.33. r=nox on a CLOSED TREE
MozReview-Commit-ID: 4PgOmtt3zrg


--HG--
rename : third_party/rust/env_logger/.cargo-checksum.json => third_party/rust/env_logger-0.4.3/.cargo-checksum.json
rename : third_party/rust/env_logger/Cargo.toml => third_party/rust/env_logger-0.4.3/Cargo.toml
rename : third_party/rust/cfg-if-0.1.1/LICENSE-APACHE => third_party/rust/env_logger-0.4.3/LICENSE-APACHE
rename : third_party/rust/env_logger/src/lib.rs => third_party/rust/env_logger-0.4.3/src/lib.rs
rename : third_party/rust/env_logger/src/regex.rs => third_party/rust/env_logger-0.4.3/src/regex.rs
rename : third_party/rust/env_logger/src/string.rs => third_party/rust/env_logger-0.4.3/src/string.rs
rename : third_party/rust/env_logger/tests/regexp_filter.rs => third_party/rust/env_logger-0.4.3/tests/regexp_filter.rs
2018-03-02 20:30:14 +01:00
shindli 0ba01aed1b Backed out 3 changesets (bug 1381576) for Bugzilla linting failure on a CLOSED TREE
Backed out changeset 3bc1743ad418 (bug 1381576)
Backed out changeset bbae7807c164 (bug 1381576)
Backed out changeset 1ea18b70b170 (bug 1381576)
2018-03-02 21:17:20 +02:00
Matt Brubeck c94fb26dea Bug 1381576 - Use a Cargo workspace for rust crates. r=ted
MozReview-Commit-ID: K6B9SifddXu

--HG--
extra : rebase_source : 75fae593e8765ec5b1e616d10eda0bc52f1f7194
extra : histedit_source : 21b38586bcc4576fce5eadff9a3c77ccf5e21341
2018-03-01 14:33:35 -08:00
Emilio Cobos Álvarez 04ea4e6ee0 Bug 1432153: Update bindgen. r=xidorn
on a CLOSED TREE.

MozReview-Commit-ID: BJH6Y58oYtk


--HG--
rename : third_party/rust/proc-macro2/.cargo-checksum.json => third_party/rust/proc-macro2-0.2.2/.cargo-checksum.json
rename : third_party/rust/proc-macro2/.travis.yml => third_party/rust/proc-macro2-0.2.2/.travis.yml
rename : third_party/rust/proc-macro2/Cargo.toml => third_party/rust/proc-macro2-0.2.2/Cargo.toml
rename : third_party/rust/proc-macro2/src/lib.rs => third_party/rust/proc-macro2-0.2.2/src/lib.rs
rename : third_party/rust/proc-macro2/src/stable.rs => third_party/rust/proc-macro2-0.2.2/src/stable.rs
rename : third_party/rust/proc-macro2/src/strnom.rs => third_party/rust/proc-macro2-0.2.2/src/strnom.rs
rename : third_party/rust/proc-macro2/tests/test.rs => third_party/rust/proc-macro2-0.2.2/tests/test.rs
2018-03-02 15:49:56 +01:00
Kartikaya Gupta 2cfaff56ac Bug 1440664 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: IZncD4fgDk7

--HG--
extra : rebase_source : e40e805ac4f069920277515ec509bc29c68b42d5
2018-03-01 16:51:58 -05:00
Servo VCS Sync f5b5dab005 No bug - Revendor rust dependencies 2018-02-28 20:07:52 +00:00
Servo VCS Sync ecd7b0490b No bug - Revendor rust dependencies 2018-02-28 10:03:41 +00:00
Servo VCS Sync 8c5c2dd863 No bug - Revendor rust dependencies 2018-02-27 06:13:30 +00:00
Dan Glastonbury 1f48e9c16c Bug 1440538 - P5: Vendor rust crates. r=rillian
MozReview-Commit-ID: 5YkwigTZxYG

--HG--
rename : third_party/rust/cmake/.cargo-checksum.json => third_party/rust/cmake-0.1.24/.cargo-checksum.json
rename : third_party/rust/cmake/Cargo.toml => third_party/rust/cmake-0.1.24/Cargo.toml
rename : third_party/rust/bitflags-0.9.1/LICENSE-APACHE => third_party/rust/cmake-0.1.24/LICENSE-APACHE
rename : third_party/rust/cmake/README.md => third_party/rust/cmake-0.1.24/README.md
rename : third_party/rust/cmake/src/lib.rs => third_party/rust/cmake-0.1.24/src/lib.rs
extra : rebase_source : 7a870d64b367d6d67060ecff86de1b7f8fc04471
2018-02-13 15:05:37 +10:00
Ralph Giles ef7e020a97 Bug 1440449 - Remove codegen-units limit for debug builds. r=froydnj
Starting with Rust 1.24, the default codegen-units limit is 16,
with jobserver control to avoid overprovisioning. Remove our
previous fixed limit of 4 threads for debug builds.

For release, retain codegen-units=1 to make sure we get the
most complete optimization results.

Thanks to Simon Sapin for the suggestion.

MozReview-Commit-ID: FmYF4DcmBvt

--HG--
extra : rebase_source : 307ad8fad2874636adb3ce95a5cd47339e83f40c
2018-02-22 11:58:50 -08:00
Csoregi Natalia ecb86060b4 Backed out 5 changesets (bug 1379265) for GTest crashes on RsdparsaSdpAttributeList::GetGroup. a=backout
Backed out changeset addf903ba015 (bug 1379265)
Backed out changeset 51f51dfe6095 (bug 1379265)
Backed out changeset 443378a6ed7a (bug 1379265)
Backed out changeset 0ea22b056105 (bug 1379265)
Backed out changeset d85d78ba8ccd (bug 1379265)
2018-02-24 12:58:24 +02:00
Sebastian Hengst e6ed14057b merge mozilla-central to autoland on a CLOSED TREE
--HG--
extra : amend_source : d88824ea9bbe5e0298f0d64fd0e4cdedcbee342c
2018-02-24 03:07:44 +02:00
Paul Ellenbogen ccaf43a57e Bug 1379265 - Add C API for rsdparsa; r=rillian
MozReview-Commit-ID: FdhpTT5wzwI

--HG--
extra : rebase_source : b1fd70e19346794f9309a49cda4a06ccfcd403aa
2017-06-30 12:54:12 -07:00
Matt Brubeck a23e39069a Bug 1341102 - Update Cargo.lock files 2018-02-21 17:49:38 -08:00
Kartikaya Gupta 868a8d8bd5 Bug 1438892 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: wsncokjtul

--HG--
rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-deque/LICENSE-APACHE
rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-deque/LICENSE-MIT
rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-epoch/LICENSE-APACHE
rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-epoch/LICENSE-MIT
rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/crossbeam-utils/LICENSE-APACHE
rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/crossbeam-utils/LICENSE-MIT
rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/rayon-0.8.2/LICENSE-APACHE
rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/rayon-0.8.2/LICENSE-MIT
rename : third_party/rust/rayon/src/iter/README.md => third_party/rust/rayon-0.8.2/src/iter/README.md
rename : third_party/rust/rayon/src/iter/internal.rs => third_party/rust/rayon-0.8.2/src/iter/internal.rs
rename : third_party/rust/rayon/tests/compile-fail-unstable/future_escape.rs => third_party/rust/rayon-0.8.2/tests/compile-fail-unstable/future_escape.rs
rename : third_party/rust/rayon/tests/run-pass/sort-panic-safe.rs => third_party/rust/rayon-0.8.2/tests/run-pass/sort-panic-safe.rs
rename : third_party/rust/coco/LICENSE-APACHE => third_party/rust/rayon-core/LICENSE-APACHE
rename : third_party/rust/coco/LICENSE-MIT => third_party/rust/rayon-core/LICENSE-MIT
extra : rebase_source : fad67f2d82c7b49554ce9b03fb12da3d4b66a378
2018-02-20 09:05:08 -05:00
Chris Manchester c94fd30a84 Bug 1440507 - Remove link.py wrapper script for linking xul. r=nalexander
MozReview-Commit-ID: BXrhdPzQ2jy

--HG--
extra : rebase_source : 801b1876af8639996f58a1985d47fb42cc3065a6
2018-02-22 16:03:17 -08:00
Kartikaya Gupta 230d90353f Bug 1438449 - Remove unused feature property from crate override. r=jrmuizel
MozReview-Commit-ID: 6twY57Hg4CC

--HG--
extra : rebase_source : 0bf706089e618aaffdda1e9834d48a84e770ad3f
2018-02-15 04:28:30 -05:00
Ralph Giles 62e62e57a2 Bug 1437351 - Update mp4parse to v0.10.0. r=kinetik
Import v0.10.0 of the mp4parse and mp4parse_capi crates
and update dependencies.

Reduces library size by removing debug tracing in release builds.
Also adds recognition of the ALAC codec, although we don't plan
to support it.

MozReview-Commit-ID: F1bnotCmbDf

--HG--
extra : rebase_source : 55bc014378d7f65fca8af82a9222edd36870b351
2018-02-13 16:58:43 -08:00
Servo VCS Sync 67d1d60ad7 No bug - Revendor rust dependencies 2018-02-14 17:42:57 +00:00
Emilio Cobos Álvarez 199da14cd0 No bug - Revendor rust dependencies. r=me on a CLOSED TREE
MozReview-Commit-ID: 7LSWUCyCxkT


--HG--
rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json
rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml
rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT
rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md
rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs
rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs
rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs
rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs
rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs
rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json
rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml
rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT
rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md
rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs
rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs
rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs
rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs
rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs
rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs
rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs
rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs
rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs
rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs
rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs
rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs
rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs
rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs
rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs
rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs
rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs
rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs
rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs
rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs
rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs
rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs
rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs
rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs
rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs
rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs
rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs
rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json
rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 12:40:42 +01:00
Ciure Andrei 72080bd73c Merge inbound to mozilla-central. a=merge 2018-02-13 00:08:37 +02:00
Franziskus Kiefer fd68ca633e Bug 1436948 - update cbor lib, r=keeler
Reviewers: keeler

Reviewed By: keeler

Bug #: 1436948

Differential Revision: https://phabricator.services.mozilla.com/D566

--HG--
extra : rebase_source : e9e6e4957cd7bc578d7bc21e6db64c1e8ef170ae
2018-02-12 09:02:03 +01:00
Servo VCS Sync 99dff2319c No bug - Revendor rust dependencies 2018-02-10 18:14:30 +00:00
Servo VCS Sync 03ffcb7b2a No bug - Revendor rust dependencies 2018-02-09 22:19:11 +00:00
Kartikaya Gupta e1dbbcbce0 Bug 1436058 - Update Cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: GiRingn0bX1

--HG--
extra : rebase_source : 55e472428534e366a49ccc887f67b8c7836171b1
2018-02-12 11:32:10 -05:00
Servo VCS Sync 33acf03866 No bug - Revendor rust dependencies 2018-02-12 14:07:12 +00:00
Manish Goregaokar 72ed6d355d Bug 1436251 - Set codegen-units=1 in --enable-release; r=glandium
MozReview-Commit-ID: 8kGTFAXfB2i

--HG--
extra : rebase_source : bc1860366646e629deef3c819576d208b1b6cd73
2018-02-06 19:06:03 -08:00
Narcis Beleuzu eeb7190f9a Merge inbound to mozilla-central. a=merge 2018-02-01 12:05:39 +02:00
Nicholas Nethercote eeb14c6c69 Bug 1423840 (attempt 2) - Rewrite the prefs parser. r=glandium,Manishearth
The prefs parser has two significant problems.

- It doesn't separate tokenizing from parsing.

- It is implemented as a loop around a big switch on a "current state"
  variable.

As a result, it is hard to understand and modify, slower than it could be, and
in obscure cases (involving comments and whitespace) it fails to parse what
should be valid input.

This patch replaces it with a recursive descent parser (albeit one without any
recursion!) that has separate tokenization. The new parser is easier to
understand and modify, more correct, and has better error messages. It doesn't
do error recovery, but that would be much easier to add than in the old parser.

The new parser also runs about 1.9x faster than the existing parser. (As
measured by parsing greprefs.js's contents from memory 1000 times in
succession, omitting the prefs hash table construction. If the table
construction is included, it's about 1.6x faster.)

The new parser is slightly stricter than the old parser in a few ways.

- Disconcertingly, the old parser allowed arbitrary junk between prefs
  (including at the start and end of the prefs file) so long as that junk
  didn't include any of the following chars: '/', '#', 'u', 's', 'p'. I.e.
  lines like these:

    !foo@bar&pref("prefname", true);
    ticky_pref("prefname", true);       // missing 's' at start
    User_pref("prefname", true);        // should be 'u' at start

  would all be treated the same as this:

    pref("prefname", true);

  The new parser disallows such junk because it isn't necessary and seems like
  an unintentional botch by the old parser.

- The old parser allowed character 0x1a (SUB) between tokens and treated it
  like '\n'.

  The new parser does not allow this character. SUB was used to indicate
  end-of-file (*not* end-of-line) in some old operating systems such as MS-DOS,
  but this doesn't seem necessary today.

- The old parser tolerated (with a warning) invalid escape sequences within
  string literals -- such as "\q" (not a valid escape) and "\x1" and "\u12"
  (both of which have insufficient hex digits) -- accepting them literally.

  The new parser does not tolerate invalid escape sequences because it doesn't
  seem necessary and would complicate things.

- The old parser tolerated character 0x00 (NUL) within string literals; this is
  dangerous because C++ code that manipulates string values with embedded NULs
  will almost certainly consider those chars as end-of-string markers.

  The new parser treats NUL chars as end-of-file, to avoid this danger and
  because it facilitates a significant optimization (described within the
  code).

- The old parser allowed integer literals to overflow, silently wrapping them.

  The new parser treats integer overflow as a parse error. This seems better,
  and it caught existing overflows of places.database.lastMaintenance, in
  testing/profiles/prefs_general.js (bug 1424030) and
  testing/talos/talos/config.py (bug 1434813).

The first of these changes meant that a couple of existing prefs with ";;" at
the end had to be changed (done in the preceding patch).

The minor increase in strictness shouldn't be a problem for default pref files
such as greprefs.js within the application (which we can modify), nor for
app-written prefs files such as prefs.js. It could affect user-written prefs
files such as user.js; the experience above suggests that integer overflow and
";;" are the most likely problems in practice. In my opinion, the risk here is
acceptable.

The new parser also does a better job of tracking line numbers because it (a)
treats "\r\n" sequences as a single end-of-line marker, and (a) pays attention
to end-of-line sequences within string literals.

Finally, the patch adds thorough tests of both valid and invalid syntax.

MozReview-Commit-ID: JD3beOQl4AJ
2018-02-01 16:21:47 +11:00
Servo VCS Sync 47d56b8748 No bug - Revendor rust dependencies 2018-02-01 04:40:14 +00:00
Cosmin Sabou 9efa17a39e Backed out 2 changesets (bug 1423840) for mass Talos failures due to forbidden connections. CLOSED TREE
Backed out changeset e8b798a5205a (bug 1423840)
Backed out changeset e500592d3551 (bug 1423840)
2018-02-01 03:05:08 +02:00