diff --git a/Makefile b/Makefile index 97a461ae8a2..41fe6b22785 100644 --- a/Makefile +++ b/Makefile @@ -96,7 +96,7 @@ $(NODE_G_EXE): config.gypi out/Makefile out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp \ deps/zlib/zlib.gyp deps/v8/gypfiles/toolchain.gypi \ - deps/v8/gypfiles/features.gypi deps/v8/src/v8.gyp node.gyp \ + deps/v8/gypfiles/features.gypi deps/v8/gypfiles/v8.gyp node.gyp \ config.gypi $(PYTHON) tools/gyp_node.py -f make diff --git a/README.md b/README.md index 7342012dc0e..de2023a01d6 100644 --- a/README.md +++ b/README.md @@ -1,619 +1,12 @@ -

- - Node.js - -

+This is an automatically updated **experimental** +version of [Node.js](https://github.com/nodejs/node) +with the lkgr (last known good revision) of V8. -Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. For -more information on using Node.js, see the -[Node.js Website][]. +The daily builds of this repo can be found at +[`v8-canary`](https://nodejs.org/download/v8-canary/). +**Do not use this in production!** -The Node.js project is supported by the -[Node.js Foundation](https://nodejs.org/en/foundation/). Contributions, -policies, and releases are managed under an -[open governance model](./GOVERNANCE.md). +This repository is not owned by `@nodejs/v8`, but they might be able to +help with issues. -**This project is bound by a [Code of Conduct][].** - - -# Table of Contents - -* [Support](#support) -* [Release Types](#release-types) - * [Download](#download) - * [Current and LTS Releases](#current-and-lts-releases) - * [Nightly Releases](#nightly-releases) - * [API Documentation](#api-documentation) - * [Verifying Binaries](#verifying-binaries) -* [Building Node.js](#building-nodejs) -* [Security](#security) -* [Current Project Team Members](#current-project-team-members) - * [TSC (Technical Steering Committee)](#tsc-technical-steering-committee) - * [Collaborators](#collaborators) - * [Release Team](#release-team) -* [Contributing to Node.js](#contributing-to-nodejs) - -## Support - -Node.js contributors have limited availability to address general support -questions. Please make sure you are using a [currently-supported version of -Node.js](https://github.com/nodejs/Release#release-schedule). - -When looking for support, please first search for your question in these venues: - -* [Node.js Website][] -* [Node.js Help][] -* [Open or closed issues in the Node.js GitHub organization](https://github.com/issues?utf8=%E2%9C%93&q=sort%3Aupdated-desc+org%3Anodejs+is%3Aissue) - -If you didn't find an answer in one of the official resources above, you can -search these unofficial resources: - -* [Questions tagged 'node.js' on StackOverflow][] -* [#node.js channel on chat.freenode.net][]. See for more - information. - -GitHub issues are meant for tracking enhancements and bugs, not general support. - -Remember, libre != gratis; the open source license grants you the freedom to use -and modify, but not commitments of other people's time. Please be respectful, -and set your expectations accordingly. - -## Release Types - -The Node.js project maintains multiple types of releases: - -* **Current**: Released from active development branches of this repository, - versioned by [SemVer](https://semver.org) and signed by a member of the - [Release Team](#release-team). - Code for Current releases is organized in this repository by major version - number. For example: [v4.x](https://github.com/nodejs/node/tree/v4.x). - The major version number of Current releases will increment every 6 months - allowing for breaking changes to be introduced. This happens in April and - October every year. Current release lines beginning in October each year have - a maximum support life of 8 months. Current release lines beginning in April - each year will convert to LTS (see below) after 6 months and receive further - support for 30 months. -* **LTS**: Releases that receive Long-term Support, with a focus on stability - and security. Every second Current release line (major version) will become an - LTS line and receive 18 months of _Active LTS_ support and a further 12 - months of _Maintenance_. LTS release lines are given alphabetically - ordered codenames, beginning with v4 Argon. LTS releases are less frequent - and will attempt to maintain consistent major and minor version numbers, - only incrementing patch version numbers. There are no breaking changes or - feature additions, except in some special circumstances. -* **Nightly**: Versions of code in this repository on the current Current - branch, automatically built every 24-hours where changes exist. Use with - caution. - -More information can be found in the [LTS README](https://github.com/nodejs/LTS/). - -### Download - -Binaries, installers, and source tarballs are available at -. - -#### Current and LTS Releases -**Current** and **LTS** releases are available at -, listed under their version strings. -The [latest](https://nodejs.org/download/release/latest/) directory is an -alias for the latest Current release. The latest LTS release from an LTS -line is available in the form: latest-_codename_. For example: -. - -#### Nightly Releases -**Nightly** builds are available at -, listed under their version -string which includes their date (in UTC time) and the commit SHA at -the HEAD of the release. - -#### API Documentation -**API documentation** is available in each release and nightly -directory under _docs_. points to the API -documentation of the latest stable version. - -### Verifying Binaries - -Current, LTS, and Nightly download directories all contain a SHASUMS256.txt -file that lists the SHA checksums for each file available for -download. - -The SHASUMS256.txt can be downloaded using `curl`. - -```console -$ curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt -``` - -To check that a downloaded file matches the checksum, run -it through `sha256sum` with a command such as: - -```console -$ grep node-vx.y.z.tar.gz SHASUMS256.txt | sha256sum -c - -``` - -Current and LTS releases (but not Nightlies) also have the GPG detached -signature of SHASUMS256.txt available as SHASUMS256.txt.sig. You can use `gpg` -to verify that SHASUMS256.txt has not been tampered with. - -To verify SHASUMS256.txt has not been altered, you will first need to import -all of the GPG keys of individuals authorized to create releases. They are -listed at the bottom of this README under [Release Team](#release-team). -Use a command such as this to import the keys: - -```console -$ gpg --keyserver pool.sks-keyservers.net --recv-keys DD8F2338BAE7501E3DD5AC78C273792F7D83545D -``` - -See the bottom of this README for a full script to import active release keys. - -Next, download the SHASUMS256.txt.sig for the release: - -```console -$ curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt.sig -``` - -After downloading the appropriate SHASUMS256.txt and SHASUMS256.txt.sig files, -you can then use `gpg --verify SHASUMS256.txt.sig SHASUMS256.txt` to verify -that the file has been signed by an authorized member of the Node.js team. - -Once verified, use the SHASUMS256.txt file to get the checksum for -the binary verification command above. - -## Building Node.js - -See [BUILDING.md](BUILDING.md) for instructions on how to build -Node.js from source. The document also contains a list of -officially supported platforms. - -## Security - -Security flaws in Node.js should be reported by emailing security@nodejs.org. -Please do not disclose security bugs publicly until they have been handled by -the security team. - -Your email will be acknowledged within 24 hours, and you will receive a more -detailed response to your email within 48 hours indicating the next steps in -handling your report. - -There are no hard and fast rules to determine if a bug is worth reporting as -a security issue. The general rule is an issue worth reporting should allow an -attacker to compromise the confidentiality, integrity, or availability of the -Node.js application or its system for which the attacker does not already have -the capability. - -To illustrate the point, here are some examples of past issues and what the -Security Response Team thinks of them. When in doubt, however, please do send -us a report nonetheless. - - -### Public disclosure preferred - -- [#14519](https://github.com/nodejs/node/issues/14519): _Internal domain - function can be used to cause segfaults_. Causing program termination using - either the public JavaScript APIs or the private bindings layer APIs requires - the ability to execute arbitrary JavaScript code, which is already the highest - level of privilege possible. - -- [#12141](https://github.com/nodejs/node/pull/12141): _buffer: zero fill - Buffer(num) by default_. The buffer constructor behavior was documented, - but found to be prone to [mis-use](https://snyk.io/blog/exploiting-buffer/). - It has since been changed, but despite much debate, was not considered misuse - prone enough to justify fixing in older release lines and breaking our - API stability contract. - -### Private disclosure preferred - -- [CVE-2016-7099](https://nodejs.org/en/blog/vulnerability/september-2016-security-releases/): - _Fix invalid wildcard certificate validation check_. This is a high severity - defect that would allow a malicious TLS server to serve an invalid wildcard - certificate for its hostname and be improperly validated by a Node.js client. - -- [#5507](https://github.com/nodejs/node/pull/5507): _Fix a defect that makes - the CacheBleed Attack possible_. Many, though not all, OpenSSL vulnerabilities - in the TLS/SSL protocols also effect Node.js. - -- [CVE-2016-2216](https://nodejs.org/en/blog/vulnerability/february-2016-security-releases/): - _Fix defects in HTTP header parsing for requests and responses that can allow - response splitting_. While the impact of this vulnerability is application and - network dependent, it is remotely exploitable in the HTTP protocol. - -When in doubt, please do send us a report. - - -## Current Project Team Members - -The Node.js project team comprises a group of core collaborators and a sub-group -that forms the _Technical Steering Committee_ (TSC) which governs the project. -For more information about the governance of the Node.js project, see -[GOVERNANCE.md](./GOVERNANCE.md). - -### TSC (Technical Steering Committee) - -* [addaleax](https://github.com/addaleax) - -**Anna Henningsen** <anna@addaleax.net> (she/her) -* [ChALkeR](https://github.com/ChALkeR) - -**Сковорода Никита Андреевич** <chalkerx@gmail.com> (he/him) -* [cjihrig](https://github.com/cjihrig) - -**Colin Ihrig** <cjihrig@gmail.com> -* [danbev](https://github.com/danbev) - -**Daniel Bevenius** <daniel.bevenius@gmail.com> -* [evanlucas](https://github.com/evanlucas) - -**Evan Lucas** <evanlucas@me.com> (he/him) -* [fhinkel](https://github.com/fhinkel) - -**Franziska Hinkelmann** <franziska.hinkelmann@gmail.com> (she/her) -* [Fishrock123](https://github.com/Fishrock123) - -**Jeremiah Senkpiel** <fishrock123@rocketmail.com> -* [gibfahn](https://github.com/gibfahn) - -**Gibson Fahnestock** <gibfahn@gmail.com> (he/him) -* [jasnell](https://github.com/jasnell) - -**James M Snell** <jasnell@gmail.com> (he/him) -* [joyeecheung](https://github.com/joyeecheung) - -**Joyee Cheung** <joyeec9h3@gmail.com> (she/her) -* [mcollina](https://github.com/mcollina) - -**Matteo Collina** <matteo.collina@gmail.com> (he/him) -* [mhdawson](https://github.com/mhdawson) - -**Michael Dawson** <michael_dawson@ca.ibm.com> (he/him) -* [MylesBorins](https://github.com/MylesBorins) - -**Myles Borins** <myles.borins@gmail.com> (he/him) -* [ofrobots](https://github.com/ofrobots) - -**Ali Ijaz Sheikh** <ofrobots@google.com> -* [rvagg](https://github.com/rvagg) - -**Rod Vagg** <rod@vagg.org> -* [targos](https://github.com/targos) - -**Michaël Zasso** <targos@protonmail.com> (he/him) -* [thefourtheye](https://github.com/thefourtheye) - -**Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> (he/him) -* [trevnorris](https://github.com/trevnorris) - -**Trevor Norris** <trev.norris@gmail.com> -* [Trott](https://github.com/Trott) - -**Rich Trott** <rtrott@gmail.com> (he/him) - -### TSC Emeriti - -* [bnoordhuis](https://github.com/bnoordhuis) - -**Ben Noordhuis** <info@bnoordhuis.nl> -* [chrisdickinson](https://github.com/chrisdickinson) - -**Chris Dickinson** <christopher.s.dickinson@gmail.com> -* [indutny](https://github.com/indutny) - -**Fedor Indutny** <fedor.indutny@gmail.com> -* [isaacs](https://github.com/isaacs) - -**Isaac Z. Schlueter** <i@izs.me> -* [joshgav](https://github.com/joshgav) - -**Josh Gavant** <josh.gavant@outlook.com> -* [mscdex](https://github.com/mscdex) - -**Brian White** <mscdex@mscdex.net> -* [nebrius](https://github.com/nebrius) - -**Bryan Hughes** <bryan@nebri.us> -* [orangemocha](https://github.com/orangemocha) - -**Alexis Campailla** <orangemocha@nodejs.org> -* [piscisaureus](https://github.com/piscisaureus) - -**Bert Belder** <bertbelder@gmail.com> -* [shigeki](https://github.com/shigeki) - -**Shigeki Ohtsu** <ohtsu@ohtsu.org> (he/him) - -### Collaborators - -* [addaleax](https://github.com/addaleax) - -**Anna Henningsen** <anna@addaleax.net> (she/her) -* [ak239](https://github.com/ak239) - -**Aleksei Koziatinskii** <ak239spb@gmail.com> -* [andrasq](https://github.com/andrasq) - -**Andras** <andras@kinvey.com> -* [AndreasMadsen](https://github.com/AndreasMadsen) - -**Andreas Madsen** <amwebdk@gmail.com> (he/him) -* [AnnaMag](https://github.com/AnnaMag) - -**Anna M. Kedzierska** <anna.m.kedzierska@gmail.com> -* [apapirovski](https://github.com/apapirovski) - -**Anatoli Papirovski** <apapirovski@mac.com> (he/him) -* [aqrln](https://github.com/aqrln) - -**Alexey Orlenko** <eaglexrlnk@gmail.com> (he/him) -* [bengl](https://github.com/bengl) - -**Bryan English** <bryan@bryanenglish.com> (he/him) -* [benjamingr](https://github.com/benjamingr) - -**Benjamin Gruenbaum** <benjamingr@gmail.com> -* [BethGriggs](https://github.com/BethGriggs) - -**Beth Griggs** <Bethany.Griggs@uk.ibm.com> (she/her) -* [bmeck](https://github.com/bmeck) - -**Bradley Farias** <bradley.meck@gmail.com> -* [bmeurer](https://github.com/bmeurer) - -**Benedikt Meurer** <benedikt.meurer@gmail.com> -* [bnoordhuis](https://github.com/bnoordhuis) - -**Ben Noordhuis** <info@bnoordhuis.nl> -* [brendanashworth](https://github.com/brendanashworth) - -**Brendan Ashworth** <brendan.ashworth@me.com> -* [BridgeAR](https://github.com/BridgeAR) - -**Ruben Bridgewater** <ruben@bridgewater.de> -* [bzoz](https://github.com/bzoz) - -**Bartosz Sosnowski** <bartosz@janeasystems.com> -* [calvinmetcalf](https://github.com/calvinmetcalf) - -**Calvin Metcalf** <calvin.metcalf@gmail.com> -* [ChALkeR](https://github.com/ChALkeR) - -**Сковорода Никита Андреевич** <chalkerx@gmail.com> (he/him) -* [chrisdickinson](https://github.com/chrisdickinson) - -**Chris Dickinson** <christopher.s.dickinson@gmail.com> -* [cjihrig](https://github.com/cjihrig) - -**Colin Ihrig** <cjihrig@gmail.com> -* [claudiorodriguez](https://github.com/claudiorodriguez) - -**Claudio Rodriguez** <cjrodr@yahoo.com> -* [danbev](https://github.com/danbev) - -**Daniel Bevenius** <daniel.bevenius@gmail.com> -* [DavidCai1993](https://github.com/DavidCai1993) - -**David Cai** <davidcai1993@yahoo.com> (he/him) -* [devsnek](https://github.com/devsnek) - -**Gus Caplan** <me@gus.host> (he/him) -* [edsadr](https://github.com/edsadr) - -**Adrian Estrada** <edsadr@gmail.com> (he/him) -* [eljefedelrodeodeljefe](https://github.com/eljefedelrodeodeljefe) - -**Robert Jefe Lindstaedt** <robert.lindstaedt@gmail.com> -* [estliberitas](https://github.com/estliberitas) - -**Alexander Makarenko** <estliberitas@gmail.com> -* [eugeneo](https://github.com/eugeneo) - -**Eugene Ostroukhov** <eostroukhov@google.com> -* [evanlucas](https://github.com/evanlucas) - -**Evan Lucas** <evanlucas@me.com> (he/him) -* [fhinkel](https://github.com/fhinkel) - -**Franziska Hinkelmann** <franziska.hinkelmann@gmail.com> (she/her) -* [firedfox](https://github.com/firedfox) - -**Daniel Wang** <wangyang0123@gmail.com> -* [Fishrock123](https://github.com/Fishrock123) - -**Jeremiah Senkpiel** <fishrock123@rocketmail.com> -* [gabrielschulhof](https://github.com/gabrielschulhof) - -**Gabriel Schulhof** <gabriel.schulhof@intel.com> -* [geek](https://github.com/geek) - -**Wyatt Preul** <wpreul@gmail.com> -* [gibfahn](https://github.com/gibfahn) - -**Gibson Fahnestock** <gibfahn@gmail.com> (he/him) -* [gireeshpunathil](https://github.com/gireeshpunathil) - -**Gireesh Punathil** <gpunathi@in.ibm.com> (he/him) -* [guybedford](https://github.com/guybedford) - -**Guy Bedford** <guybedford@gmail.com> (he/him) -* [hashseed](https://github.com/hashseed) - -**Yang Guo** <yangguo@chromium.org> (he/him) -* [hiroppy](https://github.com/hiroppy) - -**Yuta Hiroto** <hello@hiroppy.me> (he/him) -* [iarna](https://github.com/iarna) - -**Rebecca Turner** <me@re-becca.org> -* [imran-iq](https://github.com/imran-iq) - -**Imran Iqbal** <imran@imraniqbal.org> -* [imyller](https://github.com/imyller) - -**Ilkka Myller** <ilkka.myller@nodefield.com> -* [indutny](https://github.com/indutny) - -**Fedor Indutny** <fedor.indutny@gmail.com> -* [italoacasas](https://github.com/italoacasas) - -**Italo A. Casas** <me@italoacasas.com> (he/him) -* [JacksonTian](https://github.com/JacksonTian) - -**Jackson Tian** <shyvo1987@gmail.com> -* [jasnell](https://github.com/jasnell) - -**James M Snell** <jasnell@gmail.com> (he/him) -* [jasongin](https://github.com/jasongin) - -**Jason Ginchereau** <jasongin@microsoft.com> -* [jbergstroem](https://github.com/jbergstroem) - -**Johan Bergström** <bugs@bergstroem.nu> -* [jhamhader](https://github.com/jhamhader) - -**Yuval Brik** <yuval@brik.org.il> -* [jkrems](https://github.com/jkrems) - -**Jan Krems** <jan.krems@gmail.com> (he/him) -* [joaocgreis](https://github.com/joaocgreis) - -**João Reis** <reis@janeasystems.com> -* [joshgav](https://github.com/joshgav) - -**Josh Gavant** <josh.gavant@outlook.com> -* [joyeecheung](https://github.com/joyeecheung) - -**Joyee Cheung** <joyeec9h3@gmail.com> (she/her) -* [julianduque](https://github.com/julianduque) - -**Julian Duque** <julianduquej@gmail.com> (he/him) -* [JungMinu](https://github.com/JungMinu) - -**Minwoo Jung** <minwoo@nodesource.com> (he/him) -* [kfarnung](https://github.com/kfarnung) - -**Kyle Farnung** <kfarnung@microsoft.com> (he/him) -* [kunalspathak](https://github.com/kunalspathak) - -**Kunal Pathak** <kunal.pathak@microsoft.com> -* [lance](https://github.com/lance) - -**Lance Ball** <lball@redhat.com> -* [Leko](https://github.com/Leko) - -**Shingo Inoue** <leko.noor@gmail.com> (he/him) -* [lpinca](https://github.com/lpinca) - -**Luigi Pinca** <luigipinca@gmail.com> (he/him) -* [lucamaraschi](https://github.com/lucamaraschi) - -**Luca Maraschi** <luca.maraschi@gmail.com> (he/him) -* [maclover7](https://github.com/maclover7) - -**Jon Moss** <me@jonathanmoss.me> (he/him) -* [mcollina](https://github.com/mcollina) - -**Matteo Collina** <matteo.collina@gmail.com> (he/him) -* [mhdawson](https://github.com/mhdawson) - -**Michael Dawson** <michael_dawson@ca.ibm.com> (he/him) -* [micnic](https://github.com/micnic) - -**Nicu Micleușanu** <micnic90@gmail.com> (he/him) -* [mikeal](https://github.com/mikeal) - -**Mikeal Rogers** <mikeal.rogers@gmail.com> -* [misterdjules](https://github.com/misterdjules) - -**Julien Gilli** <jgilli@nodejs.org> -* [mmarchini](https://github.com/mmarchini) - -**Matheus Marchini** <matheus@sthima.com> -* [MoonBall](https://github.com/MoonBall) - -**Chen Gang** <gangc.cxy@foxmail.com> -* [mscdex](https://github.com/mscdex) - -**Brian White** <mscdex@mscdex.net> -* [MylesBorins](https://github.com/MylesBorins) - -**Myles Borins** <myles.borins@gmail.com> (he/him) -* [not-an-aardvark](https://github.com/not-an-aardvark) - -**Teddy Katz** <teddy.katz@gmail.com> -* [ofrobots](https://github.com/ofrobots) - -**Ali Ijaz Sheikh** <ofrobots@google.com> -* [orangemocha](https://github.com/orangemocha) - -**Alexis Campailla** <orangemocha@nodejs.org> -* [othiym23](https://github.com/othiym23) - -**Forrest L Norvell** <ogd@aoaioxxysz.net> (he/him) -* [phillipj](https://github.com/phillipj) - -**Phillip Johnsen** <johphi@gmail.com> -* [pmq20](https://github.com/pmq20) - -**Minqi Pan** <pmq2001@gmail.com> -* [princejwesley](https://github.com/princejwesley) - -**Prince John Wesley** <princejohnwesley@gmail.com> -* [Qard](https://github.com/Qard) - -**Stephen Belanger** <admin@stephenbelanger.com> (he/him) -* [refack](https://github.com/refack) - -**Refael Ackermann** <refack@gmail.com> (he/him) -* [richardlau](https://github.com/richardlau) - -**Richard Lau** <riclau@uk.ibm.com> -* [rmg](https://github.com/rmg) - -**Ryan Graham** <r.m.graham@gmail.com> -* [robertkowalski](https://github.com/robertkowalski) - -**Robert Kowalski** <rok@kowalski.gd> -* [romankl](https://github.com/romankl) - -**Roman Klauke** <romaaan.git@gmail.com> -* [ronkorving](https://github.com/ronkorving) - -**Ron Korving** <ron@ronkorving.nl> -* [RReverser](https://github.com/RReverser) - -**Ingvar Stepanyan** <me@rreverser.com> -* [rvagg](https://github.com/rvagg) - -**Rod Vagg** <rod@vagg.org> -* [saghul](https://github.com/saghul) - -**Saúl Ibarra Corretgé** <saghul@gmail.com> -* [sam-github](https://github.com/sam-github) - -**Sam Roberts** <vieuxtech@gmail.com> -* [santigimeno](https://github.com/santigimeno) - -**Santiago Gimeno** <santiago.gimeno@gmail.com> -* [sebdeckers](https://github.com/sebdeckers) - -**Sebastiaan Deckers** <sebdeckers83@gmail.com> -* [seishun](https://github.com/seishun) - -**Nikolai Vavilov** <vvnicholas@gmail.com> -* [shigeki](https://github.com/shigeki) - -**Shigeki Ohtsu** <ohtsu@ohtsu.org> (he/him) -* [silverwind](https://github.com/silverwind) - -**Roman Reiss** <me@silverwind.io> -* [srl295](https://github.com/srl295) - -**Steven R Loomis** <srloomis@us.ibm.com> -* [starkwang](https://github.com/starkwang) - -**Weijia Wang** <starkwang@126.com> -* [stefanmb](https://github.com/stefanmb) - -**Stefan Budeanu** <stefan@budeanu.com> -* [targos](https://github.com/targos) - -**Michaël Zasso** <targos@protonmail.com> (he/him) -* [thefourtheye](https://github.com/thefourtheye) - -**Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> (he/him) -* [thekemkid](https://github.com/thekemkid) - -**Glen Keane** <glenkeane.94@gmail.com> (he/him) -* [thlorenz](https://github.com/thlorenz) - -**Thorsten Lorenz** <thlorenz@gmx.de> -* [TimothyGu](https://github.com/TimothyGu) - -**Tiancheng "Timothy" Gu** <timothygu99@gmail.com> (he/him) -* [tniessen](https://github.com/tniessen) - -**Tobias Nießen** <tniessen@tnie.de> -* [trevnorris](https://github.com/trevnorris) - -**Trevor Norris** <trev.norris@gmail.com> -* [trivikr](https://github.com/trivikr) - -**Trivikram Kamat** <trivikr.dev@gmail.com> -* [Trott](https://github.com/Trott) - -**Rich Trott** <rtrott@gmail.com> (he/him) -* [tunniclm](https://github.com/tunniclm) - -**Mike Tunnicliffe** <m.j.tunnicliffe@gmail.com> -* [vdeturckheim](https://github.com/vdeturckheim) - -**Vladimir de Turckheim** <vlad2t@hotmail.com> (he/him) -* [vkurchatkin](https://github.com/vkurchatkin) - -**Vladimir Kurchatkin** <vladimir.kurchatkin@gmail.com> -* [vsemozhetbyt](https://github.com/vsemozhetbyt) - -**Vse Mozhet Byt** <vsemozhetbyt@gmail.com> (he/him) -* [watilde](https://github.com/watilde) - -**Daijiro Wachi** <daijiro.wachi@gmail.com> (he/him) -* [watson](https://github.com/watson) - -**Thomas Watson** <w@tson.dk> -* [whitlockjc](https://github.com/whitlockjc) - -**Jeremy Whitlock** <jwhitlock@apache.org> -* [XadillaX](https://github.com/XadillaX) - -**Khaidi Chu** <i@2333.moe> (he/him) -* [yhwang](https://github.com/yhwang) - -**Yihong Wang** <yh.wang@ibm.com> -* [yorkie](https://github.com/yorkie) - -**Yorkie Liu** <yorkiefixer@gmail.com> -* [yosuke-furukawa](https://github.com/yosuke-furukawa) - -**Yosuke Furukawa** <yosuke.furukawa@gmail.com> - -### Collaborator Emeriti - -* [isaacs](https://github.com/isaacs) - -**Isaac Z. Schlueter** <i@izs.me> -* [lxe](https://github.com/lxe) - -**Aleksey Smolenchuk** <lxe@lxe.co> -* [matthewloring](https://github.com/matthewloring) - -**Matthew Loring** <mattloring@google.com> -* [monsanto](https://github.com/monsanto) - -**Christopher Monsanto** <chris@monsan.to> -* [Olegas](https://github.com/Olegas) - -**Oleg Elifantiev** <oleg@elifantiev.ru> -* [petkaantonov](https://github.com/petkaantonov) - -**Petka Antonov** <petka_antonov@hotmail.com> -* [piscisaureus](https://github.com/piscisaureus) - -**Bert Belder** <bertbelder@gmail.com> -* [rlidwka](https://github.com/rlidwka) - -**Alex Kocharin** <alex@kocharin.ru> -* [tellnes](https://github.com/tellnes) - -**Christian Tellnes** <christian@tellnes.no> - -Collaborators follow the [COLLABORATOR_GUIDE.md](./COLLABORATOR_GUIDE.md) in -maintaining the Node.js project. - -### Release Team - -Node.js releases are signed with one of the following GPG keys: - -* **Colin Ihrig** <cjihrig@gmail.com> -`94AE36675C464D64BAFA68DD7434390BDBE9B9C5` -* **Evan Lucas** <evanlucas@me.com> -`B9AE9905FFD7803F25714661B63B535A4C206CA9` -* **Gibson Fahnestock** <gibfahn@gmail.com> -`77984A986EBC2AA786BC0F66B01FBB92821C587A` -* **Italo A. Casas** <me@italoacasas.com> -`56730D5401028683275BD23C23EFEFE93C4CFFFE` -* **James M Snell** <jasnell@keybase.io> -`71DCFD284A79C3B38668286BC97EC7A07EDE3FC1` -* **Jeremiah Senkpiel** <fishrock@keybase.io> -`FD3A5288F042B6850C66B31F09FE44734EB7990E` -* **Myles Borins** <myles.borins@gmail.com> -`C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8` -* **Rod Vagg** <rod@vagg.org> -`DD8F2338BAE7501E3DD5AC78C273792F7D83545D` - -The full set of trusted release keys can be imported by running: - -```shell -gpg --keyserver pool.sks-keyservers.net --recv-keys 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 -gpg --keyserver pool.sks-keyservers.net --recv-keys FD3A5288F042B6850C66B31F09FE44734EB7990E -gpg --keyserver pool.sks-keyservers.net --recv-keys 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 -gpg --keyserver pool.sks-keyservers.net --recv-keys DD8F2338BAE7501E3DD5AC78C273792F7D83545D -gpg --keyserver pool.sks-keyservers.net --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 -gpg --keyserver pool.sks-keyservers.net --recv-keys B9AE9905FFD7803F25714661B63B535A4C206CA9 -gpg --keyserver pool.sks-keyservers.net --recv-keys 56730D5401028683275BD23C23EFEFE93C4CFFFE -gpg --keyserver pool.sks-keyservers.net --recv-keys 77984A986EBC2AA786BC0F66B01FBB92821C587A -``` - -See the section above on [Verifying Binaries](#verifying-binaries) for details -on what to do with these keys to verify that a downloaded file is official. - -Previous releases may also have been signed with one of the following GPG keys: - -* **Chris Dickinson** <christopher.s.dickinson@gmail.com> -`9554F04D7259F04124DE6B476D5A82AC7E37093B` -* **Isaac Z. Schlueter** <i@izs.me> -`93C7E9E91B49E432C2F75674B0A78B0A6C481CF6` -* **Julien Gilli** <jgilli@fastmail.fm> -`114F43EE0176B71C7BC219DD50A3051F888C628D` -* **Timothy J Fontaine** <tjfontaine@gmail.com> -`7937DFD2AB06298B2293C3187D33FF9D0246406D` - -## Contributing to Node.js - -* [Contributing to the project][] -* [Working Groups][] -* [Strategic Initiatives][] - -[Code of Conduct]: https://github.com/nodejs/admin/blob/master/CODE_OF_CONDUCT.md -[Contributing to the project]: CONTRIBUTING.md -[Node.js Help]: https://github.com/nodejs/help -[Node.js Website]: https://nodejs.org/en/ -[Questions tagged 'node.js' on StackOverflow]: https://stackoverflow.com/questions/tagged/node.js -[Working Groups]: https://github.com/nodejs/TSC/blob/master/WORKING_GROUPS.md -[Strategic Initiatives]: https://github.com/nodejs/TSC/blob/master/Strategic-Initiatives.md -[#node.js channel on chat.freenode.net]: https://webchat.freenode.net?channels=node.js&uio=d4 +This project is bound by a [Code of Conduct](https://github.com/nodejs/TSC/blob/master/CODE_OF_CONDUCT.md). diff --git a/common.gypi b/common.gypi index 2d2bc4f5d56..2d2619dc760 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.5', + 'v8_embedder_string': '-node.0', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, @@ -49,10 +49,10 @@ 'conditions': [ ['GENERATOR=="ninja"', { 'obj_dir': '<(PRODUCT_DIR)/obj', - 'v8_base': '<(PRODUCT_DIR)/obj/deps/v8/src/libv8_base.a', + 'v8_base': '<(PRODUCT_DIR)/obj/deps/v8/gypfiles/libv8_base.a', }, { 'obj_dir%': '<(PRODUCT_DIR)/obj.target', - 'v8_base%': '<(PRODUCT_DIR)/obj.target/deps/v8/src/libv8_base.a', + 'v8_base%': '<(PRODUCT_DIR)/obj.target/deps/v8/gypfiles/libv8_base.a', }], ['OS == "win"', { 'os_posix': 0, diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index f07fc1cb622..4534a396099 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -36,8 +36,6 @@ /_* /build /buildtools -/gypfiles/.gold_plugin -/gypfiles/win_toolchain.json /hydrogen.cfg /obj /out @@ -51,24 +49,25 @@ /test/fuzzer/wasm_corpus.tar.gz /test/mozilla/data /test/test262/data -/test/test262/data.tar /test/test262/harness /test/wasm-js /test/wasm-spec-tests/tests /test/wasm-spec-tests/tests.tar.gz -/testing/gmock -/testing/gtest/* -!/testing/gtest/include -/testing/gtest/include/* -!/testing/gtest/include/gtest -/testing/gtest/include/gtest/* -!/testing/gtest/include/gtest/gtest_prod.h /third_party/* !/third_party/binutils !/third_party/eu-strip !/third_party/inspector_protocol !/third_party/colorama /third_party/colorama/src +!/third_party/googletest +/third_party/googletest/src/* +!/third_party/googletest/src/googletest +/third_party/googletest/src/googletest/* +!/third_party/googletest/src/googletest/include +/third_party/googletest/src/googletest/include/* +!/third_party/googletest/src/googletest/include/gtest +/third_party/googletest/src/googletest/include/gtest/* +!/third_party/googletest/src/googletest/include/gtest/gtest_prod.h /tools/clang /tools/gcmole/gcmole-tools /tools/gcmole/gcmole-tools.tar.gz @@ -76,6 +75,8 @@ /tools/jsfunfuzz/jsfunfuzz /tools/jsfunfuzz/jsfunfuzz.tar.gz /tools/luci-go +/tools/mips_toolchain +/tools/mips_toolchain.tar.gz /tools/oom_dump/oom_dump /tools/oom_dump/oom_dump.o /tools/swarming_client diff --git a/deps/v8/.gn b/deps/v8/.gn index c80980ea092..573fd030d80 100644 --- a/deps/v8/.gn +++ b/deps/v8/.gn @@ -21,5 +21,4 @@ check_targets = [] # These are the list of GN files that run exec_script. This whitelist exists # to force additional review for new uses of exec_script, which is strongly # discouraged except for gypi_to_gn calls. -exec_script_whitelist = - build_dotfile_settings.exec_script_whitelist + [ "//test/test262/BUILD.gn" ] +exec_script_whitelist = build_dotfile_settings.exec_script_whitelist + [] diff --git a/deps/v8/.vpython b/deps/v8/.vpython index 9ea0da7145b..6a9ce3f693e 100644 --- a/deps/v8/.vpython +++ b/deps/v8/.vpython @@ -30,3 +30,16 @@ wheel: < name: "infra/python/wheels/psutil/${vpython_platform}" version: "version:5.2.2" > + +# Used by: +# build/toolchain/win +wheel: < + name: "infra/python/wheels/pypiwin32/${vpython_platform}" + version: "version:219" + match_tag: < + platform: "win32" + > + match_tag: < + platform: "win_amd64" + > +> diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index dfd3eef878c..1b73f538463 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -136,6 +136,8 @@ Sanjoy Das Seo Sanghyeon Stefan Penner Sylvestre Ledru +Taketoshi Aono +Teddy Katz Tiancheng "Timothy" Gu Tobias Burnus Victor Costan diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 49707659723..ad003f194e2 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -4,18 +4,19 @@ import("//build/config/android/config.gni") import("//build/config/arm.gni") +import("//build/config/clang/clang.gni") import("//build/config/dcheck_always_on.gni") import("//build/config/host_byteorder.gni") import("//build/config/jumbo.gni") import("//build/config/mips.gni") import("//build/config/sanitizers/sanitizers.gni") +import("//build_overrides/build.gni") if (is_android) { import("//build/config/android/rules.gni") } import("gni/v8.gni") -import("gni/isolate.gni") import("snapshot_toolchain.gni") declare_args() { @@ -56,7 +57,7 @@ declare_args() { v8_enable_vtunejit = false # Sets -dENABLE_HANDLE_ZAPPING. - v8_enable_handle_zapping = is_debug + v8_enable_handle_zapping = true # Enable slow dchecks. v8_enable_slow_dchecks = false @@ -64,6 +65,11 @@ declare_args() { # Enable fast mksnapshot runs. v8_enable_fast_mksnapshot = false + # Enable embedded builtins. + # TODO(jgruber,v8:6666): Support ia32 and maybe MSVC. + # TODO(jgruber,v8:6666): Re-enable after the M67 branch point. + v8_enable_embedded_builtins = false + # Enable code-generation-time checking of types in the CodeStubAssembler. v8_enable_verify_csa = false @@ -319,6 +325,12 @@ config("features") { if (v8_check_microtasks_scopes_consistency) { defines += [ "V8_CHECK_MICROTASKS_SCOPES_CONSISTENCY" ] } + if (v8_enable_embedded_builtins) { + defines += [ "V8_EMBEDDED_BUILTINS" ] + } + if (v8_use_multi_snapshots) { + defines += [ "V8_MULTI_SNAPSHOTS" ] + } } config("toolchain") { @@ -387,6 +399,9 @@ config("toolchain") { "_MIPS_ARCH_MIPS32R6", "FPU_MODE_FP64", ] + if (mips_use_msa) { + defines += [ "_MIPS_MSA" ] + } } else if (mips_arch_variant == "r2") { defines += [ "_MIPS_ARCH_MIPS32R2" ] if (mips_fpu_mode == "fp64") { @@ -424,6 +439,9 @@ config("toolchain") { } if (mips_arch_variant == "r6") { defines += [ "_MIPS_ARCH_MIPS64R6" ] + if (mips_use_msa) { + defines += [ "_MIPS_MSA" ] + } } else if (mips_arch_variant == "r2") { defines += [ "_MIPS_ARCH_MIPS64R2" ] } @@ -514,7 +532,7 @@ config("toolchain") { if (is_clang) { cflags += [ - "-Wsign-compare", + "-Wmissing-field-initializers", # TODO(hans): Remove once http://crbug.com/428099 is resolved. "-Winconsistent-missing-override", @@ -592,7 +610,6 @@ action("js2c") { "src/js/array.js", "src/js/typedarray.js", "src/js/messages.js", - "src/js/spread.js", "src/debug/mirrors.js", "src/debug/debug.js", "src/debug/liveedit.js", @@ -706,6 +723,8 @@ action("d8_js2c") { if (is_android && enable_java_templates) { android_assets("v8_external_startup_data_assets") { if (v8_use_external_startup_data) { + # We don't support side-by-side snapshots on Android within Chromium. + assert(!v8_use_multi_snapshots) deps = [ "//v8", ] @@ -745,6 +764,10 @@ if (v8_use_external_startup_data) { "$root_out_dir/natives_blob.bin", ] + data = [ + "$root_out_dir/natives_blob.bin", + ] + script = "tools/concatenate-files.py" args = rebase_path(sources + outputs, root_build_dir) @@ -793,8 +816,24 @@ action("postmortem-metadata") { rebase_path(sources, root_build_dir) } -if (v8_use_snapshot) { - action("run_mksnapshot") { +# Template to generate different V8 snapshots based on different runtime flags. +# Can be invoked with run_mksnapshot(). The target will resolve to +# run_mksnapshot_. If is "default", no file suffixes will be used. +# Otherwise files are suffixed, e.g. embedded_.cc and +# snapshot_blob_.bin. +# +# The template exposes the variables: +# args: additional flags for mksnapshots +# embedded_suffix: a camel case suffix for method names in the embedded +# snapshot. +template("run_mksnapshot") { + name = target_name + if (name == "default") { + suffix = "" + } else { + suffix = "_$name" + } + action("run_mksnapshot_" + name) { visibility = [ ":*" ] # Only targets in this file can depend on this. deps = [ @@ -805,19 +844,33 @@ if (v8_use_snapshot) { sources = [] - outputs = [ - "$target_gen_dir/snapshot.cc", - ] + outputs = [] + + data = [] args = [ "./" + rebase_path(get_label_info(":mksnapshot($v8_snapshot_toolchain)", "root_out_dir") + "/mksnapshot", root_build_dir), "--turbo_instruction_scheduling", - "--startup_src", - rebase_path("$target_gen_dir/snapshot.cc", root_build_dir), ] + args += invoker.args + + if (v8_enable_embedded_builtins) { + outputs += [ "$target_gen_dir/embedded${suffix}.cc" ] + args += [ + "--embedded_src", + rebase_path("$target_gen_dir/embedded${suffix}.cc", root_build_dir), + ] + if (invoker.embedded_variant != "") { + args += [ + "--embedded_variant", + invoker.embedded_variant, + ] + } + } + if (v8_random_seed != "0") { args += [ "--random-seed", @@ -837,10 +890,17 @@ if (v8_use_snapshot) { } if (v8_use_external_startup_data) { - outputs += [ "$root_out_dir/snapshot_blob.bin" ] + outputs += [ "$root_out_dir/snapshot_blob${suffix}.bin" ] + data += [ "$root_out_dir/snapshot_blob${suffix}.bin" ] args += [ "--startup_blob", - rebase_path("$root_out_dir/snapshot_blob.bin", root_build_dir), + rebase_path("$root_out_dir/snapshot_blob${suffix}.bin", root_build_dir), + ] + } else { + outputs += [ "$target_gen_dir/snapshot${suffix}.cc" ] + args += [ + "--startup_src", + rebase_path("$target_gen_dir/snapshot${suffix}.cc", root_build_dir), ] } @@ -858,6 +918,23 @@ if (v8_use_snapshot) { } } +if (v8_use_snapshot) { + run_mksnapshot("default") { + args = [] + if (v8_enable_embedded_builtins) { + embedded_variant = "Default" + } + } + if (v8_use_multi_snapshots) { + run_mksnapshot("trusted") { + args = [ "--no-untrusted-code-mitigations" ] + if (v8_enable_embedded_builtins) { + embedded_variant = "Trusted" + } + } + } +} + action("v8_dump_build_config") { script = "tools/testrunner/utils/dump_build_config.py" outputs = [ @@ -883,6 +960,14 @@ action("v8_dump_build_config") { "v8_target_cpu=\"$v8_target_cpu\"", "v8_use_snapshot=$v8_use_snapshot", ] + + if (v8_current_cpu == "mips" || v8_current_cpu == "mipsel" || + v8_current_cpu == "mips64" || v8_current_cpu == "mips64el") { + args += [ + "mips_arch_variant=\"$mips_arch_variant\"", + "mips_use_msa=$mips_use_msa", + ] + } } ############################################################################### @@ -921,12 +1006,13 @@ v8_source_set("v8_nosnapshot") { "$target_gen_dir/experimental-extras-libraries.cc", "$target_gen_dir/extras-libraries.cc", "$target_gen_dir/libraries.cc", + "src/snapshot/embedded-empty.cc", "src/snapshot/snapshot-empty.cc", ] if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # TODO(mostynb@opera.com): don't exclude these http://crbug.com/752428 + # TODO(mostynb@vewd.com): don't exclude these http://crbug.com/752428 # Generated source, contains same variable names as libraries.cc "$target_gen_dir/experimental-extras-libraries.cc", "$target_gen_dir/libraries.cc", @@ -936,7 +1022,7 @@ v8_source_set("v8_nosnapshot") { configs = [ ":internal_config" ] } -if (v8_use_snapshot) { +if (v8_use_snapshot && !v8_use_external_startup_data) { v8_source_set("v8_snapshot") { # Only targets in this file and the top-level visibility target can # depend on this. @@ -954,7 +1040,7 @@ if (v8_use_snapshot) { public_deps = [ # This should be public so downstream targets can declare the snapshot # output file as their inputs. - ":run_mksnapshot", + ":run_mksnapshot_default", ] sources = [ @@ -965,9 +1051,13 @@ if (v8_use_snapshot) { "src/setup-isolate-deserialize.cc", ] + if (v8_enable_embedded_builtins) { + sources += [ "$target_gen_dir/embedded.cc" ] + } + if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # TODO(mostynb@opera.com): don't exclude these http://crbug.com/752428 + # TODO(mostynb@vewd.com): don't exclude these http://crbug.com/752428 # Generated source, contains same variable names as libraries.cc "$target_gen_dir/experimental-extras-libraries.cc", "$target_gen_dir/libraries.cc", @@ -978,7 +1068,7 @@ if (v8_use_snapshot) { } } -if (v8_use_external_startup_data) { +if (v8_use_snapshot && v8_use_external_startup_data) { v8_source_set("v8_external_snapshot") { visibility = [ ":*" ] # Only targets in this file can depend on this. @@ -990,15 +1080,34 @@ if (v8_use_external_startup_data) { ] public_deps = [ ":natives_blob", - ":run_mksnapshot", + ":run_mksnapshot_default", ] + if (v8_use_multi_snapshots) { + public_deps += [ ":run_mksnapshot_trusted" ] + } + sources = [ "src/setup-isolate-deserialize.cc", "src/snapshot/natives-external.cc", "src/snapshot/snapshot-external.cc", ] + if (v8_enable_embedded_builtins) { + sources += [ "$target_gen_dir/embedded.cc" ] + + if (v8_use_multi_snapshots) { + sources += [ "$target_gen_dir/embedded_trusted.cc" ] + + if (use_jumbo_build == true) { + jumbo_excluded_sources = [ + # Duplicated symbols with embedded.cc + "$target_gen_dir/embedded_trusted.cc", + ] + } + } + } + configs = [ ":internal_config" ] } } @@ -1018,6 +1127,7 @@ v8_source_set("v8_initializers") { "src/builtins/builtins-arguments-gen.cc", "src/builtins/builtins-arguments-gen.h", "src/builtins/builtins-array-gen.cc", + "src/builtins/builtins-array-gen.h", "src/builtins/builtins-async-function-gen.cc", "src/builtins/builtins-async-gen.cc", "src/builtins/builtins-async-gen.h", @@ -1060,8 +1170,11 @@ v8_source_set("v8_initializers") { "src/builtins/builtins-string-gen.h", "src/builtins/builtins-symbol-gen.cc", "src/builtins/builtins-typedarray-gen.cc", + "src/builtins/builtins-typedarray-gen.h", "src/builtins/builtins-utils-gen.h", "src/builtins/builtins-wasm-gen.cc", + "src/builtins/growable-fixed-array-gen.cc", + "src/builtins/growable-fixed-array-gen.h", "src/builtins/setup-builtins-internal.cc", "src/heap/setup-heap-internal.cc", "src/ic/accessor-assembler.cc", @@ -1082,7 +1195,7 @@ v8_source_set("v8_initializers") { if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # TODO(mostynb@opera.com): don't exclude these http://crbug.com/752428 + # TODO(mostynb@vewd.com): don't exclude these http://crbug.com/752428 "src/builtins/builtins-async-iterator-gen.cc", "src/builtins/builtins-async-generator-gen.cc", @@ -1193,7 +1306,6 @@ v8_source_set("v8_base") { "//base/trace_event/common/trace_event_common.h", ### gcmole(all) ### - "include/v8-debug.h", "include/v8-inspector-protocol.h", "include/v8-inspector.h", "include/v8-platform.h", @@ -1236,8 +1348,6 @@ v8_source_set("v8_base") { "src/assert-scope.h", "src/ast/ast-function-literal-id-reindexer.cc", "src/ast/ast-function-literal-id-reindexer.h", - "src/ast/ast-numbering.cc", - "src/ast/ast-numbering.h", "src/ast/ast-source-ranges.h", "src/ast/ast-traversal-visitor.h", "src/ast/ast-value-factory.cc", @@ -1304,6 +1414,8 @@ v8_source_set("v8_base") { "src/builtins/builtins-utils.h", "src/builtins/builtins.cc", "src/builtins/builtins.h", + "src/builtins/constants-table-builder.cc", + "src/builtins/constants-table-builder.h", "src/cached-powers.cc", "src/cached-powers.h", "src/callable.h", @@ -1396,6 +1508,7 @@ v8_source_set("v8_base") { "src/compiler/frame-states.h", "src/compiler/frame.cc", "src/compiler/frame.h", + "src/compiler/functional-list.h", "src/compiler/gap-resolver.cc", "src/compiler/gap-resolver.h", "src/compiler/graph-assembler.cc", @@ -1611,6 +1724,8 @@ v8_source_set("v8_base") { "src/extensions/trigger-failure-extension.h", "src/external-reference-table.cc", "src/external-reference-table.h", + "src/external-reference.cc", + "src/external-reference.h", "src/factory-inl.h", "src/factory.cc", "src/factory.h", @@ -1639,6 +1754,8 @@ v8_source_set("v8_base") { "src/global-handles.cc", "src/global-handles.h", "src/globals.h", + "src/handler-table.cc", + "src/handler-table.h", "src/handles-inl.h", "src/handles.cc", "src/handles.h", @@ -1670,6 +1787,7 @@ v8_source_set("v8_base") { "src/heap/invalidated-slots-inl.h", "src/heap/invalidated-slots.cc", "src/heap/invalidated-slots.h", + "src/heap/item-parallel-job.cc", "src/heap/item-parallel-job.h", "src/heap/local-allocator.h", "src/heap/mark-compact-inl.h", @@ -1719,6 +1837,8 @@ v8_source_set("v8_base") { "src/icu_util.h", "src/identity-map.cc", "src/identity-map.h", + "src/instruction-stream.cc", + "src/instruction-stream.h", "src/interface-descriptors.cc", "src/interface-descriptors.h", "src/interpreter/block-coverage-builder.h", @@ -1835,6 +1955,8 @@ v8_source_set("v8_base") { "src/objects/js-array.h", "src/objects/js-collection-inl.h", "src/objects/js-collection.h", + "src/objects/js-promise-inl.h", + "src/objects/js-promise.h", "src/objects/js-regexp-inl.h", "src/objects/js-regexp.h", "src/objects/literal-objects-inl.h", @@ -1842,6 +1964,10 @@ v8_source_set("v8_base") { "src/objects/literal-objects.h", "src/objects/map-inl.h", "src/objects/map.h", + "src/objects/maybe-object-inl.h", + "src/objects/maybe-object.h", + "src/objects/microtask-inl.h", + "src/objects/microtask.h", "src/objects/module-inl.h", "src/objects/module.cc", "src/objects/module.h", @@ -1849,6 +1975,8 @@ v8_source_set("v8_base") { "src/objects/name.h", "src/objects/object-macros-undef.h", "src/objects/object-macros.h", + "src/objects/promise-inl.h", + "src/objects/promise.h", "src/objects/property-descriptor-object-inl.h", "src/objects/property-descriptor-object.h", "src/objects/regexp-match-info.h", @@ -1865,8 +1993,6 @@ v8_source_set("v8_base") { "src/objects/template-objects.h", "src/ostreams.cc", "src/ostreams.h", - "src/parsing/background-parsing-task.cc", - "src/parsing/background-parsing-task.h", "src/parsing/duplicate-finder.h", "src/parsing/expression-classifier.h", "src/parsing/expression-scope-reparenter.cc", @@ -2019,6 +2145,7 @@ v8_source_set("v8_base") { "src/snapshot/default-serializer-allocator.h", "src/snapshot/deserializer.cc", "src/snapshot/deserializer.h", + "src/snapshot/macros.h", "src/snapshot/natives-common.cc", "src/snapshot/natives.h", "src/snapshot/object-deserializer.cc", @@ -2126,14 +2253,10 @@ v8_source_set("v8_base") { "src/wasm/signature-map.h", "src/wasm/streaming-decoder.cc", "src/wasm/streaming-decoder.h", - "src/wasm/wasm-api.cc", - "src/wasm/wasm-api.h", "src/wasm/wasm-code-manager.cc", "src/wasm/wasm-code-manager.h", "src/wasm/wasm-code-specialization.cc", "src/wasm/wasm-code-specialization.h", - "src/wasm/wasm-code-wrapper.cc", - "src/wasm/wasm-code-wrapper.h", "src/wasm/wasm-constants.h", "src/wasm/wasm-debug.cc", "src/wasm/wasm-engine.cc", @@ -2179,7 +2302,7 @@ v8_source_set("v8_base") { if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # TODO(mostynb@opera.com): don't exclude these http://crbug.com/752428 + # TODO(mostynb@vewd.com): don't exclude these http://crbug.com/752428 "src/profiler/heap-snapshot-generator.cc", # Macro clash in mman-linux.h # These source files take an unusually large amount of time to @@ -2334,7 +2457,7 @@ v8_source_set("v8_base") { ] if (use_jumbo_build) { jumbo_excluded_sources += [ - # TODO(mostynb@opera.com): fix this code so it doesn't need + # TODO(mostynb@vewd.com): fix this code so it doesn't need # to be excluded, see the comments inside. "src/arm64/instructions-arm64-constants.cc", ] @@ -2562,6 +2685,8 @@ v8_component("v8_libbase") { public_configs = [ ":libbase_config" ] + data = [] + defines = [] if (is_component_build) { @@ -2570,11 +2695,15 @@ v8_component("v8_libbase") { if (is_posix) { sources += [ - "src/base/platform/platform-posix-time.cc", - "src/base/platform/platform-posix-time.h", "src/base/platform/platform-posix.cc", "src/base/platform/platform-posix.h", ] + if (current_os != "aix") { + sources += [ + "src/base/platform/platform-posix-time.cc", + "src/base/platform/platform-posix-time.h", + ] + } } if (is_linux) { @@ -2646,6 +2775,81 @@ v8_component("v8_libbase") { "winmm.lib", "ws2_32.lib", ] + + if (is_component_build) { + # TODO(machenbach): Move the original out of src/base in order to depend + # on it. + # Copy the VS runtime DLLs into the isolate so that they don't have to be + # preinstalled on the target machine. The debug runtimes have a "d" at + # the end. + if (is_debug) { + vcrt_suffix = "d" + } else { + vcrt_suffix = "" + } + + # These runtime files are copied to the output directory by the + # vs_toolchain script that runs as part of toolchain configuration. + data += [ + "$root_out_dir/msvcp140${vcrt_suffix}.dll", + "$root_out_dir/vccorlib140${vcrt_suffix}.dll", + "$root_out_dir/vcruntime140${vcrt_suffix}.dll", + + # Universal Windows 10 CRT files + "$root_out_dir/api-ms-win-core-console-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-datetime-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-debug-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-errorhandling-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-file-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-file-l1-2-0.dll", + "$root_out_dir/api-ms-win-core-file-l2-1-0.dll", + "$root_out_dir/api-ms-win-core-handle-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-heap-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-interlocked-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-libraryloader-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-localization-l1-2-0.dll", + "$root_out_dir/api-ms-win-core-memory-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-namedpipe-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-processenvironment-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-processthreads-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-processthreads-l1-1-1.dll", + "$root_out_dir/api-ms-win-core-profile-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-rtlsupport-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-string-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-synch-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-synch-l1-2-0.dll", + "$root_out_dir/api-ms-win-core-sysinfo-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-timezone-l1-1-0.dll", + "$root_out_dir/api-ms-win-core-util-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-conio-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-convert-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-environment-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-filesystem-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-heap-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-locale-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-math-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-multibyte-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-private-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-process-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-runtime-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-stdio-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-string-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-time-l1-1-0.dll", + "$root_out_dir/api-ms-win-crt-utility-l1-1-0.dll", + "$root_out_dir/ucrtbase${vcrt_suffix}.dll", + ] + if (is_asan) { + if (current_cpu == "x64") { + data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-x86_64.dll" ] + } else { + data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-i386.dll" ] + } + } + } + } + + if (is_tsan && !build_with_chromium) { + data += [ "tools/sanitizers/tsan_suppressions.txt" ] } # TODO(jochen): Add support for qnx, freebsd, openbsd, netbsd, and solaris. @@ -2657,12 +2861,12 @@ v8_component("v8_libplatform") { "include/libplatform/libplatform-export.h", "include/libplatform/libplatform.h", "include/libplatform/v8-tracing.h", - "src/libplatform/default-background-task-runner.cc", - "src/libplatform/default-background-task-runner.h", "src/libplatform/default-foreground-task-runner.cc", "src/libplatform/default-foreground-task-runner.h", "src/libplatform/default-platform.cc", "src/libplatform/default-platform.h", + "src/libplatform/default-worker-threads-task-runner.cc", + "src/libplatform/default-worker-threads-task-runner.h", "src/libplatform/task-queue.cc", "src/libplatform/task-queue.h", "src/libplatform/tracing/trace-buffer.cc", @@ -2800,10 +3004,6 @@ group("gn_all") { if (want_v8_shell) { deps += [ ":v8_shell" ] } - - if (v8_test_isolation_mode != "noop") { - deps += [ ":d8_run" ] - } } group("v8_clusterfuzz") { @@ -2821,13 +3021,6 @@ group("v8_clusterfuzz") { ":d8(//build/toolchain/linux:clang_x86_v8_arm)", ] } - - if (v8_test_isolation_mode != "noop") { - deps += [ - "tools:run-deopt-fuzzer_run", - "tools:run-num-fuzzer_run", - ] - } } group("v8_archive") { @@ -2838,13 +3031,13 @@ group("v8_archive") { group("v8_fuzzers") { testonly = true - deps = [ + data_deps = [ ":v8_simple_json_fuzzer", ":v8_simple_multi_return_fuzzer", ":v8_simple_parser_fuzzer", + ":v8_simple_regexp_builtins_fuzzer", ":v8_simple_regexp_fuzzer", ":v8_simple_wasm_async_fuzzer", - ":v8_simple_wasm_call_fuzzer", ":v8_simple_wasm_code_fuzzer", ":v8_simple_wasm_compile_fuzzer", ":v8_simple_wasm_data_section_fuzzer", @@ -2952,24 +3145,16 @@ v8_executable("d8") { } if (v8_correctness_fuzzer) { - deps += [ "tools/foozzie:v8_correctness_fuzzer_resources" ] + deps += [ "tools/clusterfuzz:v8_correctness_fuzzer_resources" ] } defines = [] if (v8_enable_vtunejit) { - deps += [ "//src/third_party/vtune:v8_vtune" ] + deps += [ "src/third_party/vtune:v8_vtune" ] } } -v8_isolate_run("d8") { - deps = [ - ":d8", - ] - - isolate = "//src/d8.isolate" -} - v8_executable("v8_hello_world") { sources = [ "samples/hello-world.cc", @@ -3127,6 +3312,25 @@ v8_source_set("parser_fuzzer") { v8_fuzzer("parser_fuzzer") { } +v8_source_set("regexp_builtins_fuzzer") { + sources = [ + "test/fuzzer/regexp-builtins.cc", + "test/fuzzer/regexp_builtins/mjsunit.js.h", + ] + + deps = [ + ":fuzzer_support", + ] + + configs = [ + ":external_config", + ":internal_config_base", + ] +} + +v8_fuzzer("regexp_builtins_fuzzer") { +} + v8_source_set("regexp_fuzzer") { sources = [ "test/fuzzer/regexp.cc", @@ -3218,27 +3422,6 @@ v8_source_set("wasm_code_fuzzer") { v8_fuzzer("wasm_code_fuzzer") { } -v8_source_set("wasm_call_fuzzer") { - sources = [ - "test/common/wasm/test-signatures.h", - "test/fuzzer/wasm-call.cc", - ] - - deps = [ - ":fuzzer_support", - ":lib_wasm_fuzzer_common", - ":wasm_module_runner", - ] - - configs = [ - ":external_config", - ":internal_config_base", - ] -} - -v8_fuzzer("wasm_call_fuzzer") { -} - v8_source_set("lib_wasm_fuzzer_common") { sources = [ "test/fuzzer/wasm-fuzzer-common.cc", diff --git a/deps/v8/ChangeLog b/deps/v8/ChangeLog index 1fe3135a011..b824e74a94e 100644 --- a/deps/v8/ChangeLog +++ b/deps/v8/ChangeLog @@ -1,3 +1,2863 @@ +2018-03-30: Version 6.7.213 + + Performance and stability improvements on all platforms. + + +2018-03-30: Version 6.7.212 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.211 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.210 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.209 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.208 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.207 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.206 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.205 + + Performance and stability improvements on all platforms. + + +2018-03-29: Version 6.7.204 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.203 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.202 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.201 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.200 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.199 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.198 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.197 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.196 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.195 + + Performance and stability improvements on all platforms. + + +2018-03-28: Version 6.7.194 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.193 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.192 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.191 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.190 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.189 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.188 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.187 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.186 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.185 + + Performance and stability improvements on all platforms. + + +2018-03-27: Version 6.7.184 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.183 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.182 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.181 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.180 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.179 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.178 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.177 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.176 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.175 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.174 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.173 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.172 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.171 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.170 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.169 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.168 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.167 + + Performance and stability improvements on all platforms. + + +2018-03-26: Version 6.7.166 + + Performance and stability improvements on all platforms. + + +2018-03-24: Version 6.7.165 + + Performance and stability improvements on all platforms. + + +2018-03-24: Version 6.7.164 + + Performance and stability improvements on all platforms. + + +2018-03-24: Version 6.7.163 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.162 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.161 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.160 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.159 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.158 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.157 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.156 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.155 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.154 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.153 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.152 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.151 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.150 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.149 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.148 + + Performance and stability improvements on all platforms. + + +2018-03-23: Version 6.7.147 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.146 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.145 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.144 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.143 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.142 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.141 + + Performance and stability improvements on all platforms. + + +2018-03-22: Version 6.7.140 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.139 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.138 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.137 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.136 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.135 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.134 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.133 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.132 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.131 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.130 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.129 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.128 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.127 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.126 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.125 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.124 + + Performance and stability improvements on all platforms. + + +2018-03-21: Version 6.7.123 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.122 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.121 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.120 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.119 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.118 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.117 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.116 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.115 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.114 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.113 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.112 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.111 + + Performance and stability improvements on all platforms. + + +2018-03-20: Version 6.7.110 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.109 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.108 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.107 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.106 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.105 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.104 + + Performance and stability improvements on all platforms. + + +2018-03-19: Version 6.7.103 + + Performance and stability improvements on all platforms. + + +2018-03-17: Version 6.7.102 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.101 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.100 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.99 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.98 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.97 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.96 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.95 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.94 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.93 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.92 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.91 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.90 + + Performance and stability improvements on all platforms. + + +2018-03-16: Version 6.7.89 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.88 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.87 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.86 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.85 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.84 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.83 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.82 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.81 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.80 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.79 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.78 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.77 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.76 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.75 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.74 + + Performance and stability improvements on all platforms. + + +2018-03-15: Version 6.7.73 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.72 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.71 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.70 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.69 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.68 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.67 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.66 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.65 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.64 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.63 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.62 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.61 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.60 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.59 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.58 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.57 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.56 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.55 + + Performance and stability improvements on all platforms. + + +2018-03-14: Version 6.7.54 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.53 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.52 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.51 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.50 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.49 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.48 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.47 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.46 + + Performance and stability improvements on all platforms. + + +2018-03-13: Version 6.7.45 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.44 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.43 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.42 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.41 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.40 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.39 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.38 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.37 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.36 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.35 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.34 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.33 + + Performance and stability improvements on all platforms. + + +2018-03-12: Version 6.7.32 + + Performance and stability improvements on all platforms. + + +2018-03-10: Version 6.7.31 + + Performance and stability improvements on all platforms. + + +2018-03-09: Version 6.7.30 + + Performance and stability improvements on all platforms. + + +2018-03-09: Version 6.7.29 + + Performance and stability improvements on all platforms. + + +2018-03-08: Version 6.7.28 + + Performance and stability improvements on all platforms. + + +2018-03-08: Version 6.7.27 + + Performance and stability improvements on all platforms. + + +2018-03-08: Version 6.7.26 + + Performance and stability improvements on all platforms. + + +2018-03-07: Version 6.7.25 + + Performance and stability improvements on all platforms. + + +2018-03-07: Version 6.7.24 + + Performance and stability improvements on all platforms. + + +2018-03-07: Version 6.7.23 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.22 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.21 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.20 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.19 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.18 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.17 + + Performance and stability improvements on all platforms. + + +2018-03-06: Version 6.7.16 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.15 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.14 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.13 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.12 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.11 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.10 + + Performance and stability improvements on all platforms. + + +2018-03-05: Version 6.7.9 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.8 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.7 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.6 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.5 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.4 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.3 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.2 + + Performance and stability improvements on all platforms. + + +2018-03-02: Version 6.7.1 + + Performance and stability improvements on all platforms. + + +2018-03-01: Version 6.6.356 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.355 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.354 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.353 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.352 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.351 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.350 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.349 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.348 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.347 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.346 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.345 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.344 + + Performance and stability improvements on all platforms. + + +2018-02-28: Version 6.6.343 + + Performance and stability improvements on all platforms. + + +2018-02-27: Version 6.6.342 + + Performance and stability improvements on all platforms. + + +2018-02-27: Version 6.6.341 + + Performance and stability improvements on all platforms. + + +2018-02-27: Version 6.6.340 + + Performance and stability improvements on all platforms. + + +2018-02-27: Version 6.6.339 + + Performance and stability improvements on all platforms. + + +2018-02-27: Version 6.6.338 + + Performance and stability improvements on all platforms. + + +2018-02-27: Version 6.6.337 + + Performance and stability improvements on all platforms. + + +2018-02-27: Version 6.6.336 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.335 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.334 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.333 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.332 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.331 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.330 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.329 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.328 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.327 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.326 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.325 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.324 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.323 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.322 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.321 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.320 + + Performance and stability improvements on all platforms. + + +2018-02-26: Version 6.6.319 + + Performance and stability improvements on all platforms. + + +2018-02-25: Version 6.6.318 + + Performance and stability improvements on all platforms. + + +2018-02-25: Version 6.6.317 + + Performance and stability improvements on all platforms. + + +2018-02-25: Version 6.6.316 + + Performance and stability improvements on all platforms. + + +2018-02-25: Version 6.6.315 + + Performance and stability improvements on all platforms. + + +2018-02-24: Version 6.6.314 + + Performance and stability improvements on all platforms. + + +2018-02-24: Version 6.6.313 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.312 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.311 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.310 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.309 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.308 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.307 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.306 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.305 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.304 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.303 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.302 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.301 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.300 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.299 + + Performance and stability improvements on all platforms. + + +2018-02-23: Version 6.6.298 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.297 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.296 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.295 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.294 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.293 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.292 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.291 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.290 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.289 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.288 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.287 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.286 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.285 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.284 + + Performance and stability improvements on all platforms. + + +2018-02-22: Version 6.6.283 + + Performance and stability improvements on all platforms. + + +2018-02-21: Version 6.6.282 + + Performance and stability improvements on all platforms. + + +2018-02-21: Version 6.6.281 + + Performance and stability improvements on all platforms. + + +2018-02-21: Version 6.6.280 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.279 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.278 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.277 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.276 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.275 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.274 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.273 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.272 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.271 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.270 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.269 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.268 + + Performance and stability improvements on all platforms. + + +2018-02-20: Version 6.6.267 + + Performance and stability improvements on all platforms. + + +2018-02-19: Version 6.6.266 + + Performance and stability improvements on all platforms. + + +2018-02-19: Version 6.6.265 + + Performance and stability improvements on all platforms. + + +2018-02-19: Version 6.6.264 + + Performance and stability improvements on all platforms. + + +2018-02-19: Version 6.6.263 + + Performance and stability improvements on all platforms. + + +2018-02-19: Version 6.6.262 + + Performance and stability improvements on all platforms. + + +2018-02-19: Version 6.6.261 + + Performance and stability improvements on all platforms. + + +2018-02-17: Version 6.6.260 + + Performance and stability improvements on all platforms. + + +2018-02-17: Version 6.6.259 + + Performance and stability improvements on all platforms. + + +2018-02-16: Version 6.6.258 + + Performance and stability improvements on all platforms. + + +2018-02-16: Version 6.6.257 + + Performance and stability improvements on all platforms. + + +2018-02-16: Version 6.6.256 + + Performance and stability improvements on all platforms. + + +2018-02-16: Version 6.6.255 + + Performance and stability improvements on all platforms. + + +2018-02-15: Version 6.6.254 + + Performance and stability improvements on all platforms. + + +2018-02-15: Version 6.6.253 + + Performance and stability improvements on all platforms. + + +2018-02-15: Version 6.6.252 + + Performance and stability improvements on all platforms. + + +2018-02-14: Version 6.6.251 + + Performance and stability improvements on all platforms. + + +2018-02-14: Version 6.6.250 + + Performance and stability improvements on all platforms. + + +2018-02-14: Version 6.6.249 + + Performance and stability improvements on all platforms. + + +2018-02-14: Version 6.6.248 + + Performance and stability improvements on all platforms. + + +2018-02-14: Version 6.6.247 + + Performance and stability improvements on all platforms. + + +2018-02-14: Version 6.6.246 + + Performance and stability improvements on all platforms. + + +2018-02-14: Version 6.6.245 + + Performance and stability improvements on all platforms. + + +2018-02-14: Version 6.6.244 + + Performance and stability improvements on all platforms. + + +2018-02-14: Version 6.6.243 + + Performance and stability improvements on all platforms. + + +2018-02-14: Version 6.6.242 + + Performance and stability improvements on all platforms. + + +2018-02-14: Version 6.6.241 + + Performance and stability improvements on all platforms. + + +2018-02-14: Version 6.6.240 + + Performance and stability improvements on all platforms. + + +2018-02-13: Version 6.6.239 + + Performance and stability improvements on all platforms. + + +2018-02-13: Version 6.6.238 + + Performance and stability improvements on all platforms. + + +2018-02-13: Version 6.6.237 + + Performance and stability improvements on all platforms. + + +2018-02-13: Version 6.6.236 + + Performance and stability improvements on all platforms. + + +2018-02-13: Version 6.6.235 + + Performance and stability improvements on all platforms. + + +2018-02-13: Version 6.6.234 + + Performance and stability improvements on all platforms. + + +2018-02-12: Version 6.6.233 + + Performance and stability improvements on all platforms. + + +2018-02-12: Version 6.6.232 + + Performance and stability improvements on all platforms. + + +2018-02-12: Version 6.6.231 + + Performance and stability improvements on all platforms. + + +2018-02-12: Version 6.6.230 + + Performance and stability improvements on all platforms. + + +2018-02-12: Version 6.6.229 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.228 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.227 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.226 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.225 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.224 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.223 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.222 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.221 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.220 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.219 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.218 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.217 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.216 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.215 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.214 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.213 + + Performance and stability improvements on all platforms. + + +2018-02-09: Version 6.6.212 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.211 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.210 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.209 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.208 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.207 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.206 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.205 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.204 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.203 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.202 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.201 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.200 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.199 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.198 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.197 + + Performance and stability improvements on all platforms. + + +2018-02-08: Version 6.6.196 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.195 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.194 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.193 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.192 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.191 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.190 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.189 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.188 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.187 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.186 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.185 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.184 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.183 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.182 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.181 + + Performance and stability improvements on all platforms. + + +2018-02-07: Version 6.6.180 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.179 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.178 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.177 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.176 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.175 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.174 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.173 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.172 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.171 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.170 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.169 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.168 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.167 + + Performance and stability improvements on all platforms. + + +2018-02-06: Version 6.6.166 + + Performance and stability improvements on all platforms. + + +2018-02-05: Version 6.6.165 + + Performance and stability improvements on all platforms. + + +2018-02-05: Version 6.6.164 + + Performance and stability improvements on all platforms. + + +2018-02-05: Version 6.6.163 + + Performance and stability improvements on all platforms. + + +2018-02-05: Version 6.6.162 + + Performance and stability improvements on all platforms. + + +2018-02-05: Version 6.6.161 + + Performance and stability improvements on all platforms. + + +2018-02-05: Version 6.6.160 + + Performance and stability improvements on all platforms. + + +2018-02-05: Version 6.6.159 + + Performance and stability improvements on all platforms. + + +2018-02-05: Version 6.6.158 + + Performance and stability improvements on all platforms. + + +2018-02-05: Version 6.6.157 + + Performance and stability improvements on all platforms. + + +2018-02-05: Version 6.6.156 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.155 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.154 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.153 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.152 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.151 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.150 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.149 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.148 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.147 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.146 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.145 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.144 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.143 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.142 + + Performance and stability improvements on all platforms. + + +2018-02-02: Version 6.6.141 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.140 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.139 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.138 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.137 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.136 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.135 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.134 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.133 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.132 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.131 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.130 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.129 + + Performance and stability improvements on all platforms. + + +2018-02-01: Version 6.6.128 + + Performance and stability improvements on all platforms. + + +2018-01-31: Version 6.6.127 + + Performance and stability improvements on all platforms. + + +2018-01-31: Version 6.6.126 + + Performance and stability improvements on all platforms. + + +2018-01-31: Version 6.6.125 + + Performance and stability improvements on all platforms. + + +2018-01-31: Version 6.6.124 + + Performance and stability improvements on all platforms. + + +2018-01-31: Version 6.6.123 + + Performance and stability improvements on all platforms. + + +2018-01-31: Version 6.6.122 + + Performance and stability improvements on all platforms. + + +2018-01-31: Version 6.6.121 + + Performance and stability improvements on all platforms. + + +2018-01-31: Version 6.6.120 + + Performance and stability improvements on all platforms. + + +2018-01-31: Version 6.6.119 + + Performance and stability improvements on all platforms. + + +2018-01-31: Version 6.6.118 + + Performance and stability improvements on all platforms. + + +2018-01-31: Version 6.6.117 + + Performance and stability improvements on all platforms. + + +2018-01-31: Version 6.6.116 + + Performance and stability improvements on all platforms. + + +2018-01-30: Version 6.6.115 + + Performance and stability improvements on all platforms. + + +2018-01-30: Version 6.6.114 + + Performance and stability improvements on all platforms. + + +2018-01-30: Version 6.6.113 + + Performance and stability improvements on all platforms. + + +2018-01-30: Version 6.6.112 + + Performance and stability improvements on all platforms. + + +2018-01-30: Version 6.6.111 + + Performance and stability improvements on all platforms. + + +2018-01-30: Version 6.6.110 + + Performance and stability improvements on all platforms. + + +2018-01-30: Version 6.6.109 + + Performance and stability improvements on all platforms. + + +2018-01-30: Version 6.6.108 + + Performance and stability improvements on all platforms. + + +2018-01-30: Version 6.6.107 + + Performance and stability improvements on all platforms. + + +2018-01-30: Version 6.6.106 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.105 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.104 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.103 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.102 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.101 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.100 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.99 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.98 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.97 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.96 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.95 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.94 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.93 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.92 + + Performance and stability improvements on all platforms. + + +2018-01-29: Version 6.6.91 + + Performance and stability improvements on all platforms. + + +2018-01-27: Version 6.6.90 + + Performance and stability improvements on all platforms. + + +2018-01-27: Version 6.6.89 + + Performance and stability improvements on all platforms. + + +2018-01-26: Version 6.6.88 + + Performance and stability improvements on all platforms. + + +2018-01-26: Version 6.6.87 + + Performance and stability improvements on all platforms. + + +2018-01-26: Version 6.6.86 + + Performance and stability improvements on all platforms. + + +2018-01-26: Version 6.6.85 + + Performance and stability improvements on all platforms. + + +2018-01-26: Version 6.6.84 + + Performance and stability improvements on all platforms. + + +2018-01-26: Version 6.6.83 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.82 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.81 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.80 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.79 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.78 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.77 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.76 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.75 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.74 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.73 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.72 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.71 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.70 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.69 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.68 + + Performance and stability improvements on all platforms. + + +2018-01-25: Version 6.6.67 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.66 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.65 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.64 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.63 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.62 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.61 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.60 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.59 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.58 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.57 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.56 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.55 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.54 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.53 + + Performance and stability improvements on all platforms. + + +2018-01-24: Version 6.6.52 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.51 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.50 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.49 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.48 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.47 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.46 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.45 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.44 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.43 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.42 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.41 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.40 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.39 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.38 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.37 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.36 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.35 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.34 + + Performance and stability improvements on all platforms. + + +2018-01-23: Version 6.6.33 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.32 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.31 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.30 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.29 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.28 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.27 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.26 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.25 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.24 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.23 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.22 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.21 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.20 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.19 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.18 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.17 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.16 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.15 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.14 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.13 + + Performance and stability improvements on all platforms. + + +2018-01-22: Version 6.6.12 + + Performance and stability improvements on all platforms. + + +2018-01-21: Version 6.6.11 + + Performance and stability improvements on all platforms. + + +2018-01-20: Version 6.6.10 + + Performance and stability improvements on all platforms. + + +2018-01-20: Version 6.6.9 + + Performance and stability improvements on all platforms. + + +2018-01-19: Version 6.6.8 + + Performance and stability improvements on all platforms. + + +2018-01-19: Version 6.6.7 + + Performance and stability improvements on all platforms. + + +2018-01-19: Version 6.6.6 + + Performance and stability improvements on all platforms. + + +2018-01-19: Version 6.6.5 + + Performance and stability improvements on all platforms. + + +2018-01-19: Version 6.6.4 + + Performance and stability improvements on all platforms. + + +2018-01-19: Version 6.6.3 + + Performance and stability improvements on all platforms. + + +2018-01-19: Version 6.6.2 + + Performance and stability improvements on all platforms. + + +2018-01-19: Version 6.6.1 + + Performance and stability improvements on all platforms. + + +2018-01-18: Version 6.5.257 + + Performance and stability improvements on all platforms. + + +2018-01-18: Version 6.5.256 + + Performance and stability improvements on all platforms. + + +2018-01-18: Version 6.5.255 + + Performance and stability improvements on all platforms. + + 2018-01-17: Version 6.5.254 Performance and stability improvements on all platforms. diff --git a/deps/v8/DEPS b/deps/v8/DEPS index bc9e4e0a90c..00a45480de2 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -3,64 +3,65 @@ # all paths in here must match this assumption. vars = { + 'build_for_node': False, 'checkout_instrumented_libraries': False, 'chromium_url': 'https://chromium.googlesource.com', - 'build_for_node': False, + 'download_gcmole': False, + 'download_jsfunfuzz': False, + 'download_mips_toolchain': False, } deps = { 'v8/build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + 'b3a78cd03a95c30ff10f863f736249eb04f0f34d', + Var('chromium_url') + '/chromium/src/build.git' + '@' + 'e7b36e57bbceeea55bd6603fcc4f6c1de375f5a3', 'v8/tools/gyp': Var('chromium_url') + '/external/gyp.git' + '@' + 'd61a9397e668fa9843c4aa7da9e79460fe590bfb', 'v8/third_party/icu': - Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'c8ca2962b46670ec89071ffd1291688983cd319c', + Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'd888fd2a1be890f4d35e43f68d6d79f42519a357', 'v8/third_party/instrumented_libraries': - Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + 'b7578b4132cf73ca3265e2ee0b7bd0a422a54ebf', + Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + '323cf32193caecbf074d1a0cb5b02b905f163e0f', 'v8/buildtools': - Var('chromium_url') + '/chromium/buildtools.git' + '@' + '6fe4a3251488f7af86d64fc25cf442e817cf6133', + Var('chromium_url') + '/chromium/buildtools.git' + '@' + '3748a2a90871fc25b0455790fa5a6699553f5197', 'v8/base/trace_event/common': - Var('chromium_url') + '/chromium/src/base/trace_event/common.git' + '@' + '0e9a47d74970bee1bbfc063c47215406f8918699', + Var('chromium_url') + '/chromium/src/base/trace_event/common.git' + '@' + '211b3ed9d0481b4caddbee1322321b86a483ca1f', 'v8/third_party/android_ndk': { - 'url': Var('chromium_url') + '/android_ndk.git' + '@' + 'e951c37287c7d8cd915bf8d4149fd4a06d808b55', + 'url': Var('chromium_url') + '/android_ndk.git' + '@' + '635bc380968a76f6948fee65f80a0b28db53ae81', 'condition': 'checkout_android', }, 'v8/third_party/android_tools': { - 'url': Var('chromium_url') + '/android_tools.git' + '@' + 'c78b25872734e0038ae2a333edc645cd96bc232d', + 'url': Var('chromium_url') + '/android_tools.git' + '@' + 'c22a664c39af72dd8f89200220713dcad811300a', 'condition': 'checkout_android', }, 'v8/third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + 'b4826a52853c9c2778d496f6c6fa853f777f94df', + 'url': Var('chromium_url') + '/catapult.git' + '@' + 'b1c9ad5aa1d025c93dd71880a84c2381909584d5', 'condition': 'checkout_android', }, 'v8/third_party/colorama/src': { 'url': Var('chromium_url') + '/external/colorama.git' + '@' + '799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8', 'condition': 'checkout_android', }, + 'v8/third_party/googletest/src': + Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + 'a325ad2db5deb623eab740527e559b81c0f39d65', 'v8/third_party/jinja2': - Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + 'd34383206fa42d52faa10bb9931d6d538f3a57e0', + Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + '45571de473282bd1d8b63a8dfcb1fd268d0635d2', 'v8/third_party/markupsafe': Var('chromium_url') + '/chromium/src/third_party/markupsafe.git' + '@' + '8f45f5cfa0009d2a70589bcda0349b8cb2b72783', 'v8/tools/swarming_client': Var('chromium_url') + '/infra/luci/client-py.git' + '@' + '88229872dd17e71658fe96763feaa77915d8cbd6', - 'v8/testing/gtest': - Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '6f8a66431cb592dad629028a50b3dd418a408c87', - 'v8/testing/gmock': - Var('chromium_url') + '/external/googlemock.git' + '@' + '0421b6f358139f02e102c9c332ce19a33faf75be', 'v8/test/benchmarks/data': Var('chromium_url') + '/v8/deps/third_party/benchmarks.git' + '@' + '05d7188267b4560491ff9155c5ee13e207ecd65f', 'v8/test/mozilla/data': Var('chromium_url') + '/v8/deps/third_party/mozilla-tests.git' + '@' + 'f6c578a10ea707b1a8ab0b88943fe5115ce2b9be', 'v8/test/test262/data': - Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + '8311965251953d4745aeb68c98fb71fab2eac1d0', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + '0192e0d70e2295fb590f14865da42f0f9dfa64bd', 'v8/test/test262/harness': Var('chromium_url') + '/external/github.com/test262-utils/test262-harness-py.git' + '@' + '0f2acdd882c84cff43b9d60df7574a1901e2cdcd', 'v8/tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '27088876ff821e8a1518383576a43662a3255d56', + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '82ac1c9c988260d902e5f2bc73f19792fa3d430c', 'v8/tools/luci-go': - Var('chromium_url') + '/chromium/src/tools/luci-go.git' + '@' + 'd882048313f6f51df29856406fa03b620c1d0205', + Var('chromium_url') + '/chromium/src/tools/luci-go.git' + '@' + 'ff0709d4283b1f233dcf0c9fec1672c6ecaed2f1', 'v8/test/wasm-js': - Var('chromium_url') + '/external/github.com/WebAssembly/spec.git' + '@' + 'a25083ac7076b05e3f304ec9e093ef1b1ee09422', + Var('chromium_url') + '/external/github.com/WebAssembly/spec.git' + '@' + '586d34770c6445bfb93c9bae8ac50baade7ee168', } recursedeps = [ @@ -78,7 +79,6 @@ include_rules = [ # checkdeps.py shouldn't check for includes in these directories: skip_child_includes = [ 'build', - 'gypfiles', 'third_party', ] @@ -91,7 +91,9 @@ hooks = [ 'pattern': '.', 'action': [ 'python', - 'v8/gypfiles/landmines.py', + 'v8/build/landmines.py', + '--landmine-scripts', + 'v8/tools/get_landmines.py', ], }, # Pull clang-format binaries using checked-in hashes. @@ -134,21 +136,23 @@ hooks = [ { 'name': 'gcmole', 'pattern': '.', - 'condition': 'build_for_node != True', - # TODO(machenbach): Insert condition and remove GYP_DEFINES dependency. - 'action': [ - 'python', - 'v8/tools/gcmole/download_gcmole_tools.py', + 'condition': 'download_gcmole', + 'action': [ 'download_from_google_storage', + '--bucket', 'chrome-v8-gcmole', + '-u', '--no_resume', + '-s', 'v8/tools/gcmole/gcmole-tools.tar.gz.sha1', + '--platform=linux*', ], }, { 'name': 'jsfunfuzz', 'pattern': '.', - 'condition': 'build_for_node != True', - # TODO(machenbach): Insert condition and remove GYP_DEFINES dependency. - 'action': [ - 'python', - 'v8/tools/jsfunfuzz/download_jsfunfuzz.py', + 'condition': 'download_jsfunfuzz', + 'action': [ 'download_from_google_storage', + '--bucket', 'chrome-v8-jsfunfuzz', + '-u', '--no_resume', + '-s', 'v8/tools/jsfunfuzz/jsfunfuzz.tar.gz.sha1', + '--platform=linux*', ], }, # Pull luci-go binaries (isolate, swarming) using checked-in hashes. @@ -250,17 +254,39 @@ hooks = [ ], }, { - # Downloads the current stable linux sysroot to build/linux/ if needed. - # This sysroot updates at about the same rate that the chrome build deps - # change. - 'name': 'sysroot', + 'name': 'sysroot_arm', 'pattern': '.', - 'condition': 'build_for_node != True', - 'action': [ - 'python', - 'v8/build/linux/sysroot_scripts/install-sysroot.py', - '--running-as-hook', - ], + 'condition': '(checkout_linux and checkout_arm)', + 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', + '--arch=arm'], + }, + { + 'name': 'sysroot_arm64', + 'pattern': '.', + 'condition': '(checkout_linux and checkout_arm64)', + 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', + '--arch=arm64'], + }, + { + 'name': 'sysroot_x86', + 'pattern': '.', + 'condition': '(checkout_linux and (checkout_x86 or checkout_x64))', + 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', + '--arch=x86'], + }, + { + 'name': 'sysroot_mips', + 'pattern': '.', + 'condition': '(checkout_linux and checkout_mips)', + 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', + '--arch=mips'], + }, + { + 'name': 'sysroot_x64', + 'pattern': '.', + 'condition': 'checkout_linux and checkout_x64', + 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', + '--arch=x64'], }, { 'name': 'msan_chained_origins', @@ -307,6 +333,8 @@ hooks = [ # Note: On Win, this should run after win_toolchain, as it may use it. 'name': 'clang', 'pattern': '.', + # clang not supported on aix + 'condition': 'host_os != "aix"', 'action': ['python', 'v8/tools/clang/scripts/update.py'], }, { @@ -316,15 +344,20 @@ hooks = [ 'action': [ 'python', 'v8/build/fuchsia/update_sdk.py', - '226f6dd0cad1d6be63a353ce2649423470729ae9', ], }, { - # A change to a .gyp, .gypi, or to GYP itself should run the generator. - 'name': 'regyp_if_needed', + 'name': 'mips_toolchain', 'pattern': '.', - 'condition': 'build_for_node != True', - 'action': ['python', 'v8/gypfiles/gyp_v8', '--running-as-hook'], + 'condition': 'download_mips_toolchain', + 'action': [ 'download_from_google_storage', + '--no_resume', + '--platform=linux', + '--no_auth', + '-u', + '--bucket', 'chromium-v8', + '-s', 'v8/tools/mips_toolchain.tar.gz.sha1', + ], }, # Download and initialize "vpython" VirtualEnv environment packages. { diff --git a/deps/v8/Makefile b/deps/v8/Makefile deleted file mode 100644 index 167ebf8c082..00000000000 --- a/deps/v8/Makefile +++ /dev/null @@ -1,493 +0,0 @@ -# Copyright 2012 the V8 project authors. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -# Variable default definitions. Override them by exporting them in your shell. -OUTDIR ?= out -TESTJOBS ?= -GYPFLAGS ?= -TESTFLAGS ?= -ANDROID_NDK_HOST_ARCH ?= -ANDROID_V8 ?= /data/local/tmp/v8 - -# Special build flags. Use them like this: "make library=shared" - -# library=shared || component=shared_library -ifeq ($(library), shared) - GYPFLAGS += -Dcomponent=shared_library -endif -ifdef component - GYPFLAGS += -Dcomponent=$(component) -endif -# disassembler=on -ifeq ($(disassembler), on) - GYPFLAGS += -Dv8_enable_disassembler=1 -endif -# objectprint=on -ifeq ($(objectprint), on) - GYPFLAGS += -Dv8_object_print=1 -endif -# verifycsa=on -ifeq ($(verifycsa), on) - GYPFLAGS += -Dv8_enable_verify_csa=1 -endif -# verifyheap=on -ifeq ($(verifyheap), on) - GYPFLAGS += -Dv8_enable_verify_heap=1 -endif -# tracemaps=on -ifeq ($(tracemaps), on) - GYPFLAGS += -Dv8_trace_maps=1 -endif -# concurrentmarking=on -ifeq ($(concurrentmarking), on) - GYPFLAGS += -Dv8_enable_concurrent_marking=1 -endif -# backtrace=off -ifeq ($(backtrace), off) - GYPFLAGS += -Dv8_enable_backtrace=0 -else - GYPFLAGS += -Dv8_enable_backtrace=1 -endif -# verifypredictable=on -ifeq ($(verifypredictable), on) - GYPFLAGS += -Dv8_enable_verify_predictable=1 -endif -# snapshot=off -ifeq ($(snapshot), off) - GYPFLAGS += -Dv8_use_snapshot='false' -endif -ifeq ($(snapshot), external) - GYPFLAGS += -Dv8_use_external_startup_data=1 -endif -# extrachecks=on/off -ifeq ($(extrachecks), on) - GYPFLAGS += -Ddcheck_always_on=1 -Dv8_enable_handle_zapping=1 -endif -ifeq ($(extrachecks), off) - GYPFLAGS += -Ddcheck_always_on=0 -Dv8_enable_handle_zapping=0 -endif -# slowdchecks=on/off -ifeq ($(slowdchecks), on) - GYPFLAGS += -Dv8_enable_slow_dchecks=1 -endif -ifeq ($(slowdchecks), off) - GYPFLAGS += -Dv8_enable_slow_dchecks=0 -endif -# debugsymbols=on -ifeq ($(debugsymbols), on) - GYPFLAGS += -Drelease_extra_cflags=-ggdb3 -endif -# gdbjit=on/off -ifeq ($(gdbjit), on) - GYPFLAGS += -Dv8_enable_gdbjit=1 -endif -ifeq ($(gdbjit), off) - GYPFLAGS += -Dv8_enable_gdbjit=0 -endif -# vtunejit=on -ifeq ($(vtunejit), on) - GYPFLAGS += -Dv8_enable_vtunejit=1 -endif -# unalignedaccess=on -ifeq ($(unalignedaccess), on) - GYPFLAGS += -Dv8_can_use_unaligned_accesses=true -endif -# randomseed=12345, disable random seed via randomseed=0 -ifdef randomseed - GYPFLAGS += -Dv8_random_seed=$(randomseed) -endif -# soname_version=1.2.3 -ifdef soname_version - GYPFLAGS += -Dsoname_version=$(soname_version) -endif -# werror=no -ifeq ($(werror), no) - GYPFLAGS += -Dwerror='' -endif -# strictaliasing=off (workaround for GCC-4.5) -ifeq ($(strictaliasing), off) - GYPFLAGS += -Dv8_no_strict_aliasing=1 -endif -# regexp=interpreted -ifeq ($(regexp), interpreted) - GYPFLAGS += -Dv8_interpreted_regexp=1 -endif -# i18nsupport=off -ifeq ($(i18nsupport), off) - GYPFLAGS += -Dv8_enable_i18n_support=0 - TESTFLAGS += --noi18n -endif -# deprecationwarnings=on -ifeq ($(deprecationwarnings), on) - GYPFLAGS += -Dv8_deprecation_warnings=1 -endif -# vectorstores=on -ifeq ($(vectorstores), on) - GYPFLAGS += -Dv8_vector_stores=1 -endif -# imminentdeprecationwarnings=on -ifeq ($(imminentdeprecationwarnings), on) - GYPFLAGS += -Dv8_imminent_deprecation_warnings=1 -endif -# asan=on -ifeq ($(asan), on) - GYPFLAGS += -Dasan=1 -Dclang=1 - TESTFLAGS += --asan - ifeq ($(lsan), on) - GYPFLAGS += -Dlsan=1 - endif -endif -ifdef embedscript - GYPFLAGS += -Dembed_script=$(embedscript) -endif -ifdef warmupscript - GYPFLAGS += -Dwarmup_script=$(warmupscript) -endif -ifeq ($(goma), on) - GYPFLAGS += -Duse_goma=1 -endif -# v8_os_page_size=0, when 0 or not specified use build OS page size -ifdef v8_os_page_size - ifneq ($(v8_os_page_size), 0) - ifneq ($(snapshot), off) - GYPFLAGS += -Dv8_os_page_size=$(v8_os_page_size) - endif - endif -endif -# arm specific flags. -# arm_version= -ifneq ($(strip $(arm_version)),) - GYPFLAGS += -Darm_version=$(arm_version) -else -# Deprecated (use arm_version instead): armv7=false/true -ifeq ($(armv7), false) - GYPFLAGS += -Darm_version=6 -else -ifeq ($(armv7), true) - GYPFLAGS += -Darm_version=7 -endif -endif -endif -# hardfp=on/off. Deprecated, use armfloatabi -ifeq ($(hardfp),on) - GYPFLAGS += -Darm_float_abi=hard -else -ifeq ($(hardfp),off) - GYPFLAGS += -Darm_float_abi=softfp -endif -endif -# fpu: armfpu=xxx -# xxx: vfp, vfpv3-d16, vfpv3, neon. -ifeq ($(armfpu),) - GYPFLAGS += -Darm_fpu=default -else - GYPFLAGS += -Darm_fpu=$(armfpu) -endif -# float abi: armfloatabi=softfp/hard -ifeq ($(armfloatabi),) -ifeq ($(hardfp),) - GYPFLAGS += -Darm_float_abi=default -endif -else - GYPFLAGS += -Darm_float_abi=$(armfloatabi) -endif -# armthumb=on/off -ifeq ($(armthumb), off) - GYPFLAGS += -Darm_thumb=0 -else -ifeq ($(armthumb), on) - GYPFLAGS += -Darm_thumb=1 -endif -endif -# arm_test_noprobe=on -# With this flag set, by default v8 will only use features implied -# by the compiler (no probe). This is done by modifying the default -# values of enable_armv7, enable_vfp3, enable_32dregs and enable_neon. -# Modifying these flags when launching v8 will enable the probing for -# the specified values. -ifeq ($(arm_test_noprobe), on) - GYPFLAGS += -Darm_test_noprobe=on -endif -# Do not omit the frame pointer, needed for profiling with perf -ifeq ($(no_omit_framepointer), on) - GYPFLAGS += -Drelease_extra_cflags=-fno-omit-frame-pointer -endif - -ifdef android_ndk_root - GYPFLAGS += -Dandroid_ndk_root=$(android_ndk_root) - export ANDROID_NDK_ROOT = $(android_ndk_root) -endif - -# ----------------- available targets: -------------------- -# - any arch listed in ARCHES (see below) -# - any mode listed in MODES -# - every combination ., e.g. "ia32.release" -# - "native": current host's architecture, release mode -# - any of the above with .check appended, e.g. "ia32.release.check" -# - "android": cross-compile for Android/ARM -# - default (no target specified): build all DEFAULT_ARCHES and MODES -# - "check": build all targets and run all tests -# - ".clean" for any in ARCHES -# - "clean": clean all ARCHES - -# ----------------- internal stuff ------------------------ - -# Architectures and modes to be compiled. Consider these to be internal -# variables, don't override them (use the targets instead). -ARCHES = ia32 x64 arm arm64 mips mipsel mips64 mips64el ppc ppc64 s390 s390x -ARCHES32 = ia32 arm mips mipsel ppc s390 -DEFAULT_ARCHES = ia32 x64 arm -MODES = release debug optdebug -DEFAULT_MODES = release debug -ANDROID_ARCHES = android_ia32 android_x64 android_arm android_arm64 \ - android_mipsel - -# List of files that trigger Makefile regeneration: -GYPFILES = third_party/icu/icu.gypi third_party/icu/icu.gyp \ - gypfiles/shim_headers.gypi gypfiles/features.gypi \ - gypfiles/standalone.gypi \ - gypfiles/toolchain.gypi gypfiles/all.gyp gypfiles/mac/asan.gyp \ - test/cctest/cctest.gyp test/fuzzer/fuzzer.gyp \ - test/unittests/unittests.gyp src/v8.gyp \ - tools/parser-shell.gyp testing/gmock.gyp testing/gtest.gyp \ - samples/samples.gyp src/third_party/vtune/v8vtune.gyp src/d8.gyp - -# If vtunejit=on, the v8vtune.gyp will be appended. -ifeq ($(vtunejit), on) - GYPFILES += src/third_party/vtune/v8vtune.gyp -endif -# Generates all combinations of ARCHES and MODES, e.g. "ia32.release". -BUILDS = $(foreach mode,$(MODES),$(addsuffix .$(mode),$(ARCHES))) -ANDROID_BUILDS = $(foreach mode,$(MODES), \ - $(addsuffix .$(mode),$(ANDROID_ARCHES))) -# Generates corresponding test targets, e.g. "ia32.release.check". -CHECKS = $(addsuffix .check,$(BUILDS)) -QUICKCHECKS = $(addsuffix .quickcheck,$(BUILDS)) -ANDROID_CHECKS = $(addsuffix .check,$(ANDROID_BUILDS)) -# File where previously used GYPFLAGS are stored. -ENVFILE = $(OUTDIR)/environment - -.PHONY: all check clean builddeps dependencies $(ENVFILE).new native \ - qc quickcheck $(QUICKCHECKS) turbocheck \ - $(addsuffix .quickcheck,$(MODES)) $(addsuffix .quickcheck,$(ARCHES)) \ - $(ARCHES) $(MODES) $(BUILDS) $(CHECKS) $(addsuffix .clean,$(ARCHES)) \ - $(addsuffix .check,$(MODES)) $(addsuffix .check,$(ARCHES)) \ - $(ANDROID_ARCHES) $(ANDROID_BUILDS) $(ANDROID_CHECKS) - -# Target definitions. "all" is the default. -all: $(DEFAULT_MODES) - -# Special target for the buildbots to use. Depends on $(OUTDIR)/Makefile -# having been created before. -buildbot: - $(MAKE) -C "$(OUTDIR)" BUILDTYPE=$(BUILDTYPE) \ - builddir="$(abspath $(OUTDIR))/$(BUILDTYPE)" - -# Compile targets. MODES and ARCHES are convenience targets. -.SECONDEXPANSION: -$(MODES): $(addsuffix .$$@,$(DEFAULT_ARCHES)) - -$(ARCHES): $(addprefix $$@.,$(DEFAULT_MODES)) - -# Defines how to build a particular target (e.g. ia32.release). -$(BUILDS): $(OUTDIR)/Makefile.$$@ - @$(MAKE) -C "$(OUTDIR)" -f Makefile.$@ \ - BUILDTYPE=$(shell echo $(subst .,,$(suffix $@)) | \ - python -c "print \ - raw_input().replace('opt', '').capitalize()") \ - builddir="$(shell pwd)/$(OUTDIR)/$@" - -native: $(OUTDIR)/Makefile.native - @$(MAKE) -C "$(OUTDIR)" -f Makefile.native \ - BUILDTYPE=Release \ - builddir="$(shell pwd)/$(OUTDIR)/$@" - -$(ANDROID_ARCHES): $(addprefix $$@.,$(MODES)) - -$(ANDROID_BUILDS): $(GYPFILES) $(ENVFILE) Makefile.android - @$(MAKE) -f Makefile.android $@ \ - ARCH="$(basename $@)" \ - MODE="$(subst .,,$(suffix $@))" \ - OUTDIR="$(OUTDIR)" \ - GYPFLAGS="$(GYPFLAGS)" - -# Test targets. -check: all - @gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR) \ - --arch=$(shell echo $(DEFAULT_ARCHES) | sed -e 's/ /,/g') \ - $(TESTFLAGS) - -$(addsuffix .check,$(MODES)): $$(basename $$@) - @gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR) \ - --mode=$(basename $@) $(TESTFLAGS) - -$(addsuffix .check,$(ARCHES)): $$(basename $$@) - @gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR) \ - --arch=$(basename $@) $(TESTFLAGS) - -$(CHECKS): $$(basename $$@) - @gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR) \ - --arch-and-mode=$(basename $@) $(TESTFLAGS) - -$(addsuffix .quickcheck,$(MODES)): $$(basename $$@) - @gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR) \ - --mode=$(basename $@) $(TESTFLAGS) --quickcheck - -$(addsuffix .quickcheck,$(ARCHES)): $$(basename $$@) - @gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR) \ - --arch=$(basename $@) $(TESTFLAGS) --quickcheck - -$(QUICKCHECKS): $$(basename $$@) - @gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR) \ - --arch-and-mode=$(basename $@) $(TESTFLAGS) --quickcheck - -$(addsuffix .sync, $(ANDROID_BUILDS)): $$(basename $$@) - @tools/android-sync.sh $(basename $@) $(OUTDIR) \ - $(shell pwd) $(ANDROID_V8) - -$(addsuffix .check, $(ANDROID_BUILDS)): $$(basename $$@).sync - @gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR) \ - --arch-and-mode=$(basename $@) \ - --timeout=600 \ - --command-prefix="tools/android-run.py" $(TESTFLAGS) - -$(addsuffix .check, $(ANDROID_ARCHES)): \ - $(addprefix $$(basename $$@).,$(MODES)).check - -native.check: native - @gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR)/native \ - --arch-and-mode=. $(TESTFLAGS) - -SUPERFASTTESTMODES = ia32.release -FASTTESTMODES = $(SUPERFASTTESTMODES),x64.release,ia32.optdebug,x64.optdebug,arm.optdebug,arm64.release -FASTCOMPILEMODES = $(FASTTESTMODES),arm64.optdebug - -COMMA = , -EMPTY = -SPACE = $(EMPTY) $(EMPTY) -quickcheck: $(subst $(COMMA),$(SPACE),$(FASTCOMPILEMODES)) - gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR) \ - --arch-and-mode=$(SUPERFASTTESTMODES) $(TESTFLAGS) --quickcheck \ - --download-data mozilla webkit - gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR) \ - --arch-and-mode=$(FASTTESTMODES) $(TESTFLAGS) --quickcheck -qc: quickcheck - -turbocheck: $(subst $(COMMA),$(SPACE),$(FASTCOMPILEMODES)) - gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR) \ - --arch-and-mode=$(SUPERFASTTESTMODES) $(TESTFLAGS) \ - --quickcheck --variants=turbofan --download-data mozilla webkit - gypfiles/run-tests-legacy.py $(TESTJOBS) --outdir=$(OUTDIR) \ - --arch-and-mode=$(FASTTESTMODES) $(TESTFLAGS) \ - --quickcheck --variants=turbofan -tc: turbocheck - -# Clean targets. You can clean each architecture individually, or everything. -$(addsuffix .clean, $(ARCHES) $(ANDROID_ARCHES)): - rm -f $(OUTDIR)/Makefile.$(basename $@)* - rm -rf $(OUTDIR)/$(basename $@).release - rm -rf $(OUTDIR)/$(basename $@).debug - rm -rf $(OUTDIR)/$(basename $@).optdebug - find $(OUTDIR) -regex '.*\(host\|target\)\.$(basename $@).*\.mk' -delete - -native.clean: - rm -f $(OUTDIR)/Makefile.native - rm -rf $(OUTDIR)/native - find $(OUTDIR) -regex '.*\(host\|target\)\.native\.mk' -delete - -clean: $(addsuffix .clean, $(ARCHES) $(ANDROID_ARCHES)) native.clean gtags.clean tags.clean - -# GYP file generation targets. -OUT_MAKEFILES = $(addprefix $(OUTDIR)/Makefile.,$(BUILDS)) -$(OUT_MAKEFILES): $(GYPFILES) $(ENVFILE) - $(eval CXX_TARGET_ARCH:=$(shell $(CXX) -v 2>&1 | grep ^Target: | \ - cut -f 2 -d " " | cut -f 1 -d "-" )) - $(eval CXX_TARGET_ARCH:=$(subst aarch64,arm64,$(CXX_TARGET_ARCH))) - $(eval CXX_TARGET_ARCH:=$(subst x86_64,x64,$(CXX_TARGET_ARCH))) - $(eval CXX_TARGET_ARCH:=$(subst s390x,s390,$(CXX_TARGET_ARCH))) - $(eval CXX_TARGET_ARCH:=$(subst powerpc,ppc,$(CXX_TARGET_ARCH))) - $(eval CXX_TARGET_ARCH:=$(subst ppc64,ppc,$(CXX_TARGET_ARCH))) - $(eval CXX_TARGET_ARCH:=$(subst ppcle,ppc,$(CXX_TARGET_ARCH))) - $(eval V8_TARGET_ARCH:=$(subst .,,$(suffix $(basename $@)))) - PYTHONPATH="$(shell pwd)/tools/generate_shim_headers:$(shell pwd)/gypfiles:$(PYTHONPATH):$(shell pwd)/tools/gyp/pylib:$(PYTHONPATH)" \ - GYP_GENERATORS=make \ - tools/gyp/gyp --generator-output="$(OUTDIR)" gypfiles/all.gyp \ - -Igypfiles/standalone.gypi --depth=. \ - -Dv8_target_arch=$(V8_TARGET_ARCH) \ - $(if $(findstring $(CXX_TARGET_ARCH),$(V8_TARGET_ARCH)), \ - -Dtarget_arch=$(V8_TARGET_ARCH), \ - $(if $(shell echo $(ARCHES32) | grep $(V8_TARGET_ARCH)), \ - -Dtarget_arch=ia32,)) \ - $(if $(findstring optdebug,$@),-Dv8_optimized_debug=1,) \ - -S$(suffix $(basename $@))$(suffix $@) $(GYPFLAGS) - -$(OUTDIR)/Makefile.native: $(GYPFILES) $(ENVFILE) - PYTHONPATH="$(shell pwd)/tools/generate_shim_headers:$(shell pwd)/gypfiles:$(PYTHONPATH):$(shell pwd)/tools/gyp/pylib:$(PYTHONPATH)" \ - GYP_GENERATORS=make \ - tools/gyp/gyp --generator-output="$(OUTDIR)" gypfiles/all.gyp \ - -Igypfiles/standalone.gypi --depth=. -S.native $(GYPFLAGS) - -# Replaces the old with the new environment file if they're different, which -# will trigger GYP to regenerate Makefiles. -$(ENVFILE): $(ENVFILE).new - @if test -r $(ENVFILE) && cmp $(ENVFILE).new $(ENVFILE) > /dev/null; \ - then rm $(ENVFILE).new; \ - else mv $(ENVFILE).new $(ENVFILE); fi - -# Stores current GYPFLAGS in a file. -$(ENVFILE).new: - $(eval CXX_TARGET_ARCH:=$(shell $(CXX) -v 2>&1 | grep ^Target: | \ - cut -f 2 -d " " | cut -f 1 -d "-" )) - $(eval CXX_TARGET_ARCH:=$(subst aarch64,arm64,$(CXX_TARGET_ARCH))) - $(eval CXX_TARGET_ARCH:=$(subst x86_64,x64,$(CXX_TARGET_ARCH))) - @mkdir -p $(OUTDIR); echo "GYPFLAGS=$(GYPFLAGS) -Dtarget_arch=$(CXX_TARGET_ARCH)" > $(ENVFILE).new; - -# Support for the GNU GLOBAL Source Code Tag System. -gtags.files: $(GYPFILES) $(ENVFILE) - @find include src test -name '*.h' -o -name '*.cc' -o -name '*.c' > $@ - -# We need to manually set the stack limit here, to work around bugs in -# gmake-3.81 and global-5.7.1 on recent 64-bit Linux systems. -# Using $(wildcard ...) gracefully ignores non-existing files, so that stale -# gtags.files after switching branches don't cause recipe failures. -GPATH GRTAGS GSYMS GTAGS: gtags.files $(wildcard $(shell cat gtags.files 2> /dev/null)) - @bash -c 'ulimit -s 10240 && GTAGSFORCECPP=yes gtags -i -q -f $<' - -gtags.clean: - rm -f gtags.files GPATH GRTAGS GSYMS GTAGS - -tags: gtags.files $(wildcard $(shell cat gtags.files 2> /dev/null)) - @(ctags --version | grep 'Exuberant Ctags' >/dev/null) || \ - (echo "Please install Exuberant Ctags (check 'ctags --version')" >&2; false) - ctags --fields=+l -L $< - -tags.clean: - rm -r tags - -dependencies builddeps: - $(error Use 'gclient sync' instead) diff --git a/deps/v8/Makefile.android b/deps/v8/Makefile.android deleted file mode 100644 index 417152177d7..00000000000 --- a/deps/v8/Makefile.android +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright 2012 the V8 project authors. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Those definitions should be consistent with the main Makefile -ANDROID_ARCHES = android_ia32 android_x64 android_arm android_arm64 \ - android_mipsel android_x87 -MODES = release debug - -# Generates all combinations of ANDROID ARCHES and MODES, -# e.g. "android_ia32.release" or "android_arm.release" -ANDROID_BUILDS = $(foreach mode,$(MODES), \ - $(addsuffix .$(mode),$(ANDROID_ARCHES))) - -ifeq ($(ARCH), android_arm) - DEFINES = target_arch=arm v8_target_arch=arm -else ifeq ($(ARCH), android_arm64) - DEFINES = target_arch=arm64 v8_target_arch=arm64 -else ifeq ($(ARCH), android_mipsel) - DEFINES = target_arch=mipsel v8_target_arch=mipsel -else ifeq ($(ARCH), android_ia32) - DEFINES = target_arch=ia32 v8_target_arch=ia32 -else ifeq ($(ARCH), android_x64) - DEFINES = target_arch=x64 v8_target_arch=x64 -else ifeq ($(ARCH), android_x87) - DEFINES = target_arch=ia32 v8_target_arch=x87 -else - $(error Target architecture "${ARCH}" is not supported) -endif - -# Common flags. -DEFINES += OS=android - -.SECONDEXPANSION: -$(ANDROID_BUILDS): $(OUTDIR)/Makefile.$$@ - @$(MAKE) -C "$(OUTDIR)" -f Makefile.$@ \ - BUILDTYPE=$(shell echo $(subst .,,$(suffix $@)) | \ - python -c "print raw_input().capitalize()") \ - builddir="$(shell pwd)/$(OUTDIR)/$@" - -# Android GYP file generation targets. -ANDROID_MAKEFILES = $(addprefix $(OUTDIR)/Makefile.,$(ANDROID_BUILDS)) -$(ANDROID_MAKEFILES): - GYP_GENERATORS=make-android \ - GYP_DEFINES="${DEFINES}" \ - PYTHONPATH="$(shell pwd)/tools/generate_shim_headers:$(shell pwd)/gypfiles:$(PYTHONPATH)" \ - tools/gyp/gyp --generator-output="${OUTDIR}" gypfiles/all.gyp \ - -Igypfiles/standalone.gypi --depth=. \ - -S$(suffix $(basename $@))$(suffix $@) ${GYPFLAGS} diff --git a/deps/v8/OWNERS b/deps/v8/OWNERS index 2583a229b6c..f6726316f2a 100644 --- a/deps/v8/OWNERS +++ b/deps/v8/OWNERS @@ -1,5 +1,6 @@ adamk@chromium.org ahaas@chromium.org +aseemgarg@chromium.org bbudge@chromium.org binji@chromium.org bmeurer@chromium.org @@ -7,6 +8,7 @@ bradnelson@chromium.org cbruni@chromium.org clemensh@chromium.org danno@chromium.org +delphick@chromium.org eholk@chromium.org franzih@chromium.org gdeepti@chromium.org @@ -17,26 +19,23 @@ ishell@chromium.org jarin@chromium.org jgruber@chromium.org jkummerow@chromium.org -jochen@chromium.org +kschimpf@chromium.org leszeks@chromium.org -littledan@chromium.org machenbach@chromium.org marja@chromium.org mlippautz@chromium.org mstarzinger@chromium.org -mtrofin@chromium.org mvstanton@chromium.org mythria@chromium.org neis@chromium.org petermarshall@chromium.org rmcilroy@chromium.org -rossberg@chromium.org sergiyb@chromium.org +sigurds@chromium.org tebbi@chromium.org titzer@chromium.org ulan@chromium.org verwaest@chromium.org -vogelheim@chromium.org yangguo@chromium.org # TEAM: v8-dev@googlegroups.com diff --git a/deps/v8/PRESUBMIT.py b/deps/v8/PRESUBMIT.py index b69e8f50891..e6dbb793956 100644 --- a/deps/v8/PRESUBMIT.py +++ b/deps/v8/PRESUBMIT.py @@ -153,6 +153,62 @@ def _CheckUnwantedDependencies(input_api, output_api): return results +def _CheckHeadersHaveIncludeGuards(input_api, output_api): + """Ensures that all header files have include guards.""" + file_inclusion_pattern = r'src/.+\.h' + + def FilterFile(affected_file): + black_list = (_EXCLUDED_PATHS + + input_api.DEFAULT_BLACK_LIST) + return input_api.FilterSourceFile( + affected_file, + white_list=(file_inclusion_pattern, ), + black_list=black_list) + + leading_src_pattern = input_api.re.compile(r'^src/') + dash_dot_slash_pattern = input_api.re.compile(r'[-./]') + def PathToGuardMacro(path): + """Guards should be of the form V8_PATH_TO_FILE_WITHOUT_SRC_H_.""" + x = input_api.re.sub(leading_src_pattern, 'v8_', path) + x = input_api.re.sub(dash_dot_slash_pattern, '_', x) + x = x.upper() + "_" + return x + + problems = [] + for f in input_api.AffectedSourceFiles(FilterFile): + local_path = f.LocalPath() + guard_macro = PathToGuardMacro(local_path) + guard_patterns = [ + input_api.re.compile(r'^#ifndef ' + guard_macro + '$'), + input_api.re.compile(r'^#define ' + guard_macro + '$'), + input_api.re.compile(r'^#endif // ' + guard_macro + '$')] + skip_check_pattern = input_api.re.compile( + r'^// PRESUBMIT_INTENTIONALLY_MISSING_INCLUDE_GUARD') + found_patterns = [ False, False, False ] + file_omitted = False + + for line in f.NewContents(): + for i in range(len(guard_patterns)): + if guard_patterns[i].match(line): + found_patterns[i] = True + if skip_check_pattern.match(line): + file_omitted = True + break + + if not file_omitted and not all(found_patterns): + problems.append( + '%s: Missing include guard \'%s\'' % (local_path, guard_macro)) + + if problems: + return [output_api.PresubmitError( + 'You added one or more header files without an appropriate\n' + 'include guard. Add the include guard {#ifndef,#define,#endif}\n' + 'triplet or omit the check entirely through the magic comment:\n' + '"// PRESUBMIT_INTENTIONALLY_MISSING_INCLUDE_GUARD".', problems)] + else: + return [] + + # TODO(mstarzinger): Similar checking should be made available as part of # tools/presubmit.py (note that tools/check-inline-includes.sh exists). def _CheckNoInlineHeaderIncludesInNormalHeaders(input_api, output_api): @@ -230,44 +286,10 @@ def FilterFile(affected_file): return [] -def _CheckMissingFiles(input_api, output_api): - """Runs verify_source_deps.py to ensure no files were added that are not in - GN. - """ - # We need to wait until we have an input_api object and use this - # roundabout construct to import checkdeps because this file is - # eval-ed and thus doesn't have __file__. - original_sys_path = sys.path - try: - sys.path = sys.path + [input_api.os_path.join( - input_api.PresubmitLocalPath(), 'tools')] - from verify_source_deps import missing_gn_files, missing_gyp_files - finally: - # Restore sys.path to what it was before. - sys.path = original_sys_path - - gn_files = missing_gn_files() - gyp_files = missing_gyp_files() - results = [] - if gn_files: - results.append(output_api.PresubmitError( - "You added one or more source files but didn't update the\n" - "corresponding BUILD.gn files:\n", - gn_files)) - if gyp_files: - results.append(output_api.PresubmitError( - "You added one or more source files but didn't update the\n" - "corresponding gyp files:\n", - gyp_files)) - return results - - def _CommonChecks(input_api, output_api): """Checks common to both upload and commit.""" results = [] results.extend(_CheckCommitMessageBugEntry(input_api, output_api)) - results.extend(input_api.canned_checks.CheckOwners( - input_api, output_api, source_file_filter=None)) results.extend(input_api.canned_checks.CheckPatchFormatted( input_api, output_api)) results.extend(input_api.canned_checks.CheckGenderNeutral( @@ -276,9 +298,9 @@ def _CommonChecks(input_api, output_api): results.extend(_CheckUnwantedDependencies(input_api, output_api)) results.extend( _CheckNoProductionCodeUsingTestOnlyFunctions(input_api, output_api)) + results.extend(_CheckHeadersHaveIncludeGuards(input_api, output_api)) results.extend( _CheckNoInlineHeaderIncludesInNormalHeaders(input_api, output_api)) - results.extend(_CheckMissingFiles(input_api, output_api)) results.extend(_CheckJSONFiles(input_api, output_api)) results.extend(_CheckMacroUndefs(input_api, output_api)) results.extend(input_api.RunTests( diff --git a/deps/v8/base/trace_event/common/trace_event_common.h b/deps/v8/base/trace_event/common/trace_event_common.h index 51869ee9525..e2a5ca0c8d4 100644 --- a/deps/v8/base/trace_event/common/trace_event_common.h +++ b/deps/v8/base/trace_event/common/trace_event_common.h @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifndef BASE_TRACE_EVENT_COMMON_TRACE_EVENT_COMMON_H_ +#define BASE_TRACE_EVENT_COMMON_TRACE_EVENT_COMMON_H_ + // This header file defines the set of trace_event macros without specifying // how the events actually get collected and stored. If you need to expose trace // events to some other universe, you can copy-and-paste this file as well as @@ -687,6 +690,11 @@ TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, \ TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_NONE, \ arg1_name, arg1_val, arg2_name, arg2_val) +#define TRACE_EVENT_COPY_ASYNC_END_WITH_TIMESTAMP0(category_group, name, id, \ + timestamp) \ + INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP( \ + TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, \ + TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY) // NESTABLE_ASYNC_* APIs are used to describe an async operation, which can // be nested within a NESTABLE_ASYNC event and/or have inner NESTABLE_ASYNC @@ -1020,6 +1028,14 @@ } \ } while (0) +// Macro for getting the real base::TimeTicks::Now() which can be overridden in +// headless when VirtualTime is enabled. +#define TRACE_TIME_TICKS_NOW() INTERNAL_TRACE_TIME_TICKS_NOW() + +// Macro for getting the real base::Time::Now() which can be overridden in +// headless when VirtualTime is enabled. +#define TRACE_TIME_NOW() INTERNAL_TRACE_TIME_NOW() + // Notes regarding the following definitions: // New values can be added and propagated to third party libraries, but existing // definitions must never be changed, because third party libraries may use old @@ -1094,3 +1110,5 @@ #define TRACE_EVENT_SCOPE_NAME_GLOBAL ('g') #define TRACE_EVENT_SCOPE_NAME_PROCESS ('p') #define TRACE_EVENT_SCOPE_NAME_THREAD ('t') + +#endif // BASE_TRACE_EVENT_COMMON_TRACE_EVENT_COMMON_H_ diff --git a/deps/v8/gni/isolate.gni b/deps/v8/gni/isolate.gni deleted file mode 100644 index 6ad25c27749..00000000000 --- a/deps/v8/gni/isolate.gni +++ /dev/null @@ -1,196 +0,0 @@ -# Copyright 2016 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//build/config/sanitizers/sanitizers.gni") -import("//third_party/icu/config.gni") -import("v8.gni") - -declare_args() { - # Sets the test isolation mode (noop|prepare|check). - v8_test_isolation_mode = "noop" -} - -template("v8_isolate_run") { - forward_variables_from(invoker, - "*", - [ - "deps", - "isolate", - ]) - - # Remember target name as within the action scope the target name will be - # different. - name = target_name - - assert(defined(invoker.deps)) - assert(defined(invoker.isolate)) - - if (name != "" && v8_test_isolation_mode != "noop") { - action(name + "_run") { - testonly = true - - deps = invoker.deps - - script = "//tools/isolate_driver.py" - - sources = [ - invoker.isolate, - ] - - inputs = [ - # Files that are known to be involved in this step. - "//tools/swarming_client/isolate.py", - "//tools/swarming_client/run_isolated.py", - ] - - if (v8_test_isolation_mode == "prepare") { - outputs = [ - "$root_out_dir/$name.isolated.gen.json", - ] - } else if (v8_test_isolation_mode == "check") { - outputs = [ - "$root_out_dir/$name.isolated", - "$root_out_dir/$name.isolated.state", - ] - } - - # Translate gn to gyp variables. - if (v8_code_coverage) { - coverage = "1" - } else { - coverage = "0" - } - if (is_asan) { - asan = "1" - } else { - asan = "0" - } - if (is_msan) { - msan = "1" - } else { - msan = "0" - } - if (is_tsan) { - tsan = "1" - } else { - tsan = "0" - } - if (is_cfi) { - cfi_vptr = "1" - } else { - cfi_vptr = "0" - } - if (target_cpu == "x86") { - target_arch = "ia32" - } else { - target_arch = target_cpu - } - if (is_debug) { - configuration_name = "Debug" - } else { - configuration_name = "Release" - } - if (is_component_build) { - component = "shared_library" - } else { - component = "static_library" - } - if (icu_use_data_file) { - icu_use_data_file_flag = "1" - } else { - icu_use_data_file_flag = "0" - } - if (v8_use_external_startup_data) { - use_external_startup_data = "1" - } else { - use_external_startup_data = "0" - } - if (is_ubsan_vptr) { - ubsan_vptr = "1" - } else { - ubsan_vptr = "0" - } - if (v8_use_snapshot) { - use_snapshot = "true" - } else { - use_snapshot = "false" - } - if (v8_has_valgrind) { - has_valgrind = "1" - } else { - has_valgrind = "0" - } - if (v8_gcmole) { - gcmole = "1" - } else { - gcmole = "0" - } - - # Note, all paths will be rebased in isolate_driver.py to be relative to - # the isolate file. - args = [ - v8_test_isolation_mode, - "--isolated", - rebase_path("$root_out_dir/$name.isolated", root_build_dir), - "--isolate", - rebase_path(invoker.isolate, root_build_dir), - - # Path variables are used to replace file paths when loading a .isolate - # file - "--path-variable", - "DEPTH", - rebase_path("//", root_build_dir), - "--path-variable", - "PRODUCT_DIR", - rebase_path(root_out_dir, root_build_dir), - - # TODO(machenbach): Set variables for remaining features. - "--config-variable", - "CONFIGURATION_NAME=$configuration_name", - "--config-variable", - "OS=$target_os", - "--config-variable", - "asan=$asan", - "--config-variable", - "cfi_vptr=$cfi_vptr", - "--config-variable", - "gcmole=$gcmole", - "--config-variable", - "has_valgrind=$has_valgrind", - "--config-variable", - "icu_use_data_file_flag=$icu_use_data_file_flag", - "--config-variable", - "msan=$msan", - "--config-variable", - "tsan=$tsan", - "--config-variable", - "coverage=$coverage", - "--config-variable", - "sanitizer_coverage=$sanitizer_coverage_flags", - "--config-variable", - "component=$component", - "--config-variable", - "target_arch=$target_arch", - "--config-variable", - "ubsan_vptr=$ubsan_vptr", - "--config-variable", - "v8_use_external_startup_data=$use_external_startup_data", - "--config-variable", - "v8_use_snapshot=$use_snapshot", - ] - - if (is_win) { - args += [ - "--config-variable", - "msvs_version=2017", - ] - } else { - args += [ - "--config-variable", - "msvs_version=0", - ] - } - } - } -} diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index ce9953ac68c..2d8da9a6435 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -33,7 +33,12 @@ declare_args() { # Enable the snapshot feature, for fast context creation. # http://v8project.blogspot.com/2015/09/custom-startup-snapshots.html - v8_use_snapshot = true + # TODO(thakis): Make snapshots work in 64-bit win/cross builds, + # https://803591 + v8_use_snapshot = !(is_win && host_os != "win" && target_cpu == "x64") + + # Enable several snapshots side-by-side (e.g. default and for trusted code). + v8_use_multi_snapshots = "" # Use external files for startup data blobs: # the JS builtins sources and the start snapshot. @@ -56,6 +61,11 @@ if (v8_use_external_startup_data == "") { v8_use_external_startup_data = v8_use_snapshot && !is_ios } +if (v8_use_multi_snapshots == "") { + v8_use_multi_snapshots = + v8_use_external_startup_data && !build_with_chromium && !use_jumbo_build +} + if (v8_enable_backtrace == "") { v8_enable_backtrace = is_debug && !v8_optimized_debug } @@ -105,6 +115,12 @@ if (is_posix && (v8_enable_backtrace || v8_monolithic)) { v8_add_configs += [ "//build/config/gcc:symbol_visibility_default" ] } +# On MIPS gcc_target_rpath and ldso_path might be needed for all builds. +if (target_cpu == "mipsel" || target_cpu == "mips64el" || + target_cpu == "mips" || target_cpu == "mips64") { + v8_add_configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] +} + # All templates should be kept in sync. template("v8_source_set") { if (defined(invoker.split_count) && invoker.split_count > 1 && @@ -184,6 +200,7 @@ template("v8_static_library") { forward_variables_from(invoker, "*", [ "configs" ]) configs += invoker.configs configs -= v8_remove_configs + configs -= [ "//build/config/compiler:thin_archive" ] configs += v8_add_configs } } diff --git a/deps/v8/gypfiles/all.gyp b/deps/v8/gypfiles/all.gyp index 2f9cf858c03..5592ee1b36c 100644 --- a/deps/v8/gypfiles/all.gyp +++ b/deps/v8/gypfiles/all.gyp @@ -8,46 +8,23 @@ 'target_name': 'All', 'type': 'none', 'dependencies': [ - '../src/d8.gyp:d8', - '../test/inspector/inspector.gyp:*', - '../test/mkgrokdump/mkgrokdump.gyp:*', + 'd8.gyp:d8', + 'inspector-test.gyp:*', + 'mkgrokdump.gyp:*', ], 'conditions': [ ['component!="shared_library"', { 'dependencies': [ - '../tools/parser-shell.gyp:parser-shell', + 'parser-shell.gyp:parser-shell', ], }], # These items don't compile for Android on Mac. ['host_os!="mac" or OS!="android"', { 'dependencies': [ - '../samples/samples.gyp:*', - '../test/cctest/cctest.gyp:*', - '../test/fuzzer/fuzzer.gyp:*', - '../test/unittests/unittests.gyp:*', - ], - }], - ['test_isolation_mode != "noop"', { - 'dependencies': [ - '../test/bot_default.gyp:*', - '../test/benchmarks/benchmarks.gyp:*', - '../test/debugger/debugger.gyp:*', - '../test/default.gyp:*', - '../test/d8_default.gyp:*', - '../test/intl/intl.gyp:*', - '../test/message/message.gyp:*', - '../test/mjsunit/mjsunit.gyp:*', - '../test/mozilla/mozilla.gyp:*', - '../test/optimize_for_size.gyp:*', - '../test/perf.gyp:*', - '../test/preparser/preparser.gyp:*', - '../test/test262/test262.gyp:*', - '../test/webkit/webkit.gyp:*', - '../tools/check-static-initializers.gyp:*', - '../tools/gcmole/run_gcmole.gyp:*', - '../tools/jsfunfuzz/jsfunfuzz.gyp:*', - '../tools/run-deopt-fuzzer.gyp:*', - '../tools/run-num-fuzzer.gyp:*', + 'samples.gyp:*', + 'cctest.gyp:*', + 'fuzzer.gyp:*', + 'unittests.gyp:*', ], }], ] diff --git a/deps/v8/gypfiles/cctest.gyp b/deps/v8/gypfiles/cctest.gyp new file mode 100644 index 00000000000..6e7fddae0bd --- /dev/null +++ b/deps/v8/gypfiles/cctest.gyp @@ -0,0 +1,468 @@ +# Copyright 2012 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + 'v8_code': 1, + 'generated_file': '<(SHARED_INTERMEDIATE_DIR)/resources.cc', + 'cctest_sources': [ + '../test/cctest/compiler/c-signature.h', + '../test/cctest/compiler/call-tester.h', + '../test/cctest/compiler/codegen-tester.cc', + '../test/cctest/compiler/codegen-tester.h', + '../test/cctest/compiler/code-assembler-tester.h', + '../test/cctest/compiler/function-tester.cc', + '../test/cctest/compiler/function-tester.h', + '../test/cctest/compiler/graph-builder-tester.h', + '../test/cctest/compiler/test-basic-block-profiler.cc', + '../test/cctest/compiler/test-branch-combine.cc', + '../test/cctest/compiler/test-run-unwinding-info.cc', + '../test/cctest/compiler/test-gap-resolver.cc', + '../test/cctest/compiler/test-graph-visualizer.cc', + '../test/cctest/compiler/test-code-generator.cc', + '../test/cctest/compiler/test-code-assembler.cc', + '../test/cctest/compiler/test-instruction.cc', + '../test/cctest/compiler/test-js-context-specialization.cc', + '../test/cctest/compiler/test-js-constant-cache.cc', + '../test/cctest/compiler/test-js-typed-lowering.cc', + '../test/cctest/compiler/test-jump-threading.cc', + '../test/cctest/compiler/test-linkage.cc', + '../test/cctest/compiler/test-loop-analysis.cc', + '../test/cctest/compiler/test-machine-operator-reducer.cc', + '../test/cctest/compiler/test-multiple-return.cc', + '../test/cctest/compiler/test-node.cc', + '../test/cctest/compiler/test-operator.cc', + '../test/cctest/compiler/test-representation-change.cc', + '../test/cctest/compiler/test-run-bytecode-graph-builder.cc', + '../test/cctest/compiler/test-run-calls-to-external-references.cc', + '../test/cctest/compiler/test-run-deopt.cc', + '../test/cctest/compiler/test-run-intrinsics.cc', + '../test/cctest/compiler/test-run-jsbranches.cc', + '../test/cctest/compiler/test-run-jscalls.cc', + '../test/cctest/compiler/test-run-jsexceptions.cc', + '../test/cctest/compiler/test-run-jsobjects.cc', + '../test/cctest/compiler/test-run-jsops.cc', + '../test/cctest/compiler/test-run-load-store.cc', + '../test/cctest/compiler/test-run-machops.cc', + '../test/cctest/compiler/test-run-native-calls.cc', + '../test/cctest/compiler/test-run-retpoline.cc', + '../test/cctest/compiler/test-run-stackcheck.cc', + '../test/cctest/compiler/test-run-stubs.cc', + '../test/cctest/compiler/test-run-tail-calls.cc', + '../test/cctest/compiler/test-run-variables.cc', + '../test/cctest/compiler/test-run-wasm-machops.cc', + '../test/cctest/compiler/value-helper.cc', + '../test/cctest/compiler/value-helper.h', + '../test/cctest/cctest.cc', + '../test/cctest/cctest.h', + '../test/cctest/expression-type-collector-macros.h', + '../test/cctest/gay-fixed.cc', + '../test/cctest/gay-fixed.h', + '../test/cctest/gay-precision.cc', + '../test/cctest/gay-precision.h', + '../test/cctest/gay-shortest.cc', + '../test/cctest/gay-shortest.h', + '../test/cctest/heap/heap-tester.h', + '../test/cctest/heap/heap-utils.cc', + '../test/cctest/heap/heap-utils.h', + '../test/cctest/heap/test-alloc.cc', + '../test/cctest/heap/test-array-buffer-tracker.cc', + '../test/cctest/heap/test-compaction.cc', + '../test/cctest/heap/test-concurrent-marking.cc', + '../test/cctest/heap/test-embedder-tracing.cc', + '../test/cctest/heap/test-heap.cc', + '../test/cctest/heap/test-incremental-marking.cc', + '../test/cctest/heap/test-invalidated-slots.cc', + '../test/cctest/heap/test-lab.cc', + '../test/cctest/heap/test-mark-compact.cc', + '../test/cctest/heap/test-page-promotion.cc', + '../test/cctest/heap/test-spaces.cc', + '../test/cctest/interpreter/interpreter-tester.cc', + '../test/cctest/interpreter/interpreter-tester.h', + '../test/cctest/interpreter/source-position-matcher.cc', + '../test/cctest/interpreter/source-position-matcher.h', + '../test/cctest/interpreter/test-bytecode-generator.cc', + '../test/cctest/interpreter/test-interpreter.cc', + '../test/cctest/interpreter/test-interpreter-intrinsics.cc', + '../test/cctest/interpreter/test-source-positions.cc', + '../test/cctest/interpreter/bytecode-expectations-printer.cc', + '../test/cctest/interpreter/bytecode-expectations-printer.h', + '../test/cctest/libplatform/test-tracing.cc', + '../test/cctest/libsampler/test-sampler.cc', + '../test/cctest/parsing/test-parse-decision.cc', + '../test/cctest/parsing/test-preparser.cc', + '../test/cctest/parsing/test-scanner-streams.cc', + '../test/cctest/parsing/test-scanner.cc', + '../test/cctest/print-extension.cc', + '../test/cctest/print-extension.h', + '../test/cctest/profiler-extension.cc', + '../test/cctest/profiler-extension.h', + '../test/cctest/scope-test-helper.h', + '../test/cctest/setup-isolate-for-tests.cc', + '../test/cctest/setup-isolate-for-tests.h', + '../test/cctest/test-access-checks.cc', + '../test/cctest/test-accessor-assembler.cc', + '../test/cctest/test-accessors.cc', + '../test/cctest/test-allocation.cc', + '../test/cctest/test-api.cc', + '../test/cctest/test-api.h', + '../test/cctest/test-api-accessors.cc', + '../test/cctest/test-api-interceptors.cc', + '../test/cctest/test-array-list.cc', + '../test/cctest/test-atomicops.cc', + '../test/cctest/test-bignum.cc', + '../test/cctest/test-bignum-dtoa.cc', + '../test/cctest/test-bit-vector.cc', + '../test/cctest/test-circular-queue.cc', + '../test/cctest/test-code-layout.cc', + '../test/cctest/test-code-stub-assembler.cc', + '../test/cctest/test-compiler.cc', + '../test/cctest/test-constantpool.cc', + '../test/cctest/test-conversions.cc', + '../test/cctest/test-cpu-profiler.cc', + '../test/cctest/test-date.cc', + '../test/cctest/test-debug.cc', + '../test/cctest/test-decls.cc', + '../test/cctest/test-deoptimization.cc', + '../test/cctest/test-dictionary.cc', + '../test/cctest/test-diy-fp.cc', + '../test/cctest/test-double.cc', + '../test/cctest/test-dtoa.cc', + '../test/cctest/test-elements-kind.cc', + '../test/cctest/test-fast-dtoa.cc', + '../test/cctest/test-feedback-vector.cc', + '../test/cctest/test-feedback-vector.h', + '../test/cctest/test-field-type-tracking.cc', + '../test/cctest/test-fixed-dtoa.cc', + '../test/cctest/test-flags.cc', + '../test/cctest/test-func-name-inference.cc', + '../test/cctest/test-global-handles.cc', + '../test/cctest/test-global-object.cc', + '../test/cctest/test-hashcode.cc', + '../test/cctest/test-hashmap.cc', + '../test/cctest/test-heap-profiler.cc', + '../test/cctest/test-identity-map.cc', + '../test/cctest/test-intl.cc', + '../test/cctest/test-inobject-slack-tracking.cc', + '../test/cctest/test-isolate-independent-builtins.cc', + '../test/cctest/test-liveedit.cc', + '../test/cctest/test-lockers.cc', + '../test/cctest/test-log.cc', + '../test/cctest/test-managed.cc', + '../test/cctest/test-mementos.cc', + '../test/cctest/test-modules.cc', + '../test/cctest/test-object.cc', + '../test/cctest/test-orderedhashtable.cc', + '../test/cctest/test-parsing.cc', + '../test/cctest/test-platform.cc', + '../test/cctest/test-profile-generator.cc', + '../test/cctest/test-random-number-generator.cc', + '../test/cctest/test-regexp.cc', + '../test/cctest/test-representation.cc', + '../test/cctest/test-sampler-api.cc', + '../test/cctest/test-serialize.cc', + '../test/cctest/test-strings.cc', + '../test/cctest/test-symbols.cc', + '../test/cctest/test-strtod.cc', + '../test/cctest/test-thread-termination.cc', + '../test/cctest/test-threads.cc', + '../test/cctest/test-trace-event.cc', + '../test/cctest/test-traced-value.cc', + '../test/cctest/test-transitions.cc', + '../test/cctest/test-transitions.h', + '../test/cctest/test-typedarrays.cc', + '../test/cctest/test-types.cc', + '../test/cctest/test-unbound-queue.cc', + '../test/cctest/test-unboxed-doubles.cc', + '../test/cctest/test-unscopables-hidden-prototype.cc', + '../test/cctest/test-usecounters.cc', + '../test/cctest/test-utils.cc', + '../test/cctest/test-version.cc', + '../test/cctest/test-weakmaps.cc', + '../test/cctest/test-weaksets.cc', + '../test/cctest/trace-extension.cc', + '../test/cctest/trace-extension.h', + '../test/cctest/types-fuzz.h', + '../test/cctest/unicode-helpers.h', + '../test/cctest/wasm/test-c-wasm-entry.cc', + '../test/cctest/wasm/test-streaming-compilation.cc', + '../test/cctest/wasm/test-run-wasm.cc', + '../test/cctest/wasm/test-run-wasm-64.cc', + '../test/cctest/wasm/test-run-wasm-asmjs.cc', + '../test/cctest/wasm/test-run-wasm-atomics.cc', + '../test/cctest/wasm/test-run-wasm-interpreter.cc', + '../test/cctest/wasm/test-run-wasm-js.cc', + '../test/cctest/wasm/test-run-wasm-module.cc', + '../test/cctest/wasm/test-run-wasm-relocation.cc', + '../test/cctest/wasm/test-run-wasm-sign-extension.cc', + '../test/cctest/wasm/test-run-wasm-simd.cc', + '../test/cctest/wasm/test-wasm-breakpoints.cc', + "../test/cctest/wasm/test-wasm-codegen.cc", + '../test/cctest/wasm/test-wasm-interpreter-entry.cc', + '../test/cctest/wasm/test-wasm-stack.cc', + '../test/cctest/wasm/test-wasm-trap-position.cc', + '../test/cctest/wasm/wasm-run-utils.cc', + '../test/cctest/wasm/wasm-run-utils.h', + ], + 'cctest_sources_ia32': [ + '../test/cctest/test-assembler-ia32.cc', + '../test/cctest/test-code-stubs.cc', + '../test/cctest/test-code-stubs.h', + '../test/cctest/test-code-stubs-ia32.cc', + '../test/cctest/test-disasm-ia32.cc', + '../test/cctest/test-log-stack-tracer.cc', + '../test/cctest/test-run-wasm-relocation-ia32.cc', + ], + 'cctest_sources_x64': [ + '../test/cctest/test-assembler-x64.cc', + '../test/cctest/test-code-stubs.cc', + '../test/cctest/test-code-stubs.h', + '../test/cctest/test-code-stubs-x64.cc', + '../test/cctest/test-disasm-x64.cc', + '../test/cctest/test-macro-assembler-x64.cc', + '../test/cctest/test-log-stack-tracer.cc', + '../test/cctest/test-run-wasm-relocation-x64.cc', + ], + 'cctest_sources_arm': [ + '../test/cctest/assembler-helper-arm.cc', + '../test/cctest/assembler-helper-arm.h', + '../test/cctest/test-assembler-arm.cc', + '../test/cctest/test-code-stubs.cc', + '../test/cctest/test-code-stubs.h', + '../test/cctest/test-code-stubs-arm.cc', + '../test/cctest/test-disasm-arm.cc', + '../test/cctest/test-macro-assembler-arm.cc', + '../test/cctest/test-run-wasm-relocation-arm.cc', + '../test/cctest/test-sync-primitives-arm.cc', + ], + 'cctest_sources_arm64': [ + '../test/cctest/test-utils-arm64.cc', + '../test/cctest/test-utils-arm64.h', + '../test/cctest/test-assembler-arm64.cc', + '../test/cctest/test-code-stubs.cc', + '../test/cctest/test-code-stubs.h', + '../test/cctest/test-code-stubs-arm64.cc', + '../test/cctest/test-disasm-arm64.cc', + '../test/cctest/test-fuzz-arm64.cc', + '../test/cctest/test-javascript-arm64.cc', + '../test/cctest/test-js-arm64-variables.cc', + '../test/cctest/test-run-wasm-relocation-arm64.cc', + '../test/cctest/test-sync-primitives-arm64.cc', + ], + 'cctest_sources_s390': [ + '../test/cctest/test-assembler-s390.cc', + '../test/cctest/test-code-stubs.cc', + '../test/cctest/test-code-stubs.h', + '../test/cctest/test-disasm-s390.cc', + ], + 'cctest_sources_ppc': [ + '../test/cctest/test-assembler-ppc.cc', + '../test/cctest/test-code-stubs.cc', + '../test/cctest/test-code-stubs.h', + '../test/cctest/test-disasm-ppc.cc', + ], + 'cctest_sources_mips': [ + '../test/cctest/test-assembler-mips.cc', + '../test/cctest/test-code-stubs.cc', + '../test/cctest/test-code-stubs.h', + '../test/cctest/test-code-stubs-mips.cc', + '../test/cctest/test-disasm-mips.cc', + '../test/cctest/test-macro-assembler-mips.cc', + ], + 'cctest_sources_mipsel': [ + '../test/cctest/test-assembler-mips.cc', + '../test/cctest/test-code-stubs.cc', + '../test/cctest/test-code-stubs.h', + '../test/cctest/test-code-stubs-mips.cc', + '../test/cctest/test-disasm-mips.cc', + '../test/cctest/test-macro-assembler-mips.cc', + ], + 'cctest_sources_mips64': [ + '../test/cctest/test-assembler-mips64.cc', + '../test/cctest/test-code-stubs.cc', + '../test/cctest/test-code-stubs.h', + '../test/cctest/test-code-stubs-mips64.cc', + '../test/cctest/test-disasm-mips64.cc', + '../test/cctest/test-macro-assembler-mips64.cc', + ], + 'cctest_sources_mips64el': [ + '../test/cctest/test-assembler-mips64.cc', + '../test/cctest/test-code-stubs.cc', + '../test/cctest/test-code-stubs.h', + '../test/cctest/test-code-stubs-mips64.cc', + '../test/cctest/test-disasm-mips64.cc', + '../test/cctest/test-macro-assembler-mips64.cc', + ], + }, + 'includes': ['toolchain.gypi', 'features.gypi'], + 'targets': [ + { + 'target_name': 'cctest', + 'type': 'executable', + 'dependencies': [ + 'resources', + 'v8.gyp:v8_libbase', + 'v8.gyp:v8_libplatform', + ], + 'include_dirs': [ + '..', + ], + 'sources': [ + '../test/common/wasm/flag-utils.h', + '../test/common/wasm/test-signatures.h', + '../test/common/wasm/wasm-macro-gen.h', + '../test/common/wasm/wasm-module-runner.cc', + '../test/common/wasm/wasm-module-runner.h', + '<@(cctest_sources)', + '<(generated_file)', + ], + 'conditions': [ + ['v8_target_arch=="ia32"', { + 'sources': [ + '<@(cctest_sources_ia32)', + ], + }], + ['v8_target_arch=="x64"', { + 'sources': [ + '<@(cctest_sources_x64)', + ], + }], + ['v8_target_arch=="arm"', { + 'sources': [ + '<@(cctest_sources_arm)', + ], + }], + ['v8_target_arch=="arm64"', { + 'sources': [ + '<@(cctest_sources_arm64)', + ], + }], + ['v8_target_arch=="s390"', { + 'sources': [ + '<@(cctest_sources_s390)', + ], + }], + ['v8_target_arch=="s390x"', { + 'sources': [ + '<@(cctest_sources_s390)', + ], + }], + ['v8_target_arch=="ppc"', { + 'sources': [ + '<@(cctest_sources_ppc)', + ], + }], + ['v8_target_arch=="ppc64"', { + 'sources': [ + '<@(cctest_sources_ppc)', + ], + }], + ['v8_target_arch=="mips"', { + 'sources': [ + '<@(cctest_sources_mips)', + ], + }], + ['v8_target_arch=="mipsel"', { + 'sources': [ + '<@(cctest_sources_mipsel)', + ], + }], + ['v8_target_arch=="mips64"', { + 'sources': [ + '<@(cctest_sources_mips64)', + ], + }], + ['v8_target_arch=="mips64el"', { + 'sources': [ + '<@(cctest_sources_mips64el)', + ], + }], + [ 'OS=="win"', { + 'msvs_settings': { + 'VCCLCompilerTool': { + # MSVS wants this for gay-{precision,shortest}.cc. + 'AdditionalOptions': ['/bigobj'], + }, + }, + }], + ['v8_target_arch=="ppc" or v8_target_arch=="ppc64" \ + or v8_target_arch=="arm" or v8_target_arch=="arm64" \ + or v8_target_arch=="s390" or v8_target_arch=="s390x" \ + or v8_target_arch=="mips" or v8_target_arch=="mips64" \ + or v8_target_arch=="mipsel" or v8_target_arch=="mips64el"', { + # disable fmadd/fmsub so that expected results match generated code in + # RunFloat64MulAndFloat64Add1 and friends. + 'cflags': ['-ffp-contract=off'], + }], + ['OS=="aix"', { + 'ldflags': [ '-Wl,-bbigtoc' ], + }], + ['component=="shared_library"', { + # cctest can't be built against a shared library, so we need to + # depend on the underlying static target in that case. + 'dependencies': ['v8.gyp:v8_maybe_snapshot'], + 'defines': [ 'BUILDING_V8_SHARED', ] + }, { + 'dependencies': ['v8.gyp:v8'], + }], + ['v8_use_snapshot=="true"', { + 'dependencies': ['v8.gyp:v8_initializers'], + }], + ], + }, + { + 'target_name': 'resources', + 'type': 'none', + 'variables': { + 'file_list': [ + '../tools/splaytree.js', + '../tools/codemap.js', + '../tools/csvparser.js', + '../tools/consarray.js', + '../tools/profile.js', + '../tools/profile_view.js', + '../tools/arguments.js', + '../tools/logreader.js', + '../test/cctest/log-eq-of-logging-and-traversal.js', + ], + }, + 'actions': [ + { + 'action_name': 'js2c', + 'inputs': [ + '../tools/js2c.py', + '<@(file_list)', + ], + 'outputs': [ + '<(generated_file)', + ], + 'action': [ + 'python', + '../tools/js2c.py', + '<@(_outputs)', + 'TEST', # type + '<@(file_list)', + ], + } + ], + }, + { + 'target_name': 'generate-bytecode-expectations', + 'type': 'executable', + 'dependencies': [ + 'v8.gyp:v8', + 'v8.gyp:v8_libbase', + 'v8.gyp:v8_libplatform', + ], + 'include_dirs+': [ + '..', + ], + 'sources': [ + '../test/cctest/interpreter/bytecode-expectations-printer.cc', + '../test/cctest/interpreter/bytecode-expectations-printer.h', + '../test/cctest/interpreter/generate-bytecode-expectations.cc', + ], + }, + ], +} diff --git a/deps/v8/gypfiles/coverage_wrapper.py b/deps/v8/gypfiles/coverage_wrapper.py old mode 100755 new mode 100644 diff --git a/deps/v8/src/d8.gyp b/deps/v8/gypfiles/d8.gyp similarity index 52% rename from deps/v8/src/d8.gyp rename to deps/v8/gypfiles/d8.gyp index e6a40212cd7..f593a2b044e 100644 --- a/deps/v8/src/d8.gyp +++ b/deps/v8/gypfiles/d8.gyp @@ -1,29 +1,6 @@ -# Copyright 2012 the V8 project authors. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# Copyright 2018 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. { 'variables': { @@ -32,7 +9,7 @@ 'v8_enable_vtunejit%': 0, 'v8_enable_i18n_support%': 1, }, - 'includes': ['../gypfiles/toolchain.gypi', '../gypfiles/features.gypi'], + 'includes': ['toolchain.gypi', 'features.gypi'], 'targets': [ { 'target_name': 'd8', @@ -48,10 +25,10 @@ '<(DEPTH)', ], 'sources': [ - 'd8.h', - 'd8.cc', - 'd8-console.h', - 'd8-console.cc', + '../src/d8.h', + '../src/d8.cc', + '../src/d8-console.h', + '../src/d8-console.cc', '<(SHARED_INTERMEDIATE_DIR)/d8-js.cc', ], 'conditions': [ @@ -68,10 +45,10 @@ ['(OS=="linux" or OS=="mac" or OS=="freebsd" or OS=="netbsd" \ or OS=="openbsd" or OS=="solaris" or OS=="android" \ or OS=="qnx" or OS=="aix")', { - 'sources': [ 'd8-posix.cc', ] + 'sources': [ '../src/d8-posix.cc', ] }], [ 'OS=="win"', { - 'sources': [ 'd8-windows.cc', ] + 'sources': [ '../src/d8-windows.cc', ] }], [ 'component!="shared_library"', { 'conditions': [ @@ -86,7 +63,7 @@ }], ['v8_enable_vtunejit==1', { 'dependencies': [ - '../src/third_party/vtune/v8vtune.gyp:v8_vtune', + 'v8vtune.gyp:v8_vtune', ], }], ['v8_enable_i18n_support==1', { @@ -107,8 +84,8 @@ 'type': 'none', 'variables': { 'js_files': [ - 'd8.js', - 'js/macros.py', + '../src/d8.js', + '../src/js/macros.py', ], }, 'conditions': [ @@ -139,23 +116,4 @@ ], }, ], - 'conditions': [ - ['test_isolation_mode != "noop"', { - 'targets': [ - { - 'target_name': 'd8_run', - 'type': 'none', - 'dependencies': [ - 'd8', - ], - 'includes': [ - '../gypfiles/isolate.gypi', - ], - 'sources': [ - 'd8.isolate', - ], - }, - ], - }], - ], } diff --git a/deps/v8/gypfiles/features.gypi b/deps/v8/gypfiles/features.gypi index 8c99b4f0866..69ff763be04 100644 --- a/deps/v8/gypfiles/features.gypi +++ b/deps/v8/gypfiles/features.gypi @@ -87,6 +87,9 @@ # Enable concurrent marking. 'v8_enable_concurrent_marking%': 1, + # Enables various testing features. + 'v8_enable_test_features%': 0, + # Controls the threshold for on-heap/off-heap Typed Arrays. 'v8_typed_array_max_size_in_heap%': 64, @@ -119,6 +122,9 @@ ['v8_trace_maps==1', { 'defines': ['V8_TRACE_MAPS',], }], + ['v8_enable_test_features==1', { + 'defines': ['V8_ENABLE_ALLOCATION_TIMEOUT', 'V8_ENABLE_FORCE_SLOW_PATH'], + }], ['v8_enable_verify_predictable==1', { 'defines': ['VERIFY_PREDICTABLE',], }], @@ -164,7 +170,7 @@ }, # Debug 'Release': { 'variables': { - 'v8_enable_handle_zapping%': 0, + 'v8_enable_handle_zapping%': 1, }, 'conditions': [ ['v8_enable_handle_zapping==1', { diff --git a/deps/v8/test/fuzzer/fuzzer.gyp b/deps/v8/gypfiles/fuzzer.gyp similarity index 55% rename from deps/v8/test/fuzzer/fuzzer.gyp rename to deps/v8/gypfiles/fuzzer.gyp index 0c54211290e..f65b7dc6d0f 100644 --- a/deps/v8/test/fuzzer/fuzzer.gyp +++ b/deps/v8/gypfiles/fuzzer.gyp @@ -6,7 +6,7 @@ 'variables': { 'v8_code': 1, }, - 'includes': ['../../gypfiles/toolchain.gypi', '../../gypfiles/features.gypi'], + 'includes': ['toolchain.gypi', 'features.gypi'], 'targets': [ { 'target_name': 'v8_simple_json_fuzzer', @@ -15,24 +15,24 @@ 'json_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { 'target_name': 'json_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'json.cc', + 'sources': [ + '../test/fuzzer/json.cc', ], }, { @@ -42,175 +42,171 @@ 'parser_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { 'target_name': 'parser_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'parser.cc', + 'sources': [ + '../test/fuzzer/parser.cc', ], }, { - 'target_name': 'v8_simple_regexp_fuzzer', + 'target_name': 'v8_simple_regexp_builtins_fuzzer', 'type': 'executable', 'dependencies': [ - 'regexp_fuzzer_lib', + 'regexp_builtins_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { - 'target_name': 'regexp_fuzzer_lib', + 'target_name': 'regexp_builtins_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'regexp.cc', + 'sources': [ + '../test/fuzzer/regexp-builtins.cc', + '../test/fuzzer/regexp_builtins/mjsunit.js.h', ], }, { - 'target_name': 'v8_simple_multi_return_fuzzer', + 'target_name': 'v8_simple_regexp_fuzzer', 'type': 'executable', 'dependencies': [ - 'multi_return_fuzzer_lib', + 'regexp_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { - 'target_name': 'multi_return_fuzzer_lib', + 'target_name': 'regexp_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - '../compiler/c-signature.h', - '../compiler/call-helper.h', - '../compiler/raw-machine-assembler-tester.h', - 'multi-return.cc', + 'sources': [ + '../test/fuzzer/regexp.cc', ], }, { - 'target_name': 'v8_simple_wasm_fuzzer', + 'target_name': 'v8_simple_multi_return_fuzzer', 'type': 'executable', 'dependencies': [ - 'wasm_fuzzer_lib', + 'multi_return_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { - 'target_name': 'wasm_fuzzer_lib', + 'target_name': 'multi_return_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'wasm.cc', - '../common/wasm/wasm-module-runner.cc', - '../common/wasm/wasm-module-runner.h', - 'wasm-fuzzer-common.cc', - 'wasm-fuzzer-common.h', + 'sources': [ + '../test/cctest/compiler/c-signature.h', + '../test/cctest/compiler/call-helper.h', + '../test/cctest/compiler/raw-machine-assembler-tester.h', + '../test/fuzzer/multi-return.cc', ], }, { - 'target_name': 'v8_simple_wasm_async_fuzzer', + 'target_name': 'v8_simple_wasm_fuzzer', 'type': 'executable', 'dependencies': [ - 'wasm_async_fuzzer_lib', + 'wasm_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { - 'target_name': 'wasm_async_fuzzer_lib', + 'target_name': 'wasm_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'wasm-async.cc', - '../common/wasm/wasm-module-runner.cc', - '../common/wasm/wasm-module-runner.h', - 'wasm-fuzzer-common.cc', - 'wasm-fuzzer-common.h', + 'sources': [ + '../test/fuzzer/wasm.cc', + '../test/common/wasm/wasm-module-runner.cc', + '../test/common/wasm/wasm-module-runner.h', + '../test/fuzzer/wasm-fuzzer-common.cc', + '../test/fuzzer/wasm-fuzzer-common.h', ], }, { - 'target_name': 'v8_simple_wasm_call_fuzzer', + 'target_name': 'v8_simple_wasm_async_fuzzer', 'type': 'executable', 'dependencies': [ - 'wasm_call_fuzzer_lib', + 'wasm_async_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { - 'target_name': 'wasm_call_fuzzer_lib', + 'target_name': 'wasm_async_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'wasm-call.cc', - '../common/wasm/test-signatures.h', - '../common/wasm/wasm-module-runner.cc', - '../common/wasm/wasm-module-runner.h', - 'wasm-fuzzer-common.cc', - 'wasm-fuzzer-common.h', + 'sources': [ + '../test/fuzzer/wasm-async.cc', + '../test/common/wasm/wasm-module-runner.cc', + '../test/common/wasm/wasm-module-runner.h', + '../test/fuzzer/wasm-fuzzer-common.cc', + '../test/fuzzer/wasm-fuzzer-common.h', ], }, { @@ -220,29 +216,29 @@ 'wasm_code_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { 'target_name': 'wasm_code_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'wasm-code.cc', - '../common/wasm/test-signatures.h', - '../common/wasm/wasm-module-runner.cc', - '../common/wasm/wasm-module-runner.h', - 'wasm-fuzzer-common.cc', - 'wasm-fuzzer-common.h', + 'sources': [ + '../test/fuzzer/wasm-code.cc', + '../test/common/wasm/test-signatures.h', + '../test/common/wasm/wasm-module-runner.cc', + '../test/common/wasm/wasm-module-runner.h', + '../test/fuzzer/wasm-fuzzer-common.cc', + '../test/fuzzer/wasm-fuzzer-common.h', ], }, { @@ -252,29 +248,29 @@ 'wasm_compile_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { 'target_name': 'wasm_compile_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'wasm-compile.cc', - '../common/wasm/test-signatures.h', - '../common/wasm/wasm-module-runner.cc', - '../common/wasm/wasm-module-runner.h', - 'wasm-fuzzer-common.cc', - 'wasm-fuzzer-common.h', + 'sources': [ + '../test/fuzzer/wasm-compile.cc', + '../test/common/wasm/test-signatures.h', + '../test/common/wasm/wasm-module-runner.cc', + '../test/common/wasm/wasm-module-runner.h', + '../test/fuzzer/wasm-fuzzer-common.cc', + '../test/fuzzer/wasm-fuzzer-common.h', ], }, { @@ -284,28 +280,28 @@ 'wasm_data_section_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { 'target_name': 'wasm_data_section_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'wasm-data-section.cc', - '../common/wasm/wasm-module-runner.cc', - '../common/wasm/wasm-module-runner.h', - 'wasm-fuzzer-common.cc', - 'wasm-fuzzer-common.h', + 'sources': [ + '../test/fuzzer/wasm-data-section.cc', + '../test/common/wasm/wasm-module-runner.cc', + '../test/common/wasm/wasm-module-runner.h', + '../test/fuzzer/wasm-fuzzer-common.cc', + '../test/fuzzer/wasm-fuzzer-common.h', ], }, { @@ -315,28 +311,28 @@ 'wasm_function_sigs_section_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { 'target_name': 'wasm_function_sigs_section_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'wasm-function-sigs-section.cc', - '../common/wasm/wasm-module-runner.cc', - '../common/wasm/wasm-module-runner.h', - 'wasm-fuzzer-common.cc', - 'wasm-fuzzer-common.h', + 'sources': [ + '../test/fuzzer/wasm-function-sigs-section.cc', + '../test/common/wasm/wasm-module-runner.cc', + '../test/common/wasm/wasm-module-runner.h', + '../test/fuzzer/wasm-fuzzer-common.cc', + '../test/fuzzer/wasm-fuzzer-common.h', ], }, { @@ -346,28 +342,28 @@ 'wasm_globals_section_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { 'target_name': 'wasm_globals_section_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'wasm-globals-section.cc', - '../common/wasm/wasm-module-runner.cc', - '../common/wasm/wasm-module-runner.h', - 'wasm-fuzzer-common.cc', - 'wasm-fuzzer-common.h', + 'sources': [ + '../test/fuzzer/wasm-globals-section.cc', + '../test/common/wasm/wasm-module-runner.cc', + '../test/common/wasm/wasm-module-runner.h', + '../test/fuzzer/wasm-fuzzer-common.cc', + '../test/fuzzer/wasm-fuzzer-common.h', ], }, { @@ -377,28 +373,28 @@ 'wasm_imports_section_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { 'target_name': 'wasm_imports_section_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'wasm-imports-section.cc', - '../common/wasm/wasm-module-runner.cc', - '../common/wasm/wasm-module-runner.h', - 'wasm-fuzzer-common.cc', - 'wasm-fuzzer-common.h', + 'sources': [ + '../test/fuzzer/wasm-imports-section.cc', + '../test/common/wasm/wasm-module-runner.cc', + '../test/common/wasm/wasm-module-runner.h', + '../test/fuzzer/wasm-fuzzer-common.cc', + '../test/fuzzer/wasm-fuzzer-common.h', ], }, { @@ -408,28 +404,28 @@ 'wasm_memory_section_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { 'target_name': 'wasm_memory_section_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'wasm-memory-section.cc', - '../common/wasm/wasm-module-runner.cc', - '../common/wasm/wasm-module-runner.h', - 'wasm-fuzzer-common.cc', - 'wasm-fuzzer-common.h', + 'sources': [ + '../test/fuzzer/wasm-memory-section.cc', + '../test/common/wasm/wasm-module-runner.cc', + '../test/common/wasm/wasm-module-runner.h', + '../test/fuzzer/wasm-fuzzer-common.cc', + '../test/fuzzer/wasm-fuzzer-common.h', ], }, { @@ -439,28 +435,28 @@ 'wasm_names_section_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { 'target_name': 'wasm_names_section_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'wasm-names-section.cc', - '../common/wasm/wasm-module-runner.cc', - '../common/wasm/wasm-module-runner.h', - 'wasm-fuzzer-common.cc', - 'wasm-fuzzer-common.h', + 'sources': [ + '../test/fuzzer/wasm-names-section.cc', + '../test/common/wasm/wasm-module-runner.cc', + '../test/common/wasm/wasm-module-runner.h', + '../test/fuzzer/wasm-fuzzer-common.cc', + '../test/fuzzer/wasm-fuzzer-common.h', ], }, { @@ -470,44 +466,44 @@ 'wasm_types_section_fuzzer_lib', ], 'include_dirs': [ - '../..', + '..', ], 'sources': [ - 'fuzzer.cc', + '../test/fuzzer/fuzzer.cc', ], }, { 'target_name': 'wasm_types_section_fuzzer_lib', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8_libplatform', 'fuzzer_support', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'wasm-types-section.cc', - '../common/wasm/wasm-module-runner.cc', - '../common/wasm/wasm-module-runner.h', - 'wasm-fuzzer-common.cc', - 'wasm-fuzzer-common.h', + 'sources': [ + '../test/fuzzer/wasm-types-section.cc', + '../test/common/wasm/wasm-module-runner.cc', + '../test/common/wasm/wasm-module-runner.h', + '../test/fuzzer/wasm-fuzzer-common.cc', + '../test/fuzzer/wasm-fuzzer-common.h', ], }, { 'target_name': 'fuzzer_support', 'type': 'static_library', 'dependencies': [ - '../../src/v8.gyp:v8', - '../../src/v8.gyp:v8_libbase', - '../../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8', + 'v8.gyp:v8_libbase', + 'v8.gyp:v8_libplatform', ], 'include_dirs': [ - '../..', + '..', ], - 'sources': [ ### gcmole(all) ### - 'fuzzer-support.cc', - 'fuzzer-support.h', + 'sources': [ + '../test/fuzzer/fuzzer-support.cc', + '../test/fuzzer/fuzzer-support.h', ], 'conditions': [ ['v8_enable_i18n_support==1', { @@ -519,26 +515,4 @@ ], }, ], - 'conditions': [ - ['test_isolation_mode != "noop"', { - 'targets': [ - { - 'target_name': 'fuzzer_run', - 'type': 'none', - 'dependencies': [ - 'v8_simple_json_fuzzer', - 'v8_simple_parser_fuzzer', - 'v8_simple_regexp_fuzzer', - 'v8_simple_wasm_fuzzer', - ], - 'includes': [ - '../../gypfiles/isolate.gypi', - ], - 'sources': [ - 'fuzzer.isolate', - ], - }, - ], - }], - ], } diff --git a/deps/v8/gypfiles/gmock.gyp b/deps/v8/gypfiles/gmock.gyp new file mode 100644 index 00000000000..a80387298b1 --- /dev/null +++ b/deps/v8/gypfiles/gmock.gyp @@ -0,0 +1,72 @@ +# Copyright 2014 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'targets': [ + { + 'target_name': 'gmock', + 'type': 'static_library', + 'dependencies': [ + 'gtest.gyp:gtest', + ], + 'sources': [ + # Sources based on files in r173 of gmock. + '../testing/gmock/include/gmock/gmock-actions.h', + '../testing/gmock/include/gmock/gmock-cardinalities.h', + '../testing/gmock/include/gmock/gmock-generated-actions.h', + '../testing/gmock/include/gmock/gmock-generated-function-mockers.h', + '../testing/gmock/include/gmock/gmock-generated-matchers.h', + '../testing/gmock/include/gmock/gmock-generated-nice-strict.h', + '../testing/gmock/include/gmock/gmock-matchers.h', + '../testing/gmock/include/gmock/gmock-spec-builders.h', + '../testing/gmock/include/gmock/gmock.h', + '../testing/gmock/include/gmock/internal/gmock-generated-internal-utils.h', + '../testing/gmock/include/gmock/internal/gmock-internal-utils.h', + '../testing/gmock/include/gmock/internal/gmock-port.h', + '../testing/gmock/src/gmock-all.cc', + '../testing/gmock/src/gmock-cardinalities.cc', + '../testing/gmock/src/gmock-internal-utils.cc', + '../testing/gmock/src/gmock-matchers.cc', + '../testing/gmock/src/gmock-spec-builders.cc', + '../testing/gmock/src/gmock.cc', + '../testing/gmock-support.h', # gMock helpers + '../testing/gmock_custom/gmock/internal/custom/gmock-port.h', + ], + 'sources!': [ + '../testing/gmock/src/gmock-all.cc', # Not needed by our build. + ], + 'include_dirs': [ + '../testing/gmock_custom', + '../testing/gmock', + '../testing/gmock/include', + ], + 'all_dependent_settings': { + 'include_dirs': [ + '../testing/gmock_custom', + '../testing/gmock/include', # So that gmock headers can find themselves. + ], + }, + 'export_dependent_settings': [ + 'gtest.gyp:gtest', + ], + 'conditions': [ + ['want_separate_host_toolset==1', { + 'toolsets': ['host', 'target'], + }, { + 'toolsets': ['target'], + }], + ], + }, + { + 'target_name': 'gmock_main', + 'type': 'static_library', + 'dependencies': [ + 'gmock', + ], + 'sources': [ + '../testing/gmock/src/gmock_main.cc', + ], + }, + ], +} diff --git a/deps/v8/testing/gtest.gyp b/deps/v8/gypfiles/gtest.gyp similarity index 50% rename from deps/v8/testing/gtest.gyp rename to deps/v8/gypfiles/gtest.gyp index a94ee884fe9..82ae105293f 100644 --- a/deps/v8/testing/gtest.gyp +++ b/deps/v8/gypfiles/gtest.gyp @@ -9,42 +9,42 @@ 'toolsets': ['host', 'target'], 'type': 'static_library', 'sources': [ - 'gtest/include/gtest/gtest-death-test.h', - 'gtest/include/gtest/gtest-message.h', - 'gtest/include/gtest/gtest-param-test.h', - 'gtest/include/gtest/gtest-printers.h', - 'gtest/include/gtest/gtest-spi.h', - 'gtest/include/gtest/gtest-test-part.h', - 'gtest/include/gtest/gtest-typed-test.h', - 'gtest/include/gtest/gtest.h', - 'gtest/include/gtest/gtest_pred_impl.h', - 'gtest/include/gtest/internal/gtest-death-test-internal.h', - 'gtest/include/gtest/internal/gtest-filepath.h', - 'gtest/include/gtest/internal/gtest-internal.h', - 'gtest/include/gtest/internal/gtest-linked_ptr.h', - 'gtest/include/gtest/internal/gtest-param-util-generated.h', - 'gtest/include/gtest/internal/gtest-param-util.h', - 'gtest/include/gtest/internal/gtest-port.h', - 'gtest/include/gtest/internal/gtest-string.h', - 'gtest/include/gtest/internal/gtest-tuple.h', - 'gtest/include/gtest/internal/gtest-type-util.h', - 'gtest/src/gtest-all.cc', - 'gtest/src/gtest-death-test.cc', - 'gtest/src/gtest-filepath.cc', - 'gtest/src/gtest-internal-inl.h', - 'gtest/src/gtest-port.cc', - 'gtest/src/gtest-printers.cc', - 'gtest/src/gtest-test-part.cc', - 'gtest/src/gtest-typed-test.cc', - 'gtest/src/gtest.cc', - 'gtest-support.h', + '../testing/gtest/include/gtest/gtest-death-test.h', + '../testing/gtest/include/gtest/gtest-message.h', + '../testing/gtest/include/gtest/gtest-param-test.h', + '../testing/gtest/include/gtest/gtest-printers.h', + '../testing/gtest/include/gtest/gtest-spi.h', + '../testing/gtest/include/gtest/gtest-test-part.h', + '../testing/gtest/include/gtest/gtest-typed-test.h', + '../testing/gtest/include/gtest/gtest.h', + '../testing/gtest/include/gtest/gtest_pred_impl.h', + '../testing/gtest/include/gtest/internal/gtest-death-test-internal.h', + '../testing/gtest/include/gtest/internal/gtest-filepath.h', + '../testing/gtest/include/gtest/internal/gtest-internal.h', + '../testing/gtest/include/gtest/internal/gtest-linked_ptr.h', + '../testing/gtest/include/gtest/internal/gtest-param-util-generated.h', + '../testing/gtest/include/gtest/internal/gtest-param-util.h', + '../testing/gtest/include/gtest/internal/gtest-port.h', + '../testing/gtest/include/gtest/internal/gtest-string.h', + '../testing/gtest/include/gtest/internal/gtest-tuple.h', + '../testing/gtest/include/gtest/internal/gtest-type-util.h', + '../testing/gtest/src/gtest-all.cc', + '../testing/gtest/src/gtest-death-test.cc', + '../testing/gtest/src/gtest-filepath.cc', + '../testing/gtest/src/gtest-internal-inl.h', + '../testing/gtest/src/gtest-port.cc', + '../testing/gtest/src/gtest-printers.cc', + '../testing/gtest/src/gtest-test-part.cc', + '../testing/gtest/src/gtest-typed-test.cc', + '../testing/gtest/src/gtest.cc', + '../testing/gtest-support.h', ], 'sources!': [ - 'gtest/src/gtest-all.cc', # Not needed by our build. + '../testing/gtest/src/gtest-all.cc', # Not needed by our build. ], 'include_dirs': [ - 'gtest', - 'gtest/include', + '../testing/gtest', + '../testing/gtest/include', ], 'dependencies': [ 'gtest_prod', @@ -78,7 +78,7 @@ 'UNIT_TEST', ], 'include_dirs': [ - 'gtest/include', # So that gtest headers can find themselves. + '../testing/gtest/include', # So that gtest headers can find themselves. ], 'target_conditions': [ ['_type=="executable"', { @@ -107,7 +107,7 @@ 'gtest', ], 'sources': [ - 'gtest/src/gtest_main.cc', + '../testing/gtest/src/gtest_main.cc', ], }, { @@ -115,7 +115,7 @@ 'toolsets': ['host', 'target'], 'type': 'none', 'sources': [ - 'gtest/include/gtest/gtest_prod.h', + '../testing/gtest/include/gtest/gtest_prod.h', ], }, ], diff --git a/deps/v8/gypfiles/gyp_v8 b/deps/v8/gypfiles/gyp_v8 old mode 100755 new mode 100644 index 5215f513525..62e13d86e6c --- a/deps/v8/gypfiles/gyp_v8 +++ b/deps/v8/gypfiles/gyp_v8 @@ -48,7 +48,8 @@ import gyp # Add paths so that pymod_do_main(...) can import files. sys.path.insert( 1, os.path.abspath(os.path.join(v8_root, 'tools', 'generate_shim_headers'))) - +sys.path.append( + os.path.abspath(os.path.join(v8_root, 'third_party', 'binutils'))) def GetOutputDirectory(): """Returns the output directory that GYP will use.""" @@ -108,14 +109,19 @@ def run_gyp(args): if __name__ == '__main__': args = sys.argv[1:] - gyp_chromium_no_action = os.environ.get('GYP_CHROMIUM_NO_ACTION', '1') - if gyp_chromium_no_action != '0': - print 'GYP is now disabled by default.\n' - print 'If you really want to run this, set the environment variable ' - print 'GYP_CHROMIUM_NO_ACTION=0.' + gyp_chromium_no_action = os.environ.get('GYP_CHROMIUM_NO_ACTION') + if gyp_chromium_no_action == '1': + print 'Skipping gyp_v8 due to GYP_CHROMIUM_NO_ACTION env var.' sys.exit(0) running_as_hook = '--running-as-hook' + if running_as_hook in args and gyp_chromium_no_action != '0': + print 'GYP is now disabled by default in runhooks.\n' + print 'If you really want to run this, either run ' + print '`python gypfiles/gyp_v8` explicitly by hand ' + print 'or set the environment variable GYP_CHROMIUM_NO_ACTION=0.' + sys.exit(0) + if running_as_hook in args: args.remove(running_as_hook) diff --git a/deps/v8/gypfiles/inspector-test.gyp b/deps/v8/gypfiles/inspector-test.gyp new file mode 100644 index 00000000000..c8cc5561a4c --- /dev/null +++ b/deps/v8/gypfiles/inspector-test.gyp @@ -0,0 +1,39 @@ +# Copyright 2016 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + 'v8_code': 1, + }, + 'includes': ['toolchain.gypi', 'features.gypi'], + 'targets': [ + { + 'target_name': 'inspector-test', + 'type': 'executable', + 'dependencies': [ + 'v8.gyp:v8_libplatform', + 'v8.gyp:v8_libbase', + 'v8.gyp:v8', + ], + 'include_dirs': [ + '..', + ], + 'sources': [ + '../test/inspector/inspector-test.cc', + '../test/inspector/isolate-data.cc', + '../test/inspector/isolate-data.h', + '../test/inspector/task-runner.cc', + '../test/inspector/task-runner.h', + ], + 'conditions': [ + ['v8_enable_i18n_support==1', { + 'dependencies': [ + '<(icu_gyp_path):icui18n', + '<(icu_gyp_path):icuuc', + ], + }], + ], + }, + ], +} diff --git a/deps/v8/src/inspector/inspector.gyp b/deps/v8/gypfiles/inspector.gyp similarity index 76% rename from deps/v8/src/inspector/inspector.gyp rename to deps/v8/gypfiles/inspector.gyp index 3d59cc089df..c0b503d9cec 100644 --- a/deps/v8/src/inspector/inspector.gyp +++ b/deps/v8/gypfiles/inspector.gyp @@ -4,11 +4,12 @@ { 'variables': { - 'protocol_path': '../../third_party/inspector_protocol', + 'protocol_path': '../third_party/inspector_protocol', + 'inspector_path': '../src/inspector', }, 'includes': [ 'inspector.gypi', - '<(PRODUCT_DIR)/../../../third_party/inspector_protocol/inspector_protocol.gypi', + '../third_party/inspector_protocol/inspector_protocol.gypi', ], 'targets': [ { 'target_name': 'inspector_injected_script', @@ -18,7 +19,7 @@ { 'action_name': 'convert_js_to_cpp_char_array', 'inputs': [ - 'build/xxd.py', + '<(inspector_path)/build/xxd.py', '<(inspector_injected_script_source)', ], 'outputs': [ @@ -26,9 +27,9 @@ ], 'action': [ 'python', - 'build/xxd.py', + '<(inspector_path)/build/xxd.py', 'InjectedScriptSource_js', - 'injected-script-source.js', + '<(inspector_path)/injected-script-source.js', '<@(_outputs)' ], }, @@ -43,7 +44,7 @@ { 'action_name': 'protocol_compatibility', 'inputs': [ - 'js_protocol.json', + '<(inspector_path)/js_protocol.json', ], 'outputs': [ '<@(SHARED_INTERMEDIATE_DIR)/src/js_protocol.stamp', @@ -52,7 +53,7 @@ 'python', '<(protocol_path)/CheckProtocolCompatibility.py', '--stamp', '<@(_outputs)', - 'js_protocol.json', + '<(inspector_path)/js_protocol.json', ], 'message': 'Generating inspector protocol sources from protocol json definition', }, @@ -66,8 +67,8 @@ { 'action_name': 'protocol_generated_sources', 'inputs': [ - 'js_protocol.json', - 'inspector_protocol_config.json', + '<(inspector_path)/js_protocol.json', + '<(inspector_path)/inspector_protocol_config.json', '<@(inspector_protocol_files)', ], 'outputs': [ @@ -76,9 +77,9 @@ 'action': [ 'python', '<(protocol_path)/CodeGenerator.py', - '--jinja_dir', '../../third_party', + '--jinja_dir', '../third_party', '--output_base', '<(SHARED_INTERMEDIATE_DIR)/src/inspector', - '--config', 'inspector_protocol_config.json', + '--config', '<(inspector_path)/inspector_protocol_config.json', ], 'message': 'Generating inspector protocol sources from protocol json', }, diff --git a/deps/v8/gypfiles/inspector.gypi b/deps/v8/gypfiles/inspector.gypi new file mode 100644 index 00000000000..00cbbfaecb7 --- /dev/null +++ b/deps/v8/gypfiles/inspector.gypi @@ -0,0 +1,90 @@ +# Copyright 2016 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + 'inspector_generated_sources': [ + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Forward.h', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Protocol.cpp', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Protocol.h', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Console.cpp', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Console.h', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Debugger.cpp', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Debugger.h', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/HeapProfiler.cpp', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/HeapProfiler.h', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Profiler.cpp', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Profiler.h', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Runtime.cpp', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Runtime.h', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Schema.cpp', + '<(SHARED_INTERMEDIATE_DIR)/src/inspector/protocol/Schema.h', + '<(SHARED_INTERMEDIATE_DIR)/include/inspector/Debugger.h', + '<(SHARED_INTERMEDIATE_DIR)/include/inspector/Runtime.h', + '<(SHARED_INTERMEDIATE_DIR)/include/inspector/Schema.h', + ], + + 'inspector_injected_script_source': '../src/inspector/injected-script-source.js', + 'inspector_generated_injected_script': '<(SHARED_INTERMEDIATE_DIR)/src/inspector/injected-script-source.h', + + 'inspector_all_sources': [ + '<@(inspector_generated_sources)', + '<(inspector_generated_injected_script)', + '../include/v8-inspector.h', + '../include/v8-inspector-protocol.h', + '../src/inspector/injected-script.cc', + '../src/inspector/injected-script.h', + '../src/inspector/inspected-context.cc', + '../src/inspector/inspected-context.h', + '../src/inspector/remote-object-id.cc', + '../src/inspector/remote-object-id.h', + '../src/inspector/search-util.cc', + '../src/inspector/search-util.h', + '../src/inspector/string-16.cc', + '../src/inspector/string-16.h', + '../src/inspector/string-util.cc', + '../src/inspector/string-util.h', + '../src/inspector/test-interface.cc', + '../src/inspector/test-interface.h', + '../src/inspector/v8-console.cc', + '../src/inspector/v8-console.h', + '../src/inspector/v8-console-agent-impl.cc', + '../src/inspector/v8-console-agent-impl.h', + '../src/inspector/v8-console-message.cc', + '../src/inspector/v8-console-message.h', + '../src/inspector/v8-debugger.cc', + '../src/inspector/v8-debugger.h', + '../src/inspector/v8-debugger-agent-impl.cc', + '../src/inspector/v8-debugger-agent-impl.h', + '../src/inspector/v8-debugger-script.cc', + '../src/inspector/v8-debugger-script.h', + '../src/inspector/v8-function-call.cc', + '../src/inspector/v8-function-call.h', + '../src/inspector/v8-heap-profiler-agent-impl.cc', + '../src/inspector/v8-heap-profiler-agent-impl.h', + '../src/inspector/v8-injected-script-host.cc', + '../src/inspector/v8-injected-script-host.h', + '../src/inspector/v8-inspector-impl.cc', + '../src/inspector/v8-inspector-impl.h', + '../src/inspector/v8-inspector-session-impl.cc', + '../src/inspector/v8-inspector-session-impl.h', + '../src/inspector/v8-internal-value-type.cc', + '../src/inspector/v8-internal-value-type.h', + '../src/inspector/v8-profiler-agent-impl.cc', + '../src/inspector/v8-profiler-agent-impl.h', + '../src/inspector/v8-regex.cc', + '../src/inspector/v8-regex.h', + '../src/inspector/v8-runtime-agent-impl.cc', + '../src/inspector/v8-runtime-agent-impl.h', + '../src/inspector/v8-schema-agent-impl.cc', + '../src/inspector/v8-schema-agent-impl.h', + '../src/inspector/v8-stack-trace-impl.cc', + '../src/inspector/v8-stack-trace-impl.h', + '../src/inspector/v8-value-utils.cc', + '../src/inspector/v8-value-utils.h', + '../src/inspector/wasm-translation.cc', + '../src/inspector/wasm-translation.h', + ] + } +} diff --git a/deps/v8/gypfiles/isolate.gypi b/deps/v8/gypfiles/isolate.gypi deleted file mode 100644 index 3e85b530e25..00000000000 --- a/deps/v8/gypfiles/isolate.gypi +++ /dev/null @@ -1,100 +0,0 @@ -# Copyright 2015 the V8 project authors. All rights reserved. -# Copyright (c) 2012 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# This file is meant to be included into a target to provide a rule -# to "build" .isolate files into a .isolated file. -# -# To use this, create a gyp target with the following form: -# 'conditions': [ -# ['test_isolation_mode != "noop"', { -# 'targets': [ -# { -# 'target_name': 'foo_test_run', -# 'type': 'none', -# 'dependencies': [ -# 'foo_test', -# ], -# 'includes': [ -# '../gypfiles/isolate.gypi', -# ], -# 'sources': [ -# 'foo_test.isolate', -# ], -# }, -# ], -# }], -# ], -# -# Note: foo_test.isolate is included and a source file. It is an inherent -# property of the .isolate format. This permits to define GYP variables but is -# a stricter format than GYP so isolate.py can read it. -# -# The generated .isolated file will be: -# <(PRODUCT_DIR)/foo_test.isolated -# -# See http://dev.chromium.org/developers/testing/isolated-testing/for-swes -# for more information. - -{ - 'rules': [ - { - 'rule_name': 'isolate', - 'extension': 'isolate', - 'inputs': [ - # Files that are known to be involved in this step. - '<(DEPTH)/tools/isolate_driver.py', - '<(DEPTH)/tools/swarming_client/isolate.py', - '<(DEPTH)/tools/swarming_client/run_isolated.py', - ], - 'outputs': [ - '<(PRODUCT_DIR)/<(RULE_INPUT_ROOT).isolated', - ], - 'action': [ - 'python', - '<(DEPTH)/tools/isolate_driver.py', - '<(test_isolation_mode)', - '--isolated', '<(PRODUCT_DIR)/<(RULE_INPUT_ROOT).isolated', - '--isolate', '<(RULE_INPUT_PATH)', - - # Variables should use the -V FOO=<(FOO) form so frequent values, - # like '0' or '1', aren't stripped out by GYP. Run 'isolate.py help' - # for more details. - - # Path variables are used to replace file paths when loading a .isolate - # file - '--path-variable', 'DEPTH', '<(DEPTH)', - '--path-variable', 'PRODUCT_DIR', '<(PRODUCT_DIR)', - - '--config-variable', 'CONFIGURATION_NAME=<(CONFIGURATION_NAME)', - '--config-variable', 'OS=<(OS)', - '--config-variable', 'asan=<(asan)', - '--config-variable', 'cfi_vptr=<(cfi_vptr)', - '--config-variable', 'gcmole=<(gcmole)', - '--config-variable', 'has_valgrind=<(has_valgrind)', - '--config-variable', 'icu_use_data_file_flag=<(icu_use_data_file_flag)', - '--config-variable', 'msan=<(msan)', - '--config-variable', 'tsan=<(tsan)', - '--config-variable', 'coverage=<(coverage)', - '--config-variable', 'sanitizer_coverage=<(sanitizer_coverage)', - '--config-variable', 'component=<(component)', - '--config-variable', 'target_arch=<(target_arch)', - '--config-variable', 'ubsan_vptr=0', - '--config-variable', 'v8_use_external_startup_data=<(v8_use_external_startup_data)', - '--config-variable', 'v8_use_snapshot=<(v8_use_snapshot)', - ], - 'conditions': [ - ['OS=="win"', { - 'action': [ - '--config-variable', 'msvs_version=2013', - ], - }, { - 'action': [ - '--config-variable', 'msvs_version=0', - ], - }], - ], - }, - ], -} diff --git a/deps/v8/gypfiles/landmine_utils.py b/deps/v8/gypfiles/landmine_utils.py deleted file mode 100644 index 8bdc2b648b3..00000000000 --- a/deps/v8/gypfiles/landmine_utils.py +++ /dev/null @@ -1,123 +0,0 @@ -# Copyright 2014 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - - -import functools -import logging -import os -import shlex -import sys - - -def memoize(default=None): - """This decorator caches the return value of a parameterless pure function""" - def memoizer(func): - val = [] - @functools.wraps(func) - def inner(): - if not val: - ret = func() - val.append(ret if ret is not None else default) - if logging.getLogger().isEnabledFor(logging.INFO): - print '%s -> %r' % (func.__name__, val[0]) - return val[0] - return inner - return memoizer - - -@memoize() -def IsWindows(): - return sys.platform in ['win32', 'cygwin'] - - -@memoize() -def IsLinux(): - return sys.platform.startswith(('linux', 'freebsd')) - - -@memoize() -def IsMac(): - return sys.platform == 'darwin' - - -@memoize() -def gyp_defines(): - """Parses and returns GYP_DEFINES env var as a dictionary.""" - return dict(arg.split('=', 1) - for arg in shlex.split(os.environ.get('GYP_DEFINES', ''))) - - -@memoize() -def gyp_generator_flags(): - """Parses and returns GYP_GENERATOR_FLAGS env var as a dictionary.""" - return dict(arg.split('=', 1) - for arg in shlex.split(os.environ.get('GYP_GENERATOR_FLAGS', ''))) - - -@memoize() -def gyp_msvs_version(): - return os.environ.get('GYP_MSVS_VERSION', '') - - -@memoize() -def distributor(): - """ - Returns a string which is the distributed build engine in use (if any). - Possible values: 'goma', 'ib', '' - """ - if 'goma' in gyp_defines(): - return 'goma' - elif IsWindows(): - if 'CHROME_HEADLESS' in os.environ: - return 'ib' # use (win and !goma and headless) as approximation of ib - - -@memoize() -def platform(): - """ - Returns a string representing the platform this build is targeted for. - Possible values: 'win', 'mac', 'linux', 'ios', 'android' - """ - if 'OS' in gyp_defines(): - if 'android' in gyp_defines()['OS']: - return 'android' - else: - return gyp_defines()['OS'] - elif IsWindows(): - return 'win' - elif IsLinux(): - return 'linux' - else: - return 'mac' - - -@memoize() -def builder(): - """ - Returns a string representing the build engine (not compiler) to use. - Possible values: 'make', 'ninja', 'xcode', 'msvs', 'scons' - """ - if 'GYP_GENERATORS' in os.environ: - # for simplicity, only support the first explicit generator - generator = os.environ['GYP_GENERATORS'].split(',')[0] - if generator.endswith('-android'): - return generator.split('-')[0] - elif generator.endswith('-ninja'): - return 'ninja' - else: - return generator - else: - if platform() == 'android': - # Good enough for now? Do any android bots use make? - return 'make' - elif platform() == 'ios': - return 'xcode' - elif IsWindows(): - return 'msvs' - elif IsLinux(): - return 'make' - elif IsMac(): - return 'xcode' - else: - assert False, 'Don\'t know what builder we\'re using!' diff --git a/deps/v8/gypfiles/landmines.py b/deps/v8/gypfiles/landmines.py deleted file mode 100755 index 2a81c66d1a6..00000000000 --- a/deps/v8/gypfiles/landmines.py +++ /dev/null @@ -1,245 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -""" -This script runs every build as the first hook (See DEPS). If it detects that -the build should be clobbered, it will delete the contents of the build -directory. - -A landmine is tripped when a builder checks out a different revision, and the -diff between the new landmines and the old ones is non-null. At this point, the -build is clobbered. -""" - -import difflib -import errno -import gyp_environment -import logging -import optparse -import os -import re -import shutil -import sys -import subprocess -import time - -import landmine_utils - - -SRC_DIR = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) - - -def get_build_dir(build_tool, is_iphone=False): - """ - Returns output directory absolute path dependent on build and targets. - Examples: - r'c:\b\build\slave\win\build\src\out' - '/mnt/data/b/build/slave/linux/build/src/out' - '/b/build/slave/ios_rel_device/build/src/xcodebuild' - - Keep this function in sync with tools/build/scripts/slave/compile.py - """ - ret = None - if build_tool == 'xcode': - ret = os.path.join(SRC_DIR, 'xcodebuild') - elif build_tool in ['make', 'ninja', 'ninja-ios']: # TODO: Remove ninja-ios. - if 'CHROMIUM_OUT_DIR' in os.environ: - output_dir = os.environ.get('CHROMIUM_OUT_DIR').strip() - if not output_dir: - raise Error('CHROMIUM_OUT_DIR environment variable is set but blank!') - else: - output_dir = landmine_utils.gyp_generator_flags().get('output_dir', 'out') - ret = os.path.join(SRC_DIR, output_dir) - elif build_tool in ['msvs', 'vs', 'ib']: - ret = os.path.join(SRC_DIR, 'build') - else: - raise NotImplementedError('Unexpected GYP_GENERATORS (%s)' % build_tool) - return os.path.abspath(ret) - - -def extract_gn_build_commands(build_ninja_file): - """Extracts from a build.ninja the commands to run GN. - - The commands to run GN are the gn rule and build.ninja build step at the - top of the build.ninja file. We want to keep these when deleting GN builds - since we want to preserve the command-line flags to GN. - - On error, returns the empty string.""" - result = "" - with open(build_ninja_file, 'r') as f: - # Read until the second blank line. The first thing GN writes to the file - # is the "rule gn" and the second is the section for "build build.ninja", - # separated by blank lines. - num_blank_lines = 0 - while num_blank_lines < 2: - line = f.readline() - if len(line) == 0: - return '' # Unexpected EOF. - result += line - if line[0] == '\n': - num_blank_lines = num_blank_lines + 1 - return result - -def delete_build_dir(build_dir): - # GN writes a build.ninja.d file. Note that not all GN builds have args.gn. - build_ninja_d_file = os.path.join(build_dir, 'build.ninja.d') - if not os.path.exists(build_ninja_d_file): - shutil.rmtree(build_dir) - return - - # GN builds aren't automatically regenerated when you sync. To avoid - # messing with the GN workflow, erase everything but the args file, and - # write a dummy build.ninja file that will automatically rerun GN the next - # time Ninja is run. - build_ninja_file = os.path.join(build_dir, 'build.ninja') - build_commands = extract_gn_build_commands(build_ninja_file) - - try: - gn_args_file = os.path.join(build_dir, 'args.gn') - with open(gn_args_file, 'r') as f: - args_contents = f.read() - except IOError: - args_contents = '' - - shutil.rmtree(build_dir) - - # Put back the args file (if any). - os.mkdir(build_dir) - if args_contents != '': - with open(gn_args_file, 'w') as f: - f.write(args_contents) - - # Write the build.ninja file sufficiently to regenerate itself. - with open(os.path.join(build_dir, 'build.ninja'), 'w') as f: - if build_commands != '': - f.write(build_commands) - else: - # Couldn't parse the build.ninja file, write a default thing. - f.write('''rule gn -command = gn -q gen //out/%s/ -description = Regenerating ninja files - -build build.ninja: gn -generator = 1 -depfile = build.ninja.d -''' % (os.path.split(build_dir)[1])) - - # Write a .d file for the build which references a nonexistant file. This - # will make Ninja always mark the build as dirty. - with open(build_ninja_d_file, 'w') as f: - f.write('build.ninja: nonexistant_file.gn\n') - - -def needs_clobber(landmines_path, new_landmines): - if os.path.exists(landmines_path): - with open(landmines_path, 'r') as f: - old_landmines = f.readlines() - if old_landmines != new_landmines: - old_date = time.ctime(os.stat(landmines_path).st_ctime) - diff = difflib.unified_diff(old_landmines, new_landmines, - fromfile='old_landmines', tofile='new_landmines', - fromfiledate=old_date, tofiledate=time.ctime(), n=0) - sys.stdout.write('Clobbering due to:\n') - sys.stdout.writelines(diff) - return True - else: - sys.stdout.write('Clobbering due to missing landmines file.\n') - return True - return False - - -def clobber_if_necessary(new_landmines): - """Does the work of setting, planting, and triggering landmines.""" - out_dir = get_build_dir(landmine_utils.builder()) - landmines_path = os.path.normpath(os.path.join(out_dir, '..', '.landmines')) - try: - os.makedirs(out_dir) - except OSError as e: - if e.errno == errno.EEXIST: - pass - - if needs_clobber(landmines_path, new_landmines): - # Clobber contents of build directory but not directory itself: some - # checkouts have the build directory mounted. - for f in os.listdir(out_dir): - path = os.path.join(out_dir, f) - if os.path.basename(out_dir) == 'build': - # Only delete build directories and files for MSVS builds as the folder - # shares some checked out files and directories. - if (os.path.isdir(path) and - re.search(r'(?:[Rr]elease)|(?:[Dd]ebug)', f)): - delete_build_dir(path) - elif (os.path.isfile(path) and - (path.endswith('.sln') or - path.endswith('.vcxproj') or - path.endswith('.vcxproj.user'))): - os.unlink(path) - else: - if os.path.isfile(path): - os.unlink(path) - elif os.path.isdir(path): - delete_build_dir(path) - if os.path.basename(out_dir) == 'xcodebuild': - # Xcodebuild puts an additional project file structure into build, - # while the output folder is xcodebuild. - project_dir = os.path.join(SRC_DIR, 'build', 'all.xcodeproj') - if os.path.exists(project_dir) and os.path.isdir(project_dir): - delete_build_dir(project_dir) - - # Save current set of landmines for next time. - with open(landmines_path, 'w') as f: - f.writelines(new_landmines) - - -def process_options(): - """Returns a list of landmine emitting scripts.""" - parser = optparse.OptionParser() - parser.add_option( - '-s', '--landmine-scripts', action='append', - default=[os.path.join(SRC_DIR, 'gypfiles', 'get_landmines.py')], - help='Path to the script which emits landmines to stdout. The target ' - 'is passed to this script via option -t. Note that an extra ' - 'script can be specified via an env var EXTRA_LANDMINES_SCRIPT.') - parser.add_option('-v', '--verbose', action='store_true', - default=('LANDMINES_VERBOSE' in os.environ), - help=('Emit some extra debugging information (default off). This option ' - 'is also enabled by the presence of a LANDMINES_VERBOSE environment ' - 'variable.')) - - options, args = parser.parse_args() - - if args: - parser.error('Unknown arguments %s' % args) - - logging.basicConfig( - level=logging.DEBUG if options.verbose else logging.ERROR) - - extra_script = os.environ.get('EXTRA_LANDMINES_SCRIPT') - if extra_script: - return options.landmine_scripts + [extra_script] - else: - return options.landmine_scripts - - -def main(): - landmine_scripts = process_options() - - if landmine_utils.builder() in ('dump_dependency_json', 'eclipse'): - return 0 - - gyp_environment.set_environment() - - landmines = [] - for s in landmine_scripts: - proc = subprocess.Popen([sys.executable, s], stdout=subprocess.PIPE) - output, _ = proc.communicate() - landmines.extend([('%s\n' % l.strip()) for l in output.splitlines()]) - clobber_if_necessary(landmines) - - return 0 - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/deps/v8/gypfiles/mkgrokdump.gyp b/deps/v8/gypfiles/mkgrokdump.gyp new file mode 100644 index 00000000000..75e8fc75cd6 --- /dev/null +++ b/deps/v8/gypfiles/mkgrokdump.gyp @@ -0,0 +1,27 @@ +# Copyright 2017 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + 'v8_code': 1, + }, + 'includes': ['toolchain.gypi', 'features.gypi'], + 'targets': [ + { + 'target_name': 'mkgrokdump', + 'type': 'executable', + 'dependencies': [ + 'v8.gyp:v8', + 'v8.gyp:v8_libbase', + 'v8.gyp:v8_libplatform', + ], + 'include_dirs': [ + '..', + ], + 'sources': [ + '../test/mkgrokdump/mkgrokdump.cc', + ], + }, + ], +} diff --git a/deps/v8/tools/parser-shell.gyp b/deps/v8/gypfiles/parser-shell.gyp similarity index 89% rename from deps/v8/tools/parser-shell.gyp rename to deps/v8/gypfiles/parser-shell.gyp index 9b94888edfd..464e2676ac8 100644 --- a/deps/v8/tools/parser-shell.gyp +++ b/deps/v8/gypfiles/parser-shell.gyp @@ -30,15 +30,15 @@ 'v8_code': 1, 'v8_enable_i18n_support%': 1, }, - 'includes': ['../gypfiles/toolchain.gypi', '../gypfiles/features.gypi'], + 'includes': ['toolchain.gypi', 'features.gypi'], 'targets': [ { 'target_name': 'parser-shell', 'type': 'executable', 'dependencies': [ - '../src/v8.gyp:v8', - '../src/v8.gyp:v8_libbase', - '../src/v8.gyp:v8_libplatform', + 'v8.gyp:v8', + 'v8.gyp:v8_libbase', + 'v8.gyp:v8_libplatform', ], 'conditions': [ ['v8_enable_i18n_support==1', { @@ -52,8 +52,8 @@ '..', ], 'sources': [ - 'parser-shell.cc', - 'shell-utils.h', + '../tools/parser-shell.cc', + '../tools/shell-utils.h', ], }, ], diff --git a/deps/v8/gypfiles/run-tests-legacy.py b/deps/v8/gypfiles/run-tests-legacy.py old mode 100755 new mode 100644 diff --git a/deps/v8/gypfiles/samples.gyp b/deps/v8/gypfiles/samples.gyp new file mode 100644 index 00000000000..9080c0d445d --- /dev/null +++ b/deps/v8/gypfiles/samples.gyp @@ -0,0 +1,61 @@ +# Copyright 2012 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + 'v8_code': 1, + 'v8_enable_i18n_support%': 1, + 'v8_toolset_for_shell%': 'target', + }, + 'includes': ['toolchain.gypi', 'features.gypi'], + 'target_defaults': { + 'type': 'executable', + 'dependencies': [ + 'v8.gyp:v8', + 'v8.gyp:v8_libbase', + 'v8.gyp:v8_libplatform', + ], + 'include_dirs': [ + '..', + ], + 'conditions': [ + ['v8_enable_i18n_support==1', { + 'dependencies': [ + '<(icu_gyp_path):icui18n', + '<(icu_gyp_path):icuuc', + ], + }], + ['OS=="win" and v8_enable_i18n_support==1', { + 'dependencies': [ + '<(icu_gyp_path):icudata', + ], + }], + ], + }, + 'targets': [ + { + 'target_name': 'v8_shell', + 'sources': [ + '../samples/shell.cc', + ], + 'conditions': [ + [ 'want_separate_host_toolset==1', { + 'toolsets': [ '<(v8_toolset_for_shell)', ], + }], + ], + }, + { + 'target_name': 'hello-world', + 'sources': [ + '../samples/hello-world.cc', + ], + }, + { + 'target_name': 'process', + 'sources': [ + '../samples/process.cc', + ], + }, + ], +} diff --git a/deps/v8/gypfiles/sysroot_ld_flags.sh b/deps/v8/gypfiles/sysroot_ld_flags.sh old mode 100755 new mode 100644 diff --git a/deps/v8/gypfiles/toolchain.gypi b/deps/v8/gypfiles/toolchain.gypi index 80844cecc67..e67a5e22b96 100644 --- a/deps/v8/gypfiles/toolchain.gypi +++ b/deps/v8/gypfiles/toolchain.gypi @@ -58,6 +58,9 @@ # Similar to the ARM hard float ABI but on MIPS. 'v8_use_mips_abi_hardfloat%': 'true', + # MIPS MSA support + 'mips_use_msa%': 0, + # Print to stdout on Android. 'v8_android_log_stdout%': 0, @@ -439,6 +442,9 @@ 'cflags': ['-mips32r6'], 'ldflags': ['-mips32r6'], }], + ['mips_arch_variant=="r6" and mips_use_msa==1', { + 'defines': [ '_MIPS_MSA' ], + }], ['mips_arch_variant=="r2"', { 'conditions': [ [ 'mips_fpu_mode=="fp64"', { @@ -507,6 +513,9 @@ 'FPU_MODE_FP64', ], }], + ['mips_arch_variant=="r6" and mips_use_msa==1', { + 'defines': [ '_MIPS_MSA' ], + }], ['mips_arch_variant=="r2"', { 'conditions': [ [ 'mips_fpu_mode=="fp64"', { @@ -558,6 +567,9 @@ 'FPU_MODE_FP64', ], }], + ['mips_arch_variant=="r6" and mips_use_msa==1', { + 'defines': [ '_MIPS_MSA' ], + }], ['mips_arch_variant=="r2"', { 'conditions': [ ['mips_fpu_mode=="fp64"', { @@ -640,6 +652,9 @@ 'cflags': ['-mips32r6'], 'ldflags': ['-mips32r6'], }], + ['mips_arch_variant=="r6" and mips_use_msa==1', { + 'defines': [ '_MIPS_MSA' ], + }], ['mips_arch_variant=="r2"', { 'conditions': [ [ 'mips_fpu_mode=="fp64"', { @@ -721,6 +736,9 @@ 'FPU_MODE_FP64', ], }], + ['mips_arch_variant=="r6" and mips_use_msa==1', { + 'defines': [ '_MIPS_MSA' ], + }], ['mips_arch_variant=="r2"', { 'conditions': [ [ 'mips_fpu_mode=="fp64"', { @@ -778,6 +796,9 @@ 'FPU_MODE_FP64', ], }], + ['mips_arch_variant=="r6" and mips_use_msa==1', { + 'defines': [ '_MIPS_MSA' ], + }], ['mips_arch_variant=="r2"', { 'conditions': [ ['mips_fpu_mode=="fp64"', { @@ -877,6 +898,9 @@ 'cflags': ['-mips64r6', '-mabi=64'], 'ldflags': ['-mips64r6', '-mabi=64'], }], + ['mips_arch_variant=="r6" and mips_use_msa==1', { + 'defines': [ '_MIPS_MSA' ], + }], ['mips_arch_variant=="r2"', { 'defines': ['_MIPS_ARCH_MIPS64R2',], 'conditions': [ @@ -895,6 +919,9 @@ ['mips_arch_variant=="r6"', { 'defines': ['_MIPS_ARCH_MIPS64R6',], }], + ['mips_arch_variant=="r6" and mips_use_msa==1', { + 'defines': [ '_MIPS_MSA' ], + }], ['mips_arch_variant=="r2"', { 'defines': ['_MIPS_ARCH_MIPS64R2',], }], @@ -907,6 +934,9 @@ ['mips_arch_variant=="r6"', { 'defines': ['_MIPS_ARCH_MIPS64R6',], }], + ['mips_arch_variant=="r6" and mips_use_msa==1', { + 'defines': [ '_MIPS_MSA' ], + }], ['mips_arch_variant=="r2"', { 'defines': ['_MIPS_ARCH_MIPS64R2',], }], @@ -1225,7 +1255,9 @@ 'OBJECT_PRINT', 'VERIFY_HEAP', 'DEBUG', - 'V8_TRACE_MAPS' + 'V8_TRACE_MAPS', + 'V8_ENABLE_ALLOCATION_TIMEOUT', + 'V8_ENABLE_FORCE_SLOW_PATH', ], 'conditions': [ ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" or \ diff --git a/deps/v8/gypfiles/unittests.gyp b/deps/v8/gypfiles/unittests.gyp new file mode 100644 index 00000000000..c6d3713b0cf --- /dev/null +++ b/deps/v8/gypfiles/unittests.gyp @@ -0,0 +1,287 @@ +# Copyright 2014 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# The sources are kept automatically in sync with BUILD.gn. + +{ + 'variables': { + 'v8_code': 1, + 'unittests_sources': [ + '../test/unittests/allocation-unittest.cc', + '../test/unittests/api/access-check-unittest.cc', + '../test/unittests/api/exception-unittest.cc', + '../test/unittests/api/interceptor-unittest.cc', + '../test/unittests/api/isolate-unittest.cc', + '../test/unittests/api/remote-object-unittest.cc', + '../test/unittests/api/v8-object-unittest.cc', + '../test/unittests/asmjs/asm-scanner-unittest.cc', + '../test/unittests/asmjs/asm-types-unittest.cc', + '../test/unittests/asmjs/switch-logic-unittest.cc', + '../test/unittests/base/atomic-utils-unittest.cc', + '../test/unittests/base/bits-unittest.cc', + '../test/unittests/base/cpu-unittest.cc', + '../test/unittests/base/division-by-constant-unittest.cc', + '../test/unittests/base/flags-unittest.cc', + '../test/unittests/base/functional-unittest.cc', + '../test/unittests/base/ieee754-unittest.cc', + '../test/unittests/base/logging-unittest.cc', + '../test/unittests/base/macros-unittest.cc', + '../test/unittests/base/iterator-unittest.cc', + '../test/unittests/base/ostreams-unittest.cc', + '../test/unittests/base/platform/condition-variable-unittest.cc', + '../test/unittests/base/platform/mutex-unittest.cc', + '../test/unittests/base/platform/platform-unittest.cc', + '../test/unittests/base/platform/semaphore-unittest.cc', + '../test/unittests/base/platform/time-unittest.cc', + '../test/unittests/base/sys-info-unittest.cc', + '../test/unittests/base/template-utils-unittest.cc', + '../test/unittests/base/utils/random-number-generator-unittest.cc', + '../test/unittests/bigint-unittest.cc', + '../test/unittests/cancelable-tasks-unittest.cc', + '../test/unittests/char-predicates-unittest.cc', + "../test/unittests/code-stub-assembler-unittest.cc", + "../test/unittests/code-stub-assembler-unittest.h", + '../test/unittests/compiler/branch-elimination-unittest.cc', + '../test/unittests/compiler/bytecode-analysis-unittest.cc', + '../test/unittests/compiler/checkpoint-elimination-unittest.cc', + "../test/unittests/compiler/code-assembler-unittest.cc", + "../test/unittests/compiler/code-assembler-unittest.h", + '../test/unittests/compiler/common-operator-reducer-unittest.cc', + '../test/unittests/compiler/common-operator-unittest.cc', + '../test/unittests/compiler/compiler-test-utils.h', + '../test/unittests/compiler/control-equivalence-unittest.cc', + '../test/unittests/compiler/control-flow-optimizer-unittest.cc', + '../test/unittests/compiler/dead-code-elimination-unittest.cc', + '../test/unittests/compiler/diamond-unittest.cc', + '../test/unittests/compiler/effect-control-linearizer-unittest.cc', + '../test/unittests/compiler/graph-reducer-unittest.cc', + '../test/unittests/compiler/graph-reducer-unittest.h', + '../test/unittests/compiler/graph-trimmer-unittest.cc', + '../test/unittests/compiler/graph-unittest.cc', + '../test/unittests/compiler/graph-unittest.h', + '../test/unittests/compiler/instruction-unittest.cc', + '../test/unittests/compiler/instruction-selector-unittest.cc', + '../test/unittests/compiler/instruction-selector-unittest.h', + '../test/unittests/compiler/instruction-sequence-unittest.cc', + '../test/unittests/compiler/instruction-sequence-unittest.h', + '../test/unittests/compiler/int64-lowering-unittest.cc', + '../test/unittests/compiler/js-builtin-reducer-unittest.cc', + '../test/unittests/compiler/js-create-lowering-unittest.cc', + '../test/unittests/compiler/js-intrinsic-lowering-unittest.cc', + '../test/unittests/compiler/js-operator-unittest.cc', + '../test/unittests/compiler/js-typed-lowering-unittest.cc', + '../test/unittests/compiler/linkage-tail-call-unittest.cc', + '../test/unittests/compiler/live-range-builder.h', + '../test/unittests/compiler/regalloc/live-range-unittest.cc', + '../test/unittests/compiler/load-elimination-unittest.cc', + '../test/unittests/compiler/loop-peeling-unittest.cc', + '../test/unittests/compiler/machine-operator-reducer-unittest.cc', + '../test/unittests/compiler/machine-operator-unittest.cc', + '../test/unittests/compiler/regalloc/move-optimizer-unittest.cc', + '../test/unittests/compiler/node-cache-unittest.cc', + '../test/unittests/compiler/node-matchers-unittest.cc', + '../test/unittests/compiler/node-properties-unittest.cc', + '../test/unittests/compiler/node-test-utils.cc', + '../test/unittests/compiler/node-test-utils.h', + '../test/unittests/compiler/node-unittest.cc', + '../test/unittests/compiler/opcodes-unittest.cc', + '../test/unittests/compiler/persistent-unittest.cc', + '../test/unittests/compiler/regalloc/register-allocator-unittest.cc', + '../test/unittests/compiler/schedule-unittest.cc', + '../test/unittests/compiler/scheduler-unittest.cc', + '../test/unittests/compiler/scheduler-rpo-unittest.cc', + '../test/unittests/compiler/simplified-lowering-unittest.cc', + '../test/unittests/compiler/simplified-operator-reducer-unittest.cc', + '../test/unittests/compiler/simplified-operator-unittest.cc', + '../test/unittests/compiler/state-values-utils-unittest.cc', + '../test/unittests/compiler/typed-optimization-unittest.cc', + '../test/unittests/compiler/typer-unittest.cc', + '../test/unittests/compiler/value-numbering-reducer-unittest.cc', + '../test/unittests/compiler/zone-stats-unittest.cc', + '../test/unittests/compiler-dispatcher/compiler-dispatcher-tracer-unittest.cc', + '../test/unittests/compiler-dispatcher/compiler-dispatcher-unittest.cc', + '../test/unittests/compiler-dispatcher/optimizing-compile-dispatcher-unittest.cc', + '../test/unittests/compiler-dispatcher/unoptimized-compile-job-unittest.cc', + '../test/unittests/counters-unittest.cc', + '../test/unittests/detachable-vector-unittest.cc', + '../test/unittests/eh-frame-iterator-unittest.cc', + '../test/unittests/eh-frame-writer-unittest.cc', + '../test/unittests/heap/barrier-unittest.cc', + '../test/unittests/heap/bitmap-unittest.cc', + '../test/unittests/heap/embedder-tracing-unittest.cc', + '../test/unittests/heap/gc-idle-time-handler-unittest.cc', + '../test/unittests/heap/gc-tracer-unittest.cc', + '../test/unittests/heap/item-parallel-job-unittest.cc', + '../test/unittests/heap/marking-unittest.cc', + '../test/unittests/heap/memory-reducer-unittest.cc', + '../test/unittests/heap/object-stats-unittest.cc', + '../test/unittests/heap/heap-unittest.cc', + '../test/unittests/heap/scavenge-job-unittest.cc', + '../test/unittests/heap/slot-set-unittest.cc', + '../test/unittests/heap/spaces-unittest.cc', + '../test/unittests/heap/unmapper-unittest.cc', + '../test/unittests/heap/worklist-unittest.cc', + '../test/unittests/interpreter/bytecodes-unittest.cc', + '../test/unittests/interpreter/bytecode-array-builder-unittest.cc', + '../test/unittests/interpreter/bytecode-array-iterator-unittest.cc', + '../test/unittests/interpreter/bytecode-array-random-iterator-unittest.cc', + '../test/unittests/interpreter/bytecode-array-writer-unittest.cc', + '../test/unittests/interpreter/bytecode-decoder-unittest.cc', + '../test/unittests/interpreter/bytecode-node-unittest.cc', + '../test/unittests/interpreter/bytecode-operands-unittest.cc', + '../test/unittests/interpreter/bytecode-register-allocator-unittest.cc', + '../test/unittests/interpreter/bytecode-register-optimizer-unittest.cc', + '../test/unittests/interpreter/bytecode-source-info-unittest.cc', + '../test/unittests/interpreter/bytecode-utils.h', + '../test/unittests/interpreter/constant-array-builder-unittest.cc', + '../test/unittests/interpreter/interpreter-assembler-unittest.cc', + '../test/unittests/interpreter/interpreter-assembler-unittest.h', + '../test/unittests/libplatform/default-platform-unittest.cc', + '../test/unittests/libplatform/task-queue-unittest.cc', + '../test/unittests/libplatform/worker-thread-unittest.cc', + '../test/unittests/locked-queue-unittest.cc', + '../test/unittests/object-unittest.cc', + '../test/unittests/parser/ast-value-unittest.cc', + '../test/unittests/parser/preparser-unittest.cc', + '../test/unittests/register-configuration-unittest.cc', + '../test/unittests/run-all-unittests.cc', + '../test/unittests/source-position-table-unittest.cc', + '../test/unittests/test-helpers.cc', + '../test/unittests/test-helpers.h', + '../test/unittests/test-utils.h', + '../test/unittests/test-utils.cc', + '../test/unittests/unicode-unittest.cc', + '../test/unittests/utils-unittest.cc', + '../test/unittests/value-serializer-unittest.cc', + '../test/unittests/zone/segmentpool-unittest.cc', + '../test/unittests/zone/zone-allocator-unittest.cc', + '../test/unittests/zone/zone-chunk-list-unittest.cc', + '../test/unittests/zone/zone-unittest.cc', + '../test/unittests/wasm/control-transfer-unittest.cc', + '../test/unittests/wasm/decoder-unittest.cc', + '../test/unittests/wasm/function-body-decoder-unittest.cc', + '../test/unittests/wasm/wasm-code-manager-unittest.cc', + '../test/unittests/wasm/leb-helper-unittest.cc', + '../test/unittests/wasm/loop-assignment-analysis-unittest.cc', + '../test/unittests/wasm/module-decoder-unittest.cc', + '../test/unittests/wasm/streaming-decoder-unittest.cc', + '../test/unittests/wasm/trap-handler-unittest.cc', + '../test/unittests/wasm/wasm-macro-gen-unittest.cc', + '../test/unittests/wasm/wasm-module-builder-unittest.cc', + '../test/unittests/wasm/wasm-opcodes-unittest.cc', + ], + 'unittests_sources_arm': [ + '../test/unittests/compiler/arm/instruction-selector-arm-unittest.cc', + ], + 'unittests_sources_arm64': [ + '../test/unittests/compiler/arm64/instruction-selector-arm64-unittest.cc', + ], + 'unittests_sources_ia32': [ + '../test/unittests/compiler/ia32/instruction-selector-ia32-unittest.cc', + ], + 'unittests_sources_mips': [ + '../test/unittests/compiler/mips/instruction-selector-mips-unittest.cc', + ], + 'unittests_sources_mips64': [ + '../test/unittests/compiler/mips64/instruction-selector-mips64-unittest.cc', + ], + 'unittests_sources_x64': [ + '../test/unittests/compiler/x64/instruction-selector-x64-unittest.cc', + ], + 'unittests_sources_ppc': [ + '../test/unittests/compiler/ppc/instruction-selector-ppc-unittest.cc', + ], + 'unittests_sources_s390': [ + '../test/unittests/compiler/s390/instruction-selector-s390-unittest.cc', + ], + }, + 'includes': ['toolchain.gypi', 'features.gypi'], + 'targets': [ + { + 'target_name': 'unittests', + 'type': 'executable', + 'variables': { + 'optimize': 'max', + }, + 'dependencies': [ + 'gmock.gyp:gmock', + 'gtest.gyp:gtest', + 'v8.gyp:v8', + 'v8.gyp:v8_libbase', + 'v8.gyp:v8_libplatform', + 'v8.gyp:v8_maybe_snapshot', + ], + 'include_dirs': [ + '..', + ], + 'sources': [ + '<@(unittests_sources)', + ], + 'conditions': [ + ['v8_target_arch=="arm"', { + 'sources': [ + '<@(unittests_sources_arm)', + ], + }], + ['v8_target_arch=="arm64"', { + 'sources': [ + '<@(unittests_sources_arm64)', + ], + }], + ['v8_target_arch=="ia32"', { + 'sources': [ + '<@(unittests_sources_ia32)', + ], + }], + ['v8_target_arch=="mips"', { + 'sources': [ + '<@(unittests_sources_mips)', + ], + }], + ['v8_target_arch=="mipsel"', { + 'sources': [ + '<@(unittests_sources_mips)', + ], + }], + ['v8_target_arch=="mips64"', { + 'sources': [ + '<@(unittests_sources_mips64)', + ], + }], + ['v8_target_arch=="mips64el"', { + 'sources': [ + '<@(unittests_sources_mips64)', + ], + }], + ['v8_target_arch=="x64"', { + 'sources': [ + '<@(unittests_sources_x64)', + ], + }], + ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', { + 'sources': [ + '<@(unittests_sources_ppc)', + ], + }], + ['v8_target_arch=="s390" or v8_target_arch=="s390x"', { + 'sources': [ + '<@(unittests_sources_s390)', + ], + }], + ['OS=="aix"', { + 'ldflags': [ '-Wl,-bbigtoc' ], + }], + ['v8_enable_i18n_support==1', { + 'dependencies': [ + '<(icu_gyp_path):icui18n', + '<(icu_gyp_path):icuuc', + ], + }], + ['v8_use_snapshot=="true"', { + 'dependencies': ['v8.gyp:v8_initializers'], + }], + ], + }, + ], +} diff --git a/deps/v8/gypfiles/v8.gyp b/deps/v8/gypfiles/v8.gyp new file mode 100644 index 00000000000..2e840eb86ea --- /dev/null +++ b/deps/v8/gypfiles/v8.gyp @@ -0,0 +1,2622 @@ +# Copyright 2012 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +{ + 'variables': { + 'v8_code': 1, + 'v8_random_seed%': 314159265, + 'v8_vector_stores%': 0, + 'embed_script%': "", + 'warmup_script%': "", + 'v8_extra_library_files%': [], + 'v8_experimental_extra_library_files%': [], + 'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot<(EXECUTABLE_SUFFIX)', + 'v8_os_page_size%': 0, + }, + 'includes': ['toolchain.gypi', 'features.gypi', 'inspector.gypi'], + 'targets': [ + { + 'target_name': 'v8', + 'dependencies_traverse': 1, + 'dependencies': ['v8_maybe_snapshot', 'v8_dump_build_config#target'], + 'conditions': [ + ['want_separate_host_toolset==1', { + 'toolsets': ['host', 'target'], + }, { + 'toolsets': ['target'], + }], + ['component=="shared_library"', { + 'type': '<(component)', + 'sources': [ + # Note: on non-Windows we still build this file so that gyp + # has some sources to link into the component. + '../src/v8dll-main.cc', + ], + 'include_dirs': [ + '..', + ], + 'defines': [ + 'BUILDING_V8_SHARED', + ], + 'direct_dependent_settings': { + 'defines': [ + 'USING_V8_SHARED', + ], + }, + 'conditions': [ + ['OS=="mac"', { + 'xcode_settings': { + 'OTHER_LDFLAGS': ['-dynamiclib', '-all_load'] + }, + }], + ['soname_version!=""', { + 'product_extension': 'so.<(soname_version)', + }], + ], + }, + { + 'type': 'none', + }], + ], + 'direct_dependent_settings': { + 'include_dirs': [ + '../include/', + ], + }, + }, + { + # This rule delegates to either v8_snapshot, v8_nosnapshot, or + # v8_external_snapshot, depending on the current variables. + # The intention is to make the 'calling' rules a bit simpler. + 'target_name': 'v8_maybe_snapshot', + 'type': 'none', + 'conditions': [ + ['v8_use_snapshot!="true"', { + # The dependency on v8_base should come from a transitive + # dependency however the Android toolchain requires libv8_base.a + # to appear before libv8_snapshot.a so it's listed explicitly. + 'dependencies': ['v8_base', 'v8_init', 'v8_nosnapshot'], + }], + ['v8_use_snapshot=="true" and v8_use_external_startup_data==0', { + # The dependency on v8_base should come from a transitive + # dependency however the Android toolchain requires libv8_base.a + # to appear before libv8_snapshot.a so it's listed explicitly. + 'dependencies': ['v8_base', 'v8_snapshot'], + }], + ['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and want_separate_host_toolset==0', { + 'dependencies': ['v8_base', 'v8_external_snapshot'], + 'inputs': [ '<(PRODUCT_DIR)/snapshot_blob.bin', ], + }], + ['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and want_separate_host_toolset==1', { + 'dependencies': ['v8_base', 'v8_external_snapshot'], + 'target_conditions': [ + ['_toolset=="host"', { + 'inputs': [ + '<(PRODUCT_DIR)/snapshot_blob_host.bin', + ], + }, { + 'inputs': [ + '<(PRODUCT_DIR)/snapshot_blob.bin', + ], + }], + ], + }], + ['want_separate_host_toolset==1', { + 'toolsets': ['host', 'target'], + }, { + 'toolsets': ['target'], + }], + ] + }, + { + 'target_name': 'v8_init', + 'type': 'static_library', + 'dependencies': [ + 'v8_initializers', + ], + 'variables': { + 'optimize': 'max', + }, + 'include_dirs+': [ + '..', + '../include/', + ], + 'sources': [ + '../src/setup-isolate-full.cc', + ], + 'conditions': [ + ['want_separate_host_toolset==1', { + 'toolsets': ['host', 'target'], + }, { + 'toolsets': ['target'], + }], + ], + }, + { + 'target_name': 'v8_initializers', + 'type': 'static_library', + 'dependencies': [ + 'v8_base', + ], + 'variables': { + 'optimize': 'max', + }, + 'include_dirs+': [ + '..', + '../include/', + ], + 'sources': [ + '../src/builtins/builtins-arguments-gen.cc', + '../src/builtins/builtins-arguments-gen.h', + '../src/builtins/builtins-array-gen.cc', + '../src/builtins/builtins-array-gen.h', + '../src/builtins/builtins-async-function-gen.cc', + '../src/builtins/builtins-async-gen.cc', + '../src/builtins/builtins-async-gen.h', + '../src/builtins/builtins-async-generator-gen.cc', + '../src/builtins/builtins-async-iterator-gen.cc', + '../src/builtins/builtins-boolean-gen.cc', + '../src/builtins/builtins-call-gen.cc', + '../src/builtins/builtins-call-gen.h', + '../src/builtins/builtins-collections-gen.cc', + '../src/builtins/builtins-console-gen.cc', + '../src/builtins/builtins-constructor-gen.cc', + '../src/builtins/builtins-constructor-gen.h', + '../src/builtins/builtins-constructor.h', + '../src/builtins/builtins-conversion-gen.cc', + '../src/builtins/builtins-date-gen.cc', + '../src/builtins/builtins-debug-gen.cc', + '../src/builtins/builtins-function-gen.cc', + '../src/builtins/builtins-generator-gen.cc', + '../src/builtins/builtins-global-gen.cc', + '../src/builtins/builtins-handler-gen.cc', + '../src/builtins/builtins-ic-gen.cc', + '../src/builtins/builtins-internal-gen.cc', + '../src/builtins/builtins-interpreter-gen.cc', + '../src/builtins/builtins-intl-gen.cc', + '../src/builtins/builtins-iterator-gen.h', + '../src/builtins/builtins-iterator-gen.cc', + '../src/builtins/builtins-math-gen.cc', + '../src/builtins/builtins-math-gen.h', + '../src/builtins/builtins-number-gen.cc', + '../src/builtins/builtins-object-gen.cc', + '../src/builtins/builtins-promise-gen.cc', + '../src/builtins/builtins-promise-gen.h', + '../src/builtins/builtins-proxy-gen.cc', + '../src/builtins/builtins-proxy-gen.h', + '../src/builtins/builtins-reflect-gen.cc', + '../src/builtins/builtins-regexp-gen.cc', + '../src/builtins/builtins-regexp-gen.h', + '../src/builtins/builtins-sharedarraybuffer-gen.cc', + '../src/builtins/builtins-string-gen.cc', + '../src/builtins/builtins-string-gen.h', + '../src/builtins/builtins-symbol-gen.cc', + '../src/builtins/builtins-typedarray-gen.cc', + '../src/builtins/builtins-typedarray-gen.h', + '../src/builtins/builtins-utils-gen.h', + '../src/builtins/builtins-wasm-gen.cc', + '../src/builtins/growable-fixed-array-gen.cc', + '../src/builtins/growable-fixed-array-gen.h', + '../src/builtins/setup-builtins-internal.cc', + '../src/heap/setup-heap-internal.cc', + '../src/ic/accessor-assembler.cc', + '../src/ic/accessor-assembler.h', + '../src/ic/binary-op-assembler.cc', + '../src/ic/binary-op-assembler.h', + '../src/ic/keyed-store-generic.cc', + '../src/ic/keyed-store-generic.h', + '../src/interpreter/interpreter-assembler.cc', + '../src/interpreter/interpreter-assembler.h', + '../src/interpreter/interpreter-generator.cc', + '../src/interpreter/interpreter-generator.h', + '../src/interpreter/interpreter-intrinsics-generator.cc', + '../src/interpreter/interpreter-intrinsics-generator.h', + '../src/interpreter/setup-interpreter-internal.cc', + '../src/interpreter/setup-interpreter.h', + ], + 'conditions': [ + ['want_separate_host_toolset==1', { + 'toolsets': ['host', 'target'], + }, { + 'toolsets': ['target'], + }], + ['v8_target_arch=="ia32"', { + 'sources': [ + '../src/builtins/ia32/builtins-ia32.cc', + ], + }], + ['v8_target_arch=="x64"', { + 'sources': [ + '../src/builtins/x64/builtins-x64.cc', + ], + }], + ['v8_target_arch=="arm"', { + 'sources': [ + '../src/builtins/arm/builtins-arm.cc', + ], + }], + ['v8_target_arch=="arm64"', { + 'sources': [ + '../src/builtins/arm64/builtins-arm64.cc', + ], + }], + ['v8_target_arch=="mips" or v8_target_arch=="mipsel"', { + 'sources': [ + '../src/builtins/mips/builtins-mips.cc', + ], + }], + ['v8_target_arch=="mips64" or v8_target_arch=="mips64el"', { + 'sources': [ + '../src/builtins/mips64/builtins-mips64.cc', + ], + }], + ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', { + 'sources': [ + '../src/builtins/ppc/builtins-ppc.cc', + ], + }], + ['v8_target_arch=="s390" or v8_target_arch=="s390x"', { + 'sources': [ + '../src/builtins/s390/builtins-s390.cc', + ], + }], + ['v8_enable_i18n_support==0', { + 'sources!': [ + '../src/builtins/builtins-intl-gen.cc', + ], + }], + ], + }, + { + 'target_name': 'v8_snapshot', + 'type': 'static_library', + 'conditions': [ + ['want_separate_host_toolset==1', { + 'toolsets': ['host', 'target'], + 'dependencies': [ + 'mksnapshot#host', + 'js2c#host', + ], + }, { + 'toolsets': ['target'], + 'dependencies': [ + 'mksnapshot', + 'js2c', + ], + }], + ['component=="shared_library"', { + 'defines': [ + 'BUILDING_V8_SHARED', + ], + 'direct_dependent_settings': { + 'defines': [ + 'USING_V8_SHARED', + ], + }, + }], + ], + 'dependencies': [ + 'v8_base', + ], + 'include_dirs+': [ + '..', + '<(DEPTH)', + ], + 'sources': [ + '<(SHARED_INTERMEDIATE_DIR)/libraries.cc', + '<(SHARED_INTERMEDIATE_DIR)/extras-libraries.cc', + '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries.cc', + '<(INTERMEDIATE_DIR)/snapshot.cc', + '../src/setup-isolate-deserialize.cc', + ], + 'actions': [ + { + 'action_name': 'run_mksnapshot', + 'inputs': [ + '<(mksnapshot_exec)', + ], + 'conditions': [ + ['embed_script!=""', { + 'inputs': [ + '<(embed_script)', + ], + }], + ['warmup_script!=""', { + 'inputs': [ + '<(warmup_script)', + ], + }], + ], + 'outputs': [ + '<(INTERMEDIATE_DIR)/snapshot.cc', + ], + 'variables': { + 'mksnapshot_flags': [], + 'conditions': [ + ['v8_random_seed!=0', { + 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'], + }], + ['v8_vector_stores!=0', { + 'mksnapshot_flags': ['--vector-stores'], + }], + ], + }, + 'action': [ + '<(mksnapshot_exec)', + '<@(mksnapshot_flags)', + '--startup_src', '<@(INTERMEDIATE_DIR)/snapshot.cc', + '<(embed_script)', + '<(warmup_script)', + ], + }, + ], + }, + { + 'target_name': 'v8_nosnapshot', + 'type': 'static_library', + 'dependencies': [ + 'v8_base', + ], + 'include_dirs+': [ + '..', + '<(DEPTH)', + ], + 'sources': [ + '<(SHARED_INTERMEDIATE_DIR)/libraries.cc', + '<(SHARED_INTERMEDIATE_DIR)/extras-libraries.cc', + '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries.cc', + '../src/snapshot/snapshot-empty.cc', + ], + 'conditions': [ + ['want_separate_host_toolset==1', { + 'toolsets': ['host', 'target'], + 'dependencies': ['js2c#host'], + }, { + 'toolsets': ['target'], + 'dependencies': ['js2c'], + }], + ['component=="shared_library"', { + 'defines': [ + 'BUILDING_V8_SHARED', + ], + }], + ] + }, + { + 'target_name': 'v8_external_snapshot', + 'type': 'static_library', + 'conditions': [ + [ 'v8_use_external_startup_data==1', { + 'conditions': [ + ['want_separate_host_toolset==1', { + 'toolsets': ['host', 'target'], + 'dependencies': [ + 'mksnapshot#host', + 'js2c#host', + 'natives_blob', + ]}, { + 'toolsets': ['target'], + 'dependencies': [ + 'mksnapshot', + 'js2c', + 'natives_blob', + ], + }], + ['component=="shared_library"', { + 'defines': [ + 'BUILDING_V8_SHARED', + ], + 'direct_dependent_settings': { + 'defines': [ + 'USING_V8_SHARED', + ], + }, + }], + ], + 'dependencies': [ + 'v8_base', + ], + 'include_dirs+': [ + '..', + '<(DEPTH)', + ], + 'sources': [ + '../src/setup-isolate-deserialize.cc', + '../src/snapshot/natives-external.cc', + '../src/snapshot/snapshot-external.cc', + ], + 'actions': [ + { + 'action_name': 'run_mksnapshot (external)', + 'inputs': [ + '<(mksnapshot_exec)', + ], + 'variables': { + 'mksnapshot_flags': [], + 'conditions': [ + ['v8_random_seed!=0', { + 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'], + }], + ['v8_vector_stores!=0', { + 'mksnapshot_flags': ['--vector-stores'], + }], + ['v8_os_page_size!=0', { + 'mksnapshot_flags': ['--v8_os_page_size', '<(v8_os_page_size)'], + }], + ], + }, + 'conditions': [ + ['embed_script!=""', { + 'inputs': [ + '<(embed_script)', + ], + }], + ['warmup_script!=""', { + 'inputs': [ + '<(warmup_script)', + ], + }], + ['want_separate_host_toolset==1', { + 'target_conditions': [ + ['_toolset=="host"', { + 'outputs': [ + '<(PRODUCT_DIR)/snapshot_blob_host.bin', + ], + 'action': [ + '<(mksnapshot_exec)', + '<@(mksnapshot_flags)', + '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_host.bin', + '<(embed_script)', + '<(warmup_script)', + ], + }, { + 'outputs': [ + '<(PRODUCT_DIR)/snapshot_blob.bin', + ], + 'action': [ + '<(mksnapshot_exec)', + '<@(mksnapshot_flags)', + '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob.bin', + '<(embed_script)', + '<(warmup_script)', + ], + }], + ], + }, { + 'outputs': [ + '<(PRODUCT_DIR)/snapshot_blob.bin', + ], + 'action': [ + '<(mksnapshot_exec)', + '<@(mksnapshot_flags)', + '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob.bin', + '<(embed_script)', + '<(warmup_script)', + ], + }], + ], + }, + ], + }], + ], + }, + { + 'target_name': 'v8_base', + 'type': 'static_library', + 'dependencies': [ + 'v8_libbase', + 'v8_libsampler', + 'inspector.gyp:protocol_generated_sources#target', + 'inspector.gyp:inspector_injected_script#target', + ], + 'objs': ['foo.o'], + 'variables': { + 'optimize': 'max', + }, + 'include_dirs+': [ + '..', + '<(DEPTH)', + '<(SHARED_INTERMEDIATE_DIR)' + ], + 'sources': [ + '<@(inspector_all_sources)', + '../include//v8-debug.h', + '../include//v8-platform.h', + '../include//v8-profiler.h', + '../include//v8-testing.h', + '../include//v8-util.h', + '../include//v8-value-serializer-version.h', + '../include//v8-version-string.h', + '../include//v8-version.h', + '../include//v8.h', + '../include//v8config.h', + '../src/accessors.cc', + '../src/accessors.h', + '../src/address-map.cc', + '../src/address-map.h', + '../src/allocation.cc', + '../src/allocation.h', + '../src/allocation-site-scopes.h', + '../src/api.cc', + '../src/api.h', + '../src/api-arguments-inl.h', + '../src/api-arguments.cc', + '../src/api-arguments.h', + '../src/api-natives.cc', + '../src/api-natives.h', + '../src/arguments.cc', + '../src/arguments.h', + '../src/asmjs/asm-js.cc', + '../src/asmjs/asm-js.h', + '../src/asmjs/asm-names.h', + '../src/asmjs/asm-parser.cc', + '../src/asmjs/asm-parser.h', + '../src/asmjs/asm-scanner.cc', + '../src/asmjs/asm-scanner.h', + '../src/asmjs/asm-types.cc', + '../src/asmjs/asm-types.h', + '../src/asmjs/switch-logic.h', + '../src/asmjs/switch-logic.cc', + '../src/assembler.cc', + '../src/assembler.h', + '../src/assembler-inl.h', + '../src/assert-scope.h', + '../src/assert-scope.cc', + '../src/ast/ast-function-literal-id-reindexer.cc', + '../src/ast/ast-function-literal-id-reindexer.h', + '../src/ast/ast-source-ranges.h', + '../src/ast/ast-traversal-visitor.h', + '../src/ast/ast-value-factory.cc', + '../src/ast/ast-value-factory.h', + '../src/ast/ast.cc', + '../src/ast/ast.h', + '../src/ast/compile-time-value.cc', + '../src/ast/compile-time-value.h', + '../src/ast/context-slot-cache.cc', + '../src/ast/context-slot-cache.h', + '../src/ast/modules.cc', + '../src/ast/modules.h', + '../src/ast/prettyprinter.cc', + '../src/ast/prettyprinter.h', + '../src/ast/scopes.cc', + '../src/ast/scopes.h', + '../src/ast/variables.cc', + '../src/ast/variables.h', + '../src/bailout-reason.cc', + '../src/bailout-reason.h', + '../src/basic-block-profiler.cc', + '../src/basic-block-profiler.h', + '../src/bignum-dtoa.cc', + '../src/bignum-dtoa.h', + '../src/bignum.cc', + '../src/bignum.h', + '../src/bit-vector.cc', + '../src/bit-vector.h', + '../src/bootstrapper.cc', + '../src/bootstrapper.h', + '../src/boxed-float.h', + '../src/builtins/builtins-api.cc', + '../src/builtins/builtins-arraybuffer.cc', + '../src/builtins/builtins-array.cc', + '../src/builtins/builtins-bigint.cc', + '../src/builtins/builtins-boolean.cc', + '../src/builtins/builtins-call.cc', + '../src/builtins/builtins-callsite.cc', + '../src/builtins/builtins-collections.cc', + '../src/builtins/builtins-console.cc', + '../src/builtins/builtins-constructor.h', + '../src/builtins/builtins-dataview.cc', + '../src/builtins/builtins-date.cc', + '../src/builtins/builtins-definitions.h', + '../src/builtins/builtins-descriptors.h', + '../src/builtins/builtins-error.cc', + '../src/builtins/builtins-function.cc', + '../src/builtins/builtins-global.cc', + '../src/builtins/builtins-internal.cc', + '../src/builtins/builtins-interpreter.cc', + '../src/builtins/builtins-json.cc', + '../src/builtins/builtins-math.cc', + '../src/builtins/builtins-number.cc', + '../src/builtins/builtins-object.cc', + '../src/builtins/builtins-promise.cc', + '../src/builtins/builtins-reflect.cc', + '../src/builtins/builtins-regexp.cc', + '../src/builtins/builtins-sharedarraybuffer.cc', + '../src/builtins/builtins-string.cc', + '../src/builtins/builtins-intl.cc', + '../src/builtins/builtins-intl.h', + '../src/builtins/builtins-symbol.cc', + '../src/builtins/builtins-typedarray.cc', + '../src/builtins/builtins-utils.h', + '../src/builtins/builtins.cc', + '../src/builtins/builtins.h', + '../src/builtins/constants-table-builder.cc', + '../src/builtins/constants-table-builder.h', + '../src/cached-powers.cc', + '../src/cached-powers.h', + '../src/callable.h', + '../src/cancelable-task.cc', + '../src/cancelable-task.h', + '../src/char-predicates.cc', + '../src/char-predicates-inl.h', + '../src/char-predicates.h', + '../src/checks.h', + '../src/code-events.h', + '../src/code-factory.cc', + '../src/code-factory.h', + '../src/code-stub-assembler.cc', + '../src/code-stub-assembler.h', + '../src/code-stubs.cc', + '../src/code-stubs.h', + '../src/code-stubs-utils.h', + '../src/codegen.cc', + '../src/codegen.h', + '../src/collector.h', + '../src/compilation-cache.cc', + '../src/compilation-cache.h', + '../src/compilation-dependencies.cc', + '../src/compilation-dependencies.h', + '../src/compilation-info.cc', + '../src/compilation-info.h', + '../src/compilation-statistics.cc', + '../src/compilation-statistics.h', + '../src/compiler/access-builder.cc', + '../src/compiler/access-builder.h', + '../src/compiler/access-info.cc', + '../src/compiler/access-info.h', + '../src/compiler/all-nodes.cc', + '../src/compiler/all-nodes.h', + '../src/compiler/allocation-builder.h', + '../src/compiler/basic-block-instrumentor.cc', + '../src/compiler/basic-block-instrumentor.h', + '../src/compiler/branch-elimination.cc', + '../src/compiler/branch-elimination.h', + '../src/compiler/bytecode-analysis.cc', + '../src/compiler/bytecode-analysis.h', + '../src/compiler/bytecode-graph-builder.cc', + '../src/compiler/bytecode-graph-builder.h', + '../src/compiler/bytecode-liveness-map.cc', + '../src/compiler/bytecode-liveness-map.h', + '../src/compiler/c-linkage.cc', + '../src/compiler/checkpoint-elimination.cc', + '../src/compiler/checkpoint-elimination.h', + '../src/compiler/code-generator-impl.h', + '../src/compiler/code-generator.cc', + '../src/compiler/code-generator.h', + '../src/compiler/code-assembler.cc', + '../src/compiler/code-assembler.h', + '../src/compiler/common-node-cache.cc', + '../src/compiler/common-node-cache.h', + '../src/compiler/common-operator-reducer.cc', + '../src/compiler/common-operator-reducer.h', + '../src/compiler/common-operator.cc', + '../src/compiler/common-operator.h', + '../src/compiler/control-equivalence.cc', + '../src/compiler/control-equivalence.h', + '../src/compiler/control-flow-optimizer.cc', + '../src/compiler/control-flow-optimizer.h', + '../src/compiler/dead-code-elimination.cc', + '../src/compiler/dead-code-elimination.h', + '../src/compiler/diamond.h', + '../src/compiler/effect-control-linearizer.cc', + '../src/compiler/effect-control-linearizer.h', + '../src/compiler/escape-analysis.cc', + '../src/compiler/escape-analysis.h', + '../src/compiler/escape-analysis-reducer.cc', + '../src/compiler/escape-analysis-reducer.h', + '../src/compiler/frame.cc', + '../src/compiler/frame.h', + '../src/compiler/frame-elider.cc', + '../src/compiler/frame-elider.h', + '../src/compiler/frame-states.cc', + '../src/compiler/frame-states.h', + '../src/compiler/functional-list.h', + '../src/compiler/gap-resolver.cc', + '../src/compiler/gap-resolver.h', + '../src/compiler/graph-assembler.cc', + '../src/compiler/graph-assembler.h', + '../src/compiler/graph-reducer.cc', + '../src/compiler/graph-reducer.h', + '../src/compiler/graph-trimmer.cc', + '../src/compiler/graph-trimmer.h', + '../src/compiler/graph-visualizer.cc', + '../src/compiler/graph-visualizer.h', + '../src/compiler/graph.cc', + '../src/compiler/graph.h', + '../src/compiler/instruction-codes.h', + '../src/compiler/instruction-selector-impl.h', + '../src/compiler/instruction-selector.cc', + '../src/compiler/instruction-selector.h', + '../src/compiler/instruction-scheduler.cc', + '../src/compiler/instruction-scheduler.h', + '../src/compiler/instruction.cc', + '../src/compiler/instruction.h', + '../src/compiler/int64-lowering.cc', + '../src/compiler/int64-lowering.h', + '../src/compiler/js-builtin-reducer.cc', + '../src/compiler/js-builtin-reducer.h', + '../src/compiler/js-call-reducer.cc', + '../src/compiler/js-call-reducer.h', + '../src/compiler/js-context-specialization.cc', + '../src/compiler/js-context-specialization.h', + '../src/compiler/js-create-lowering.cc', + '../src/compiler/js-create-lowering.h', + '../src/compiler/js-generic-lowering.cc', + '../src/compiler/js-generic-lowering.h', + '../src/compiler/js-graph.cc', + '../src/compiler/js-graph.h', + '../src/compiler/js-inlining.cc', + '../src/compiler/js-inlining.h', + '../src/compiler/js-inlining-heuristic.cc', + '../src/compiler/js-inlining-heuristic.h', + '../src/compiler/js-intrinsic-lowering.cc', + '../src/compiler/js-intrinsic-lowering.h', + '../src/compiler/js-native-context-specialization.cc', + '../src/compiler/js-native-context-specialization.h', + '../src/compiler/js-operator.cc', + '../src/compiler/js-operator.h', + '../src/compiler/js-type-hint-lowering.cc', + '../src/compiler/js-type-hint-lowering.h', + '../src/compiler/js-typed-lowering.cc', + '../src/compiler/js-typed-lowering.h', + '../src/compiler/jump-threading.cc', + '../src/compiler/jump-threading.h', + '../src/compiler/linkage.cc', + '../src/compiler/linkage.h', + '../src/compiler/live-range-separator.cc', + '../src/compiler/live-range-separator.h', + '../src/compiler/load-elimination.cc', + '../src/compiler/load-elimination.h', + '../src/compiler/loop-analysis.cc', + '../src/compiler/loop-analysis.h', + '../src/compiler/loop-peeling.cc', + '../src/compiler/loop-peeling.h', + '../src/compiler/loop-variable-optimizer.cc', + '../src/compiler/loop-variable-optimizer.h', + '../src/compiler/machine-operator-reducer.cc', + '../src/compiler/machine-operator-reducer.h', + '../src/compiler/machine-operator.cc', + '../src/compiler/machine-operator.h', + '../src/compiler/machine-graph-verifier.cc', + '../src/compiler/machine-graph-verifier.h', + '../src/compiler/memory-optimizer.cc', + '../src/compiler/memory-optimizer.h', + '../src/compiler/move-optimizer.cc', + '../src/compiler/move-optimizer.h', + '../src/compiler/node-aux-data.h', + '../src/compiler/node-cache.cc', + '../src/compiler/node-cache.h', + '../src/compiler/node-marker.cc', + '../src/compiler/node-marker.h', + '../src/compiler/node-matchers.cc', + '../src/compiler/node-matchers.h', + '../src/compiler/node-properties.cc', + '../src/compiler/node-properties.h', + '../src/compiler/node.cc', + '../src/compiler/node.h', + '../src/compiler/opcodes.cc', + '../src/compiler/opcodes.h', + '../src/compiler/operation-typer.cc', + '../src/compiler/operation-typer.h', + '../src/compiler/operator-properties.cc', + '../src/compiler/operator-properties.h', + '../src/compiler/operator.cc', + '../src/compiler/operator.h', + '../src/compiler/osr.cc', + '../src/compiler/osr.h', + '../src/compiler/persistent-map.h', + '../src/compiler/pipeline.cc', + '../src/compiler/pipeline.h', + '../src/compiler/pipeline-statistics.cc', + '../src/compiler/pipeline-statistics.h', + '../src/compiler/property-access-builder.cc', + '../src/compiler/property-access-builder.h', + '../src/compiler/raw-machine-assembler.cc', + '../src/compiler/raw-machine-assembler.h', + '../src/compiler/redundancy-elimination.cc', + '../src/compiler/redundancy-elimination.h', + '../src/compiler/register-allocator.cc', + '../src/compiler/register-allocator.h', + '../src/compiler/register-allocator-verifier.cc', + '../src/compiler/register-allocator-verifier.h', + '../src/compiler/representation-change.cc', + '../src/compiler/representation-change.h', + '../src/compiler/schedule.cc', + '../src/compiler/schedule.h', + '../src/compiler/scheduler.cc', + '../src/compiler/scheduler.h', + '../src/compiler/select-lowering.cc', + '../src/compiler/select-lowering.h', + '../src/compiler/simd-scalar-lowering.cc', + '../src/compiler/simd-scalar-lowering.h', + '../src/compiler/simplified-lowering.cc', + '../src/compiler/simplified-lowering.h', + '../src/compiler/simplified-operator-reducer.cc', + '../src/compiler/simplified-operator-reducer.h', + '../src/compiler/simplified-operator.cc', + '../src/compiler/simplified-operator.h', + '../src/compiler/compiler-source-position-table.cc', + '../src/compiler/compiler-source-position-table.h', + '../src/compiler/state-values-utils.cc', + '../src/compiler/state-values-utils.h', + '../src/compiler/store-store-elimination.cc', + '../src/compiler/store-store-elimination.h', + '../src/compiler/types.cc', + '../src/compiler/types.h', + '../src/compiler/type-cache.cc', + '../src/compiler/type-cache.h', + '../src/compiler/typed-optimization.cc', + '../src/compiler/typed-optimization.h', + '../src/compiler/typer.cc', + '../src/compiler/typer.h', + '../src/compiler/unwinding-info-writer.h', + '../src/compiler/value-numbering-reducer.cc', + '../src/compiler/value-numbering-reducer.h', + '../src/compiler/verifier.cc', + '../src/compiler/verifier.h', + '../src/compiler/wasm-compiler.cc', + '../src/compiler/wasm-compiler.h', + '../src/compiler/wasm-linkage.cc', + '../src/compiler/zone-stats.cc', + '../src/compiler/zone-stats.h', + '../src/compiler-dispatcher/compiler-dispatcher.cc', + '../src/compiler-dispatcher/compiler-dispatcher.h', + '../src/compiler-dispatcher/compiler-dispatcher-job.cc', + '../src/compiler-dispatcher/compiler-dispatcher-job.h', + '../src/compiler-dispatcher/compiler-dispatcher-tracer.cc', + '../src/compiler-dispatcher/compiler-dispatcher-tracer.h', + '../src/compiler-dispatcher/optimizing-compile-dispatcher.cc', + '../src/compiler-dispatcher/optimizing-compile-dispatcher.h', + '../src/compiler-dispatcher/unoptimized-compile-job.cc', + '../src/compiler-dispatcher/unoptimized-compile-job.h', + '../src/compiler.cc', + '../src/compiler.h', + '../src/contexts-inl.h', + '../src/contexts.cc', + '../src/contexts.h', + '../src/conversions-inl.h', + '../src/conversions.cc', + '../src/conversions.h', + '../src/counters-inl.h', + '../src/counters.cc', + '../src/counters.h', + '../src/date.cc', + '../src/date.h', + '../src/dateparser-inl.h', + '../src/dateparser.cc', + '../src/dateparser.h', + '../src/debug/debug-coverage.cc', + '../src/debug/debug-coverage.h', + '../src/debug/debug-evaluate.cc', + '../src/debug/debug-evaluate.h', + '../src/debug/debug-interface.h', + '../src/debug/debug-frames.cc', + '../src/debug/debug-frames.h', + '../src/debug/debug-scope-iterator.cc', + '../src/debug/debug-scope-iterator.h', + '../src/debug/debug-scopes.cc', + '../src/debug/debug-scopes.h', + '../src/debug/debug-stack-trace-iterator.cc', + '../src/debug/debug-stack-trace-iterator.h', + '../src/debug/debug-type-profile.cc', + '../src/debug/debug-type-profile.h', + '../src/debug/debug.cc', + '../src/debug/debug.h', + '../src/debug/interface-types.h', + '../src/debug/liveedit.cc', + '../src/debug/liveedit.h', + '../src/deoptimize-reason.cc', + '../src/deoptimize-reason.h', + '../src/deoptimizer.cc', + '../src/deoptimizer.h', + '../src/detachable-vector.h', + '../src/disasm.h', + '../src/disassembler.cc', + '../src/disassembler.h', + '../src/diy-fp.cc', + '../src/diy-fp.h', + '../src/double.h', + '../src/dtoa.cc', + '../src/dtoa.h', + '../src/eh-frame.cc', + '../src/eh-frame.h', + '../src/elements-kind.cc', + '../src/elements-kind.h', + '../src/elements.cc', + '../src/elements.h', + '../src/execution.cc', + '../src/execution.h', + '../src/extensions/externalize-string-extension.cc', + '../src/extensions/externalize-string-extension.h', + '../src/extensions/free-buffer-extension.cc', + '../src/extensions/free-buffer-extension.h', + '../src/extensions/gc-extension.cc', + '../src/extensions/gc-extension.h', + '../src/extensions/ignition-statistics-extension.cc', + '../src/extensions/ignition-statistics-extension.h', + '../src/extensions/statistics-extension.cc', + '../src/extensions/statistics-extension.h', + '../src/extensions/trigger-failure-extension.cc', + '../src/extensions/trigger-failure-extension.h', + '../src/external-reference-table.cc', + '../src/external-reference-table.h', + '../src/external-reference.cc', + '../src/external-reference.h', + '../src/factory-inl.h', + '../src/factory.cc', + '../src/factory.h', + '../src/fast-dtoa.cc', + '../src/fast-dtoa.h', + '../src/feedback-vector-inl.h', + '../src/feedback-vector.cc', + '../src/feedback-vector.h', + '../src/field-index.h', + '../src/field-index-inl.h', + '../src/field-type.cc', + '../src/field-type.h', + '../src/fixed-dtoa.cc', + '../src/fixed-dtoa.h', + '../src/flag-definitions.h', + '../src/flags.cc', + '../src/flags.h', + '../src/frame-constants.h', + '../src/frames-inl.h', + '../src/frames.cc', + '../src/frames.h', + '../src/futex-emulation.cc', + '../src/futex-emulation.h', + '../src/gdb-jit.cc', + '../src/gdb-jit.h', + '../src/global-handles.cc', + '../src/global-handles.h', + '../src/globals.h', + '../src/handler-table.cc', + '../src/handler-table.h', + '../src/handles-inl.h', + '../src/handles.cc', + '../src/handles.h', + '../src/heap-symbols.h', + '../src/heap/array-buffer-collector.cc', + '../src/heap/array-buffer-collector.h', + '../src/heap/array-buffer-tracker-inl.h', + '../src/heap/array-buffer-tracker.cc', + '../src/heap/array-buffer-tracker.h', + '../src/heap/barrier.h', + '../src/heap/code-stats.cc', + '../src/heap/code-stats.h', + '../src/heap/concurrent-marking.cc', + '../src/heap/concurrent-marking.h', + '../src/heap/embedder-tracing.cc', + '../src/heap/embedder-tracing.h', + '../src/heap/memory-reducer.cc', + '../src/heap/memory-reducer.h', + '../src/heap/gc-idle-time-handler.cc', + '../src/heap/gc-idle-time-handler.h', + '../src/heap/gc-tracer.cc', + '../src/heap/gc-tracer.h', + '../src/heap/heap-inl.h', + '../src/heap/heap.cc', + '../src/heap/heap.h', + '../src/heap/incremental-marking-inl.h', + '../src/heap/incremental-marking-job.cc', + '../src/heap/incremental-marking-job.h', + '../src/heap/incremental-marking.cc', + '../src/heap/incremental-marking.h', + '../src/heap/invalidated-slots-inl.h', + '../src/heap/invalidated-slots.cc', + '../src/heap/invalidated-slots.h', + '../src/heap/item-parallel-job.cc', + '../src/heap/item-parallel-job.h', + '../src/heap/local-allocator.h', + '../src/heap/mark-compact-inl.h', + '../src/heap/mark-compact.cc', + '../src/heap/mark-compact.h', + '../src/heap/marking.cc', + '../src/heap/marking.h', + '../src/heap/object-stats.cc', + '../src/heap/object-stats.h', + '../src/heap/objects-visiting-inl.h', + '../src/heap/objects-visiting.cc', + '../src/heap/objects-visiting.h', + '../src/heap/remembered-set.h', + '../src/heap/scavenge-job.h', + '../src/heap/scavenge-job.cc', + '../src/heap/scavenger-inl.h', + '../src/heap/scavenger.cc', + '../src/heap/scavenger.h', + '../src/heap/slot-set.h', + '../src/heap/spaces-inl.h', + '../src/heap/spaces.cc', + '../src/heap/spaces.h', + '../src/heap/store-buffer.cc', + '../src/heap/store-buffer.h', + '../src/heap/stress-marking-observer.cc', + '../src/heap/stress-marking-observer.h', + '../src/heap/stress-scavenge-observer.cc', + '../src/heap/stress-scavenge-observer.h', + '../src/heap/sweeper.cc', + '../src/heap/sweeper.h', + '../src/heap/worklist.h', + '../src/intl.cc', + '../src/intl.h', + '../src/icu_util.cc', + '../src/icu_util.h', + '../src/ic/call-optimization.cc', + '../src/ic/call-optimization.h', + '../src/ic/handler-configuration.cc', + '../src/ic/handler-configuration-inl.h', + '../src/ic/handler-configuration.h', + '../src/ic/ic-inl.h', + '../src/ic/ic-stats.cc', + '../src/ic/ic-stats.h', + '../src/ic/ic.cc', + '../src/ic/ic.h', + '../src/identity-map.cc', + '../src/identity-map.h', + '../src/instruction-stream.cc', + '../src/instruction-stream.h', + '../src/interface-descriptors.cc', + '../src/interface-descriptors.h', + '../src/interpreter/block-coverage-builder.h', + '../src/interpreter/bytecodes.cc', + '../src/interpreter/bytecodes.h', + '../src/interpreter/bytecode-array-accessor.cc', + '../src/interpreter/bytecode-array-accessor.h', + '../src/interpreter/bytecode-array-builder.cc', + '../src/interpreter/bytecode-array-builder.h', + '../src/interpreter/bytecode-array-iterator.cc', + '../src/interpreter/bytecode-array-iterator.h', + '../src/interpreter/bytecode-array-random-iterator.cc', + '../src/interpreter/bytecode-array-random-iterator.h', + '../src/interpreter/bytecode-array-writer.cc', + '../src/interpreter/bytecode-array-writer.h', + '../src/interpreter/bytecode-decoder.cc', + '../src/interpreter/bytecode-decoder.h', + '../src/interpreter/bytecode-flags.cc', + '../src/interpreter/bytecode-flags.h', + '../src/interpreter/bytecode-generator.cc', + '../src/interpreter/bytecode-generator.h', + '../src/interpreter/bytecode-label.cc', + '../src/interpreter/bytecode-label.h', + '../src/interpreter/bytecode-node.cc', + '../src/interpreter/bytecode-node.h', + '../src/interpreter/bytecode-operands.cc', + '../src/interpreter/bytecode-operands.h', + '../src/interpreter/bytecode-register.cc', + '../src/interpreter/bytecode-register.h', + '../src/interpreter/bytecode-register-allocator.h', + '../src/interpreter/bytecode-register-optimizer.cc', + '../src/interpreter/bytecode-register-optimizer.h', + '../src/interpreter/bytecode-source-info.cc', + '../src/interpreter/bytecode-source-info.h', + '../src/interpreter/bytecode-jump-table.h', + '../src/interpreter/bytecode-traits.h', + '../src/interpreter/constant-array-builder.cc', + '../src/interpreter/constant-array-builder.h', + '../src/interpreter/control-flow-builders.cc', + '../src/interpreter/control-flow-builders.h', + '../src/interpreter/handler-table-builder.cc', + '../src/interpreter/handler-table-builder.h', + '../src/interpreter/interpreter.cc', + '../src/interpreter/interpreter.h', + '../src/interpreter/interpreter-generator.h', + '../src/interpreter/interpreter-intrinsics.cc', + '../src/interpreter/interpreter-intrinsics.h', + '../src/isolate-inl.h', + '../src/isolate.cc', + '../src/isolate.h', + '../src/json-parser.cc', + '../src/json-parser.h', + '../src/json-stringifier.cc', + '../src/json-stringifier.h', + '../src/keys.h', + '../src/keys.cc', + '../src/label.h', + '../src/layout-descriptor-inl.h', + '../src/layout-descriptor.cc', + '../src/layout-descriptor.h', + '../src/locked-queue-inl.h', + '../src/locked-queue.h', + '../src/log-inl.h', + '../src/log-utils.cc', + '../src/log-utils.h', + '../src/log.cc', + '../src/log.h', + '../src/lookup-cache-inl.h', + '../src/lookup-cache.cc', + '../src/lookup-cache.h', + '../src/lookup.cc', + '../src/lookup.h', + '../src/map-updater.cc', + '../src/map-updater.h', + '../src/macro-assembler-inl.h', + '../src/macro-assembler.h', + '../src/machine-type.cc', + '../src/machine-type.h', + '../src/managed.h', + '../src/messages.cc', + '../src/messages.h', + '../src/msan.h', + '../src/objects-body-descriptors-inl.h', + '../src/objects-body-descriptors.h', + '../src/objects-debug.cc', + '../src/objects-inl.h', + '../src/objects-printer.cc', + '../src/objects.cc', + '../src/objects.h', + '../src/objects/arguments-inl.h', + '../src/objects/arguments.h', + '../src/objects/bigint.cc', + '../src/objects/bigint.h', + '../src/objects/code-inl.h', + '../src/objects/code.h', + '../src/objects/compilation-cache.h', + '../src/objects/compilation-cache-inl.h', + '../src/objects/data-handler.h', + '../src/objects/data-handler-inl.h', + '../src/objects/debug-objects-inl.h', + '../src/objects/debug-objects.cc', + '../src/objects/debug-objects.h', + '../src/objects/descriptor-array.h', + '../src/objects/dictionary.h', + '../src/objects/fixed-array.h', + '../src/objects/fixed-array-inl.h', + '../src/objects/frame-array.h', + '../src/objects/frame-array-inl.h', + '../src/objects/hash-table-inl.h', + '../src/objects/hash-table.h', + '../src/objects/intl-objects.cc', + '../src/objects/intl-objects.h', + '../src/objects/js-array-inl.h', + '../src/objects/js-array.h', + '../src/objects/js-collection-inl.h', + '../src/objects/js-collection.h', + '../src/objects/js-promise-inl.h', + '../src/objects/js-promise.h', + '../src/objects/js-regexp-inl.h', + '../src/objects/js-regexp.h', + '../src/objects/literal-objects.cc', + '../src/objects/literal-objects-inl.h', + '../src/objects/literal-objects.h', + '../src/objects/map-inl.h', + '../src/objects/map.h', + '../src/objects/maybe-object-inl.h', + '../src/objects/maybe-object.h', + '../src/objects/microtask-inl.h', + '../src/objects/microtask.h', + '../src/objects/module-inl.h', + '../src/objects/module.cc', + '../src/objects/module.h', + '../src/objects/name-inl.h', + '../src/objects/name.h', + '../src/objects/object-macros-undef.h', + '../src/objects/object-macros.h', + '../src/objects/promise-inl.h', + '../src/objects/promise.h', + '../src/objects/property-descriptor-object-inl.h', + '../src/objects/property-descriptor-object.h', + '../src/objects/regexp-match-info.h', + '../src/objects/scope-info.cc', + '../src/objects/scope-info.h', + '../src/objects/script.h', + '../src/objects/script-inl.h', + '../src/objects/shared-function-info-inl.h', + '../src/objects/shared-function-info.h', + '../src/objects/string-inl.h', + '../src/objects/string.h', + '../src/objects/string-table.h', + '../src/objects/template-objects.cc', + '../src/objects/template-objects.h', + '../src/ostreams.cc', + '../src/ostreams.h', + '../src/parsing/duplicate-finder.h', + '../src/parsing/expression-classifier.h', + '../src/parsing/expression-scope-reparenter.cc', + '../src/parsing/expression-scope-reparenter.h', + '../src/parsing/func-name-inferrer.cc', + '../src/parsing/func-name-inferrer.h', + '../src/parsing/parse-info.cc', + '../src/parsing/parse-info.h', + '../src/parsing/parser-base.h', + '../src/parsing/parser.cc', + '../src/parsing/parser.h', + '../src/parsing/parsing.cc', + '../src/parsing/parsing.h', + '../src/parsing/pattern-rewriter.cc', + '../src/parsing/preparse-data-format.h', + '../src/parsing/preparse-data.cc', + '../src/parsing/preparse-data.h', + '../src/parsing/preparsed-scope-data.cc', + '../src/parsing/preparsed-scope-data.h', + '../src/parsing/preparser.cc', + '../src/parsing/preparser.h', + '../src/parsing/rewriter.cc', + '../src/parsing/rewriter.h', + '../src/parsing/scanner-character-streams.cc', + '../src/parsing/scanner-character-streams.h', + '../src/parsing/scanner.cc', + '../src/parsing/scanner.h', + '../src/parsing/token.cc', + '../src/parsing/token.h', + '../src/pending-compilation-error-handler.cc', + '../src/pending-compilation-error-handler.h', + '../src/perf-jit.cc', + '../src/perf-jit.h', + '../src/profiler/allocation-tracker.cc', + '../src/profiler/allocation-tracker.h', + '../src/profiler/circular-queue-inl.h', + '../src/profiler/circular-queue.h', + '../src/profiler/cpu-profiler-inl.h', + '../src/profiler/cpu-profiler.cc', + '../src/profiler/cpu-profiler.h', + '../src/profiler/heap-profiler.cc', + '../src/profiler/heap-profiler.h', + '../src/profiler/heap-snapshot-generator-inl.h', + '../src/profiler/heap-snapshot-generator.cc', + '../src/profiler/heap-snapshot-generator.h', + '../src/profiler/profiler-listener.cc', + '../src/profiler/profiler-listener.h', + '../src/profiler/profile-generator-inl.h', + '../src/profiler/profile-generator.cc', + '../src/profiler/profile-generator.h', + '../src/profiler/sampling-heap-profiler.cc', + '../src/profiler/sampling-heap-profiler.h', + '../src/profiler/strings-storage.cc', + '../src/profiler/strings-storage.h', + '../src/profiler/tick-sample.cc', + '../src/profiler/tick-sample.h', + '../src/profiler/tracing-cpu-profiler.cc', + '../src/profiler/tracing-cpu-profiler.h', + '../src/profiler/unbound-queue-inl.h', + '../src/profiler/unbound-queue.h', + '../src/property-descriptor.cc', + '../src/property-descriptor.h', + '../src/property-details.h', + '../src/property.cc', + '../src/property.h', + '../src/prototype.h', + '../src/regexp/bytecodes-irregexp.h', + '../src/regexp/interpreter-irregexp.cc', + '../src/regexp/interpreter-irregexp.h', + '../src/regexp/jsregexp-inl.h', + '../src/regexp/jsregexp.cc', + '../src/regexp/jsregexp.h', + '../src/regexp/regexp-ast.cc', + '../src/regexp/regexp-ast.h', + '../src/regexp/regexp-macro-assembler-irregexp-inl.h', + '../src/regexp/regexp-macro-assembler-irregexp.cc', + '../src/regexp/regexp-macro-assembler-irregexp.h', + '../src/regexp/regexp-macro-assembler-tracer.cc', + '../src/regexp/regexp-macro-assembler-tracer.h', + '../src/regexp/regexp-macro-assembler.cc', + '../src/regexp/regexp-macro-assembler.h', + '../src/regexp/regexp-parser.cc', + '../src/regexp/regexp-parser.h', + '../src/regexp/regexp-stack.cc', + '../src/regexp/regexp-stack.h', + '../src/regexp/regexp-utils.cc', + '../src/regexp/regexp-utils.h', + '../src/register-configuration.cc', + '../src/register-configuration.h', + '../src/reglist.h', + '../src/runtime-profiler.cc', + '../src/runtime-profiler.h', + '../src/runtime/runtime-array.cc', + '../src/runtime/runtime-atomics.cc', + '../src/runtime/runtime-bigint.cc', + '../src/runtime/runtime-classes.cc', + '../src/runtime/runtime-collections.cc', + '../src/runtime/runtime-compiler.cc', + '../src/runtime/runtime-date.cc', + '../src/runtime/runtime-debug.cc', + '../src/runtime/runtime-forin.cc', + '../src/runtime/runtime-function.cc', + '../src/runtime/runtime-error.cc', + '../src/runtime/runtime-futex.cc', + '../src/runtime/runtime-generator.cc', + '../src/runtime/runtime-intl.cc', + '../src/runtime/runtime-internal.cc', + '../src/runtime/runtime-interpreter.cc', + '../src/runtime/runtime-literals.cc', + '../src/runtime/runtime-liveedit.cc', + '../src/runtime/runtime-maths.cc', + '../src/runtime/runtime-module.cc', + '../src/runtime/runtime-numbers.cc', + '../src/runtime/runtime-object.cc', + '../src/runtime/runtime-operators.cc', + '../src/runtime/runtime-promise.cc', + '../src/runtime/runtime-proxy.cc', + '../src/runtime/runtime-regexp.cc', + '../src/runtime/runtime-scopes.cc', + '../src/runtime/runtime-strings.cc', + '../src/runtime/runtime-symbol.cc', + '../src/runtime/runtime-test.cc', + '../src/runtime/runtime-typedarray.cc', + '../src/runtime/runtime-utils.h', + '../src/runtime/runtime-wasm.cc', + '../src/runtime/runtime.cc', + '../src/runtime/runtime.h', + '../src/safepoint-table.cc', + '../src/safepoint-table.h', + '../src/setup-isolate.h', + '../src/signature.h', + '../src/simulator-base.cc', + '../src/simulator-base.h', + '../src/simulator.h', + '../src/snapshot/builtin-deserializer-allocator.cc', + '../src/snapshot/builtin-deserializer-allocator.h', + '../src/snapshot/builtin-deserializer.cc', + '../src/snapshot/builtin-deserializer.h', + '../src/snapshot/builtin-serializer-allocator.cc', + '../src/snapshot/builtin-serializer-allocator.h', + '../src/snapshot/builtin-serializer.cc', + '../src/snapshot/builtin-serializer.h', + '../src/snapshot/builtin-snapshot-utils.cc', + '../src/snapshot/builtin-snapshot-utils.h', + '../src/snapshot/code-serializer.cc', + '../src/snapshot/code-serializer.h', + '../src/snapshot/default-deserializer-allocator.cc', + '../src/snapshot/default-deserializer-allocator.h', + '../src/snapshot/default-serializer-allocator.cc', + '../src/snapshot/default-serializer-allocator.h', + '../src/snapshot/deserializer.cc', + '../src/snapshot/deserializer.h', + '../src/snapshot/natives-common.cc', + '../src/snapshot/natives.h', + '../src/snapshot/object-deserializer.cc', + '../src/snapshot/object-deserializer.h', + '../src/snapshot/partial-deserializer.cc', + '../src/snapshot/partial-deserializer.h', + '../src/snapshot/partial-serializer.cc', + '../src/snapshot/partial-serializer.h', + '../src/snapshot/serializer.cc', + '../src/snapshot/serializer-common.cc', + '../src/snapshot/serializer-common.h', + '../src/snapshot/serializer.h', + '../src/snapshot/snapshot-common.cc', + '../src/snapshot/snapshot.h', + '../src/snapshot/snapshot-source-sink.cc', + '../src/snapshot/snapshot-source-sink.h', + '../src/snapshot/startup-deserializer.cc', + '../src/snapshot/startup-deserializer.h', + '../src/snapshot/startup-serializer.cc', + '../src/snapshot/startup-serializer.h', + '../src/source-position-table.cc', + '../src/source-position-table.h', + '../src/source-position.cc', + '../src/source-position.h', + '../src/splay-tree.h', + '../src/splay-tree-inl.h', + '../src/startup-data-util.cc', + '../src/startup-data-util.h', + '../src/string-builder.cc', + '../src/string-builder.h', + '../src/string-case.cc', + '../src/string-case.h', + '../src/string-hasher-inl.h', + '../src/string-hasher.h', + '../src/string-search.h', + '../src/string-stream.cc', + '../src/string-stream.h', + '../src/strtod.cc', + '../src/strtod.h', + '../src/ic/stub-cache.cc', + '../src/ic/stub-cache.h', + '../src/third_party/utf8-decoder/utf8-decoder.h', + '../src/tracing/trace-event.cc', + '../src/tracing/trace-event.h', + '../src/tracing/traced-value.cc', + '../src/tracing/traced-value.h', + '../src/tracing/tracing-category-observer.cc', + '../src/tracing/tracing-category-observer.h', + '../src/transitions-inl.h', + '../src/transitions.cc', + '../src/transitions.h', + '../src/trap-handler/handler-outside.cc', + '../src/trap-handler/handler-shared.cc', + '../src/trap-handler/trap-handler.h', + '../src/trap-handler/trap-handler-internal.h', + '../src/type-hints.cc', + '../src/type-hints.h', + '../src/unicode-inl.h', + '../src/unicode.cc', + '../src/unicode.h', + '../src/unicode-cache-inl.h', + '../src/unicode-cache.h', + '../src/unicode-decoder.cc', + '../src/unicode-decoder.h', + '../src/uri.cc', + '../src/uri.h', + '../src/utils-inl.h', + '../src/utils.cc', + '../src/utils.h', + '../src/v8.cc', + '../src/v8.h', + '../src/v8memory.h', + '../src/v8threads.cc', + '../src/v8threads.h', + '../src/value-serializer.cc', + '../src/value-serializer.h', + '../src/vector-slot-pair.cc', + '../src/vector-slot-pair.h', + '../src/vector.h', + '../src/version.cc', + '../src/version.h', + '../src/visitors.cc', + '../src/visitors.h', + '../src/vm-state-inl.h', + '../src/vm-state.h', + '../src/wasm/baseline/liftoff-assembler-defs.h', + '../src/wasm/baseline/liftoff-assembler.cc', + '../src/wasm/baseline/liftoff-assembler.h', + '../src/wasm/baseline/liftoff-compiler.cc', + '../src/wasm/baseline/liftoff-register.h', + '../src/wasm/compilation-manager.cc', + '../src/wasm/compilation-manager.h', + '../src/wasm/decoder.h', + '../src/wasm/function-body-decoder.cc', + '../src/wasm/function-body-decoder.h', + '../src/wasm/function-body-decoder-impl.h', + '../src/wasm/leb-helper.h', + '../src/wasm/local-decl-encoder.cc', + '../src/wasm/local-decl-encoder.h', + '../src/wasm/memory-tracing.cc', + '../src/wasm/memory-tracing.h', + '../src/wasm/module-compiler.cc', + '../src/wasm/module-compiler.h', + '../src/wasm/module-decoder.cc', + '../src/wasm/module-decoder.h', + '../src/wasm/signature-map.cc', + '../src/wasm/signature-map.h', + '../src/wasm/streaming-decoder.cc', + '../src/wasm/streaming-decoder.h', + '../src/wasm/wasm-code-manager.cc', + '../src/wasm/wasm-code-manager.h', + '../src/wasm/wasm-code-specialization.cc', + '../src/wasm/wasm-code-specialization.h', + '../src/wasm/wasm-constants.h', + '../src/wasm/wasm-debug.cc', + '../src/wasm/wasm-engine.cc', + '../src/wasm/wasm-engine.h', + '../src/wasm/wasm-external-refs.cc', + '../src/wasm/wasm-external-refs.h', + '../src/wasm/wasm-js.cc', + '../src/wasm/wasm-js.h', + '../src/wasm/wasm-limits.h', + '../src/wasm/wasm-memory.cc', + '../src/wasm/wasm-memory.h', + '../src/wasm/wasm-module.cc', + '../src/wasm/wasm-module.h', + '../src/wasm/wasm-module-builder.cc', + '../src/wasm/wasm-module-builder.h', + '../src/wasm/wasm-interpreter.cc', + '../src/wasm/wasm-interpreter.h', + '../src/wasm/wasm-objects-inl.h', + '../src/wasm/wasm-objects.cc', + '../src/wasm/wasm-objects.h', + '../src/wasm/wasm-opcodes.cc', + '../src/wasm/wasm-opcodes.h', + '../src/wasm/wasm-result.cc', + '../src/wasm/wasm-result.h', + '../src/wasm/wasm-serialization.cc', + '../src/wasm/wasm-serialization.h', + '../src/wasm/wasm-text.cc', + '../src/wasm/wasm-text.h', + '../src/wasm/wasm-value.h', + '../src/zone/accounting-allocator.cc', + '../src/zone/accounting-allocator.h', + '../src/zone/zone-segment.cc', + '../src/zone/zone-segment.h', + '../src/zone/zone.cc', + '../src/zone/zone.h', + '../src/zone/zone-chunk-list.h', + '../src/zone/zone-segment.cc', + '../src/zone/zone-segment.h', + '../src/zone/zone-allocator.h', + '../src/zone/zone-containers.h', + '../src/zone/zone-handle-set.h', + '../src/zone/zone-list-inl.h', + ], + 'conditions': [ + ['want_separate_host_toolset==1', { + 'toolsets': ['host', 'target'], + }, { + 'toolsets': ['target'], + }], + ['v8_target_arch=="arm"', { + 'sources': [ + '../src/arm/assembler-arm-inl.h', + '../src/arm/assembler-arm.cc', + '../src/arm/assembler-arm.h', + '../src/arm/code-stubs-arm.cc', + '../src/arm/code-stubs-arm.h', + '../src/arm/codegen-arm.cc', + '../src/arm/constants-arm.h', + '../src/arm/constants-arm.cc', + '../src/arm/cpu-arm.cc', + '../src/arm/deoptimizer-arm.cc', + '../src/arm/disasm-arm.cc', + '../src/arm/frame-constants-arm.cc', + '../src/arm/frame-constants-arm.h', + '../src/arm/interface-descriptors-arm.cc', + '../src/arm/interface-descriptors-arm.h', + '../src/arm/macro-assembler-arm.cc', + '../src/arm/macro-assembler-arm.h', + '../src/arm/simulator-arm.cc', + '../src/arm/simulator-arm.h', + '../src/arm/eh-frame-arm.cc', + '../src/compiler/arm/code-generator-arm.cc', + '../src/compiler/arm/instruction-codes-arm.h', + '../src/compiler/arm/instruction-scheduler-arm.cc', + '../src/compiler/arm/instruction-selector-arm.cc', + '../src/compiler/arm/unwinding-info-writer-arm.cc', + '../src/compiler/arm/unwinding-info-writer-arm.h', + '../src/debug/arm/debug-arm.cc', + '../src/regexp/arm/regexp-macro-assembler-arm.cc', + '../src/regexp/arm/regexp-macro-assembler-arm.h', + '../src/wasm/baseline/arm/liftoff-assembler-arm.h', + ], + }], + ['v8_target_arch=="arm64"', { + 'sources': [ + '../src/arm64/assembler-arm64.cc', + '../src/arm64/assembler-arm64.h', + '../src/arm64/assembler-arm64-inl.h', + '../src/arm64/codegen-arm64.cc', + '../src/arm64/code-stubs-arm64.cc', + '../src/arm64/code-stubs-arm64.h', + '../src/arm64/constants-arm64.h', + '../src/arm64/cpu-arm64.cc', + '../src/arm64/decoder-arm64.cc', + '../src/arm64/decoder-arm64.h', + '../src/arm64/decoder-arm64-inl.h', + '../src/arm64/deoptimizer-arm64.cc', + '../src/arm64/disasm-arm64.cc', + '../src/arm64/disasm-arm64.h', + '../src/arm64/frame-constants-arm64.cc', + '../src/arm64/frame-constants-arm64.h', + '../src/arm64/instructions-arm64-constants.cc', + '../src/arm64/instructions-arm64.cc', + '../src/arm64/instructions-arm64.h', + '../src/arm64/instrument-arm64.cc', + '../src/arm64/instrument-arm64.h', + '../src/arm64/interface-descriptors-arm64.cc', + '../src/arm64/interface-descriptors-arm64.h', + '../src/arm64/macro-assembler-arm64.cc', + '../src/arm64/macro-assembler-arm64.h', + '../src/arm64/macro-assembler-arm64-inl.h', + '../src/arm64/simulator-arm64.cc', + '../src/arm64/simulator-arm64.h', + '../src/arm64/simulator-logic-arm64.cc', + '../src/arm64/utils-arm64.cc', + '../src/arm64/utils-arm64.h', + '../src/arm64/eh-frame-arm64.cc', + '../src/compiler/arm64/code-generator-arm64.cc', + '../src/compiler/arm64/instruction-codes-arm64.h', + '../src/compiler/arm64/instruction-scheduler-arm64.cc', + '../src/compiler/arm64/instruction-selector-arm64.cc', + '../src/compiler/arm64/unwinding-info-writer-arm64.cc', + '../src/compiler/arm64/unwinding-info-writer-arm64.h', + '../src/debug/arm64/debug-arm64.cc', + '../src/regexp/arm64/regexp-macro-assembler-arm64.cc', + '../src/regexp/arm64/regexp-macro-assembler-arm64.h', + '../src/wasm/baseline/arm64/liftoff-assembler-arm64.h', + ], + }], + ['v8_target_arch=="ia32"', { + 'sources': [ + '../src/ia32/assembler-ia32-inl.h', + '../src/ia32/assembler-ia32.cc', + '../src/ia32/assembler-ia32.h', + '../src/ia32/code-stubs-ia32.cc', + '../src/ia32/codegen-ia32.cc', + '../src/ia32/cpu-ia32.cc', + '../src/ia32/deoptimizer-ia32.cc', + '../src/ia32/disasm-ia32.cc', + '../src/ia32/frame-constants-ia32.cc', + '../src/ia32/frame-constants-ia32.h', + '../src/ia32/interface-descriptors-ia32.cc', + '../src/ia32/macro-assembler-ia32.cc', + '../src/ia32/macro-assembler-ia32.h', + '../src/ia32/simulator-ia32.cc', + '../src/ia32/simulator-ia32.h', + '../src/ia32/sse-instr.h', + '../src/compiler/ia32/code-generator-ia32.cc', + '../src/compiler/ia32/instruction-codes-ia32.h', + '../src/compiler/ia32/instruction-scheduler-ia32.cc', + '../src/compiler/ia32/instruction-selector-ia32.cc', + '../src/debug/ia32/debug-ia32.cc', + '../src/regexp/ia32/regexp-macro-assembler-ia32.cc', + '../src/regexp/ia32/regexp-macro-assembler-ia32.h', + '../src/wasm/baseline/ia32/liftoff-assembler-ia32.h', + ], + }], + ['v8_target_arch=="mips" or v8_target_arch=="mipsel"', { + 'sources': [ + '../src/mips/assembler-mips.cc', + '../src/mips/assembler-mips.h', + '../src/mips/assembler-mips-inl.h', + '../src/mips/codegen-mips.cc', + '../src/mips/code-stubs-mips.cc', + '../src/mips/code-stubs-mips.h', + '../src/mips/constants-mips.cc', + '../src/mips/constants-mips.h', + '../src/mips/cpu-mips.cc', + '../src/mips/deoptimizer-mips.cc', + '../src/mips/disasm-mips.cc', + '../src/mips/frame-constants-mips.cc', + '../src/mips/frame-constants-mips.h', + '../src/mips/interface-descriptors-mips.cc', + '../src/mips/macro-assembler-mips.cc', + '../src/mips/macro-assembler-mips.h', + '../src/mips/simulator-mips.cc', + '../src/mips/simulator-mips.h', + '../src/compiler/mips/code-generator-mips.cc', + '../src/compiler/mips/instruction-codes-mips.h', + '../src/compiler/mips/instruction-scheduler-mips.cc', + '../src/compiler/mips/instruction-selector-mips.cc', + '../src/debug/mips/debug-mips.cc', + '../src/regexp/mips/regexp-macro-assembler-mips.cc', + '../src/regexp/mips/regexp-macro-assembler-mips.h', + '../src/wasm/baseline/mips/liftoff-assembler-mips.h', + ], + }], + ['v8_target_arch=="mips64" or v8_target_arch=="mips64el"', { + 'sources': [ + '../src/mips64/assembler-mips64.cc', + '../src/mips64/assembler-mips64.h', + '../src/mips64/assembler-mips64-inl.h', + '../src/mips64/codegen-mips64.cc', + '../src/mips64/code-stubs-mips64.cc', + '../src/mips64/code-stubs-mips64.h', + '../src/mips64/constants-mips64.cc', + '../src/mips64/constants-mips64.h', + '../src/mips64/cpu-mips64.cc', + '../src/mips64/deoptimizer-mips64.cc', + '../src/mips64/disasm-mips64.cc', + '../src/mips64/frame-constants-mips64.cc', + '../src/mips64/frame-constants-mips64.h', + '../src/mips64/interface-descriptors-mips64.cc', + '../src/mips64/macro-assembler-mips64.cc', + '../src/mips64/macro-assembler-mips64.h', + '../src/mips64/simulator-mips64.cc', + '../src/mips64/simulator-mips64.h', + '../src/compiler/mips64/code-generator-mips64.cc', + '../src/compiler/mips64/instruction-codes-mips64.h', + '../src/compiler/mips64/instruction-scheduler-mips64.cc', + '../src/compiler/mips64/instruction-selector-mips64.cc', + '../src/debug/mips64/debug-mips64.cc', + '../src/regexp/mips64/regexp-macro-assembler-mips64.cc', + '../src/regexp/mips64/regexp-macro-assembler-mips64.h', + '../src/wasm/baseline/mips64/liftoff-assembler-mips64.h', + ], + }], + ['v8_target_arch=="x64"', { + 'sources': [ + '../src/compiler/x64/code-generator-x64.cc', + '../src/compiler/x64/instruction-codes-x64.h', + '../src/compiler/x64/instruction-scheduler-x64.cc', + '../src/compiler/x64/instruction-selector-x64.cc', + '../src/compiler/x64/unwinding-info-writer-x64.cc', + '../src/compiler/x64/unwinding-info-writer-x64.h', + '../src/x64/assembler-x64-inl.h', + '../src/x64/assembler-x64.cc', + '../src/x64/assembler-x64.h', + '../src/x64/code-stubs-x64.cc', + '../src/x64/codegen-x64.cc', + '../src/x64/cpu-x64.cc', + '../src/x64/deoptimizer-x64.cc', + '../src/x64/disasm-x64.cc', + '../src/x64/eh-frame-x64.cc', + '../src/x64/frame-constants-x64.cc', + '../src/x64/frame-constants-x64.h', + '../src/x64/interface-descriptors-x64.cc', + '../src/x64/macro-assembler-x64.cc', + '../src/x64/macro-assembler-x64.h', + '../src/x64/simulator-x64.cc', + '../src/x64/simulator-x64.h', + '../src/x64/sse-instr.h', + '../src/debug/x64/debug-x64.cc', + '../src/regexp/x64/regexp-macro-assembler-x64.cc', + '../src/regexp/x64/regexp-macro-assembler-x64.h', + '../src/third_party/valgrind/valgrind.h', + '../src/wasm/baseline/x64/liftoff-assembler-x64.h', + ], + }], + ['v8_target_arch=="x64" and OS=="linux"', { + 'sources': ['../src/trap-handler/handler-inside.cc'] + }], + ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', { + 'sources': [ + '../src/compiler/ppc/code-generator-ppc.cc', + '../src/compiler/ppc/instruction-codes-ppc.h', + '../src/compiler/ppc/instruction-scheduler-ppc.cc', + '../src/compiler/ppc/instruction-selector-ppc.cc', + '../src/debug/ppc/debug-ppc.cc', + '../src/ppc/assembler-ppc-inl.h', + '../src/ppc/assembler-ppc.cc', + '../src/ppc/assembler-ppc.h', + '../src/ppc/code-stubs-ppc.cc', + '../src/ppc/code-stubs-ppc.h', + '../src/ppc/codegen-ppc.cc', + '../src/ppc/constants-ppc.h', + '../src/ppc/constants-ppc.cc', + '../src/ppc/cpu-ppc.cc', + '../src/ppc/deoptimizer-ppc.cc', + '../src/ppc/disasm-ppc.cc', + '../src/ppc/frame-constants-ppc.cc', + '../src/ppc/frame-constants-ppc.h', + '../src/ppc/interface-descriptors-ppc.cc', + '../src/ppc/macro-assembler-ppc.cc', + '../src/ppc/macro-assembler-ppc.h', + '../src/ppc/simulator-ppc.cc', + '../src/ppc/simulator-ppc.h', + '../src/regexp/ppc/regexp-macro-assembler-ppc.cc', + '../src/regexp/ppc/regexp-macro-assembler-ppc.h', + '../src/wasm/baseline/ppc/liftoff-assembler-ppc.h', + ], + }], + ['v8_target_arch=="s390" or v8_target_arch=="s390x"', { + 'sources': [ + '../src/compiler/s390/code-generator-s390.cc', + '../src/compiler/s390/instruction-codes-s390.h', + '../src/compiler/s390/instruction-scheduler-s390.cc', + '../src/compiler/s390/instruction-selector-s390.cc', + '../src/debug/s390/debug-s390.cc', + '../src/regexp/s390/regexp-macro-assembler-s390.cc', + '../src/regexp/s390/regexp-macro-assembler-s390.h', + '../src/s390/assembler-s390.cc', + '../src/s390/assembler-s390.h', + '../src/s390/assembler-s390-inl.h', + '../src/s390/codegen-s390.cc', + '../src/s390/code-stubs-s390.cc', + '../src/s390/code-stubs-s390.h', + '../src/s390/constants-s390.cc', + '../src/s390/constants-s390.h', + '../src/s390/cpu-s390.cc', + '../src/s390/deoptimizer-s390.cc', + '../src/s390/disasm-s390.cc', + '../src/s390/frame-constants-s390.cc', + '../src/s390/frame-constants-s390.h', + '../src/s390/interface-descriptors-s390.cc', + '../src/s390/macro-assembler-s390.cc', + '../src/s390/macro-assembler-s390.h', + '../src/s390/simulator-s390.cc', + '../src/s390/simulator-s390.h', + '../src/wasm/baseline/s390/liftoff-assembler-s390.h', + ], + }], + ['OS=="win"', { + 'variables': { + 'gyp_generators': ' NewDefaultPlatform( int thread_pool_size = 0, IdleTaskSupport idle_task_support = IdleTaskSupport::kDisabled, InProcessStackDumping in_process_stack_dumping = - InProcessStackDumping::kEnabled, + InProcessStackDumping::kDisabled, std::unique_ptr tracing_controller = {}); V8_PLATFORM_EXPORT V8_DEPRECATE_SOON( @@ -47,7 +47,7 @@ V8_PLATFORM_EXPORT V8_DEPRECATE_SOON( int thread_pool_size = 0, IdleTaskSupport idle_task_support = IdleTaskSupport::kDisabled, InProcessStackDumping in_process_stack_dumping = - InProcessStackDumping::kEnabled, + InProcessStackDumping::kDisabled, v8::TracingController* tracing_controller = nullptr)); /** @@ -62,8 +62,10 @@ V8_PLATFORM_EXPORT bool PumpMessageLoop( v8::Platform* platform, v8::Isolate* isolate, MessageLoopBehavior behavior = MessageLoopBehavior::kDoNotWait); -V8_PLATFORM_EXPORT void EnsureEventLoopInitialized(v8::Platform* platform, - v8::Isolate* isolate); +V8_PLATFORM_EXPORT V8_DEPRECATE_SOON( + "This function has become obsolete and is essentially a nop", + void EnsureEventLoopInitialized(v8::Platform* platform, + v8::Isolate* isolate)); /** * Runs pending idle tasks for at most |idle_time_in_seconds| seconds. diff --git a/deps/v8/include/v8-debug.h b/deps/v8/include/v8-debug.h deleted file mode 100644 index 54c0f216aa6..00000000000 --- a/deps/v8/include/v8-debug.h +++ /dev/null @@ -1,255 +0,0 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef V8_V8_DEBUG_H_ -#define V8_V8_DEBUG_H_ - -#include "v8.h" // NOLINT(build/include) - -/** - * ATTENTION: The debugger API exposed by this file is deprecated and will be - * removed by the end of 2017. Please use the V8 inspector declared - * in include/v8-inspector.h instead. - */ -namespace v8 { - -// Debug events which can occur in the V8 JavaScript engine. -enum DebugEvent { - Break = 1, - Exception = 2, - AfterCompile = 3, - CompileError = 4, - AsyncTaskEvent = 5, -}; - -class V8_EXPORT Debug { - public: - /** - * A client object passed to the v8 debugger whose ownership will be taken by - * it. v8 is always responsible for deleting the object. - */ - class ClientData { - public: - virtual ~ClientData() {} - }; - - - /** - * A message object passed to the debug message handler. - */ - class Message { - public: - /** - * Check type of message. - */ - virtual bool IsEvent() const = 0; - virtual bool IsResponse() const = 0; - virtual DebugEvent GetEvent() const = 0; - - /** - * Indicate whether this is a response to a continue command which will - * start the VM running after this is processed. - */ - virtual bool WillStartRunning() const = 0; - - /** - * Access to execution state and event data. Don't store these cross - * callbacks as their content becomes invalid. These objects are from the - * debugger event that started the debug message loop. - */ - virtual Local GetExecutionState() const = 0; - virtual Local GetEventData() const = 0; - - /** - * Get the debugger protocol JSON. - */ - virtual Local GetJSON() const = 0; - - /** - * Get the context active when the debug event happened. Note this is not - * the current active context as the JavaScript part of the debugger is - * running in its own context which is entered at this point. - */ - virtual Local GetEventContext() const = 0; - - /** - * Client data passed with the corresponding request if any. This is the - * client_data data value passed into Debug::SendCommand along with the - * request that led to the message or NULL if the message is an event. The - * debugger takes ownership of the data and will delete it even if there is - * no message handler. - */ - virtual ClientData* GetClientData() const = 0; - - virtual Isolate* GetIsolate() const = 0; - - virtual ~Message() {} - }; - - /** - * An event details object passed to the debug event listener. - */ - class EventDetails { - public: - /** - * Event type. - */ - virtual DebugEvent GetEvent() const = 0; - - /** - * Access to execution state and event data of the debug event. Don't store - * these cross callbacks as their content becomes invalid. - */ - virtual Local GetExecutionState() const = 0; - virtual Local GetEventData() const = 0; - - /** - * Get the context active when the debug event happened. Note this is not - * the current active context as the JavaScript part of the debugger is - * running in its own context which is entered at this point. - */ - virtual Local GetEventContext() const = 0; - - /** - * Client data passed with the corresponding callback when it was - * registered. - */ - virtual Local GetCallbackData() const = 0; - - /** - * This is now a dummy that returns nullptr. - */ - virtual ClientData* GetClientData() const = 0; - - virtual Isolate* GetIsolate() const = 0; - - virtual ~EventDetails() {} - }; - - /** - * Debug event callback function. - * - * \param event_details object providing information about the debug event - * - * A EventCallback does not take possession of the event data, - * and must not rely on the data persisting after the handler returns. - */ - typedef void (*EventCallback)(const EventDetails& event_details); - - /** - * This is now a no-op. - */ - typedef void (*MessageHandler)(const Message& message); - - V8_DEPRECATED("No longer supported", static bool SetDebugEventListener( - Isolate* isolate, EventCallback that, - Local data = Local())); - - // Schedule a debugger break to happen when JavaScript code is run - // in the given isolate. - V8_DEPRECATED("No longer supported", - static void DebugBreak(Isolate* isolate)); - - // Remove scheduled debugger break in given isolate if it has not - // happened yet. - V8_DEPRECATED("No longer supported", - static void CancelDebugBreak(Isolate* isolate)); - - // Check if a debugger break is scheduled in the given isolate. - V8_DEPRECATED("No longer supported", - static bool CheckDebugBreak(Isolate* isolate)); - - // This is now a no-op. - V8_DEPRECATED("No longer supported", - static void SetMessageHandler(Isolate* isolate, - MessageHandler handler)); - - // This is now a no-op. - V8_DEPRECATED("No longer supported", - static void SendCommand(Isolate* isolate, - const uint16_t* command, int length, - ClientData* client_data = NULL)); - - /** - * Run a JavaScript function in the debugger. - * \param fun the function to call - * \param data passed as second argument to the function - * With this call the debugger is entered and the function specified is called - * with the execution state as the first argument. This makes it possible to - * get access to information otherwise not available during normal JavaScript - * execution e.g. details on stack frames. Receiver of the function call will - * be the debugger context global object, however this is a subject to change. - * The following example shows a JavaScript function which when passed to - * v8::Debug::Call will return the current line of JavaScript execution. - * - * \code - * function frame_source_line(exec_state) { - * return exec_state.frame(0).sourceLine(); - * } - * \endcode - */ - V8_DEPRECATED("No longer supported", - static MaybeLocal Call( - Local context, v8::Local fun, - Local data = Local())); - - // This is now a no-op. - V8_DEPRECATED("No longer supported", - static void ProcessDebugMessages(Isolate* isolate)); - - /** - * Debugger is running in its own context which is entered while debugger - * messages are being dispatched. This is an explicit getter for this - * debugger context. Note that the content of the debugger context is subject - * to change. The Context exists only when the debugger is active, i.e. at - * least one DebugEventListener or MessageHandler is set. - */ - V8_DEPRECATED("Use v8-inspector", - static Local GetDebugContext(Isolate* isolate)); - - /** - * While in the debug context, this method returns the top-most non-debug - * context, if it exists. - */ - V8_DEPRECATED( - "No longer supported", - static MaybeLocal GetDebuggedContext(Isolate* isolate)); - - /** - * Enable/disable LiveEdit functionality for the given Isolate - * (default Isolate if not provided). V8 will abort if LiveEdit is - * unexpectedly used. LiveEdit is enabled by default. - */ - V8_DEPRECATED("No longer supported", - static void SetLiveEditEnabled(Isolate* isolate, bool enable)); - - /** - * Returns array of internal properties specific to the value type. Result has - * the following format: [, ,...,, ]. Result array - * will be allocated in the current context. - */ - V8_DEPRECATED("No longer supported", - static MaybeLocal GetInternalProperties( - Isolate* isolate, Local value)); - - /** - * Defines if the ES2015 tail call elimination feature is enabled or not. - * The change of this flag triggers deoptimization of all functions that - * contain calls at tail position. - */ - V8_DEPRECATED("No longer supported", - static bool IsTailCallEliminationEnabled(Isolate* isolate)); - V8_DEPRECATED("No longer supported", - static void SetTailCallEliminationEnabled(Isolate* isolate, - bool enabled)); -}; - - -} // namespace v8 - - -#undef EXPORT - - -#endif // V8_V8_DEBUG_H_ diff --git a/deps/v8/include/v8-platform.h b/deps/v8/include/v8-platform.h index 2bb14df93e9..80e51aedc08 100644 --- a/deps/v8/include/v8-platform.h +++ b/deps/v8/include/v8-platform.h @@ -10,6 +10,8 @@ #include #include +#include "v8config.h" // NOLINT(build/include) + namespace v8 { class Isolate; @@ -286,13 +288,27 @@ class Platform { virtual bool OnCriticalMemoryPressure(size_t length) { return false; } /** - * Gets the number of threads that are used to execute background tasks. Is - * used to estimate the number of tasks a work package should be split into. - * A return value of 0 means that there are no background threads available. - * Note that a value of 0 won't prohibit V8 from posting tasks using - * |CallOnBackgroundThread|. + * Gets the number of worker threads used by GetWorkerThreadsTaskRunner() and + * CallOnWorkerThread(). This can be used to estimate the number of tasks a + * work package should be split into. A return value of 0 means that there are + * no worker threads available. Note that a value of 0 won't prohibit V8 from + * posting tasks using |CallOnWorkerThread|. + */ + virtual int NumberOfWorkerThreads() { + return static_cast(NumberOfAvailableBackgroundThreads()); + } + + /** + * Deprecated. Use NumberOfWorkerThreads() instead. + * TODO(gab): Remove this when all embedders override + * NumberOfWorkerThreads() instead. */ - virtual size_t NumberOfAvailableBackgroundThreads() { return 0; } + V8_DEPRECATE_SOON( + "NumberOfAvailableBackgroundThreads() is deprecated, use " + "NumberOfAvailableBackgroundThreads() instead.", + virtual size_t NumberOfAvailableBackgroundThreads()) { + return 0; + } /** * Returns a TaskRunner which can be used to post a task on the foreground. @@ -309,11 +325,34 @@ class Platform { * Returns a TaskRunner which can be used to post a task on a background. * This function should only be called from a foreground thread. */ - virtual std::shared_ptr GetBackgroundTaskRunner( + V8_DEPRECATE_SOON( + "GetBackgroundTaskRunner() is deprecated, use " + "GetWorkerThreadsTaskRunner() " + "instead.", + virtual std::shared_ptr GetBackgroundTaskRunner( + Isolate* isolate)) { + // TODO(gab): Remove this method when all embedders have moved to + // GetWorkerThreadsTaskRunner(). + + // An implementation needs to be provided here because this is called by the + // default GetWorkerThreadsTaskRunner() implementation below. In practice + // however, all code either: + // - Overrides GetWorkerThreadsTaskRunner() (thus not making this call) -- + // i.e. all v8 code. + // - Overrides this method (thus not making this call) -- i.e. all + // unadapted embedders. + abort(); + } + + /** + * Returns a TaskRunner which can be used to post async tasks on a worker. + * This function should only be called from a foreground thread. + */ + virtual std::shared_ptr GetWorkerThreadsTaskRunner( Isolate* isolate) { - // TODO(ahaas): Make this function abstract after it got implemented on all + // TODO(gab): Make this function abstract after it got implemented on all // platforms. - return {}; + return GetBackgroundTaskRunner(isolate); } /** @@ -323,8 +362,37 @@ class Platform { * of tasks wrt order of scheduling, nor is there a guarantee about the * thread the task will be run on. */ - virtual void CallOnBackgroundThread(Task* task, - ExpectedRuntime expected_runtime) = 0; + V8_DEPRECATE_SOON( + "ExpectedRuntime is deprecated, use CallOnWorkerThread() instead.", + virtual void CallOnBackgroundThread(Task* task, + ExpectedRuntime expected_runtime)) { + // An implementation needs to be provided here because this is called by the + // default implementation below. In practice however, all code either: + // - Overrides the new method (thus not making this call) -- i.e. all v8 + // code. + // - Overrides this method (thus not making this call) -- i.e. all + // unadapted embedders. + abort(); + } + + /** + * Schedules a task to be invoked on a worker thread. + * TODO(gab): Make pure virtual when all embedders override this instead of + * CallOnBackgroundThread(). + */ + virtual void CallOnWorkerThread(std::unique_ptr task) { + CallOnBackgroundThread(task.release(), kShortRunningTask); + } + + /** + * Schedules a task that blocks the main thread to be invoked with + * high-priority on a worker thread. + */ + virtual void CallBlockingTaskOnWorkerThread(std::unique_ptr task) { + // Embedders may optionally override this to process these tasks in a high + // priority pool. + CallOnWorkerThread(std::move(task)); + } /** * Schedules a task to be invoked on a foreground thread wrt a specific diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index a86402be924..afa40d25f30 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -335,7 +335,8 @@ class V8_EXPORT CpuProfiler { /** * Tells the profiler whether the embedder is idle. */ - void SetIdle(bool is_idle); + V8_DEPRECATED("Use Isolate::SetIdle(bool) instead.", + void SetIdle(bool is_idle)); private: CpuProfiler(); @@ -401,7 +402,8 @@ class V8_EXPORT HeapGraphNode { // snapshot items together. kConsString = 10, // Concatenated string. A pair of pointers to strings. kSlicedString = 11, // Sliced string. A fragment of another string. - kSymbol = 12 // A Symbol (ES6). + kSymbol = 12, // A Symbol (ES6). + kBigInt = 13 // BigInt. }; /** Returns node type (see HeapGraphNode::Type). */ @@ -626,6 +628,68 @@ class V8_EXPORT AllocationProfile { static const int kNoColumnNumberInfo = Message::kNoColumnInfo; }; +/** + * An object graph consisting of embedder objects and V8 objects. + * Edges of the graph are strong references between the objects. + * The embedder can build this graph during heap snapshot generation + * to include the embedder objects in the heap snapshot. + * Usage: + * 1) Define derived class of EmbedderGraph::Node for embedder objects. + * 2) Set the build embedder graph callback on the heap profiler using + * HeapProfiler::SetBuildEmbedderGraphCallback. + * 3) In the callback use graph->AddEdge(node1, node2) to add an edge from + * node1 to node2. + * 4) To represent references from/to V8 object, construct V8 nodes using + * graph->V8Node(value). + */ +class V8_EXPORT EmbedderGraph { + public: + class Node { + public: + Node() = default; + virtual ~Node() = default; + virtual const char* Name() = 0; + virtual size_t SizeInBytes() = 0; + /** + * The corresponding V8 wrapper node if not null. + * During heap snapshot generation the embedder node and the V8 wrapper + * node will be merged into one node to simplify retaining paths. + */ + virtual Node* WrapperNode() { return nullptr; } + virtual bool IsRootNode() { return false; } + /** Must return true for non-V8 nodes. */ + virtual bool IsEmbedderNode() { return true; } + /** + * Optional name prefix. It is used in Chrome for tagging detached nodes. + */ + virtual const char* NamePrefix() { return nullptr; } + + private: + Node(const Node&) = delete; + Node& operator=(const Node&) = delete; + }; + + /** + * Returns a node corresponding to the given V8 value. Ownership is not + * transferred. The result pointer is valid while the graph is alive. + */ + virtual Node* V8Node(const v8::Local& value) = 0; + + /** + * Adds the given node to the graph and takes ownership of the node. + * Returns a raw pointer to the node that is valid while the graph is alive. + */ + virtual Node* AddNode(std::unique_ptr node) = 0; + + /** + * Adds an edge that represents a strong reference from the given node + * |from| to the given node |to|. The nodes must be added to the graph + * before calling this function. + */ + virtual void AddEdge(Node* from, Node* to) = 0; + + virtual ~EmbedderGraph() = default; +}; /** * Interface for controlling heap profiling. Instance of the @@ -665,6 +729,15 @@ class V8_EXPORT HeapProfiler { typedef RetainedObjectInfo* (*WrapperInfoCallback)(uint16_t class_id, Local wrapper); + /** + * Callback function invoked during heap snapshot generation to retrieve + * the embedder object graph. The callback should use graph->AddEdge(..) to + * add references between the objects. + * The callback must not trigger garbage collection in V8. + */ + typedef void (*BuildEmbedderGraphCallback)(v8::Isolate* isolate, + v8::EmbedderGraph* graph); + /** Returns the number of snapshots taken. */ int GetSnapshotCount(); @@ -804,11 +877,16 @@ class V8_EXPORT HeapProfiler { void DeleteAllHeapSnapshots(); /** Binds a callback to embedder's class ID. */ - void SetWrapperClassInfoProvider( - uint16_t class_id, - WrapperInfoCallback callback); + V8_DEPRECATED( + "Use SetBuildEmbedderGraphCallback to provide info about embedder nodes", + void SetWrapperClassInfoProvider(uint16_t class_id, + WrapperInfoCallback callback)); + + V8_DEPRECATED( + "Use SetBuildEmbedderGraphCallback to provide info about embedder nodes", + void SetGetRetainerInfosCallback(GetRetainerInfosCallback callback)); - void SetGetRetainerInfosCallback(GetRetainerInfosCallback callback); + void SetBuildEmbedderGraphCallback(BuildEmbedderGraphCallback callback); /** * Default value of persistent handle class ID. Must not be used to diff --git a/deps/v8/include/v8-util.h b/deps/v8/include/v8-util.h index 15ea225dc12..a3069651222 100644 --- a/deps/v8/include/v8-util.h +++ b/deps/v8/include/v8-util.h @@ -196,16 +196,6 @@ class PersistentValueMapBase { return SetReturnValueFromVal(&returnValue, Traits::Get(&impl_, key)); } - /** - * Call Isolate::SetReference with the given parent and the map value. - */ - void SetReference(const K& key, - const Persistent& parent) { - GetIsolate()->SetReference( - reinterpret_cast(parent.val_), - reinterpret_cast(FromVal(Traits::Get(&impl_, key)))); - } - /** * Call V8::RegisterExternallyReferencedObject with the map value for given * key. diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 71f3b774a33..7555557759b 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -9,9 +9,9 @@ // NOTE these macros are used by some of the tool scripts and the build // system so their names cannot be changed without changing the scripts. #define V8_MAJOR_VERSION 6 -#define V8_MINOR_VERSION 5 -#define V8_BUILD_NUMBER 254 -#define V8_PATCH_LEVEL 43 +#define V8_MINOR_VERSION 7 +#define V8_BUILD_NUMBER 213 +#define V8_PATCH_LEVEL 0 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index d5b554dc966..9fd9d0887cc 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -66,6 +66,8 @@ namespace v8 { class AccessorSignature; class Array; class ArrayBuffer; +class BigInt; +class BigIntObject; class Boolean; class BooleanObject; class Context; @@ -145,7 +147,7 @@ class Heap; class HeapObject; class Isolate; class Object; -struct StreamedSource; +struct ScriptStreamingData; template class CustomArguments; class PropertyCallbackArguments; class FunctionCallbackArguments; @@ -553,6 +555,14 @@ template class PersistentBase { // TODO(dcarney): remove this. V8_INLINE void ClearWeak() { ClearWeak(); } + /** + * Annotates the strong handle with the given label, which is then used by the + * heap snapshot generator as a name of the edge from the root to the handle. + * The function does not take ownership of the label and assumes that the + * label is valid as long as the handle is valid. + */ + V8_INLINE void AnnotateStrongRetainer(const char* label); + /** * Allows the embedder to tell the v8 garbage collector that a certain object * is alive. Only allowed when the embedder is asked to trace its heap by @@ -945,7 +955,7 @@ class V8_EXPORT EscapableHandleScope : public HandleScope { */ class V8_EXPORT SealHandleScope { public: - SealHandleScope(Isolate* isolate); + explicit SealHandleScope(Isolate* isolate); ~SealHandleScope(); SealHandleScope(const SealHandleScope&) = delete; @@ -1136,6 +1146,7 @@ class V8_EXPORT Module { public: /** * The different states a module can be in. + * * This corresponds to the states used in ECMAScript except that "evaluated" * is split into kEvaluated and kErrored, indicating success and failure, * respectively. @@ -1186,7 +1197,7 @@ class V8_EXPORT Module { Local referrer); /** - * ModuleDeclarationInstantiation + * Instantiates the module and its dependencies. * * Returns an empty Maybe if an exception occurred during * instantiation. (In the case where the callback throws an exception, that @@ -1196,16 +1207,19 @@ class V8_EXPORT Module { ResolveCallback callback); /** - * ModuleEvaluation + * Evaluates the module and its dependencies. * - * Returns the completion value. - * TODO(neis): Be more precise or say nothing. + * If status is kInstantiated, run the module's code. On success, set status + * to kEvaluated and return the completion value; on failure, set status to + * kErrored and propagate the thrown exception (which is then also available + * via |GetException|). */ V8_WARN_UNUSED_RESULT MaybeLocal Evaluate(Local context); /** * Returns the namespace object of this module. - * The module's status must be kEvaluated. + * + * The module's status must be at least kInstantiated. */ Local GetModuleNamespace(); }; @@ -1219,24 +1233,23 @@ class V8_EXPORT Script { /** * A shorthand for ScriptCompiler::Compile(). */ - static V8_DEPRECATE_SOON( - "Use maybe version", - Local - \ No newline at end of file + diff --git a/deps/v8/tools/heap-stats/details-selection.js b/deps/v8/tools/heap-stats/details-selection.js index 43c000d3f45..5e9ffc5f94e 100644 --- a/deps/v8/tools/heap-stats/details-selection.js +++ b/deps/v8/tools/heap-stats/details-selection.js @@ -17,8 +17,16 @@ class DetailsSelection extends HTMLElement { 'change', e => this.handleIsolateChange(e)); this.datasetSelect.addEventListener( 'change', e => this.notifySelectionChanged(e)); + this.gcSelect.addEventListener( + 'change', e => this.notifySelectionChanged(e)); + this.$('#csv-export-btn') + .addEventListener('click', e => this.exportCurrentSelection(e)); this.$('#merge-categories') .addEventListener('change', e => this.notifySelectionChanged(e)); + this.$('#category-filter-btn') + .addEventListener('click', e => this.filterCurrentSelection(e)); + this.$('#category-auto-filter-btn') + .addEventListener('click', e => this.filterTop20Categories(e)); } connectedCallback() { @@ -36,50 +44,101 @@ class DetailsSelection extends HTMLElement { return this._data; } + get selectedIsolate() { + return this._data[this.selection.isolate]; + } + + get selectedData() { + console.assert(this.data, 'invalid data'); + console.assert(this.selection, 'invalid selection'); + return this.selectedIsolate.gcs[this.selection.gc][this.selection.data_set]; + } + + $(id) { + return this.shadowRoot.querySelector(id); + } + + querySelectorAll(query) { + return this.shadowRoot.querySelectorAll(query); + } + + get datasetSelect() { + return this.$('#dataset-select'); + } + + get isolateSelect() { + return this.$('#isolate-select'); + } + + get gcSelect() { + return this.$('#gc-select'); + } + buildCategory(name) { const div = document.createElement('div'); div.id = name; div.classList.add('box'); - const span = document.createElement('span'); - div.appendChild(span); - span.innerHTML = CATEGORY_NAMES.get(name) + ' '; + const ul = document.createElement('ul'); + div.appendChild(ul); + const name_li = document.createElement('li'); + ul.appendChild(name_li); + name_li.innerHTML = CATEGORY_NAMES.get(name); + const percent_li = document.createElement('li'); + ul.appendChild(percent_li); + percent_li.innerHTML = '0%'; + percent_li.id = name + 'PercentContent'; + const all_li = document.createElement('li'); + ul.appendChild(all_li); const all_button = document.createElement('button'); - span.appendChild(all_button); + all_li.appendChild(all_button); all_button.innerHTML = 'All'; all_button.addEventListener('click', e => this.selectCategory(name)); + const none_li = document.createElement('li'); + ul.appendChild(none_li); const none_button = document.createElement('button'); - span.appendChild(none_button); + none_li.appendChild(none_button); none_button.innerHTML = 'None'; none_button.addEventListener('click', e => this.unselectCategory(name)); const innerDiv = document.createElement('div'); div.appendChild(innerDiv); innerDiv.id = name + 'Content'; + const percentDiv = document.createElement('div'); + div.appendChild(percentDiv); + percentDiv.className = 'percentBackground'; + percentDiv.id = name + 'PercentBackground'; return div; } - $(id) { - return this.shadowRoot.querySelector(id); - } - - get datasetSelect() { - return this.$('#dataset-select'); + dataChanged() { + this.selection = {categories: {}}; + this.resetUI(true); + this.populateIsolateSelect(); + this.handleIsolateChange(); + this.$('#dataSelectionSection').style.display = 'block'; } - get isolateSelect() { - return this.$('#isolate-select'); + populateIsolateSelect() { + let isolates = Object.entries(this.data); + // Sorty by peak heap memory consumption. + isolates.sort((a, b) => b[1].peakMemory - a[1].peakMemory); + this.populateSelect( + '#isolate-select', isolates, (key, isolate) => isolate.getLabel()); } - dataChanged() { - this.clearUI(); - this.populateSelect('#isolate-select', Object.keys(this.data)); - this.handleIsolateChange(); - } + resetUI(resetIsolateSelect) { + if (resetIsolateSelect) removeAllChildren(this.isolateSelect); - clearUI() { - this.selection = {categories: {}}; - removeAllChildren(this.isolateSelect); removeAllChildren(this.datasetSelect); + removeAllChildren(this.gcSelect); this.clearCategories(); + this.setButtonState('disabled'); + } + + setButtonState(disabled) { + this.$('#csv-export-btn').disabled = disabled; + this.$('#category-filter').disabled = disabled; + this.$('#category-filter-btn').disabled = disabled; + this.$('#category-auto-filter-btn').disabled = disabled; } handleIsolateChange(e) { @@ -88,9 +147,20 @@ class DetailsSelection extends HTMLElement { this.selection.isolate = null; return; } - + this.resetUI(false); this.populateSelect( - '#dataset-select', this.data[this.selection.isolate].data_sets, 'live'); + '#dataset-select', this.selectedIsolate.data_sets.entries(), null, + 'live'); + this.populateSelect( + '#gc-select', + Object.keys(this.selectedIsolate.gcs) + .map(id => [id, this.selectedIsolate.gcs[id].time]), + (key, time, index) => { + return (index + ': ').padStart(4, '0') + + formatSeconds(time).padStart(6, '0') + ' ' + + formatBytes(this.selectedIsolate.gcs[key].live.overall) + .padStart(9, '0'); + }); this.populateCategories(); this.notifySelectionChanged(); } @@ -106,15 +176,92 @@ class DetailsSelection extends HTMLElement { this.selection.category_names = CATEGORY_NAMES; this.selection.data_set = this.datasetSelect.value; this.selection.merge_categories = this.$('#merge-categories').checked; + this.selection.gc = this.gcSelect.value; + this.setButtonState(false); + this.updatePercentagesInCategory(); + this.updatePercentagesInInstanceTypes(); this.dispatchEvent(new CustomEvent( 'change', {bubbles: true, composed: true, detail: this.selection})); } + filterCurrentSelection(e) { + const minSize = this.$('#category-filter').value * KB; + this.filterCurrentSelectionWithThresold(minSize); + } + + filterTop20Categories(e) { + // Limit to show top 20 categories only. + let minSize = 0; + let count = 0; + let sizes = this.selectedIsolate.instanceTypePeakMemory; + for (let key in sizes) { + if (count == 20) break; + minSize = sizes[key]; + count++; + } + this.filterCurrentSelectionWithThresold(minSize); + } + + filterCurrentSelectionWithThresold(minSize) { + if (minSize === 0) return; + + this.selection.category_names.forEach((_, category) => { + for (let checkbox of this.querySelectorAll( + 'input[name=' + category + 'Checkbox]')) { + checkbox.checked = + this.selectedData.instance_type_data[checkbox.instance_type] + .overall > minSize; + console.log( + checkbox.instance_type, checkbox.checked, + this.selectedData.instance_type_data[checkbox.instance_type] + .overall); + } + }); + this.notifySelectionChanged(); + } + + updatePercentagesInCategory() { + const overalls = {}; + let overall = 0; + // Reset all categories. + this.selection.category_names.forEach((_, category) => { + overalls[category] = 0; + }); + // Only update categories that have selections. + Object.entries(this.selection.categories).forEach(([category, value]) => { + overalls[category] = + Object.values(value).reduce( + (accu, current) => + accu + this.selectedData.instance_type_data[current].overall, + 0) / + KB; + overall += overalls[category]; + }); + Object.entries(overalls).forEach(([category, category_overall]) => { + let percents = category_overall / overall * 100; + this.$(`#${category}PercentContent`).innerHTML = + `${percents.toFixed(1)}%`; + this.$('#' + category + 'PercentBackground').style.left = percents + '%'; + }); + } + + updatePercentagesInInstanceTypes() { + const instanceTypeData = this.selectedData.instance_type_data; + const maxInstanceType = this.selectedData.singleInstancePeakMemory; + this.querySelectorAll('.instanceTypeSelectBox input').forEach(checkbox => { + let instanceType = checkbox.value; + let instanceTypeSize = instanceTypeData[instanceType].overall; + let percents = instanceTypeSize / maxInstanceType; + let percentDiv = checkbox.parentNode.querySelector('.percentBackground'); + percentDiv.style.left = (percents * 100) + '%'; + + }); + } + selectedInCategory(category) { - const selected = this.shadowRoot.querySelectorAll( - 'input[name=' + category + 'Checkbox]:checked'); - var tmp = []; - for (var val of selected.values()) tmp.push(val.value); + let tmp = []; + this.querySelectorAll('input[name=' + category + 'Checkbox]:checked') + .forEach(checkbox => tmp.push(checkbox.value)); return tmp; } @@ -125,17 +272,21 @@ class DetailsSelection extends HTMLElement { return 'unclassified'; } - createOption(text) { + createOption(value, text) { const option = document.createElement('option'); - option.value = text; + option.value = value; option.text = text; return option; } - populateSelect(id, iterable, autoselect = null) { - for (let option_value of iterable) { - const option = this.createOption(option_value); - if (autoselect === option_value) { + populateSelect(id, iterable, labelFn = null, autoselect = null) { + if (labelFn == null) labelFn = e => e; + let index = 0; + for (let [key, value] of iterable) { + index++; + const label = labelFn(key, value, index); + const option = this.createOption(key, label); + if (autoselect === key) { option.selected = 'selected'; } this.$(id).appendChild(option); @@ -158,9 +309,7 @@ class DetailsSelection extends HTMLElement { categories[cat] = []; } - for (let instance_type of this.data[this.selection.isolate] - .non_empty_instance_types) { - if (IGNORED_INSTANCE_TYPES.has(instance_type)) continue; + for (let instance_type of this.selectedIsolate.non_empty_instance_types) { const category = this.categoryForType(instance_type); categories[category].push(instance_type); } @@ -174,38 +323,65 @@ class DetailsSelection extends HTMLElement { } unselectCategory(category) { - for (let checkbox of this.shadowRoot.querySelectorAll( - 'input[name=' + category + 'Checkbox]')) { - checkbox.checked = false; - } + this.querySelectorAll('input[name=' + category + 'Checkbox]') + .forEach(checkbox => checkbox.checked = false); this.notifySelectionChanged(); } selectCategory(category) { - for (let checkbox of this.shadowRoot.querySelectorAll( - 'input[name=' + category + 'Checkbox]')) { - checkbox.checked = true; - } + this.querySelectorAll('input[name=' + category + 'Checkbox]') + .forEach(checkbox => checkbox.checked = true); this.notifySelectionChanged(); } createCheckBox(instance_type, category) { const div = document.createElement('div'); - div.classList.add('boxDiv'); + div.classList.add('instanceTypeSelectBox'); const input = document.createElement('input'); div.appendChild(input); input.type = 'checkbox'; input.name = category + 'Checkbox'; input.checked = 'checked'; input.id = instance_type + 'Checkbox'; + input.instance_type = instance_type; input.value = instance_type; input.addEventListener('change', e => this.notifySelectionChanged(e)); const label = document.createElement('label'); div.appendChild(label); label.innerText = instance_type; label.htmlFor = instance_type + 'Checkbox'; + const percentDiv = document.createElement('div'); + percentDiv.className = 'percentBackground'; + div.appendChild(percentDiv); return div; } + + exportCurrentSelection(e) { + const data = []; + const selected_data = + this.selectedIsolate.gcs[this.selection.gc][this.selection.data_set] + .instance_type_data; + Object.values(this.selection.categories).forEach(instance_types => { + instance_types.forEach(instance_type => { + data.push([instance_type, selected_data[instance_type].overall / KB]); + }); + }); + const createInlineContent = arrayOfRows => { + const content = arrayOfRows.reduce( + (accu, rowAsArray) => {return accu + `${rowAsArray.join(',')}\n`}, + ''); + return `data:text/csv;charset=utf-8,${content}`; + }; + const encodedUri = encodeURI(createInlineContent(data)); + const link = document.createElement('a'); + link.setAttribute('href', encodedUri); + link.setAttribute( + 'download', + `heap_objects_data_${this.selection.isolate}_${this.selection.gc}.csv`); + this.shadowRoot.appendChild(link); + link.click(); + this.shadowRoot.removeChild(link); + } } customElements.define('details-selection', DetailsSelection); diff --git a/deps/v8/tools/heap-stats/global-timeline.js b/deps/v8/tools/heap-stats/global-timeline.js index 0533f214322..a32cf59135a 100644 --- a/deps/v8/tools/heap-stats/global-timeline.js +++ b/deps/v8/tools/heap-stats/global-timeline.js @@ -4,9 +4,6 @@ 'use strict'; -const KB = 1024; -const MB = KB * KB; - const global_timeline_template = document.currentScript.ownerDocument.querySelector( '#global-timeline-template'); @@ -70,7 +67,7 @@ class GlobalTimeline extends HTMLElement { const gc_data = isolate_data.gcs[gc_key]; const data_set = gc_data[this.selection.data_set].instance_type_data; const data = []; - data.push(gc_data.time); + data.push(gc_data.time * kMillis2Seconds); Object.values(this.selection.categories).forEach(instance_types => { data.push( instance_types @@ -86,7 +83,6 @@ class GlobalTimeline extends HTMLElement { } getInstanceTypeData() { - const categories = Object.keys(this.selection.categories); const instance_types = Object.values(this.selection.categories) .reduce((accu, current) => accu.concat(current), []); @@ -97,7 +93,7 @@ class GlobalTimeline extends HTMLElement { const gc_data = isolate_data.gcs[gc_key]; const data_set = gc_data[this.selection.data_set].instance_type_data; const data = []; - data.push(gc_data.time); + data.push(gc_data.time * kMillis2Seconds); instance_types.forEach(instance_type => { data.push(data_set[instance_type].overall / KB); }); @@ -117,10 +113,14 @@ class GlobalTimeline extends HTMLElement { const options = { isStacked: true, hAxis: { - title: 'Time [ms]', + format: '###.##s', + title: 'Time [s]', + }, + vAxis: { + format: '#,###KB', + title: 'Memory consumption [KBytes]' }, - vAxis: {title: 'Memory consumption [KBytes]'}, - chartArea: {width: '85%', height: '70%'}, + chartArea: {left:100, width: '85%', height: '70%'}, legend: {position: 'top', maxLines: '1'}, pointsVisible: true, pointSize: 5, diff --git a/deps/v8/tools/heap-stats/helper.js b/deps/v8/tools/heap-stats/helper.js new file mode 100644 index 00000000000..00f68f9d62a --- /dev/null +++ b/deps/v8/tools/heap-stats/helper.js @@ -0,0 +1,23 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +const KB = 1024; +const MB = KB * KB; +const GB = MB * KB; +const kMillis2Seconds = 1 / 1000; + +function formatBytes(bytes) { + const units = ['B', 'KiB', 'MiB', 'GiB']; + const divisor = 1024; + let index = 0; + while (index < units.length && bytes >= divisor) { + index++; + bytes /= divisor; + } + return bytes.toFixed(2) + units[index]; +} + +function formatSeconds(millis) { + return (millis * kMillis2Seconds).toFixed(2) + 's'; +} diff --git a/deps/v8/tools/heap-stats/histogram-viewer.html b/deps/v8/tools/heap-stats/histogram-viewer.html new file mode 100644 index 00000000000..93fe9809780 --- /dev/null +++ b/deps/v8/tools/heap-stats/histogram-viewer.html @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/deps/v8/tools/heap-stats/histogram-viewer.js b/deps/v8/tools/heap-stats/histogram-viewer.js new file mode 100644 index 00000000000..d252f4cb1b7 --- /dev/null +++ b/deps/v8/tools/heap-stats/histogram-viewer.js @@ -0,0 +1,167 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +'use strict'; + +const histogram_viewer_template = + document.currentScript.ownerDocument.querySelector( + '#histogram-viewer-template'); + +class HistogramViewer extends HTMLElement { + constructor() { + super(); + const shadowRoot = this.attachShadow({mode: 'open'}); + shadowRoot.appendChild(histogram_viewer_template.content.cloneNode(true)); + } + + $(id) { + return this.shadowRoot.querySelector(id); + } + + set data(value) { + this._data = value; + this.stateChanged(); + } + + get data() { + return this._data; + } + + set selection(value) { + this._selection = value; + this.stateChanged(); + } + + get selection() { + return this._selection; + } + + isValid() { + return this.data && this.selection; + } + + hide() { + this.$('#container').style.display = 'none'; + } + + show() { + this.$('#container').style.display = 'block'; + } + + stateChanged() { + if (this.isValid()) { + const overall_bytes = (this.selection.merge_categories) ? + this.getPropertyForCategory('overall') : + this.getPropertyForInstanceTypes('overall'); + this.$('#overall').innerHTML = `Overall: ${overall_bytes / KB} KB`; + this.drawChart(); + } else { + this.hide(); + } + } + + get selectedData() { + console.assert(this.data, 'invalid data'); + console.assert(this.selection, 'invalid selection'); + return this.data[this.selection.isolate] + .gcs[this.selection.gc][this.selection.data_set]; + } + + get selectedInstanceTypes() { + console.assert(this.selection, 'invalid selection'); + return Object.values(this.selection.categories) + .reduce((accu, current) => accu.concat(current), []); + } + + getPropertyForCategory(property) { + return Object.values(this.selection.categories) + .reduce( + (outer_accu, instance_types) => outer_accu + + instance_types.reduce( + (inner_accu, instance_type) => inner_accu + + this.selectedData + .instance_type_data[instance_type][property], + 0), + 0); + } + + getPropertyForInstanceTypes(property) { + return this.selectedInstanceTypes.reduce( + (accu, instance_type) => accu + + this.selectedData.instance_type_data[instance_type][property], + 0); + } + + formatBytes(bytes) { + const units = ['B', 'KiB', 'MiB']; + const divisor = 1024; + let index = 0; + while (index < units.length && bytes >= divisor) { + index++; + bytes /= divisor; + } + return bytes + units[index]; + } + + getCategoryData() { + const labels = [ + 'Bucket', + ...Object.keys(this.selection.categories) + .map(k => this.selection.category_names.get(k)) + ]; + const data = this.selectedData.bucket_sizes.map( + (bucket_size, index) => + [`<${this.formatBytes(bucket_size)}`, + ...Object.values(this.selection.categories) + .map( + instance_types => + instance_types + .map( + instance_type => + this.selectedData + .instance_type_data[instance_type] + .histogram[index]) + .reduce((accu, current) => accu + current, 0))]); + // Adjust last histogram bucket label. + data[data.length - 1][0] = 'rest'; + return [labels, ...data]; + } + + getInstanceTypeData() { + const instance_types = this.selectedInstanceTypes; + const labels = ['Bucket', ...instance_types]; + const data = this.selectedData.bucket_sizes.map( + (bucket_size, index) => + [`<${bucket_size}`, + ...instance_types.map( + instance_type => + this.selectedData.instance_type_data[instance_type] + .histogram[index])]); + // Adjust last histogram bucket label. + data[data.length - 1][0] = 'rest'; + return [labels, ...data]; + } + + drawChart() { + const chart_data = (this.selection.merge_categories) ? + this.getCategoryData() : + this.getInstanceTypeData(); + const data = google.visualization.arrayToDataTable(chart_data); + const options = { + legend: {position: 'top', maxLines: '1'}, + chartArea: {width: '85%', height: '85%'}, + bar: {groupWidth: '80%'}, + hAxis: { + title: 'Count', + minValue: 0 + }, + explorer: {}, + }; + const chart = new google.visualization.BarChart(this.$('#chart')); + this.show(); + chart.draw(data, options); + } +} + +customElements.define('histogram-viewer', HistogramViewer); diff --git a/deps/v8/tools/heap-stats/index.html b/deps/v8/tools/heap-stats/index.html index 3c2e62b6d0b..648a38c798b 100644 --- a/deps/v8/tools/heap-stats/index.html +++ b/deps/v8/tools/heap-stats/index.html @@ -8,15 +8,22 @@ V8 Heap Statistics - - + + + + + + - - -

V8 Heap Statistics

+ + + + + +

Visualize object statistics that have been gathered using

    -
  • --trace-gc-object-stats on V8
  • +
  • --trace-gc-object-stats on V8
  • Chrome's tracing infrastructure collecting data for the category - v8.gc_stats. The trace file needs to be unpacked (e.g. using - gunzip). + v8.gc_stats.
+

+ Note that you only get a data point on major GCs. You can enforce this by + using the --gc-global flag. +

Note that the visualizer needs to run on a web server due to HTML imports requiring CORS.

- - - diff --git a/deps/v8/tools/heap-stats/model.js b/deps/v8/tools/heap-stats/model.js new file mode 100644 index 00000000000..cd6e1e514ea --- /dev/null +++ b/deps/v8/tools/heap-stats/model.js @@ -0,0 +1,105 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +'use strict'; + +class Isolate { + constructor(address) { + this.address = address; + this.start = null; + this.end = null; + this.samples = Object.create(null); + this.non_empty_instance_types = new Set(); + this.gcs = Object.create(null); + this.zonetags = []; + this.samples = {zone: {}}; + this.data_sets = new Set(); + this.peakMemory = 0; + // Maps instance_types to their max memory consumption over all gcs. + this.instanceTypePeakMemory = Object.create(null); + // Peak memory consumed by any single instance type. + this.singleInstanceTypePeakMemory = 0; + } + + finalize() { + Object.values(this.gcs).forEach(gc => this.finalizeGC(gc)); + this.sortInstanceTypePeakMemory(); + } + + getLabel() { + let label = `${this.address}: gc=#${Object.keys(this.gcs).length}`; + label += ` peak=${formatBytes(this.peakMemory)}` + return label; + } + + finalizeGC(gc_data) { + this.data_sets.forEach(key => this.finalizeDataSet(gc_data[key])); + if (!('live' in gc_data)) return; + let liveData = gc_data.live; + this.peakMemory = Math.max(this.peakMemory, liveData.overall); + let data = liveData.instance_type_data; + for (let name in data) { + let prev = this.instanceTypePeakMemory[name] || 0; + this.instanceTypePeakMemory[name] = Math.max(prev, data[name].overall); + } + } + + finalizeDataSet(data_set) { + // Create a ranked instance type array that sorts instance types by + // memory size (overall). + let data = data_set.instance_type_data; + let ranked_instance_types = + [...data_set.non_empty_instance_types].sort((a, b) => { + return data[a].overall - data[b].overall; + }); + // Reassemble the instance_type list sorted by size. + let sorted_data = Object.create(null); + let max = 0; + ranked_instance_types.forEach((name) => { + let entry = sorted_data[name] = data[name]; + max = Math.max(max, entry.overall); + }); + data_set.instance_type_data = data; + data_set.singleInstancePeakMemory = max; + + Object.entries(data_set.instance_type_data).forEach(([name, entry]) => { + this.checkHistogram( + name, entry, data_set.bucket_sizes, 'histogram', ' overall'); + this.checkHistogram( + name, entry, data_set.bucket_sizes, 'over_allocated_histogram', + ' over_allocated'); + }); + } + + // Check that a lower bound for histogram memory does not exceed the + // overall counter. + checkHistogram(type, entry, bucket_sizes, histogram, overallProperty) { + let sum = 0; + for (let i = 1; i < entry[histogram].length; i++) { + sum += entry[histogram][i] * bucket_sizes[i - 1]; + } + const overall = entry[overallProperty]; + if (sum >= overall) { + console.error( + `${type}: sum('${histogram}') > overall (${sum} > ${overall})`); + } + } + + sortInstanceTypePeakMemory() { + let entries = Object.entries(this.instanceTypePeakMemory); + entries.sort((a, b) => {return b[1] - a[1]}); + this.instanceTypePeakMemory = Object.create(null); + let max = 0; + for (let [key, value] of entries) { + this.instanceTypePeakMemory[key] = value; + max = Math.max(max, value); + } + this.singleInstanceTypePeakMemory = max; + } + + getInstanceTypePeakMemory(type) { + if (!(type in this.instanceTypePeakMemory)) return 0; + return this.instanceTypePeakMemory[type]; + } +} diff --git a/deps/v8/tools/heap-stats/trace-file-reader.html b/deps/v8/tools/heap-stats/trace-file-reader.html index 98c2ef0c606..649d32bb406 100644 --- a/deps/v8/tools/heap-stats/trace-file-reader.html +++ b/deps/v8/tools/heap-stats/trace-file-reader.html @@ -10,17 +10,77 @@ text-align: center; border: solid 1px #000000; border-radius: 5px; + cursor: pointer; + transition: all 0.5s ease-in-out; +} + +#fileReader.done { + height: 20px; + line-height: 20px; +} + +#fileReader:hover { + background-color: #e0edfe ; +} + +.loading #fileReader { + cursor: wait; } #fileReader > input { display: none; } + + +#loader { + display: none; +} + +.loading #loader { + display: block; + position: fixed; + top: 0px; + left: 0px; + width: 100%; + height: 100%; + background-color: rgba(255, 255, 255, 0.5); +} + +#spinner { + position: absolute; + width: 100px; + height: 100px; + top: 40%; + left: 50%; + margin-left: -50px; + border: 30px solid #000; + border-top: 30px solid #36E; + border-radius: 50%; + animation: spin 1s ease-in-out infinite; +} + +@keyframes spin { + 0% { + transform: rotate(0deg); + }; + 100% { + transform: rotate(360deg); + }; +} -
- - Drag and drop a trace file into this area, or click to choose from disk. - - -
+ +
+
+ + Drag and drop a trace file into this area, or click to choose from disk. + + +
+
+
+
+
- + + + diff --git a/deps/v8/tools/heap-stats/trace-file-reader.js b/deps/v8/tools/heap-stats/trace-file-reader.js index 59825fe514e..4ad1269835b 100644 --- a/deps/v8/tools/heap-stats/trace-file-reader.js +++ b/deps/v8/tools/heap-stats/trace-file-reader.js @@ -17,16 +17,25 @@ class TraceFileReader extends HTMLElement { this.addEventListener('dragover', e => this.handleDragOver(e)); this.addEventListener('drop', e => this.handleChange(e)); this.$('#file').addEventListener('change', e => this.handleChange(e)); + this.$('#fileReader').addEventListener('keydown', e => this.handleKeyEvent(e)); } $(id) { return this.shadowRoot.querySelector(id); } + get section() { + return this.$('#fileReaderSection'); + } + updateLabel(text) { this.$('#label').innerText = text; } + handleKeyEvent(event) { + if (event.key == "Enter") this.handleClick(event); + } + handleClick(event) { this.$('#file').click(); } @@ -42,56 +51,71 @@ class TraceFileReader extends HTMLElement { event.preventDefault(); } - connectedCallback() {} + connectedCallback() { + this.$('#fileReader').focus(); + } readFile(file) { if (!file) { this.updateLabel('Failed to load file.'); return; } + this.$('#fileReader').blur(); - const result = new FileReader(); - result.onload = (e) => { - let contents = e.target.result.split('\n'); - const return_data = (e.target.result.includes('V8.GC_Objects_Stats')) ? - this.createModelFromChromeTraceFile(contents) : - this.createModelFromV8TraceFile(contents); - this.updateLabel('Finished loading \'' + file.name + '\'.'); - this.dispatchEvent(new CustomEvent( - 'change', {bubbles: true, composed: true, detail: return_data})); - }; - result.readAsText(file); + this.section.className = 'loading'; + const reader = new FileReader(); + + if (['application/gzip', 'application/x-gzip'].includes(file.type)) { + reader.onload = (e) => { + try { + const textResult = pako.inflate(e.target.result, {to: 'string'}); + this.processRawText(file, textResult); + this.section.className = 'success'; + this.$('#fileReader').classList.add('done'); + } catch (err) { + console.error(err); + this.section.className = 'failure'; + } + }; + // Delay the loading a bit to allow for CSS animations to happen. + setTimeout(() => reader.readAsArrayBuffer(file), 10); + } else { + reader.onload = (e) => this.processRawText(file, e.target.result); + setTimeout(() => reader.readAsText(file), 10); + } + } + + processRawText(file, result) { + let contents = result.split('\n'); + const return_data = (result.includes('V8.GC_Objects_Stats')) ? + this.createModelFromChromeTraceFile(contents) : + this.createModelFromV8TraceFile(contents); + this.extendAndSanitizeModel(return_data); + this.updateLabel('Finished loading \'' + file.name + '\'.'); + this.dispatchEvent(new CustomEvent( + 'change', {bubbles: true, composed: true, detail: return_data})); } - createOrUpdateEntryIfNeeded(data, keys, entry) { + createOrUpdateEntryIfNeeded(data, entry) { console.assert(entry.isolate, 'entry should have an isolate'); - if (!(entry.isolate in keys)) { - keys[entry.isolate] = new Set(); - } if (!(entry.isolate in data)) { - data[entry.isolate] = { - non_empty_instance_types: new Set(), - gcs: {}, - zonetags: [], - samples: {zone: {}}, - start: null, - end: null, - data_sets: new Set() - }; + data[entry.isolate] = new Isolate(entry.isolate); } const data_object = data[entry.isolate]; if (('id' in entry) && !(entry.id in data_object.gcs)) { data_object.gcs[entry.id] = {non_empty_instance_types: new Set()}; } if ('time' in entry) { - if (data_object.end === null || data_object.end < entry.time) + if (data_object.end === null || data_object.end < entry.time) { data_object.end = entry.time; - if (data_object.start === null || data_object.start > entry.time) + } + if (data_object.start === null || data_object.start > entry.time) { data_object.start = entry.time; + } } } - createDatasetIfNeeded(data, keys, entry, data_set) { + createDatasetIfNeeded(data, entry, data_set) { if (!(data_set in data[entry.isolate].gcs[entry.id])) { data[entry.isolate].gcs[entry.id][data_set] = { instance_type_data: {}, @@ -102,9 +126,7 @@ class TraceFileReader extends HTMLElement { } } - addInstanceTypeData( - data, keys, isolate, gc_id, data_set, instance_type, entry) { - keys[isolate].add(data_set); + addInstanceTypeData(data, isolate, gc_id, data_set, instance_type, entry) { data[isolate].gcs[gc_id][data_set].instance_type_data[instance_type] = { overall: entry.overall, count: entry.count, @@ -121,117 +143,75 @@ class TraceFileReader extends HTMLElement { } } - extendAndSanitizeModel(data, keys) { + extendAndSanitizeModel(data) { const checkNonNegativeProperty = (obj, property) => { console.assert(obj[property] >= 0, 'negative property', obj, property); }; - for (const isolate of Object.keys(data)) { - for (const gc of Object.keys(data[isolate].gcs)) { - for (const data_set_key of keys[isolate]) { - const data_set = data[isolate].gcs[gc][data_set_key]; - // 1. Create a ranked instance type array that sorts instance - // types by memory size (overall). - data_set.ranked_instance_types = - [...data_set.non_empty_instance_types].sort(function(a, b) { - if (data_set.instance_type_data[a].overall > - data_set.instance_type_data[b].overall) { - return 1; - } else if ( - data_set.instance_type_data[a].overall < - data_set.instance_type_data[b].overall) { - return -1; - } - return 0; - }); - - let known_count = 0; - let known_overall = 0; - let known_histogram = - Array( - data_set.instance_type_data.FIXED_ARRAY_TYPE.histogram.length) - .fill(0); - for (const instance_type in data_set.instance_type_data) { - if (!instance_type.startsWith('*FIXED_ARRAY')) continue; - const subtype = data_set.instance_type_data[instance_type]; - known_count += subtype.count; - known_overall += subtype.count; - for (let i = 0; i < subtype.histogram.length; i++) { - known_histogram[i] += subtype.histogram[i]; - } - } - - const fixed_array_data = data_set.instance_type_data.FIXED_ARRAY_TYPE; - const unknown_entry = { - count: fixed_array_data.count - known_count, - overall: fixed_array_data.overall - known_overall, - histogram: fixed_array_data.histogram.map( - (value, index) => value - known_histogram[index]) - }; - - // Check for non-negative values. - checkNonNegativeProperty(unknown_entry, 'count'); - checkNonNegativeProperty(unknown_entry, 'overall'); - for (let i = 0; i < unknown_entry.histogram.length; i++) { - checkNonNegativeProperty(unknown_entry.histogram, i); - } - - data_set.instance_type_data['*FIXED_ARRAY_UNKNOWN_SUB_TYPE'] = - unknown_entry; - data_set.non_empty_instance_types.add( - '*FIXED_ARRAY_UNKNOWN_SUB_TYPE'); - } - } - } + Object.values(data).forEach(isolate => isolate.finalize()); } createModelFromChromeTraceFile(contents) { - console.log('Processing log as chrome trace file.'); - const data = Object.create(null); // Final data container. - const keys = Object.create(null); // Collecting 'keys' per isolate. + // Trace files support two formats. + // {traceEvents: [ data ]} + const kObjectTraceFile = { + name: 'object', + endToken: ']}', + getDataArray: o => o.traceEvents + }; + // [ data ] + const kArrayTraceFile = { + name: 'array', + endToken: ']', + getDataArray: o => o + }; + const handler = + (contents[0][0] === '{') ? kObjectTraceFile : kArrayTraceFile; + console.log(`Processing log as chrome trace file (${handler.name}).`); // Pop last line in log as it might be broken. contents.pop(); // Remove trailing comma. contents[contents.length - 1] = contents[contents.length - 1].slice(0, -1); // Terminate JSON. - const sanitized_contents = [...contents, ']}'].join(''); + const sanitized_contents = [...contents, handler.endToken].join(''); + + const data = Object.create(null); // Final data container. try { const raw_data = JSON.parse(sanitized_contents); - const objects_stats_data = - raw_data.traceEvents.filter(e => e.name == 'V8.GC_Objects_Stats'); - objects_stats_data.forEach(trace_data => { - const actual_data = trace_data.args; - const data_sets = new Set(Object.keys(actual_data)); - Object.keys(actual_data).forEach(data_set => { - const string_entry = actual_data[data_set]; - try { - const entry = JSON.parse(string_entry); - this.createOrUpdateEntryIfNeeded(data, keys, entry); - this.createDatasetIfNeeded(data, keys, entry, data_set); - const isolate = entry.isolate; - const time = entry.time; - const gc_id = entry.id; - data[isolate].gcs[gc_id].time = time; - data[isolate].gcs[gc_id][data_set].bucket_sizes = - entry.bucket_sizes; - for (let [instance_type, value] of Object.entries( - entry.type_data)) { - // Trace file format uses markers that do not have actual - // properties. - if (!('overall' in value)) continue; - this.addInstanceTypeData( - data, keys, isolate, gc_id, data_set, instance_type, value); - } - } catch (e) { - console.log('Unable to parse data set entry', e); - } - }); - }); + const raw_array_data = handler.getDataArray(raw_data); + raw_array_data.filter(e => e.name === 'V8.GC_Objects_Stats') + .forEach(trace_data => { + const actual_data = trace_data.args; + const data_sets = new Set(Object.keys(actual_data)); + Object.keys(actual_data).forEach(data_set => { + const string_entry = actual_data[data_set]; + try { + const entry = JSON.parse(string_entry); + this.createOrUpdateEntryIfNeeded(data, entry); + this.createDatasetIfNeeded(data, entry, data_set); + const isolate = entry.isolate; + const time = entry.time; + const gc_id = entry.id; + data[isolate].gcs[gc_id].time = time; + data[isolate].gcs[gc_id][data_set].bucket_sizes = + entry.bucket_sizes; + for (let [instance_type, value] of Object.entries( + entry.type_data)) { + // Trace file format uses markers that do not have actual + // properties. + if (!('overall' in value)) continue; + this.addInstanceTypeData( + data, isolate, gc_id, data_set, instance_type, value); + } + } catch (e) { + console.log('Unable to parse data set entry', e); + } + }); + }); } catch (e) { - console.log('Unable to parse chrome trace file.', e); + console.error('Unable to parse chrome trace file.', e); } - this.extendAndSanitizeModel(data, keys); return data; } @@ -249,14 +229,12 @@ class TraceFileReader extends HTMLElement { }); const data = Object.create(null); // Final data container. - const keys = Object.create(null); // Collecting 'keys' per isolate. - for (var entry of contents) { if (entry === null || entry.type === undefined) { continue; } if (entry.type === 'zone') { - this.createOrUpdateEntryIfNeeded(data, keys, entry); + this.createOrUpdateEntryIfNeeded(data, entry); const stacktrace = ('stacktrace' in entry) ? entry.stacktrace : []; data[entry.isolate].samples.zone[entry.time] = { allocated: entry.allocated, @@ -265,26 +243,26 @@ class TraceFileReader extends HTMLElement { }; } else if ( entry.type === 'zonecreation' || entry.type === 'zonedestruction') { - this.createOrUpdateEntryIfNeeded(data, keys, entry); + this.createOrUpdateEntryIfNeeded(data, entry); data[entry.isolate].zonetags.push( Object.assign({opening: entry.type === 'zonecreation'}, entry)); } else if (entry.type === 'gc_descriptor') { - this.createOrUpdateEntryIfNeeded(data, keys, entry); + this.createOrUpdateEntryIfNeeded(data, entry); data[entry.isolate].gcs[entry.id].time = entry.time; if ('zone' in entry) data[entry.isolate].gcs[entry.id].malloced = entry.zone; } else if (entry.type === 'instance_type_data') { if (entry.id in data[entry.isolate].gcs) { - this.createOrUpdateEntryIfNeeded(data, keys, entry); - this.createDatasetIfNeeded(data, keys, entry, entry.key); + this.createOrUpdateEntryIfNeeded(data, entry); + this.createDatasetIfNeeded(data, entry, entry.key); this.addInstanceTypeData( - data, keys, entry.isolate, entry.id, entry.key, + data, entry.isolate, entry.id, entry.key, entry.instance_type_name, entry); } } else if (entry.type === 'bucket_sizes') { if (entry.id in data[entry.isolate].gcs) { - this.createOrUpdateEntryIfNeeded(data, keys, entry); - this.createDatasetIfNeeded(data, keys, entry, entry.key); + this.createOrUpdateEntryIfNeeded(data, entry); + this.createDatasetIfNeeded(data, entry, entry.key); data[entry.isolate].gcs[entry.id][entry.key].bucket_sizes = entry.sizes; } @@ -292,7 +270,6 @@ class TraceFileReader extends HTMLElement { console.log('Unknown entry type: ' + entry.type); } } - this.extendAndSanitizeModel(data, keys); return data; } } diff --git a/deps/v8/tools/ic-processor.js b/deps/v8/tools/ic-processor.js index 93f40b38a08..9a78d16943f 100644 --- a/deps/v8/tools/ic-processor.js +++ b/deps/v8/tools/ic-processor.js @@ -56,6 +56,9 @@ function IcProcessor() { 'KeyedStoreIC': { parsers : propertyICParser, processor: this.processPropertyIC.bind(this, "KeyedStoreIC") }, + 'StoreInArrayLiteralIC': { + parsers : propertyICParser, + processor: this.processPropertyIC.bind(this, "StoreInArrayLiteralIC") }, }); this.deserializedEntriesNames_ = []; this.profile_ = new Profile(); @@ -64,6 +67,7 @@ function IcProcessor() { this.StoreIC = 0; this.KeyedLoadIC = 0; this.KeyedStoreIC = 0; + this.StoreInArrayLiteralIC = 0; } inherits(IcProcessor, LogReader); @@ -104,6 +108,7 @@ IcProcessor.prototype.processLogFile = function(fileName) { print("Store: " + this.StoreIC); print("KeyedLoad: " + this.KeyedLoadIC); print("KeyedStore: " + this.KeyedStoreIC); + print("StoreInArrayLiteral: " + this.StoreInArrayLiteralIC); }; IcProcessor.prototype.addEntry = function(entry) { diff --git a/deps/v8/tools/isolate_driver.py b/deps/v8/tools/isolate_driver.py deleted file mode 100644 index a6bcfbf71f9..00000000000 --- a/deps/v8/tools/isolate_driver.py +++ /dev/null @@ -1,340 +0,0 @@ -#!/usr/bin/env python -# Copyright 2015 the V8 project authors. All rights reserved. -# Copyright 2014 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -"""Adaptor script called through build/isolate.gypi. - -Creates a wrapping .isolate which 'includes' the original one, that can be -consumed by tools/swarming_client/isolate.py. Path variables are determined -based on the current working directory. The relative_cwd in the .isolated file -is determined based on the .isolate file that declare the 'command' variable to -be used so the wrapping .isolate doesn't affect this value. - -This script loads build.ninja and processes it to determine all the executables -referenced by the isolated target. It adds them in the wrapping .isolate file. - -WARNING: The target to use for build.ninja analysis is the base name of the -.isolate file plus '_run'. For example, 'foo_test.isolate' would have the target -'foo_test_run' analysed. -""" - -import errno -import glob -import json -import logging -import os -import posixpath -import StringIO -import subprocess -import sys -import time - -TOOLS_DIR = os.path.dirname(os.path.abspath(__file__)) -SWARMING_CLIENT_DIR = os.path.join(TOOLS_DIR, 'swarming_client') -SRC_DIR = os.path.dirname(TOOLS_DIR) - -sys.path.insert(0, SWARMING_CLIENT_DIR) - -import isolate_format - - -def load_ninja_recursively(build_dir, ninja_path, build_steps): - """Crudely extracts all the subninja and build referenced in ninja_path. - - In particular, it ignores rule and variable declarations. The goal is to be - performant (well, as much as python can be performant) which is currently in - the <200ms range for a complete chromium tree. As such the code is laid out - for performance instead of readability. - """ - logging.debug('Loading %s', ninja_path) - try: - with open(os.path.join(build_dir, ninja_path), 'rb') as f: - line = None - merge_line = '' - subninja = [] - for line in f: - line = line.rstrip() - if not line: - continue - - if line[-1] == '$': - # The next line needs to be merged in. - merge_line += line[:-1] - continue - - if merge_line: - line = merge_line + line - merge_line = '' - - statement = line[:line.find(' ')] - if statement == 'build': - # Save the dependency list as a raw string. Only the lines needed will - # be processed with raw_build_to_deps(). This saves a good 70ms of - # processing time. - build_target, dependencies = line[6:].split(': ', 1) - # Interestingly, trying to be smart and only saving the build steps - # with the intended extensions ('', '.stamp', '.so') slows down - # parsing even if 90% of the build rules can be skipped. - # On Windows, a single step may generate two target, so split items - # accordingly. It has only been seen for .exe/.exe.pdb combos. - for i in build_target.strip().split(): - build_steps[i] = dependencies - elif statement == 'subninja': - subninja.append(line[9:]) - except IOError: - print >> sys.stderr, 'Failed to open %s' % ninja_path - raise - - total = 1 - for rel_path in subninja: - try: - # Load each of the files referenced. - # TODO(maruel): Skip the files known to not be needed. It saves an aweful - # lot of processing time. - total += load_ninja_recursively(build_dir, rel_path, build_steps) - except IOError: - print >> sys.stderr, '... as referenced by %s' % ninja_path - raise - return total - - -def load_ninja(build_dir): - """Loads the tree of .ninja files in build_dir.""" - build_steps = {} - total = load_ninja_recursively(build_dir, 'build.ninja', build_steps) - logging.info('Loaded %d ninja files, %d build steps', total, len(build_steps)) - return build_steps - - -def using_blacklist(item): - """Returns True if an item should be analyzed. - - Ignores many rules that are assumed to not depend on a dynamic library. If - the assumption doesn't hold true anymore for a file format, remove it from - this list. This is simply an optimization. - """ - # *.json is ignored below, *.isolated.gen.json is an exception, it is produced - # by isolate_driver.py in 'test_isolation_mode==prepare'. - if item.endswith('.isolated.gen.json'): - return True - IGNORED = ( - '.a', '.cc', '.css', '.dat', '.def', '.frag', '.h', '.html', '.isolate', - '.js', '.json', '.manifest', '.o', '.obj', '.pak', '.png', '.pdb', '.py', - '.strings', '.test', '.txt', '.vert', - ) - # ninja files use native path format. - ext = os.path.splitext(item)[1] - if ext in IGNORED: - return False - # Special case Windows, keep .dll.lib but discard .lib. - if item.endswith('.dll.lib'): - return True - if ext == '.lib': - return False - return item not in ('', '|', '||') - - -def raw_build_to_deps(item): - """Converts a raw ninja build statement into the list of interesting - dependencies. - """ - # TODO(maruel): Use a whitelist instead? .stamp, .so.TOC, .dylib.TOC, - # .dll.lib, .exe and empty. - # The first item is the build rule, e.g. 'link', 'cxx', 'phony', etc. - return filter(using_blacklist, item.split(' ')[1:]) - - -def collect_deps(target, build_steps, dependencies_added, rules_seen): - """Recursively adds all the interesting dependencies for |target| - into |dependencies_added|. - """ - if rules_seen is None: - rules_seen = set() - if target in rules_seen: - # TODO(maruel): Figure out how it happens. - logging.warning('Circular dependency for %s!', target) - return - rules_seen.add(target) - try: - dependencies = raw_build_to_deps(build_steps[target]) - except KeyError: - logging.info('Failed to find a build step to generate: %s', target) - return - logging.debug('collect_deps(%s) -> %s', target, dependencies) - for dependency in dependencies: - dependencies_added.add(dependency) - collect_deps(dependency, build_steps, dependencies_added, rules_seen) - - -def post_process_deps(build_dir, dependencies): - """Processes the dependency list with OS specific rules.""" - def filter_item(i): - if i.endswith('.so.TOC'): - # Remove only the suffix .TOC, not the .so! - return i[:-4] - if i.endswith('.dylib.TOC'): - # Remove only the suffix .TOC, not the .dylib! - return i[:-4] - if i.endswith('.dll.lib'): - # Remove only the suffix .lib, not the .dll! - return i[:-4] - return i - - def is_exe(i): - # This script is only for adding new binaries that are created as part of - # the component build. - ext = os.path.splitext(i)[1] - # On POSIX, executables have no extension. - if ext not in ('', '.dll', '.dylib', '.exe', '.nexe', '.so'): - return False - if os.path.isabs(i): - # In some rare case, there's dependency set explicitly on files outside - # the checkout. - return False - - # Check for execute access and strip directories. This gets rid of all the - # phony rules. - p = os.path.join(build_dir, i) - return os.access(p, os.X_OK) and not os.path.isdir(p) - - return filter(is_exe, map(filter_item, dependencies)) - - -def create_wrapper(args, isolate_index, isolated_index): - """Creates a wrapper .isolate that add dynamic libs. - - The original .isolate is not modified. - """ - cwd = os.getcwd() - isolate = args[isolate_index] - # The code assumes the .isolate file is always specified path-less in cwd. Fix - # if this assumption doesn't hold true. - assert os.path.basename(isolate) == isolate, isolate - - # This will look like ../out/Debug. This is based against cwd. Note that this - # must equal the value provided as PRODUCT_DIR. - build_dir = os.path.dirname(args[isolated_index]) - - # This will look like chrome/unit_tests.isolate. It is based against SRC_DIR. - # It's used to calculate temp_isolate. - src_isolate = os.path.relpath(os.path.join(cwd, isolate), SRC_DIR) - - # The wrapping .isolate. This will look like - # ../out/Debug/gen/chrome/unit_tests.isolate. - temp_isolate = os.path.join(build_dir, 'gen', src_isolate) - temp_isolate_dir = os.path.dirname(temp_isolate) - - # Relative path between the new and old .isolate file. - isolate_relpath = os.path.relpath( - '.', temp_isolate_dir).replace(os.path.sep, '/') - - # It's a big assumption here that the name of the isolate file matches the - # primary target '_run'. Fix accordingly if this doesn't hold true, e.g. - # complain to maruel@. - target = isolate[:-len('.isolate')] + '_run' - build_steps = load_ninja(build_dir) - binary_deps = set() - collect_deps(target, build_steps, binary_deps, None) - binary_deps = post_process_deps(build_dir, binary_deps) - logging.debug( - 'Binary dependencies:%s', ''.join('\n ' + i for i in binary_deps)) - - # Now do actual wrapping .isolate. - isolate_dict = { - 'includes': [ - posixpath.join(isolate_relpath, isolate), - ], - 'variables': { - # Will look like ['<(PRODUCT_DIR)/lib/flibuser_prefs.so']. - 'files': sorted( - '<(PRODUCT_DIR)/%s' % i.replace(os.path.sep, '/') - for i in binary_deps), - }, - } - # Some .isolate files have the same temp directory and the build system may - # run this script in parallel so make directories safely here. - try: - os.makedirs(temp_isolate_dir) - except OSError as e: - if e.errno != errno.EEXIST: - raise - comment = ( - '# Warning: this file was AUTOGENERATED.\n' - '# DO NO EDIT.\n') - out = StringIO.StringIO() - isolate_format.print_all(comment, isolate_dict, out) - isolate_content = out.getvalue() - with open(temp_isolate, 'wb') as f: - f.write(isolate_content) - logging.info('Added %d dynamic libs', len(binary_deps)) - logging.debug('%s', isolate_content) - args[isolate_index] = temp_isolate - - -def prepare_isolate_call(args, output): - """Gathers all information required to run isolate.py later. - - Dumps it as JSON to |output| file. - """ - with open(output, 'wb') as f: - json.dump({ - 'args': args, - 'dir': os.getcwd(), - 'version': 1, - }, f, indent=2, sort_keys=True) - - -def rebase_directories(args, abs_base): - """Rebases all paths to be relative to abs_base.""" - def replace(index): - args[index] = os.path.relpath(os.path.abspath(args[index]), abs_base) - for i, arg in enumerate(args): - if arg in ['--isolate', '--isolated']: - replace(i + 1) - if arg == '--path-variable': - # Path variables have a triple form: --path-variable NAME . - replace(i + 2) - - -def main(): - logging.basicConfig(level=logging.ERROR, format='%(levelname)7s %(message)s') - args = sys.argv[1:] - mode = args[0] if args else None - isolate = None - isolated = None - for i, arg in enumerate(args): - if arg == '--isolate': - isolate = i + 1 - if arg == '--isolated': - isolated = i + 1 - if isolate is None or isolated is None or not mode: - print >> sys.stderr, 'Internal failure' - return 1 - - # Make sure all paths are relative to the isolate file. This is an - # expectation of the go binaries. In gn, this script is not called - # relative to the isolate file, but relative to the product dir. - new_base = os.path.abspath(os.path.dirname(args[isolate])) - rebase_directories(args, new_base) - assert args[isolate] == os.path.basename(args[isolate]) - os.chdir(new_base) - - create_wrapper(args, isolate, isolated) - - # In 'prepare' mode just collect all required information for postponed - # isolated.py invocation later, store it in *.isolated.gen.json file. - if mode == 'prepare': - prepare_isolate_call(args[1:], args[isolated] + '.gen.json') - return 0 - - swarming_client = os.path.join(SRC_DIR, 'tools', 'swarming_client') - sys.stdout.flush() - result = subprocess.call( - [sys.executable, os.path.join(swarming_client, 'isolate.py')] + args) - return result - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/deps/v8/tools/jsfunfuzz/BUILD.gn b/deps/v8/tools/jsfunfuzz/BUILD.gn new file mode 100644 index 00000000000..3c40460f8db --- /dev/null +++ b/deps/v8/tools/jsfunfuzz/BUILD.gn @@ -0,0 +1,19 @@ +# Copyright 2018 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("../../gni/v8.gni") + +group("v8_jsfunfuzz") { + testonly = true + + data_deps = [ + "../..:d8", + ] + + data = [ + # Grab current directory. This avoids adding logic for checking the + # existence of the jsfunfuzz subdirectory. + "./", + ] +} diff --git a/deps/v8/tools/jsfunfuzz/download_jsfunfuzz.py b/deps/v8/tools/jsfunfuzz/download_jsfunfuzz.py deleted file mode 100644 index 2925213ced5..00000000000 --- a/deps/v8/tools/jsfunfuzz/download_jsfunfuzz.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env python -# Copyright 2016 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import os -import re -import subprocess - -FUZZ_PATH = os.path.dirname(os.path.abspath(__file__)) -SHA1_PATH = os.path.join(FUZZ_PATH, 'jsfunfuzz.tar.gz.sha1') - -if re.search(r'\bjsfunfuzz=1', os.environ.get('GYP_DEFINES', '')): - subprocess.check_call([ - 'download_from_google_storage', - '-b', 'chrome-v8-jsfunfuzz', - '-u', '--no_resume', - '-s', SHA1_PATH, - '--platform=linux*' - ]) diff --git a/deps/v8/tools/jsfunfuzz/jsfunfuzz.gyp b/deps/v8/tools/jsfunfuzz/jsfunfuzz.gyp deleted file mode 100644 index 8938e44538b..00000000000 --- a/deps/v8/tools/jsfunfuzz/jsfunfuzz.gyp +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2016 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -{ - 'conditions': [ - ['test_isolation_mode != "noop"', { - 'targets': [ - { - 'target_name': 'jsfunfuzz_run', - 'type': 'none', - 'dependencies': [ - '../../src/d8.gyp:d8_run', - ], - 'includes': [ - '../../gypfiles/features.gypi', - '../../gypfiles/isolate.gypi', - ], - 'sources': [ - 'jsfunfuzz.isolate', - ], - }, - ], - }], - ], -} diff --git a/deps/v8/tools/jsfunfuzz/jsfunfuzz.isolate b/deps/v8/tools/jsfunfuzz/jsfunfuzz.isolate deleted file mode 100644 index 56cb4a733f3..00000000000 --- a/deps/v8/tools/jsfunfuzz/jsfunfuzz.isolate +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2016 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -{ - 'variables': { - 'command': [ - 'fuzz-harness.sh', - ], - 'files': [ - # Grab current directory. This avoids adding logic for checking the - # existence of the jsfunfuzz subdirectory. - './', - ], - }, - 'includes': [ - '../../src/d8.isolate', - ], -} diff --git a/deps/v8/tools/mb/mb.py b/deps/v8/tools/mb/mb.py index 9a6600225b8..9d6f73b5e8a 100755 --- a/deps/v8/tools/mb/mb.py +++ b/deps/v8/tools/mb/mb.py @@ -4,16 +4,12 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -"""MB - the Meta-Build wrapper around GYP and GN +"""MB - the Meta-Build wrapper around GN. -MB is a wrapper script for GYP and GN that can be used to generate build files +MB is a wrapper script for GN that can be used to generate build files for sets of canned configurations and analyze them. """ -# TODO(thomasanderson): Remove this comment. It is added to -# workaround https://crbug.com/736215 for CL -# https://codereview.chromium.org/2974603002/ - from __future__ import print_function import argparse @@ -22,6 +18,7 @@ import json import os import pipes +import platform import pprint import re import shutil @@ -95,21 +92,17 @@ def AddCommonOptions(subp): help='path to config file ' '(default is %(default)s)') subp.add_argument('-i', '--isolate-map-file', metavar='PATH', - default=self.default_isolate_map, help='path to isolate map file ' - '(default is %(default)s)') + '(default is %(default)s)', + default=[], + action='append', + dest='isolate_map_files') subp.add_argument('-g', '--goma-dir', help='path to goma directory') - subp.add_argument('--gyp-script', metavar='PATH', - default=self.PathJoin('build', 'gyp_chromium'), - help='path to gyp script relative to project root ' - '(default is %(default)s)') subp.add_argument('--android-version-code', - help='Sets GN arg android_default_version_code and ' - 'GYP_DEFINE app_manifest_version_code') + help='Sets GN arg android_default_version_code') subp.add_argument('--android-version-name', - help='Sets GN arg android_default_version_name and ' - 'GYP_DEFINE app_manifest_version_name') + help='Sets GN arg android_default_version_name') subp.add_argument('-n', '--dryrun', action='store_true', help='Do a dry run (i.e., do nothing, just print ' 'the commands that will run)') @@ -190,7 +183,6 @@ def AddCommonOptions(subp): ' --test-launcher-retry-limit=0' '\n' ) - AddCommonOptions(subp) subp.add_argument('-j', '--jobs', dest='jobs', type=int, help='Number of jobs to pass to ninja') @@ -202,6 +194,14 @@ def AddCommonOptions(subp): ' This can be either a regular path or a ' 'GN-style source-relative path like ' '//out/Default.')) + subp.add_argument('-s', '--swarmed', action='store_true', + help='Run under swarming with the default dimensions') + subp.add_argument('-d', '--dimension', default=[], action='append', nargs=2, + dest='dimensions', metavar='FOO bar', + help='dimension to filter on') + subp.add_argument('--no-default-dimensions', action='store_false', + dest='default_dimensions', default=True, + help='Do not automatically add dimensions to the task') subp.add_argument('target', nargs=1, help='ninja target to build and run') subp.add_argument('extra_args', nargs='*', @@ -217,26 +217,6 @@ def AddCommonOptions(subp): help='path to config file (default is %(default)s)') subp.set_defaults(func=self.CmdValidate) - subp = subps.add_parser('audit', - help='Audit the config file to track progress') - subp.add_argument('-f', '--config-file', metavar='PATH', - default=self.default_config, - help='path to config file (default is %(default)s)') - subp.add_argument('-i', '--internal', action='store_true', - help='check internal masters also') - subp.add_argument('-m', '--master', action='append', - help='master to audit (default is all non-internal ' - 'masters in file)') - subp.add_argument('-u', '--url-template', action='store', - default='https://build.chromium.org/p/' - '{master}/json/builders', - help='URL scheme for JSON APIs to buildbot ' - '(default: %(default)s) ') - subp.add_argument('-c', '--check-compile', action='store_true', - help='check whether tbd and master-only bots actually' - ' do compiles') - subp.set_defaults(func=self.CmdAudit) - subp = subps.add_parser('gerrit-buildbucket-config', help='Print buildbucket.config for gerrit ' '(see MB user guide)') @@ -253,10 +233,6 @@ def AddCommonOptions(subp): self.args = parser.parse_args(argv) - # TODO(machenbach): This prepares passing swarming targets to isolate on the - # infra side. - self.args.swarming_targets_file = None - def DumpInputFiles(self): def DumpContentsOfFilePassedTo(arg_name, path): @@ -276,11 +252,7 @@ def DumpContentsOfFilePassedTo(arg_name, path): def CmdAnalyze(self): vals = self.Lookup() - self.ClobberIfNeeded(vals) - if vals['type'] == 'gn': - return self.RunGNAnalyze(vals) - else: - return self.RunGYPAnalyze(vals) + return self.RunGNAnalyze(vals) def CmdExport(self): self.ReadConfigFile() @@ -312,11 +284,7 @@ def CmdExport(self): def CmdGen(self): vals = self.Lookup() - self.ClobberIfNeeded(vals) - if vals['type'] == 'gn': - return self.RunGNGen(vals) - else: - return self.RunGYPGen(vals) + return self.RunGNGen(vals) def CmdHelp(self): if self.args.subcommand: @@ -328,21 +296,14 @@ def CmdIsolate(self): vals = self.GetConfig() if not vals: return 1 - - if vals['type'] == 'gn': - return self.RunGNIsolate() - else: - return self.Build('%s_run' % self.args.target[0]) + return self.RunGNIsolate() def CmdLookup(self): vals = self.Lookup() - if vals['type'] == 'gn': - cmd = self.GNCmd('gen', '_path_') - gn_args = self.GNArgs(vals) - self.Print('\nWriting """\\\n%s""" to _path_/args.gn.\n' % gn_args) - env = None - else: - cmd, env = self.GYPCmd('_path_', vals) + cmd = self.GNCmd('gen', '_path_') + gn_args = self.GNArgs(vals) + self.Print('\nWriting """\\\n%s""" to _path_/args.gn.\n' % gn_args) + env = None self.PrintCmd(cmd, env) return 0 @@ -355,32 +316,86 @@ def CmdRun(self): build_dir = self.args.path[0] target = self.args.target[0] - if vals['type'] == 'gn': - if self.args.build: - ret = self.Build(target) - if ret: - return ret - ret = self.RunGNIsolate() + if self.args.build: + ret = self.Build(target) if ret: return ret + ret = self.RunGNIsolate() + if ret: + return ret + + if self.args.swarmed: + return self._RunUnderSwarming(build_dir, target) else: - ret = self.Build('%s_run' % target) - if ret: - return ret + return self._RunLocallyIsolated(build_dir, target) + + def _RunUnderSwarming(self, build_dir, target): + # TODO(dpranke): Look up the information for the target in + # the //testing/buildbot.json file, if possible, so that we + # can determine the isolate target, command line, and additional + # swarming parameters, if possible. + # + # TODO(dpranke): Also, add support for sharding and merging results. + dimensions = [] + for k, v in self._DefaultDimensions() + self.args.dimensions: + dimensions += ['-d', k, v] + + cmd = [ + self.executable, + self.PathJoin('tools', 'swarming_client', 'isolate.py'), + 'archive', + '-s', + self.ToSrcRelPath('%s/%s.isolated' % (build_dir, target)), + '-I', 'isolateserver.appspot.com', + ] + ret, out, _ = self.Run(cmd, force_verbose=False) + if ret: + return ret + + isolated_hash = out.splitlines()[0].split()[0] + cmd = [ + self.executable, + self.PathJoin('tools', 'swarming_client', 'swarming.py'), + 'run', + '-s', isolated_hash, + '-I', 'isolateserver.appspot.com', + '-S', 'chromium-swarm.appspot.com', + ] + dimensions + if self.args.extra_args: + cmd += ['--'] + self.args.extra_args + ret, _, _ = self.Run(cmd, force_verbose=True, buffer_output=False) + return ret + def _RunLocallyIsolated(self, build_dir, target): cmd = [ self.executable, self.PathJoin('tools', 'swarming_client', 'isolate.py'), 'run', '-s', self.ToSrcRelPath('%s/%s.isolated' % (build_dir, target)), - ] + ] if self.args.extra_args: - cmd += ['--'] + self.args.extra_args + cmd += ['--'] + self.args.extra_args + ret, _, _ = self.Run(cmd, force_verbose=True, buffer_output=False) + return ret - ret, _, _ = self.Run(cmd, force_verbose=False, buffer_output=False) + def _DefaultDimensions(self): + if not self.args.default_dimensions: + return [] + + # This code is naive and just picks reasonable defaults per platform. + if self.platform == 'darwin': + os_dim = ('os', 'Mac-10.12') + elif self.platform.startswith('linux'): + os_dim = ('os', 'Ubuntu-14.04') + elif self.platform == 'win32': + os_dim = ('os', 'Windows-10-14393') + else: + raise MBErr('unrecognized platform string "%s"' % self.platform) - return ret + return [('pool', 'Chrome'), + ('cpu', 'x86-64'), + os_dim] def CmdBuildbucket(self): self.ReadConfigFile() @@ -462,154 +477,26 @@ def CmdValidate(self, print_ok=True): self.Print('mb config file %s looks ok.' % self.args.config_file) return 0 - def CmdAudit(self): - """Track the progress of the GYP->GN migration on the bots.""" - - # First, make sure the config file is okay, but don't print anything - # if it is (it will throw an error if it isn't). - self.CmdValidate(print_ok=False) - - stats = OrderedDict() - STAT_MASTER_ONLY = 'Master only' - STAT_CONFIG_ONLY = 'Config only' - STAT_TBD = 'Still TBD' - STAT_GYP = 'Still GYP' - STAT_DONE = 'Done (on GN)' - stats[STAT_MASTER_ONLY] = 0 - stats[STAT_CONFIG_ONLY] = 0 - stats[STAT_TBD] = 0 - stats[STAT_GYP] = 0 - stats[STAT_DONE] = 0 - - def PrintBuilders(heading, builders, notes): - stats.setdefault(heading, 0) - stats[heading] += len(builders) - if builders: - self.Print(' %s:' % heading) - for builder in sorted(builders): - self.Print(' %s%s' % (builder, notes[builder])) - - self.ReadConfigFile() - - masters = self.args.master or self.masters - for master in sorted(masters): - url = self.args.url_template.replace('{master}', master) - - self.Print('Auditing %s' % master) - - MASTERS_TO_SKIP = ( - 'client.skia', - 'client.v8.fyi', - 'tryserver.v8', - ) - if master in MASTERS_TO_SKIP: - # Skip these bots because converting them is the responsibility of - # those teams and out of scope for the Chromium migration to GN. - self.Print(' Skipped (out of scope)') - self.Print('') - continue - - INTERNAL_MASTERS = ('official.desktop', 'official.desktop.continuous', - 'internal.client.kitchensync') - if master in INTERNAL_MASTERS and not self.args.internal: - # Skip these because the servers aren't accessible by default ... - self.Print(' Skipped (internal)') - self.Print('') - continue - - try: - # Fetch the /builders contents from the buildbot master. The - # keys of the dict are the builder names themselves. - json_contents = self.Fetch(url) - d = json.loads(json_contents) - except Exception as e: - self.Print(str(e)) - return 1 - - config_builders = set(self.masters[master]) - master_builders = set(d.keys()) - both = master_builders & config_builders - master_only = master_builders - config_builders - config_only = config_builders - master_builders - tbd = set() - gyp = set() - done = set() - notes = {builder: '' for builder in config_builders | master_builders} - - for builder in both: - config = self.masters[master][builder] - if config == 'tbd': - tbd.add(builder) - elif isinstance(config, dict): - vals = self.FlattenConfig(config.values()[0]) - if vals['type'] == 'gyp': - gyp.add(builder) - else: - done.add(builder) - elif config.startswith('//'): - done.add(builder) - else: - vals = self.FlattenConfig(config) - if vals['type'] == 'gyp': - gyp.add(builder) - else: - done.add(builder) - - if self.args.check_compile and (tbd or master_only): - either = tbd | master_only - for builder in either: - notes[builder] = ' (' + self.CheckCompile(master, builder) +')' - - if master_only or config_only or tbd or gyp: - PrintBuilders(STAT_MASTER_ONLY, master_only, notes) - PrintBuilders(STAT_CONFIG_ONLY, config_only, notes) - PrintBuilders(STAT_TBD, tbd, notes) - PrintBuilders(STAT_GYP, gyp, notes) - else: - self.Print(' All GN!') - - stats[STAT_DONE] += len(done) - - self.Print('') - - fmt = '{:<27} {:>4}' - self.Print(fmt.format('Totals', str(sum(int(v) for v in stats.values())))) - self.Print(fmt.format('-' * 27, '----')) - for stat, count in stats.items(): - self.Print(fmt.format(stat, str(count))) - - return 0 - def GetConfig(self): build_dir = self.args.path[0] vals = self.DefaultVals() if self.args.builder or self.args.master or self.args.config: vals = self.Lookup() - if vals['type'] == 'gn': - # Re-run gn gen in order to ensure the config is consistent with the - # build dir. - self.RunGNGen(vals) + # Re-run gn gen in order to ensure the config is consistent with the + # build dir. + self.RunGNGen(vals) return vals - mb_type_path = self.PathJoin(self.ToAbsPath(build_dir), 'mb_type') - if not self.Exists(mb_type_path): - toolchain_path = self.PathJoin(self.ToAbsPath(build_dir), - 'toolchain.ninja') - if not self.Exists(toolchain_path): - self.Print('Must either specify a path to an existing GN build dir ' - 'or pass in a -m/-b pair or a -c flag to specify the ' - 'configuration') - return {} - else: - mb_type = 'gn' - else: - mb_type = self.ReadFile(mb_type_path).strip() - - if mb_type == 'gn': - vals['gn_args'] = self.GNArgsFromDir(build_dir) - vals['type'] = mb_type + toolchain_path = self.PathJoin(self.ToAbsPath(build_dir), + 'toolchain.ninja') + if not self.Exists(toolchain_path): + self.Print('Must either specify a path to an existing GN build dir ' + 'or pass in a -m/-b pair or a -c flag to specify the ' + 'configuration') + return {} + vals['gn_args'] = self.GNArgsFromDir(build_dir) return vals def GNArgsFromDir(self, build_dir): @@ -641,14 +528,6 @@ def Lookup(self): raise MBErr('Config "%s" not found in %s' % (config, self.args.config_file)) vals = self.FlattenConfig(config) - - # Do some basic sanity checking on the config so that we - # don't have to do this in every caller. - if 'type' not in vals: - vals['type'] = 'gn' - assert vals['type'] in ('gn', 'gyp'), ( - 'Unknown meta-build type "%s"' % vals['gn_args']) - return vals def ReadIOSBotConfig(self): @@ -660,17 +539,10 @@ def ReadIOSBotConfig(self): return {} contents = json.loads(self.ReadFile(path)) - gyp_vals = contents.get('GYP_DEFINES', {}) - if isinstance(gyp_vals, dict): - gyp_defines = ' '.join('%s=%s' % (k, v) for k, v in gyp_vals.items()) - else: - gyp_defines = ' '.join(gyp_vals) gn_args = ' '.join(contents.get('gn_args', [])) vals = self.DefaultVals() vals['gn_args'] = gn_args - vals['gyp_defines'] = gyp_defines - vals['type'] = contents.get('mb_type', 'gn') return vals def ReadConfigFile(self): @@ -689,14 +561,26 @@ def ReadConfigFile(self): self.mixins = contents['mixins'] def ReadIsolateMap(self): - if not self.Exists(self.args.isolate_map_file): - raise MBErr('isolate map file not found at %s' % - self.args.isolate_map_file) - try: - return ast.literal_eval(self.ReadFile(self.args.isolate_map_file)) - except SyntaxError as e: - raise MBErr('Failed to parse isolate map file "%s": %s' % - (self.args.isolate_map_file, e)) + if not self.args.isolate_map_files: + self.args.isolate_map_files = [self.default_isolate_map] + + for f in self.args.isolate_map_files: + if not self.Exists(f): + raise MBErr('isolate map file not found at %s' % f) + isolate_maps = {} + for isolate_map in self.args.isolate_map_files: + try: + isolate_map = ast.literal_eval(self.ReadFile(isolate_map)) + duplicates = set(isolate_map).intersection(isolate_maps) + if duplicates: + raise MBErr( + 'Duplicate targets in isolate map files: %s.' % + ', '.join(duplicates)) + isolate_maps.update(isolate_map) + except SyntaxError as e: + raise MBErr( + 'Failed to parse isolate map file "%s": %s' % (isolate_map, e)) + return isolate_maps def ConfigFromArgs(self): if self.args.config: @@ -747,9 +631,6 @@ def DefaultVals(self): 'args_file': '', 'cros_passthrough': False, 'gn_args': '', - 'gyp_defines': '', - 'gyp_crosscompile': False, - 'type': 'gn', } def FlattenMixins(self, mixins, vals, visited): @@ -773,50 +654,11 @@ def FlattenMixins(self, mixins, vals, visited): vals['gn_args'] += ' ' + mixin_vals['gn_args'] else: vals['gn_args'] = mixin_vals['gn_args'] - if 'gyp_crosscompile' in mixin_vals: - vals['gyp_crosscompile'] = mixin_vals['gyp_crosscompile'] - if 'gyp_defines' in mixin_vals: - if vals['gyp_defines']: - vals['gyp_defines'] += ' ' + mixin_vals['gyp_defines'] - else: - vals['gyp_defines'] = mixin_vals['gyp_defines'] - if 'type' in mixin_vals: - vals['type'] = mixin_vals['type'] if 'mixins' in mixin_vals: self.FlattenMixins(mixin_vals['mixins'], vals, visited) return vals - def ClobberIfNeeded(self, vals): - path = self.args.path[0] - build_dir = self.ToAbsPath(path) - mb_type_path = self.PathJoin(build_dir, 'mb_type') - needs_clobber = False - new_mb_type = vals['type'] - if self.Exists(build_dir): - if self.Exists(mb_type_path): - old_mb_type = self.ReadFile(mb_type_path) - if old_mb_type != new_mb_type: - self.Print("Build type mismatch: was %s, will be %s, clobbering %s" % - (old_mb_type, new_mb_type, path)) - needs_clobber = True - else: - # There is no 'mb_type' file in the build directory, so this probably - # means that the prior build(s) were not done through mb, and we - # have no idea if this was a GYP build or a GN build. Clobber it - # to be safe. - self.Print("%s/mb_type missing, clobbering to be safe" % path) - needs_clobber = True - - if self.args.dryrun: - return - - if needs_clobber: - self.RemoveDirectory(build_dir) - - self.MaybeMakeDirectory(build_dir) - self.WriteFile(mb_type_path, new_mb_type) - def RunGNGen(self, vals, compute_grit_inputs_for_analyze=False): build_dir = self.args.path[0] @@ -861,6 +703,7 @@ def RunGNGen(self, vals, compute_grit_inputs_for_analyze=False): return ret android = 'target_os="android"' in vals['gn_args'] + fuchsia = 'target_os="fuchsia"' in vals['gn_args'] for target in swarming_targets: if android: # Android targets may be either android_apk or executable. The former @@ -870,6 +713,11 @@ def RunGNGen(self, vals, compute_grit_inputs_for_analyze=False): runtime_deps_targets = [ target + '.runtime_deps', 'obj/%s.stamp.runtime_deps' % label.replace(':', '/')] + elif fuchsia: + # Only emit a runtime deps file for the group() target on Fuchsia. + label = isolate_map[target]['label'] + runtime_deps_targets = [ + 'obj/%s.stamp.runtime_deps' % label.replace(':', '/')] elif (isolate_map[target]['type'] == 'script' or isolate_map[target].get('label_type') == 'group'): # For script targets, the build target is usually a group, @@ -1023,38 +871,6 @@ def GNArgs(self, vals): gn_args = ('import("%s")\n' % vals['args_file']) + gn_args return gn_args - def RunGYPGen(self, vals): - path = self.args.path[0] - - output_dir = self.ParseGYPConfigPath(path) - cmd, env = self.GYPCmd(output_dir, vals) - ret, _, _ = self.Run(cmd, env=env) - return ret - - def RunGYPAnalyze(self, vals): - output_dir = self.ParseGYPConfigPath(self.args.path[0]) - if self.args.verbose: - inp = self.ReadInputJSON(['files', 'test_targets', - 'additional_compile_targets']) - self.Print() - self.Print('analyze input:') - self.PrintJSON(inp) - self.Print() - - cmd, env = self.GYPCmd(output_dir, vals) - cmd.extend(['-f', 'analyzer', - '-G', 'config_path=%s' % self.args.input_path[0], - '-G', 'analyzer_output_path=%s' % self.args.output_path[0]]) - ret, _, _ = self.Run(cmd, env=env) - if not ret and self.args.verbose: - outp = json.loads(self.ReadFile(self.args.output_path[0])) - self.Print() - self.Print('analyze output:') - self.PrintJSON(outp) - self.Print() - - return ret - def ToAbsPath(self, build_path, *comps): return self.PathJoin(self.chromium_src_dir, self.ToSrcRelPath(build_path), @@ -1066,86 +882,6 @@ def ToSrcRelPath(self, path): return path[2:].replace('/', self.sep) return self.RelPath(path, self.chromium_src_dir) - def ParseGYPConfigPath(self, path): - rpath = self.ToSrcRelPath(path) - output_dir, _, _ = rpath.rpartition(self.sep) - return output_dir - - def GYPCmd(self, output_dir, vals): - if vals['cros_passthrough']: - if not 'GYP_DEFINES' in os.environ: - raise MBErr('MB is expecting GYP_DEFINES to be in the environment') - gyp_defines = os.environ['GYP_DEFINES'] - if not 'chromeos=1' in gyp_defines: - raise MBErr('GYP_DEFINES is missing chromeos=1: (GYP_DEFINES=%s)' % - gyp_defines) - else: - gyp_defines = vals['gyp_defines'] - - goma_dir = self.args.goma_dir - - # GYP uses shlex.split() to split the gyp defines into separate arguments, - # so we can support backslashes and and spaces in arguments by quoting - # them, even on Windows, where this normally wouldn't work. - if goma_dir and ('\\' in goma_dir or ' ' in goma_dir): - goma_dir = "'%s'" % goma_dir - - if goma_dir: - gyp_defines += ' gomadir=%s' % goma_dir - - android_version_code = self.args.android_version_code - if android_version_code: - gyp_defines += ' app_manifest_version_code=%s' % android_version_code - - android_version_name = self.args.android_version_name - if android_version_name: - gyp_defines += ' app_manifest_version_name=%s' % android_version_name - - cmd = [ - self.executable, - self.args.gyp_script, - '-G', - 'output_dir=' + output_dir, - ] - - # Ensure that we have an environment that only contains - # the exact values of the GYP variables we need. - env = os.environ.copy() - - # This is a terrible hack to work around the fact that - # //tools/clang/scripts/update.py is invoked by GYP and GN but - # currently relies on an environment variable to figure out - # what revision to embed in the command line #defines. - # For GN, we've made this work via a gn arg that will cause update.py - # to get an additional command line arg, but getting that to work - # via GYP_DEFINES has proven difficult, so we rewrite the GYP_DEFINES - # to get rid of the arg and add the old var in, instead. - # See crbug.com/582737 for more on this. This can hopefully all - # go away with GYP. - m = re.search('llvm_force_head_revision=1\s*', gyp_defines) - if m: - env['LLVM_FORCE_HEAD_REVISION'] = '1' - gyp_defines = gyp_defines.replace(m.group(0), '') - - # This is another terrible hack to work around the fact that - # GYP sets the link concurrency to use via the GYP_LINK_CONCURRENCY - # environment variable, and not via a proper GYP_DEFINE. See - # crbug.com/611491 for more on this. - m = re.search('gyp_link_concurrency=(\d+)(\s*)', gyp_defines) - if m: - env['GYP_LINK_CONCURRENCY'] = m.group(1) - gyp_defines = gyp_defines.replace(m.group(0), '') - - env['GYP_GENERATORS'] = 'ninja' - if 'GYP_CHROMIUM_NO_ACTION' in env: - del env['GYP_CHROMIUM_NO_ACTION'] - if 'GYP_CROSSCOMPILE' in env: - del env['GYP_CROSSCOMPILE'] - env['GYP_DEFINES'] = gyp_defines - if vals['gyp_crosscompile']: - env['GYP_CROSSCOMPILE'] = '1' - return cmd, env - def RunGNAnalyze(self, vals): # Analyze runs before 'gn gen' now, so we need to run gn gen # in order to ensure that we have a build directory. @@ -1347,9 +1083,6 @@ def print_env(var): if env and var in env: self.Print('%s%s=%s' % (env_prefix, var, env_quoter(env[var]))) - print_env('GYP_CROSSCOMPILE') - print_env('GYP_DEFINES') - print_env('GYP_LINK_CONCURRENCY') print_env('LLVM_FORCE_HEAD_REVISION') if cmd[0] == self.executable: @@ -1486,7 +1219,6 @@ def QuoteForSet(arg): def QuoteForCmd(arg): # First, escape the arg so that CommandLineToArgvW will parse it properly. - # From //tools/gyp/pylib/gyp/msvs_emulation.py:23. if arg == '' or ' ' in arg or '"' in arg: quote_re = re.compile(r'(\\*)"') arg = '"%s"' % (quote_re.sub(lambda mo: 2 * mo.group(1) + '\\"', arg)) diff --git a/deps/v8/tools/mb/mb_unittest.py b/deps/v8/tools/mb/mb_unittest.py index 15763750da5..dbd599645d6 100755 --- a/deps/v8/tools/mb/mb_unittest.py +++ b/deps/v8/tools/mb/mb_unittest.py @@ -65,8 +65,6 @@ def WriteFile(self, path, contents, force_verbose=False): self.files[path] = contents def Call(self, cmd, env=None, buffer_output=True): - if env: - self.cross_compile = env.get('GYP_CROSSCOMPILE') self.calls.append(cmd) if self.cmds: return self.cmds.pop(0) @@ -112,13 +110,10 @@ def close(self): 'masters': { 'chromium': {}, 'fake_master': { - 'fake_builder': 'gyp_rel_bot', - 'fake_gn_builder': 'gn_rel_bot', - 'fake_gyp_crosscompile_builder': 'gyp_crosscompile', - 'fake_gn_debug_builder': 'gn_debug_goma', - 'fake_gyp_builder': 'gyp_debug', - 'fake_gn_args_bot': '//build/args/bots/fake_master/fake_gn_args_bot.gn', - 'fake_multi_phase': { 'phase_1': 'gn_phase_1', 'phase_2': 'gn_phase_2'}, + 'fake_builder': 'rel_bot', + 'fake_debug_builder': 'debug_goma', + 'fake_args_bot': '//build/args/bots/fake_master/fake_args_bot.gn', + 'fake_multi_phase': { 'phase_1': 'phase_1', 'phase_2': 'phase_2'}, 'fake_args_file': 'args_file_goma', 'fake_args_file_twice': 'args_file_twice', }, @@ -126,38 +121,26 @@ def close(self): 'configs': { 'args_file_goma': ['args_file', 'goma'], 'args_file_twice': ['args_file', 'args_file'], - 'gyp_rel_bot': ['gyp', 'rel', 'goma'], - 'gn_debug_goma': ['gn', 'debug', 'goma'], - 'gyp_debug': ['gyp', 'debug', 'fake_feature1'], - 'gn_rel_bot': ['gn', 'rel', 'goma'], - 'gyp_crosscompile': ['gyp', 'crosscompile'], - 'gn_phase_1': ['gn', 'phase_1'], - 'gn_phase_2': ['gn', 'phase_2'], + 'rel_bot': ['rel', 'goma', 'fake_feature1'], + 'debug_goma': ['debug', 'goma'], + 'phase_1': ['phase_1'], + 'phase_2': ['phase_2'], }, 'mixins': { - 'crosscompile': { - 'gyp_crosscompile': True, - }, 'fake_feature1': { 'gn_args': 'enable_doom_melon=true', - 'gyp_defines': 'doom_melon=1', }, - 'gyp': {'type': 'gyp'}, - 'gn': {'type': 'gn'}, 'goma': { 'gn_args': 'use_goma=true', - 'gyp_defines': 'goma=1', }, 'args_file': { 'args_file': '//build/args/fake.gn', }, 'phase_1': { 'gn_args': 'phase=1', - 'gyp_args': 'phase=1', }, 'phase_2': { 'gn_args': 'phase=2', - 'gyp_args': 'phase=2', }, 'rel': { 'gn_args': 'is_debug=false', @@ -169,28 +152,6 @@ def close(self): } """ -GYP_HACKS_CONFIG = """\ -{ - 'masters': { - 'chromium': {}, - 'fake_master': { - 'fake_builder': 'fake_config', - }, - }, - 'configs': { - 'fake_config': ['fake_mixin'], - }, - 'mixins': { - 'fake_mixin': { - 'type': 'gyp', - 'gn_args': '', - 'gyp_defines': - ('foo=bar llvm_force_head_revision=1 ' - 'gyp_link_concurrency=1 baz=1'), - }, - }, -} -""" TRYSERVER_CONFIG = """\ { @@ -229,7 +190,7 @@ def fake_mbw(self, files=None, win32=False): }, }''') mbw.files.setdefault( - mbw.ToAbsPath('//build/args/bots/fake_master/fake_gn_args_bot.gn'), + mbw.ToAbsPath('//build/args/bots/fake_master/fake_args_bot.gn'), 'is_debug = false\n') if files: for path, contents in files.items(): @@ -249,37 +210,6 @@ def check(self, args, mbw=None, files=None, out=None, err=None, ret=None): self.assertEqual(mbw.err, err) return mbw - def test_clobber(self): - files = { - '/fake_src/out/Debug': None, - '/fake_src/out/Debug/mb_type': None, - } - mbw = self.fake_mbw(files) - - # The first time we run this, the build dir doesn't exist, so no clobber. - self.check(['gen', '-c', 'gn_debug_goma', '//out/Debug'], mbw=mbw, ret=0) - self.assertEqual(mbw.rmdirs, []) - self.assertEqual(mbw.files['/fake_src/out/Debug/mb_type'], 'gn') - - # The second time we run this, the build dir exists and matches, so no - # clobber. - self.check(['gen', '-c', 'gn_debug_goma', '//out/Debug'], mbw=mbw, ret=0) - self.assertEqual(mbw.rmdirs, []) - self.assertEqual(mbw.files['/fake_src/out/Debug/mb_type'], 'gn') - - # Now we switch build types; this should result in a clobber. - self.check(['gen', '-c', 'gyp_debug', '//out/Debug'], mbw=mbw, ret=0) - self.assertEqual(mbw.rmdirs, ['/fake_src/out/Debug']) - self.assertEqual(mbw.files['/fake_src/out/Debug/mb_type'], 'gyp') - - # Now we delete mb_type; this checks the case where the build dir - # exists but wasn't populated by mb; this should also result in a clobber. - del mbw.files['/fake_src/out/Debug/mb_type'] - self.check(['gen', '-c', 'gyp_debug', '//out/Debug'], mbw=mbw, ret=0) - self.assertEqual(mbw.rmdirs, - ['/fake_src/out/Debug', '/fake_src/out/Debug']) - self.assertEqual(mbw.files['/fake_src/out/Debug/mb_type'], 'gyp') - def test_analyze(self): files = {'/tmp/in.json': '''{\ "files": ["foo/foo_unittest.cc"], @@ -295,7 +225,7 @@ def test_analyze(self): mbw = self.fake_mbw(files) mbw.Call = lambda cmd, env=None, buffer_output=True: (0, '', '') - self.check(['analyze', '-c', 'gn_debug_goma', '//out/Default', + self.check(['analyze', '-c', 'debug_goma', '//out/Default', '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) out = json.loads(mbw.files['/tmp/out.json']) self.assertEqual(out, { @@ -319,7 +249,7 @@ def test_analyze_optimizes_compile_for_all(self): mbw = self.fake_mbw(files) mbw.Call = lambda cmd, env=None, buffer_output=True: (0, '', '') - self.check(['analyze', '-c', 'gn_debug_goma', '//out/Default', + self.check(['analyze', '-c', 'debug_goma', '//out/Default', '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) out = json.loads(mbw.files['/tmp/out.json']) @@ -342,7 +272,7 @@ def test_analyze_handles_other_toolchains(self): mbw = self.fake_mbw(files) mbw.Call = lambda cmd, env=None, buffer_output=True: (0, '', '') - self.check(['analyze', '-c', 'gn_debug_goma', '//out/Default', + self.check(['analyze', '-c', 'debug_goma', '//out/Default', '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) out = json.loads(mbw.files['/tmp/out.json']) @@ -369,7 +299,7 @@ def test_analyze_handles_way_too_many_results(self): mbw = self.fake_mbw(files) mbw.Call = lambda cmd, env=None, buffer_output=True: (0, '', '') - self.check(['analyze', '-c', 'gn_debug_goma', '//out/Default', + self.check(['analyze', '-c', 'debug_goma', '//out/Default', '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) out = json.loads(mbw.files['/tmp/out.json']) @@ -379,9 +309,9 @@ def test_analyze_handles_way_too_many_results(self): # test_targets and additional_compile_targets. self.assertEqual(['all', 'foo_unittests'], out['compile_targets']) - def test_gn_gen(self): + def test_gen(self): mbw = self.fake_mbw() - self.check(['gen', '-c', 'gn_debug_goma', '//out/Default', '-g', '/goma'], + self.check(['gen', '-c', 'debug_goma', '//out/Default', '-g', '/goma'], mbw=mbw, ret=0) self.assertMultiLineEqual(mbw.files['/fake_src/out/Default/args.gn'], ('goma_dir = "/goma"\n' @@ -394,7 +324,7 @@ def test_gn_gen(self): mbw.out) mbw = self.fake_mbw(win32=True) - self.check(['gen', '-c', 'gn_debug_goma', '-g', 'c:\\goma', '//out/Debug'], + self.check(['gen', '-c', 'debug_goma', '-g', 'c:\\goma', '//out/Debug'], mbw=mbw, ret=0) self.assertMultiLineEqual(mbw.files['c:\\fake_src\\out\\Debug\\args.gn'], ('goma_dir = "c:\\\\goma"\n' @@ -404,14 +334,14 @@ def test_gn_gen(self): '--check\n', mbw.out) mbw = self.fake_mbw() - self.check(['gen', '-m', 'fake_master', '-b', 'fake_gn_args_bot', + self.check(['gen', '-m', 'fake_master', '-b', 'fake_args_bot', '//out/Debug'], mbw=mbw, ret=0) self.assertEqual( mbw.files['/fake_src/out/Debug/args.gn'], - 'import("//build/args/bots/fake_master/fake_gn_args_bot.gn")\n') + 'import("//build/args/bots/fake_master/fake_args_bot.gn")\n') - def test_gn_gen_args_file_mixins(self): + def test_gen_args_file_mixins(self): mbw = self.fake_mbw() self.check(['gen', '-m', 'fake_master', '-b', 'fake_args_file', '//out/Debug'], mbw=mbw, ret=0) @@ -425,14 +355,12 @@ def test_gn_gen_args_file_mixins(self): self.check(['gen', '-m', 'fake_master', '-b', 'fake_args_file_twice', '//out/Debug'], mbw=mbw, ret=1) - def test_gn_gen_fails(self): + def test_gen_fails(self): mbw = self.fake_mbw() mbw.Call = lambda cmd, env=None, buffer_output=True: (1, '', '') - self.check(['gen', '-c', 'gn_debug_goma', '//out/Default'], mbw=mbw, ret=1) + self.check(['gen', '-c', 'debug_goma', '//out/Default'], mbw=mbw, ret=1) - # TODO(machenbach): Comment back in after swarming file parameter is used. - """ - def test_gn_gen_swarming(self): + def test_gen_swarming(self): files = { '/tmp/swarming_targets': 'base_unittests\n', '/fake_src/testing/buildbot/gn_isolate_map.pyl': ( @@ -448,7 +376,7 @@ def test_gn_gen_swarming(self): } mbw = self.fake_mbw(files) self.check(['gen', - '-c', 'gn_debug_goma', + '-c', 'debug_goma', '--swarming-targets-file', '/tmp/swarming_targets', '//out/Default'], mbw=mbw, ret=0) self.assertIn('/fake_src/out/Default/base_unittests.isolate', @@ -456,7 +384,7 @@ def test_gn_gen_swarming(self): self.assertIn('/fake_src/out/Default/base_unittests.isolated.gen.json', mbw.files) - def test_gn_gen_swarming_script(self): + def test_gen_swarming_script(self): files = { '/tmp/swarming_targets': 'cc_perftests\n', '/fake_src/testing/buildbot/gn_isolate_map.pyl': ( @@ -473,18 +401,86 @@ def test_gn_gen_swarming_script(self): } mbw = self.fake_mbw(files=files, win32=True) self.check(['gen', - '-c', 'gn_debug_goma', + '-c', 'debug_goma', + '--swarming-targets-file', '/tmp/swarming_targets', + '--isolate-map-file', + '/fake_src/testing/buildbot/gn_isolate_map.pyl', + '//out/Default'], mbw=mbw, ret=0) + self.assertIn('c:\\fake_src\\out\\Default\\cc_perftests.isolate', + mbw.files) + self.assertIn('c:\\fake_src\\out\\Default\\cc_perftests.isolated.gen.json', + mbw.files) + + + def test_multiple_isolate_maps(self): + files = { + '/tmp/swarming_targets': 'cc_perftests\n', + '/fake_src/testing/buildbot/gn_isolate_map.pyl': ( + "{'cc_perftests': {" + " 'label': '//cc:cc_perftests'," + " 'type': 'raw'," + " 'args': []," + "}}\n" + ), + '/fake_src/testing/buildbot/gn_isolate_map2.pyl': ( + "{'cc_perftests2': {" + " 'label': '//cc:cc_perftests'," + " 'type': 'raw'," + " 'args': []," + "}}\n" + ), + 'c:\\fake_src\out\Default\cc_perftests.exe.runtime_deps': ( + "cc_perftests\n" + ), + } + mbw = self.fake_mbw(files=files, win32=True) + self.check(['gen', + '-c', 'debug_goma', '--swarming-targets-file', '/tmp/swarming_targets', '--isolate-map-file', '/fake_src/testing/buildbot/gn_isolate_map.pyl', + '--isolate-map-file', + '/fake_src/testing/buildbot/gn_isolate_map2.pyl', '//out/Default'], mbw=mbw, ret=0) self.assertIn('c:\\fake_src\\out\\Default\\cc_perftests.isolate', mbw.files) self.assertIn('c:\\fake_src\\out\\Default\\cc_perftests.isolated.gen.json', mbw.files) - """ # pylint: disable=pointless-string-statement - def test_gn_isolate(self): + + def test_duplicate_isolate_maps(self): + files = { + '/tmp/swarming_targets': 'cc_perftests\n', + '/fake_src/testing/buildbot/gn_isolate_map.pyl': ( + "{'cc_perftests': {" + " 'label': '//cc:cc_perftests'," + " 'type': 'raw'," + " 'args': []," + "}}\n" + ), + '/fake_src/testing/buildbot/gn_isolate_map2.pyl': ( + "{'cc_perftests': {" + " 'label': '//cc:cc_perftests'," + " 'type': 'raw'," + " 'args': []," + "}}\n" + ), + 'c:\\fake_src\out\Default\cc_perftests.exe.runtime_deps': ( + "cc_perftests\n" + ), + } + mbw = self.fake_mbw(files=files, win32=True) + # Check that passing duplicate targets into mb fails. + self.check(['gen', + '-c', 'debug_goma', + '--swarming-targets-file', '/tmp/swarming_targets', + '--isolate-map-file', + '/fake_src/testing/buildbot/gn_isolate_map.pyl', + '--isolate-map-file', + '/fake_src/testing/buildbot/gn_isolate_map2.pyl', + '//out/Default'], mbw=mbw, ret=1) + + def test_isolate(self): files = { '/fake_src/out/Default/toolchain.ninja': "", '/fake_src/testing/buildbot/gn_isolate_map.pyl': ( @@ -498,7 +494,7 @@ def test_gn_isolate(self): "base_unittests\n" ), } - self.check(['isolate', '-c', 'gn_debug_goma', '//out/Default', + self.check(['isolate', '-c', 'debug_goma', '//out/Default', 'base_unittests'], files=files, ret=0) # test running isolate on an existing build_dir @@ -506,11 +502,10 @@ def test_gn_isolate(self): self.check(['isolate', '//out/Default', 'base_unittests'], files=files, ret=0) - files['/fake_src/out/Default/mb_type'] = 'gn\n' self.check(['isolate', '//out/Default', 'base_unittests'], files=files, ret=0) - def test_gn_run(self): + def test_run(self): files = { '/fake_src/testing/buildbot/gn_isolate_map.pyl': ( "{'base_unittests': {" @@ -523,55 +518,50 @@ def test_gn_run(self): "base_unittests\n" ), } - self.check(['run', '-c', 'gn_debug_goma', '//out/Default', + self.check(['run', '-c', 'debug_goma', '//out/Default', 'base_unittests'], files=files, ret=0) - def test_gn_lookup(self): - self.check(['lookup', '-c', 'gn_debug_goma'], ret=0) + def test_run_swarmed(self): + files = { + '/fake_src/testing/buildbot/gn_isolate_map.pyl': ( + "{'base_unittests': {" + " 'label': '//base:base_unittests'," + " 'type': 'raw'," + " 'args': []," + "}}\n" + ), + '/fake_src/out/Default/base_unittests.runtime_deps': ( + "base_unittests\n" + ), + } + + def run_stub(cmd, **_kwargs): + if 'isolate.py' in cmd[1]: + return 0, 'fake_hash base_unittests', '' + else: + return 0, '', '' + + mbw = self.fake_mbw(files=files) + mbw.Run = run_stub + self.check(['run', '-s', '-c', 'debug_goma', '//out/Default', + 'base_unittests'], mbw=mbw, ret=0) + self.check(['run', '-s', '-c', 'debug_goma', '-d', 'os', 'Win7', + '//out/Default', 'base_unittests'], mbw=mbw, ret=0) - def test_gn_lookup_goma_dir_expansion(self): - self.check(['lookup', '-c', 'gn_rel_bot', '-g', '/foo'], ret=0, + def test_lookup(self): + self.check(['lookup', '-c', 'debug_goma'], ret=0) + + def test_lookup_goma_dir_expansion(self): + self.check(['lookup', '-c', 'rel_bot', '-g', '/foo'], ret=0, out=('\n' 'Writing """\\\n' + 'enable_doom_melon = true\n' 'goma_dir = "/foo"\n' 'is_debug = false\n' 'use_goma = true\n' '""" to _path_/args.gn.\n\n' '/fake_src/buildtools/linux64/gn gen _path_\n')) - def test_gyp_analyze(self): - mbw = self.check(['analyze', '-c', 'gyp_rel_bot', '//out/Release', - '/tmp/in.json', '/tmp/out.json'], ret=0) - self.assertIn('analyzer', mbw.calls[0]) - - def test_gyp_crosscompile(self): - mbw = self.fake_mbw() - self.check(['gen', '-c', 'gyp_crosscompile', '//out/Release'], - mbw=mbw, ret=0) - self.assertTrue(mbw.cross_compile) - - def test_gyp_gen(self): - self.check(['gen', '-c', 'gyp_rel_bot', '-g', '/goma', '//out/Release'], - ret=0, - out=("GYP_DEFINES='goma=1 gomadir=/goma'\n" - "python build/gyp_chromium -G output_dir=out\n")) - - mbw = self.fake_mbw(win32=True) - self.check(['gen', '-c', 'gyp_rel_bot', '-g', 'c:\\goma', '//out/Release'], - mbw=mbw, ret=0, - out=("set GYP_DEFINES=goma=1 gomadir='c:\\goma'\n" - "python build\\gyp_chromium -G output_dir=out\n")) - - def test_gyp_gen_fails(self): - mbw = self.fake_mbw() - mbw.Call = lambda cmd, env=None, buffer_output=True: (1, '', '') - self.check(['gen', '-c', 'gyp_rel_bot', '//out/Release'], mbw=mbw, ret=1) - - def test_gyp_lookup_goma_dir_expansion(self): - self.check(['lookup', '-c', 'gyp_rel_bot', '-g', '/foo'], ret=0, - out=("GYP_DEFINES='goma=1 gomadir=/foo'\n" - "python build/gyp_chromium -G output_dir=_path_\n")) - def test_help(self): orig_stdout = sys.stdout try: @@ -589,7 +579,7 @@ def test_multiple_phases(self): self.assertIn('Must specify a build --phase', mbw.out) # Check that passing a --phase to a single-phase builder fails. - mbw = self.check(['lookup', '-m', 'fake_master', '-b', 'fake_gn_builder', + mbw = self.check(['lookup', '-m', 'fake_master', '-b', 'fake_builder', '--phase', 'phase_1'], ret=1) self.assertIn('Must not specify a build --phase', mbw.out) @@ -611,16 +601,6 @@ def test_validate(self): mbw = self.fake_mbw() self.check(['validate'], mbw=mbw, ret=0) - def test_gyp_env_hacks(self): - mbw = self.fake_mbw() - mbw.files[mbw.default_config] = GYP_HACKS_CONFIG - self.check(['lookup', '-c', 'fake_config'], mbw=mbw, - ret=0, - out=("GYP_DEFINES='foo=bar baz=1'\n" - "GYP_LINK_CONCURRENCY=1\n" - "LLVM_FORCE_HEAD_REVISION=1\n" - "python build/gyp_chromium -G output_dir=_path_\n")) - def test_buildbucket(self): mbw = self.fake_mbw() mbw.files[mbw.default_config] = TRYSERVER_CONFIG diff --git a/deps/v8/tools/mingw-generate-makefiles.sh b/deps/v8/tools/mingw-generate-makefiles.sh deleted file mode 100755 index 67715fc15b0..00000000000 --- a/deps/v8/tools/mingw-generate-makefiles.sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/sh -# Copyright 2013 the V8 project authors. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Monkey-patch GYP. -cat > tools/gyp/gyp.mingw << EOF -#!/usr/bin/env python - -# Copyright (c) 2009 Google Inc. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import sys - -# TODO(mark): sys.path manipulation is some temporary testing stuff. -try: - import gyp -except ImportError, e: - import os.path - sys.path.append(os.path.join(os.path.dirname(sys.argv[0]), 'pylib')) - import gyp - -def MonkeyBuildFileTargets(target_list, build_file): - """From a target_list, returns the subset from the specified build_file. - """ - build_file = build_file.replace('/', '\\\\') - return [p for p in target_list if gyp.common.BuildFile(p) == build_file] -gyp.common.BuildFileTargets = MonkeyBuildFileTargets - -import gyp.generator.make -import os -def Monkey_ITIP(self): - """Returns the location of the final output for an installable target.""" - sep = os.path.sep - # Xcode puts shared_library results into PRODUCT_DIR, and some gyp files - # rely on this. Emulate this behavior for mac. - if (self.type == 'shared_library' and - (self.flavor != 'mac' or self.toolset != 'target')): - # Install all shared libs into a common directory (per toolset) for - # convenient access with LD_LIBRARY_PATH. - return '\$(builddir)%slib.%s%s%s' % (sep, self.toolset, sep, self.alias) - return '\$(builddir)' + sep + self.alias -gyp.generator.make.MakefileWriter._InstallableTargetInstallPath = Monkey_ITIP - -if __name__ == '__main__': - sys.exit(gyp.main(sys.argv[1:])) -EOF - -# Delete old generated Makefiles. -find out -name '*.mk' -or -name 'Makefile*' -exec rm {} \; - -# Generate fresh Makefiles. -mv tools/gyp/gyp tools/gyp/gyp.original -mv tools/gyp/gyp.mingw tools/gyp/gyp -make out/Makefile.ia32 -mv tools/gyp/gyp tools/gyp/gyp.mingw -mv tools/gyp/gyp.original tools/gyp/gyp - -# Patch generated Makefiles: replace most backslashes with forward slashes, -# fix library names in linker flags. -FILES=$(find out -name '*.mk' -or -name 'Makefile*') -for F in $FILES ; do - echo "Patching $F..." - cp $F $F.orig - cat $F.orig \ - | sed -e 's|\([)a-zA-Z0-9]\)\\\([a-zA-Z]\)|\1/\2|g' \ - -e 's|\([)a-zA-Z0-9]\)\\\\\([a-zA-Z]\)|\1/\2|g' \ - -e 's|'%s/n'|'%s\\\\n'|g' \ - -e 's|-lwinmm\.lib|-lwinmm|g' \ - -e 's|-lws2_32\.lib|-lws2_32|g' \ - > $F - rm $F.orig -done diff --git a/deps/v8/tools/mips_toolchain.tar.gz.sha1 b/deps/v8/tools/mips_toolchain.tar.gz.sha1 new file mode 100644 index 00000000000..8d4572336a8 --- /dev/null +++ b/deps/v8/tools/mips_toolchain.tar.gz.sha1 @@ -0,0 +1 @@ +d51b5d903340262d8d13ecd51054c16a901b3cf3 \ No newline at end of file diff --git a/deps/v8/tools/node/build_gn.py b/deps/v8/tools/node/build_gn.py index 8ab2a635ea2..e95c3491e74 100755 --- a/deps/v8/tools/node/build_gn.py +++ b/deps/v8/tools/node/build_gn.py @@ -17,6 +17,7 @@ v8_enable_disassembler=0 """ +import argparse import os import subprocess import sys @@ -31,52 +32,71 @@ "use_sysroot = false", ] -BUILD_SUBDIR = "gn" +BUILD_TARGET = "v8_monolith" -# TODO: make this cross-platform. -GN_SUBDIR = ["buildtools", "linux64", "gn"] +def FindGn(options): + if options.host_os == "linux": + os_path = "linux64" + elif options.host_os == "mac": + os_path = "mac" + elif options.host_os == "win": + os_path = "win" + else: + raise "Operating system not supported by GN" + return os.path.join(options.v8_path, "buildtools", os_path, "gn") -def Build(v8_path, build_path, depot_tools, is_debug, build_flags): +def GenerateBuildFiles(options): print "Setting GN args." - lines = [] - lines.extend(GN_ARGS) - for flag in build_flags: + gn = FindGn(options) + gn_args = [] + gn_args.extend(GN_ARGS) + for flag in options.flag: flag = flag.replace("=1", "=true") flag = flag.replace("=0", "=false") flag = flag.replace("target_cpu=ia32", "target_cpu=\"x86\"") - lines.append(flag) - lines.append("is_debug = %s" % ("true" if is_debug else "false")) - with open(os.path.join(build_path, "args.gn"), "w") as args_file: - args_file.write("\n".join(lines)) - gn = os.path.join(v8_path, *GN_SUBDIR) - subprocess.check_call([gn, "gen", "-C", build_path], cwd=v8_path) - ninja = os.path.join(depot_tools, "ninja") + gn_args.append(flag) + if options.mode == "DEBUG": + gn_args.append("is_debug = true") + else: + gn_args.append("is_debug = false") + + if not os.path.isdir(options.build_path): + os.makedirs(options.build_path) + with open(os.path.join(options.build_path, "args.gn"), "w") as args_file: + args_file.write("\n".join(gn_args)) + subprocess.check_call([gn, "gen", "-C", options.build_path], + cwd=options.v8_path) + +def Build(options): print "Building." - subprocess.check_call([ninja, "-v", "-C", build_path, "v8_monolith"], - cwd=v8_path) + depot_tools = node_common.EnsureDepotTools(options.v8_path, False) + ninja = os.path.join(depot_tools, "ninja") + subprocess.check_call([ninja, "-v", "-C", options.build_path, BUILD_TARGET], + cwd=options.v8_path) + +def ParseOptions(args): + parser = argparse.ArgumentParser( + description="Build %s with GN" % BUILD_TARGET) + parser.add_argument("--mode", help="Build mode (Release/Debug)") + parser.add_argument("--v8_path", help="Path to V8") + parser.add_argument("--build_path", help="Path to build result") + parser.add_argument("--flag", help="Translate GYP flag to GN", + action="append") + parser.add_argument("--host_os", help="Current operating system") + options = parser.parse_args(args) -def Main(v8_path, build_path, is_debug, build_flags): - # Verify paths. - v8_path = os.path.abspath(v8_path) - assert os.path.isdir(v8_path) - build_path = os.path.abspath(build_path) - build_path = os.path.join(build_path, BUILD_SUBDIR) - if not os.path.isdir(build_path): - os.makedirs(build_path) + assert options.host_os + assert options.mode == "Debug" or options.mode == "Release" - # Check that we have depot tools. - depot_tools = node_common.EnsureDepotTools(v8_path, False) + assert options.v8_path + options.v8_path = os.path.abspath(options.v8_path) + assert os.path.isdir(options.v8_path) - # Build with GN. - Build(v8_path, build_path, depot_tools, is_debug, build_flags) + assert options.build_path + options.build_path = os.path.abspath(options.build_path) + return options if __name__ == "__main__": - # TODO: use argparse to parse arguments. - build_mode = sys.argv[1] - v8_path = sys.argv[2] - build_path = sys.argv[3] - assert build_mode == "Debug" or build_mode == "Release" - is_debug = build_mode == "Debug" - # TODO: introduce "--" flag for pass-through flags. - build_flags = sys.argv[4:] - Main(v8_path, build_path, is_debug, build_flags) + options = ParseOptions(sys.argv[1:]) + GenerateBuildFiles(options) + Build(options) diff --git a/deps/v8/tools/node/fetch_deps.py b/deps/v8/tools/node/fetch_deps.py index a3e6d749177..c402e0a3c42 100755 --- a/deps/v8/tools/node/fetch_deps.py +++ b/deps/v8/tools/node/fetch_deps.py @@ -37,7 +37,6 @@ "v8/third_party/catapult" : None, "v8/third_party/colorama/src" : None, "v8/third_party/instrumented_libraries" : None, - "v8/tools/gyp" : None, "v8/tools/luci-go" : None, "v8/tools/swarming_client" : None, }, diff --git a/deps/v8/tools/node/test_update_node.py b/deps/v8/tools/node/test_update_node.py index 1a29b4ea619..785517b8c85 100755 --- a/deps/v8/tools/node/test_update_node.py +++ b/deps/v8/tools/node/test_update_node.py @@ -18,12 +18,16 @@ # Expectations. EXPECTED_GITIGNORE = """ -/testing/gtest/* -!/testing/gtest/include -/testing/gtest/include/* -!/testing/gtest/include/gtest -/testing/gtest/include/gtest/* -!/testing/gtest/include/gtest/gtest_prod.h +/third_party/googletest/* +!/third_party/googletest/src +/third_party/googletest/src/* +!/third_party/googletest/src/googletest +/third_party/googletest/src/googletest/* +!/third_party/googletest/src/googletest/include +/third_party/googletest/src/googletest/include/* +!/third_party/googletest/src/googletest/include/gtest +/third_party/googletest/src/googletest/include/gtest/* +!/third_party/googletest/src/googletest/include/gtest/gtest_prod.h !/third_party/jinja2 !/third_party/markupsafe /unrelated @@ -34,6 +38,7 @@ rename deps/v8/baz/{delete_me => v8_new} (100%) delete mode 100644 deps/v8/include/v8-version.h rename deps/v8/{delete_me => new/v8_new} (100%) + create mode 100644 deps/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h create mode 100644 deps/v8/third_party/jinja2/jinja2 create mode 100644 deps/v8/third_party/markupsafe/markupsafe create mode 100644 deps/v8/v8_new @@ -43,9 +48,9 @@ 'v8_new', 'new/v8_new', 'baz/v8_new', - 'testing/gtest/gtest_new', - 'testing/gtest/new/gtest_new', - 'testing/gtest/baz/gtest_new', + '/third_party/googletest/src/googletest/include/gtest/gtest_new', + '/third_party/googletest/src/googletest/include/gtest/new/gtest_new', + '/third_party/googletest/src/googletest/include/gtest/baz/gtest_new', 'third_party/jinja2/jinja2', 'third_party/markupsafe/markupsafe' ] diff --git a/deps/v8/tools/node/testdata/v8/.gitignore b/deps/v8/tools/node/testdata/v8/.gitignore index 855286229f8..cc2f1ca2022 100644 --- a/deps/v8/tools/node/testdata/v8/.gitignore +++ b/deps/v8/tools/node/testdata/v8/.gitignore @@ -1,4 +1,3 @@ /unrelated -/testing/gtest /third_party/jinja2 -/third_party/markupsafe \ No newline at end of file +/third_party/markupsafe diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_foo b/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_foo new file mode 100644 index 00000000000..eb1ae458f8e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_foo @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_new b/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_new new file mode 100644 index 00000000000..eb1ae458f8e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/baz/gtest_new @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_bar b/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_bar new file mode 100644 index 00000000000..eb1ae458f8e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_bar @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_new b/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_new new file mode 100644 index 00000000000..eb1ae458f8e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/gtest_new @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/testdata/v8/testing/gtest/new/gtest_new b/deps/v8/tools/node/testdata/v8/testing/gtest/new/gtest_new new file mode 100644 index 00000000000..eb1ae458f8e --- /dev/null +++ b/deps/v8/tools/node/testdata/v8/testing/gtest/new/gtest_new @@ -0,0 +1 @@ +... diff --git a/deps/v8/tools/node/update_node.py b/deps/v8/tools/node/update_node.py index ebd953a9035..759e9d5aac7 100755 --- a/deps/v8/tools/node/update_node.py +++ b/deps/v8/tools/node/update_node.py @@ -34,26 +34,34 @@ TARGET_SUBDIR = os.path.join("deps", "v8") SUB_REPOSITORIES = [ ["base", "trace_event", "common"], - ["testing", "gtest"], + ["third_party", "googletest", "src"], ["third_party", "jinja2"], ["third_party", "markupsafe"] ] DELETE_FROM_GITIGNORE = [ "/base", - "/testing/gtest", + "/third_party/googletest/src", "/third_party/jinja2", "/third_party/markupsafe" ] # Node.js requires only a single header file from gtest to build V8. # Both jinja2 and markupsafe are required to generate part of the inspector. -ADD_TO_GITIGNORE = [ "/testing/gtest/*", - "!/testing/gtest/include", - "/testing/gtest/include/*", - "!/testing/gtest/include/gtest", - "/testing/gtest/include/gtest/*", - "!/testing/gtest/include/gtest/gtest_prod.h", +ADD_TO_GITIGNORE = [ "/third_party/googletest/*", + "!/third_party/googletest/BUILD.gn", + "!/third_party/googletest/src", + "/third_party/googletest/src/*", + "!/third_party/googletest/src/googletest", + "/third_party/googletest/src/googletest/*", + "!/third_party/googletest/src/googletest/include", + "/third_party/googletest/src/googletest/include/*", + "!/third_party/googletest/src/googletest/include/gtest", + "/third_party/googletest/src/googletest/include/gtest/*", + "!/third_party/googletest/src/googletest/include/gtest/gtest_prod.h", "!/third_party/jinja2", "!/third_party/markupsafe" ] +# Node.js owns deps/v8/gypfiles in their downstream repository. +FILES_TO_KEEP = [ "gypfiles" ] + def RunGclient(path): assert os.path.isdir(path) print ">> Running gclient sync" @@ -73,7 +81,7 @@ def CommitPatch(options): cwd=options.v8_path, ) -def UpdateTarget(repository, options): +def UpdateTarget(repository, options, files_to_keep): source = os.path.join(options.v8_path, *repository) target = os.path.join(options.node_path, TARGET_SUBDIR, *repository) print ">> Updating target directory %s" % target @@ -83,16 +91,24 @@ def UpdateTarget(repository, options): # Remove possible remnants of previous incomplete runs. node_common.UninitGit(target) - git_commands = [ - ["git", "init"], # initialize target repo - ["git", "remote", "add", "origin", source], # point to the source repo - ["git", "fetch", "origin", "HEAD"], # sync to the current branch - ["git", "reset", "--hard", "FETCH_HEAD"], # reset to the current branch - ["git", "clean", "-fd"], # delete removed files - ] + git_args = [] + git_args.append(["init"]) # initialize target repo + + if files_to_keep: + git_args.append(["add"] + files_to_keep) # add and commit + git_args.append(["commit", "-m", "keep files"]) # files we want to keep + + git_args.append(["remote", "add", "source", source]) # point to source repo + git_args.append(["fetch", "source", "HEAD"]) # sync to current branch + git_args.append(["checkout", "-f", "FETCH_HEAD"]) # switch to that branch + git_args.append(["clean", "-fd"]) # delete removed files + + if files_to_keep: + git_args.append(["cherry-pick", "master"]) # restore kept files + try: - for command in git_commands: - subprocess.check_call(command, cwd=target) + for args in git_args: + subprocess.check_call(["git"] + args, cwd=target) except: raise finally: @@ -155,11 +171,11 @@ def Main(args): if options.with_patch: CommitPatch(options) # Update main V8 repository. - UpdateTarget([""], options) + UpdateTarget([""], options, FILES_TO_KEEP) # Patch .gitignore before updating sub-repositories. UpdateGitIgnore(options) for repo in SUB_REPOSITORIES: - UpdateTarget(repo, options) + UpdateTarget(repo, options, None) if options.commit: CreateCommit(options) diff --git a/deps/v8/tools/parser-shell.cc b/deps/v8/tools/parser-shell.cc index 1a492239969..bcee2b82582 100644 --- a/deps/v8/tools/parser-shell.cc +++ b/deps/v8/tools/parser-shell.cc @@ -39,7 +39,6 @@ #include "src/objects-inl.h" #include "src/parsing/parse-info.h" #include "src/parsing/parsing.h" -#include "src/parsing/preparse-data-format.h" #include "src/parsing/preparse-data.h" #include "src/parsing/preparser.h" #include "src/parsing/scanner-character-streams.h" @@ -59,9 +58,9 @@ class StringResource8 : public v8::String::ExternalOneByteStringResource { int length_; }; -std::pair RunBaselineParser( - const char* fname, Encoding encoding, int repeat, v8::Isolate* isolate, - v8::Local context) { +v8::base::TimeDelta RunBaselineParser(const char* fname, Encoding encoding, + int repeat, v8::Isolate* isolate, + v8::Local context) { int length = 0; const byte* source = ReadFileAndRepeat(fname, &length, repeat); v8::Local source_handle; @@ -87,42 +86,21 @@ std::pair RunBaselineParser( break; } } - v8::base::TimeDelta parse_time1, parse_time2; + v8::base::TimeDelta parse_time1; Handle