diff --git a/README.md b/README.md index 1835c51cc6e..76c5b4d46ec 100644 --- a/README.md +++ b/README.md @@ -1,601 +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 uses an [open governance model](./GOVERNANCE.md). The -[Node.js Foundation][] provides support for the project. +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 Keys](#release-keys) -* [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 the resources above, try these unofficial -resources: - -* [Questions tagged 'node.js' on StackOverflow][] -* [#node.js channel on chat.freenode.net][]. See for more - information. -* [Node.js Discord Community](https://discordapp.com/invite/v7rrPdE) -* [Node.js Slack Community](https://node-js.slack.com/): Visit - [nodeslackers.com](http://www.nodeslackers.com/) to register. - -GitHub issues are for tracking enhancements and bugs, not general support. - -The open source license grants you the freedom to use Node.js. It does not -guarantee commitments of other people's time. Please be respectful and manage -your expectations. - -## Release Types - -* **Current**: Under active development. Code for the Current release is in the - branch for its major version number (for example, - [v10.x](https://github.com/nodejs/node/tree/v10.x)). Node.js releases a new - major version every 6 months, allowing for breaking changes. This happens in - April and October every year. Releases appearing each October have a support - life of 8 months. Releases appearing each April convert to LTS (see below) - each October. -* **LTS**: Releases that receive Long-term Support, with a focus on stability - and security. Every even-numbered major version will become an LTS release. - LTS releases receive 18 months of _Active LTS_ support and a further 12 months - of _Maintenance_. LTS release lines have alphabetically-ordered codenames, - beginning with v4 Argon. There are no breaking changes or feature additions, - except in some special circumstances. -* **Nightly**: Code from the Current branch built every 24-hours when there are - changes. Use with caution. - -Current and LTS releases follow [Semantic Versioning](https://semver.org). A -member of the Release Team [signs](#release-keys) each Current and LTS release. -For more information, see the -[Release README](https://github.com/nodejs/Release#readme). - -### Download - -Binaries, installers, and source tarballs are available at -. - -#### Current and LTS Releases - - -The [latest](https://nodejs.org/download/release/latest/) directory is an -alias for the latest Current release. The latest-_codename_ directory is an -alias for the latest release from an LTS line. For example, the -[latest-carbon](https://nodejs.org/download/release/latest-carbon/) directory -contains the latest Carbon (Node.js 8) release. - -#### Nightly Releases - - -Each directory name and filename contains a date (in UTC time) and the commit -SHA at the HEAD of the release. - -#### API Documentation - -Documentation for the latest Current release is at . -Version-specific documentation is available in each release directory in the -_docs_ subdirectory. Version-specific documentation is also at -. - - -### Verifying Binaries - -Download directories contain a `SHASUMS256.txt` file with SHA checksums for the -files. - -To download `SHASUMS256.txt` 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 - -``` - -For Current and LTS, the GPG detached signature of `SHASUMS256.txt` is in -`SHASUMS256.txt.sig`. You can use it with `gpg` to verify the integrity of -`SHASUM256.txt`. You will first need to import -[the GPG keys of individuals authorized to create releases](#release-keys). 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 -``` - -Then use `gpg --verify SHASUMS256.txt.sig SHASUMS256.txt` to verify -the file's signature. - -## Building Node.js - -See [BUILDING.md](BUILDING.md) for instructions on how to build Node.js from -source and a list of supported platforms. - -## Security - -For information on reporting security vulnerabilities in Node.js, see -[SECURITY.md](./SECURITY.md). - -## Current Project Team Members - -For 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) -* [apapirovski](https://github.com/apapirovski) - -**Anatoli Papirovski** <apapirovski@mac.com> (he/him) -* [ChALkeR](https://github.com/ChALkeR) - -**Сковорода Никита Андреевич** <chalkerx@gmail.com> (he/him) -* [cjihrig](https://github.com/cjihrig) - -**Colin Ihrig** <cjihrig@gmail.com> (he/him) -* [danbev](https://github.com/danbev) - -**Daniel Bevenius** <daniel.bevenius@gmail.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> -* [gabrielschulhof](https://github.com/gabrielschulhof) - -**Gabriel Schulhof** <gabriel.schulhof@intel.com> -* [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> (he/him) -* [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) - -### TSC Emeriti - -* [bnoordhuis](https://github.com/bnoordhuis) - -**Ben Noordhuis** <info@bnoordhuis.nl> -* [chrisdickinson](https://github.com/chrisdickinson) - -**Chris Dickinson** <christopher.s.dickinson@gmail.com> -* [evanlucas](https://github.com/evanlucas) - -**Evan Lucas** <evanlucas@me.com> (he/him) -* [gibfahn](https://github.com/gibfahn) - -**Gibson Fahnestock** <gibfahn@gmail.com> (he/him) -* [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) -* [TimothyGu](https://github.com/TimothyGu) - -**Tiancheng "Timothy" Gu** <timothygu99@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) - -### 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> -* [antsmartian](https://github.com/antsmartian) - -**Anto Aravinth** <anto.aravinth.cse@gmail.com> (he/him) -* [apapirovski](https://github.com/apapirovski) - -**Anatoli Papirovski** <apapirovski@mac.com> (he/him) -* [aqrln](https://github.com/aqrln) - -**Alexey Orlenko** <eaglexrlnk@gmail.com> (he/him) -* [bcoe](https://github.com/bcoe) - -**Ben Coe** <bencoe@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> -* [boneskull](https://github.com/boneskull) - -**Christopher Hiller** <boneskull@boneskull.com> (he/him) -* [brendanashworth](https://github.com/brendanashworth) - -**Brendan Ashworth** <brendan.ashworth@me.com> -* [BridgeAR](https://github.com/BridgeAR) - -**Ruben Bridgewater** <ruben@bridgewater.de> (he/him) -* [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> (he/him) -* [claudiorodriguez](https://github.com/claudiorodriguez) - -**Claudio Rodriguez** <cjrodr@yahoo.com> -* [codebytere](https://github.com/codebytere) - -**Shelley Vohr** <codebytere@gmail.com> (she/her) -* [danbev](https://github.com/danbev) - -**Daniel Bevenius** <daniel.bevenius@gmail.com> (he/him) -* [DavidCai1993](https://github.com/DavidCai1993) - -**David Cai** <davidcai1993@yahoo.com> (he/him) -* [davisjam](https://github.com/davisjam) - -**Jamie Davis** <davisjam@vt.edu> (he/him) -* [devsnek](https://github.com/devsnek) - -**Gus Caplan** <me@gus.host> (he/him) -* [digitalinfinity](https://github.com/digitalinfinity) - -**Hitesh Kanwathirtha** <digitalinfinity@gmail.com> (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> -* [gdams](https://github.com/gdams) - -**George Adams** <george.adams@uk.ibm.com> (he/him) -* [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> -* [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> -* [jdalton](https://github.com/jdalton) - -**John-David Dalton** <john.david.dalton@gmail.com> -* [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> (he/him) -* [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) -* [lundibundi](https://github.com/lundibundi) - -**Denys Otrishko** <shishugi@gmail.com> (he/him) -* [maclover7](https://github.com/maclover7) - -**Jon Moss** <me@jonathanmoss.me> (he/him) -* [mafintosh](https://github.com/mafintosh) -**Mathias Buus** <mathiasbuus@gmail.com> (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) -* [misterdjules](https://github.com/misterdjules) - -**Julien Gilli** <jgilli@nodejs.org> -* [mmarchini](https://github.com/mmarchini) - -**Matheus Marchini** <mat@mmarchini.me> -* [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> (he/him) -* [ofrobots](https://github.com/ofrobots) - -**Ali Ijaz Sheikh** <ofrobots@google.com> (he/him) -* [orangemocha](https://github.com/orangemocha) - -**Alexis Campailla** <orangemocha@nodejs.org> -* [othiym23](https://github.com/othiym23) - -**Forrest L Norvell** <ogd@aoaioxxysz.net> (he/him) -* [oyyd](https://github.com/oyyd) - -**Ouyang Yadong** <oyydoibh@gmail.com> (he/him) -* [pmq20](https://github.com/pmq20) - -**Minqi Pan** <pmq2001@gmail.com> -* [princejwesley](https://github.com/princejwesley) - -**Prince John Wesley** <princejohnwesley@gmail.com> -* [psmarshall](https://github.com/psmarshall) - -**Peter Marshall** <petermarshall@chromium.org> (he/him) -* [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> -* [ronkorving](https://github.com/ronkorving) - -**Ron Korving** <ron@ronkorving.nl> -* [RReverser](https://github.com/RReverser) - -**Ingvar Stepanyan** <me@rreverser.com> -* [rubys](https://github.com/rubys) - -**Sam Ruby** <rubys@intertwingly.net> -* [rvagg](https://github.com/rvagg) - -**Rod Vagg** <rod@vagg.org> -* [ryzokuken](https://github.com/ryzokuken) - -**Ujjwal Sharma** <usharma1998@gmail.com> (he/him) -* [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) -* [shisama](https://github.com/shisama) - -**Masashi Hirano** <shisama07@gmail.com> (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) -* [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 - -* [imran-iq](https://github.com/imran-iq) - -**Imran Iqbal** <imran@imraniqbal.org> -* [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> -* [micnic](https://github.com/micnic) - -**Nicu Micleușanu** <micnic90@gmail.com> (he/him) -* [mikeal](https://github.com/mikeal) - -**Mikeal Rogers** <mikeal.rogers@gmail.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> -* [phillipj](https://github.com/phillipj) - -**Phillip Johnsen** <johphi@gmail.com> -* [piscisaureus](https://github.com/piscisaureus) - -**Bert Belder** <bertbelder@gmail.com> -* [rlidwka](https://github.com/rlidwka) - -**Alex Kocharin** <alex@kocharin.ru> -* [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> -* [tellnes](https://github.com/tellnes) - -**Christian Tellnes** <christian@tellnes.no> -* [tunniclm](https://github.com/tunniclm) - -**Mike Tunnicliffe** <m.j.tunnicliffe@gmail.com> - -Collaborators follow the [COLLABORATOR_GUIDE.md](./COLLABORATOR_GUIDE.md) in -maintaining the Node.js project. - -### Release Keys - -GPG keys used to sign Node.js releases: - -* **Beth Griggs** <bethany.griggs@uk.ibm.com> -`4ED778F539E3634C779C87C6D7062848A1AB005C` -* **Colin Ihrig** <cjihrig@gmail.com> -`94AE36675C464D64BAFA68DD7434390BDBE9B9C5` -* **Evan Lucas** <evanlucas@me.com> -`B9AE9905FFD7803F25714661B63B535A4C206CA9` -* **Gibson Fahnestock** <gibfahn@gmail.com> -`77984A986EBC2AA786BC0F66B01FBB92821C587A` -* **James M Snell** <jasnell@keybase.io> -`71DCFD284A79C3B38668286BC97EC7A07EDE3FC1` -* **Jeremiah Senkpiel** <fishrock@keybase.io> -`FD3A5288F042B6850C66B31F09FE44734EB7990E` -* **Michaël Zasso** <targos@protonmail.com> -`8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600` -* **Myles Borins** <myles.borins@gmail.com> -`C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8` -* **Rod Vagg** <rod@vagg.org> -`DD8F2338BAE7501E3DD5AC78C273792F7D83545D` -* **Ruben Bridgewater** <ruben@bridgewater.de> -`A48C2BEE680E841632CD4E44F07496B3EB3C1762` - -To import the full set of trusted release keys: - -```shell -gpg --keyserver pool.sks-keyservers.net --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C -gpg --keyserver pool.sks-keyservers.net --recv-keys 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 -gpg --keyserver pool.sks-keyservers.net --recv-keys B9AE9905FFD7803F25714661B63B535A4C206CA9 -gpg --keyserver pool.sks-keyservers.net --recv-keys 77984A986EBC2AA786BC0F66B01FBB92821C587A -gpg --keyserver pool.sks-keyservers.net --recv-keys 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 -gpg --keyserver pool.sks-keyservers.net --recv-keys FD3A5288F042B6850C66B31F09FE44734EB7990E -gpg --keyserver pool.sks-keyservers.net --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 -gpg --keyserver pool.sks-keyservers.net --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 -gpg --keyserver pool.sks-keyservers.net --recv-keys DD8F2338BAE7501E3DD5AC78C273792F7D83545D -gpg --keyserver pool.sks-keyservers.net --recv-keys A48C2BEE680E841632CD4E44F07496B3EB3C1762 -``` - -See the section above on [Verifying Binaries](#verifying-binaries) for how to -use these keys to verify a downloaded file. - -Other keys used to sign some previous releases: - -* **Chris Dickinson** <christopher.s.dickinson@gmail.com> -`9554F04D7259F04124DE6B476D5A82AC7E37093B` -* **Isaac Z. Schlueter** <i@izs.me> -`93C7E9E91B49E432C2F75674B0A78B0A6C481CF6` -* **Italo A. Casas** <me@italoacasas.com> -`56730D5401028683275BD23C23EFEFE93C4CFFFE` -* **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 Foundation]: https://nodejs.org/en/foundation/ -[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 cc916c6c226..8165a92882c 100644 --- a/common.gypi +++ b/common.gypi @@ -38,7 +38,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', ##### V8 defaults for Node.js ##### @@ -68,6 +68,9 @@ # Still WIP in V8 7.1 'v8_enable_pointer_compression': 'false', + # Explicitly set to false to copy V8's default + 'v8_enable_31bit_smis_on_64bit_arch': 'false', + # New in V8 7.1 'v8_enable_embedded_builtins': 'true', diff --git a/deps/v8/.clang-tidy b/deps/v8/.clang-tidy index 31d7ddc7500..80e243c5a0e 100644 --- a/deps/v8/.clang-tidy +++ b/deps/v8/.clang-tidy @@ -4,13 +4,13 @@ modernize-redundant-void-arg, modernize-replace-random-shuffle, modernize-shrink-to-fit, - modernize-use-auto, + # modernize-use-auto, modernize-use-bool-literals, modernize-use-equals-default, - modernize-use-equals-delete, + # modernize-use-equals-delete, modernize-use-nullptr, modernize-use-override, - google-build-explicit-make-pair, + # google-build-explicit-make-pair, google-explicit-constructor, google-readability-casting' WarningsAsErrors: '' diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index 7f09c89e360..6cf6ab4e919 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -32,6 +32,7 @@ .project .pydevproject .settings +.torquelint-cache .vscode /_* /build @@ -51,7 +52,7 @@ /test/mozilla/data /test/test262/data /test/test262/harness -/test/wasm-js +/test/wasm-js/data /test/wasm-spec-tests/tests /test/wasm-spec-tests/tests.tar.gz /third_party/* diff --git a/deps/v8/.vpython b/deps/v8/.vpython index 398cef1ad52..f8d3b7278a4 100644 --- a/deps/v8/.vpython +++ b/deps/v8/.vpython @@ -43,3 +43,26 @@ wheel: < platform: "win_amd64" > > + +# Used by: +# tools/unittests/run_perf_test.py +wheel: < + name: "infra/python/wheels/coverage/${vpython_platform}" + version: "version:4.3.4" +> +wheel: < + name: "infra/python/wheels/six-py2_py3" + version: "version:1.10.0" +> +wheel: < + name: "infra/python/wheels/pbr-py2_py3" + version: "version:3.0.0" +> +wheel: < + name: "infra/python/wheels/funcsigs-py2_py3" + version: "version:1.0.2" +> +wheel: < + name: "infra/python/wheels/mock-py2_py3" + version: "version:2.0.0" +> diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index b935565945d..1027d55b4d0 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -50,6 +50,7 @@ Andrew Paprocki Andrei Kashcha Anna Henningsen Bangfu Tao +Daniel Shelton Ben Coe Ben Newman Ben Noordhuis @@ -109,7 +110,7 @@ Maciej Małecki Marcin Cieślak Marcin Wiącek Mateusz Czeladka -Matheus Marchini +Matheus Marchini Mathias Bynens Matt Hanselman Matthew Sporleder @@ -156,6 +157,7 @@ Teddy Katz Tiancheng "Timothy" Gu Tobias Burnus Tobias Nießen +Tom Tan Ujjwal Sharma Victor Costan Vlad Burlik diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 83f1fdb0bf7..b979ad77608 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -18,6 +18,15 @@ if (is_android) { import("gni/v8.gni") import("snapshot_toolchain.gni") +# Specifies if the target build is a simulator build. Comparing target cpu +# with v8 target cpu to not affect simulator builds for making cross-compile +# snapshots. +is_target_simulator = (target_cpu != v8_target_cpu && !v8_multi_arch_build) || + (current_cpu != v8_current_cpu && v8_multi_arch_build) + +# For faster Windows builds. See https://crbug.com/v8/8475. +emit_builtins_as_inline_asm = is_win && is_clang + declare_args() { # Print to stdout on Android. v8_android_log_stdout = false @@ -32,6 +41,11 @@ declare_args() { # Sets -DV8_ENABLE_FUTURE. v8_enable_future = false + # Lite mode disables a number of performance optimizations to reduce memory + # at the cost of performance. + # Sets --DV8_LITE_MODE. + v8_enable_lite_mode = false + # Sets -DVERIFY_HEAP. v8_enable_verify_heap = "" @@ -63,7 +77,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 @@ -72,15 +86,19 @@ declare_args() { v8_enable_fast_mksnapshot = false # Enable embedded builtins. - # TODO(jgruber,v8:6666): Support ia32 and maybe MSVC. - v8_enable_embedded_builtins = v8_use_snapshot && v8_current_cpu != "x86" && - !is_aix && (!is_win || is_clang) + v8_enable_embedded_builtins = true + + # Build-time flag for enabling nojit mode. + # TODO(v8:7777): Remove the build-time flag once the --jitless runtime flag + # does everything we need. + v8_enable_jitless_mode = false # Enable code-generation-time checking of types in the CodeStubAssembler. v8_enable_verify_csa = false # Enable pointer compression (sets -dV8_COMPRESS_POINTERS). v8_enable_pointer_compression = false + v8_enable_31bit_smis_on_64bit_arch = false # Interpreted regexp engine exists as platform-independent alternative # based where the regular expression is compiled to a bytecode. @@ -107,10 +125,6 @@ declare_args() { # Enables various testing features. v8_enable_test_features = "" - # Build the snapshot with unwinding information for perf. - # Sets -dV8_USE_SNAPSHOT_WITH_UNWINDING_INFO. - v8_perf_prof_unwinding_info = false - # With post mortem support enabled, metadata is embedded into libv8 that # describes various parameters of the VM for use by debuggers. See # tools/gen-postmortem-metadata.py for details. @@ -152,7 +166,12 @@ declare_args() { v8_check_microtasks_scopes_consistency = "" # Enable mitigations for executing untrusted code. - v8_untrusted_code_mitigations = true + # Disabled by default on ia32 due to conflicting requirements with embedded + # builtins. Enabled by default on Android since it doesn't support + # site-isolation in Chrome and on simulator builds which test code generation + # on these platforms. + v8_untrusted_code_mitigations = + v8_current_cpu != "x86" && (is_android || is_target_simulator) # Enable minor mark compact. v8_enable_minor_mc = true @@ -198,17 +217,13 @@ if (v8_check_microtasks_scopes_consistency == "") { v8_enable_debugging_features || dcheck_always_on } -assert(!v8_enable_embedded_builtins || v8_use_snapshot, - "Embedded builtins only work with snapshots") -assert( - v8_current_cpu != "x86" || !v8_enable_embedded_builtins || - !v8_untrusted_code_mitigations, - "Embedded builtins on ia32 and untrusted code mitigations are incompatible") +assert(v8_current_cpu != "x86" || !v8_untrusted_code_mitigations, + "Untrusted code mitigations are unsupported on ia32") -# Specifies if the target build is a simulator build. Comparing target cpu -# with v8 target cpu to not affect simulator builds for making cross-compile -# snapshots. -is_target_simulator = target_cpu != v8_target_cpu +assert(!v8_enable_jitless_mode || v8_enable_embedded_builtins, + "JIT-less mode requires embedded builtins") +assert(!v8_enable_jitless_mode || v8_use_snapshot, + "JIT-less mode requires a snapshot build") v8_random_seed = "314159265" v8_toolset_for_shell = "host" @@ -224,10 +239,10 @@ config("internal_config") { "$target_gen_dir", ] - defines = [] + configs = [ "//build/config/compiler:wexit_time_destructors" ] if (is_component_build) { - defines += [ "BUILDING_V8_SHARED" ] + defines = [ "BUILDING_V8_SHARED" ] } } @@ -314,6 +329,9 @@ config("features") { if (v8_enable_future) { defines += [ "V8_ENABLE_FUTURE" ] } + if (v8_enable_lite_mode) { + defines += [ "V8_LITE_MODE" ] + } if (v8_enable_gdbjit) { defines += [ "ENABLE_GDB_JIT_INTERFACE" ] } @@ -326,6 +344,9 @@ config("features") { if (v8_enable_pointer_compression) { defines += [ "V8_COMPRESS_POINTERS" ] } + if (v8_enable_31bit_smis_on_64bit_arch) { + defines += [ "V8_31BIT_SMIS_ON_64BIT_ARCH" ] + } if (v8_enable_object_print) { defines += [ "OBJECT_PRINT" ] } @@ -368,9 +389,6 @@ config("features") { } if (v8_use_snapshot) { defines += [ "V8_USE_SNAPSHOT" ] - if (v8_perf_prof_unwinding_info) { - defines += [ "V8_USE_SNAPSHOT_WITH_UNWINDING_INFO" ] - } } if (v8_use_external_startup_data) { defines += [ "V8_USE_EXTERNAL_STARTUP_DATA" ] @@ -382,10 +400,10 @@ config("features") { defines += [ "V8_CHECK_MICROTASKS_SCOPES_CONSISTENCY" ] } if (v8_enable_embedded_builtins) { - defines += [ - "V8_EMBEDDED_BUILTINS", - "V8_EMBEDDED_BYTECODE_HANDLERS", - ] + defines += [ "V8_EMBEDDED_BUILTINS" ] + } + if (v8_enable_jitless_mode) { + defines += [ "V8_JITLESS_MODE" ] } if (v8_use_multi_snapshots) { defines += [ "V8_MULTI_SNAPSHOTS" ] @@ -661,6 +679,39 @@ config("v8_gcov_coverage_ldflags") { # Actions # +# Only for Windows clang builds. Converts the embedded.S file produced by +# mksnapshot into an embedded.cc file with corresponding inline assembly. +template("asm_to_inline_asm") { + name = target_name + if (name == "default") { + suffix = "" + } else { + suffix = "_$name" + } + + action("asm_to_inline_asm_" + name) { + visibility = [ ":*" ] # Only targets in this file can depend on this. + + assert(emit_builtins_as_inline_asm) + + script = "tools/snapshot/asm_to_inline_asm.py" + deps = [ + ":run_mksnapshot_" + name, + ] + sources = [ + "$target_gen_dir/embedded${suffix}.S", + ] + outputs = [ + "$target_gen_dir/embedded${suffix}.cc", + ] + args = invoker.args + args += [ + rebase_path("$target_gen_dir/embedded${suffix}.S", root_build_dir), + rebase_path("$target_gen_dir/embedded${suffix}.cc", root_build_dir), + ] + } +} + action("js2c") { visibility = [ ":*" ] # Only targets in this file can depend on this. @@ -675,7 +726,7 @@ action("js2c") { # NOSORT sources = [ "src/js/macros.py", - "src/messages.h", + "src/message-template.h", "src/js/prologue.js", "src/js/array.js", "src/js/typedarray.js", @@ -685,10 +736,6 @@ action("js2c") { "$target_gen_dir/libraries.cc", ] - if (v8_enable_i18n_support) { - sources += [ "src/js/intl.js" ] - } - args = [ rebase_path("$target_gen_dir/libraries.cc", root_build_dir), "CORE", @@ -862,12 +909,17 @@ action("postmortem-metadata") { "src/objects/data-handler-inl.h", "src/objects/fixed-array-inl.h", "src/objects/fixed-array.h", + "src/objects/heap-object-inl.h", + "src/objects/heap-object.h", + "src/objects/instance-type.h", "src/objects/js-array-inl.h", "src/objects/js-array.h", "src/objects/js-array-buffer-inl.h", "src/objects/js-array-buffer.h", "src/objects/js-objects-inl.h", "src/objects/js-objects.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/js-regexp-string-iterator-inl.h", @@ -898,19 +950,30 @@ torque_files = [ "src/builtins/array.tq", "src/builtins/array-copywithin.tq", "src/builtins/array-foreach.tq", + "src/builtins/array-join.tq", "src/builtins/array-lastindexof.tq", + "src/builtins/array-of.tq", "src/builtins/array-reverse.tq", + "src/builtins/array-slice.tq", "src/builtins/array-splice.tq", "src/builtins/array-unshift.tq", - "src/builtins/typed-array.tq", + "src/builtins/collections.tq", "src/builtins/data-view.tq", + "src/builtins/frames.tq", + "src/builtins/object.tq", + "src/builtins/object-fromentries.tq", + "src/builtins/iterator.tq", + "src/builtins/typed-array.tq", "test/torque/test-torque.tq", "third_party/v8/builtins/array-sort.tq", ] -torque_modules = [ +torque_namespaces = [ "base", "array", + "collections", + "iterator", + "object", "typed-array", "data-view", "test", @@ -934,10 +997,10 @@ action("run_torque") { outputs = [ "$target_gen_dir/torque-generated/builtin-definitions-from-dsl.h", ] - foreach(module, torque_modules) { + foreach(namespace, torque_namespaces) { outputs += [ - "$target_gen_dir/torque-generated/builtins-$module-from-dsl-gen.cc", - "$target_gen_dir/torque-generated/builtins-$module-from-dsl-gen.h", + "$target_gen_dir/torque-generated/builtins-$namespace-from-dsl-gen.cc", + "$target_gen_dir/torque-generated/builtins-$namespace-from-dsl-gen.h", ] } @@ -954,20 +1017,6 @@ action("run_torque") { } } -v8_header_set("torque_generated_core") { - visibility = [ ":*" ] # Only targets in this file can depend on this. - - deps = [ - ":run_torque", - ] - - sources = [ - "$target_gen_dir/torque-generated/builtin-definitions-from-dsl.h", - ] - - configs = [ ":internal_config" ] -} - v8_source_set("torque_generated_initializers") { visibility = [ ":*" ] # Only targets in this file can depend on this. @@ -983,10 +1032,10 @@ v8_source_set("torque_generated_initializers") { } sources = [] - foreach(module, torque_modules) { + foreach(namespace, torque_namespaces) { sources += [ - "$target_gen_dir/torque-generated/builtins-$module-from-dsl-gen.cc", - "$target_gen_dir/torque-generated/builtins-$module-from-dsl-gen.h", + "$target_gen_dir/torque-generated/builtins-$namespace-from-dsl-gen.cc", + "$target_gen_dir/torque-generated/builtins-$namespace-from-dsl-gen.h", ] } @@ -1007,14 +1056,15 @@ action("generate_bytecode_builtins_list") { ":bytecode_builtins_list_generator($v8_generator_toolchain)", "root_out_dir") + "/bytecode_builtins_list_generator", root_build_dir), - rebase_path("$target_gen_dir/builtins-generated/bytecodes-builtins-list.h"), + rebase_path("$target_gen_dir/builtins-generated/bytecodes-builtins-list.h", + root_build_dir), ] } # 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 +# Otherwise files are suffixed, e.g. embedded_.S and # snapshot_blob_.bin. # # The template exposes the variables: @@ -1053,10 +1103,10 @@ template("run_mksnapshot") { args += invoker.args if (v8_enable_embedded_builtins) { - outputs += [ "$target_gen_dir/embedded${suffix}.cc" ] + outputs += [ "$target_gen_dir/embedded${suffix}.S" ] args += [ "--embedded_src", - rebase_path("$target_gen_dir/embedded${suffix}.cc", root_build_dir), + rebase_path("$target_gen_dir/embedded${suffix}.S", root_build_dir), ] if (invoker.embedded_variant != "") { args += [ @@ -1080,10 +1130,6 @@ template("run_mksnapshot") { ] } - if (v8_perf_prof_unwinding_info) { - args += [ "--perf-prof-unwinding-info" ] - } - if (v8_use_external_startup_data) { outputs += [ "$root_out_dir/snapshot_blob${suffix}.bin" ] data += [ "$root_out_dir/snapshot_blob${suffix}.bin" ] @@ -1125,6 +1171,11 @@ if (v8_use_snapshot) { embedded_variant = "Default" } } + if (emit_builtins_as_inline_asm) { + asm_to_inline_asm("default") { + args = [] + } + } if (v8_use_multi_snapshots) { run_mksnapshot("trusted") { args = [ "--no-untrusted-code-mitigations" ] @@ -1132,6 +1183,11 @@ if (v8_use_snapshot) { embedded_variant = "Trusted" } } + if (emit_builtins_as_inline_asm) { + asm_to_inline_asm("trusted") { + args = [] + } + } } } @@ -1160,6 +1216,10 @@ action("v8_dump_build_config") { "v8_enable_verify_predictable=$v8_enable_verify_predictable", "v8_target_cpu=\"$v8_target_cpu\"", "v8_use_snapshot=$v8_use_snapshot", + "v8_enable_embedded_builtins=$v8_enable_embedded_builtins", + "v8_enable_jitless_mode=$v8_enable_jitless_mode", + "v8_enable_verify_csa=$v8_enable_verify_csa", + "v8_enable_lite_mode=$v8_enable_lite_mode", ] if (v8_current_cpu == "mips" || v8_current_cpu == "mipsel" || @@ -1255,8 +1315,11 @@ if (v8_use_snapshot && !v8_use_external_startup_data) { "src/setup-isolate-deserialize.cc", ] - if (v8_enable_embedded_builtins) { + if (v8_enable_embedded_builtins && emit_builtins_as_inline_asm) { + deps += [ ":asm_to_inline_asm_default" ] sources += [ "$target_gen_dir/embedded.cc" ] + } else if (v8_enable_embedded_builtins) { + sources += [ "$target_gen_dir/embedded.S" ] } else { sources += [ "src/snapshot/embedded-empty.cc" ] } @@ -1302,16 +1365,28 @@ if (v8_use_snapshot && v8_use_external_startup_data) { # Do not publicize any header to remove build dependency. public = [] - if (v8_enable_embedded_builtins) { + if (v8_enable_embedded_builtins && emit_builtins_as_inline_asm) { + deps += [ ":asm_to_inline_asm_default" ] sources += [ "$target_gen_dir/embedded.cc" ] if (v8_use_multi_snapshots) { + deps += [ ":asm_to_inline_asm_trusted" ] sources += [ "$target_gen_dir/embedded_trusted.cc" ] + if (use_jumbo_build == true) { + jumbo_excluded_sources = [ "$target_gen_dir/embedded_trusted.cc" ] + } + } + } else if (v8_enable_embedded_builtins) { + sources += [ "$target_gen_dir/embedded.S" ] + + if (v8_use_multi_snapshots) { + sources += [ "$target_gen_dir/embedded_trusted.S" ] + if (use_jumbo_build == true) { jumbo_excluded_sources = [ - # Duplicated symbols with embedded.cc - "$target_gen_dir/embedded_trusted.cc", + # Duplicated symbols with embedded.S + "$target_gen_dir/embedded_trusted.S", ] } } @@ -1371,6 +1446,7 @@ v8_source_set("v8_initializers") { "src/builtins/builtins-lazy-gen.h", "src/builtins/builtins-math-gen.cc", "src/builtins/builtins-math-gen.h", + "src/builtins/builtins-microtask-queue-gen.cc", "src/builtins/builtins-number-gen.cc", "src/builtins/builtins-object-gen.cc", "src/builtins/builtins-promise-gen.cc", @@ -1391,6 +1467,8 @@ v8_source_set("v8_initializers") { "src/builtins/growable-fixed-array-gen.cc", "src/builtins/growable-fixed-array-gen.h", "src/builtins/setup-builtins-internal.cc", + "src/code-stub-assembler.cc", + "src/code-stub-assembler.h", "src/heap/setup-heap-internal.cc", "src/ic/accessor-assembler.cc", "src/ic/accessor-assembler.h", @@ -1412,9 +1490,10 @@ v8_source_set("v8_initializers") { "src/builtins/builtins-async-iterator-gen.cc", "src/builtins/builtins-async-generator-gen.cc", - # This source file takes an unusually large amount of time to - # compile. Build it separately to avoid bottlenecks. + # These source files take an unusually large amount of time to + # compile. Build them separately to avoid bottlenecks. "src/builtins/builtins-regexp-gen.cc", + "src/code-stub-assembler.cc", ] } @@ -1510,6 +1589,14 @@ v8_header_set("v8_headers") { "include/v8config.h", ] + if (is_linux || is_mac) { + sources += [ "include/v8-wasm-trap-handler-posix.h" ] + } + + if (is_win) { + sources += [ "include/v8-wasm-trap-handler-win.h" ] + } + deps = [ ":v8_version", ] @@ -1533,6 +1620,7 @@ v8_source_set("v8_base") { "include/v8-profiler.h", "include/v8-testing.h", "include/v8-util.h", + "include/v8-wasm-trap-handler-posix.h", "include/v8.h", "include/v8config.h", "src/accessors.cc", @@ -1563,8 +1651,6 @@ v8_source_set("v8_base") { "src/asmjs/asm-scanner.h", "src/asmjs/asm-types.cc", "src/asmjs/asm-types.h", - "src/asmjs/switch-logic.cc", - "src/asmjs/switch-logic.h", "src/assembler-arch-inl.h", "src/assembler-arch.h", "src/assembler-inl.h", @@ -1580,13 +1666,10 @@ v8_source_set("v8_base") { "src/ast/ast-value-factory.h", "src/ast/ast.cc", "src/ast/ast.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-inl.h", "src/ast/scopes.cc", "src/ast/scopes.h", "src/ast/variables.cc", @@ -1638,6 +1721,7 @@ v8_source_set("v8_base") { "src/builtins/builtins-typed-array.cc", "src/builtins/builtins-utils-inl.h", "src/builtins/builtins-utils.h", + "src/builtins/builtins-weak-refs.cc", "src/builtins/builtins.cc", "src/builtins/builtins.h", "src/builtins/constants-table-builder.cc", @@ -1656,11 +1740,6 @@ v8_source_set("v8_base") { "src/code-factory.h", "src/code-reference.cc", "src/code-reference.h", - "src/code-stub-assembler.cc", - "src/code-stub-assembler.h", - "src/code-stubs-utils.h", - "src/code-stubs.cc", - "src/code-stubs.h", "src/code-tracer.h", "src/codegen.cc", "src/codegen.h", @@ -1669,16 +1748,10 @@ v8_source_set("v8_base") { "src/compilation-cache.h", "src/compilation-statistics.cc", "src/compilation-statistics.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/compiler-dispatcher.cc", "src/compiler-dispatcher/compiler-dispatcher.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/compiler/access-builder.cc", @@ -1687,7 +1760,34 @@ v8_source_set("v8_base") { "src/compiler/access-info.h", "src/compiler/all-nodes.cc", "src/compiler/all-nodes.h", + "src/compiler/allocation-builder-inl.h", "src/compiler/allocation-builder.h", + "src/compiler/backend/code-generator-impl.h", + "src/compiler/backend/code-generator.cc", + "src/compiler/backend/code-generator.h", + "src/compiler/backend/frame-elider.cc", + "src/compiler/backend/frame-elider.h", + "src/compiler/backend/gap-resolver.cc", + "src/compiler/backend/gap-resolver.h", + "src/compiler/backend/instruction-codes.h", + "src/compiler/backend/instruction-scheduler.cc", + "src/compiler/backend/instruction-scheduler.h", + "src/compiler/backend/instruction-selector-impl.h", + "src/compiler/backend/instruction-selector.cc", + "src/compiler/backend/instruction-selector.h", + "src/compiler/backend/instruction.cc", + "src/compiler/backend/instruction.h", + "src/compiler/backend/jump-threading.cc", + "src/compiler/backend/jump-threading.h", + "src/compiler/backend/live-range-separator.cc", + "src/compiler/backend/live-range-separator.h", + "src/compiler/backend/move-optimizer.cc", + "src/compiler/backend/move-optimizer.h", + "src/compiler/backend/register-allocator-verifier.cc", + "src/compiler/backend/register-allocator-verifier.h", + "src/compiler/backend/register-allocator.cc", + "src/compiler/backend/register-allocator.h", + "src/compiler/backend/unwinding-info-writer.h", "src/compiler/basic-block-instrumentor.cc", "src/compiler/basic-block-instrumentor.h", "src/compiler/branch-elimination.cc", @@ -1703,9 +1803,6 @@ v8_source_set("v8_base") { "src/compiler/checkpoint-elimination.h", "src/compiler/code-assembler.cc", "src/compiler/code-assembler.h", - "src/compiler/code-generator-impl.h", - "src/compiler/code-generator.cc", - "src/compiler/code-generator.h", "src/compiler/common-node-cache.cc", "src/compiler/common-node-cache.h", "src/compiler/common-operator-reducer.cc", @@ -1731,15 +1828,11 @@ v8_source_set("v8_base") { "src/compiler/escape-analysis-reducer.h", "src/compiler/escape-analysis.cc", "src/compiler/escape-analysis.h", - "src/compiler/frame-elider.cc", - "src/compiler/frame-elider.h", "src/compiler/frame-states.cc", "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", "src/compiler/graph-assembler.h", "src/compiler/graph-reducer.cc", @@ -1750,14 +1843,6 @@ v8_source_set("v8_base") { "src/compiler/graph-visualizer.h", "src/compiler/graph.cc", "src/compiler/graph.h", - "src/compiler/instruction-codes.h", - "src/compiler/instruction-scheduler.cc", - "src/compiler/instruction-scheduler.h", - "src/compiler/instruction-selector-impl.h", - "src/compiler/instruction-selector.cc", - "src/compiler/instruction-selector.h", - "src/compiler/instruction.cc", - "src/compiler/instruction.h", "src/compiler/int64-lowering.cc", "src/compiler/int64-lowering.h", "src/compiler/js-call-reducer.cc", @@ -1788,12 +1873,8 @@ v8_source_set("v8_base") { "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", @@ -1812,8 +1893,6 @@ v8_source_set("v8_base") { "src/compiler/machine-operator.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", @@ -1851,10 +1930,6 @@ v8_source_set("v8_base") { "src/compiler/redundancy-elimination.h", "src/compiler/refs-map.cc", "src/compiler/refs-map.h", - "src/compiler/register-allocator-verifier.cc", - "src/compiler/register-allocator-verifier.h", - "src/compiler/register-allocator.cc", - "src/compiler/register-allocator.h", "src/compiler/representation-change.cc", "src/compiler/representation-change.h", "src/compiler/schedule.cc", @@ -1885,7 +1960,6 @@ v8_source_set("v8_base") { "src/compiler/typer.h", "src/compiler/types.cc", "src/compiler/types.h", - "src/compiler/unwinding-info-writer.h", "src/compiler/value-numbering-reducer.cc", "src/compiler/value-numbering-reducer.h", "src/compiler/verifier.cc", @@ -1894,6 +1968,9 @@ v8_source_set("v8_base") { "src/compiler/wasm-compiler.h", "src/compiler/zone-stats.cc", "src/compiler/zone-stats.h", + "src/constant-pool.cc", + "src/constant-pool.h", + "src/constants-arch.h", "src/contexts-inl.h", "src/contexts.cc", "src/contexts.h", @@ -1915,6 +1992,8 @@ v8_source_set("v8_base") { "src/debug/debug-frames.cc", "src/debug/debug-frames.h", "src/debug/debug-interface.h", + "src/debug/debug-property-iterator.cc", + "src/debug/debug-property-iterator.h", "src/debug/debug-scope-iterator.cc", "src/debug/debug-scope-iterator.h", "src/debug/debug-scopes.cc", @@ -1932,6 +2011,7 @@ v8_source_set("v8_base") { "src/deoptimize-reason.h", "src/deoptimizer.cc", "src/deoptimizer.h", + "src/detachable-vector.cc", "src/detachable-vector.h", "src/disasm.h", "src/disassembler.cc", @@ -2053,6 +2133,7 @@ v8_source_set("v8_base") { "src/heap/scavenger-inl.h", "src/heap/scavenger.cc", "src/heap/scavenger.h", + "src/heap/slot-set.cc", "src/heap/slot-set.h", "src/heap/spaces-inl.h", "src/heap/spaces.cc", @@ -2083,8 +2164,6 @@ 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", @@ -2132,8 +2211,9 @@ v8_source_set("v8_base") { "src/interpreter/interpreter-intrinsics.h", "src/interpreter/interpreter.cc", "src/interpreter/interpreter.h", - "src/intl.cc", - "src/intl.h", + "src/isolate-allocator.cc", + "src/isolate-allocator.h", + "src/isolate-data.h", "src/isolate-inl.h", "src/isolate.cc", "src/isolate.h", @@ -2171,8 +2251,13 @@ v8_source_set("v8_base") { "src/math-random.h", "src/maybe-handles-inl.h", "src/maybe-handles.h", + "src/memcopy.cc", + "src/memcopy.h", + "src/message-template.h", "src/messages.cc", "src/messages.h", + "src/microtask-queue.cc", + "src/microtask-queue.h", "src/msan.h", "src/objects-body-descriptors-inl.h", "src/objects-body-descriptors.h", @@ -2195,15 +2280,25 @@ v8_source_set("v8_base") { "src/objects/debug-objects-inl.h", "src/objects/debug-objects.cc", "src/objects/debug-objects.h", + "src/objects/descriptor-array-inl.h", "src/objects/descriptor-array.h", + "src/objects/dictionary-inl.h", "src/objects/dictionary.h", + "src/objects/embedder-data-array-inl.h", + "src/objects/embedder-data-array.cc", + "src/objects/embedder-data-array.h", + "src/objects/embedder-data-slot-inl.h", + "src/objects/embedder-data-slot.h", "src/objects/fixed-array-inl.h", "src/objects/fixed-array.h", "src/objects/frame-array-inl.h", "src/objects/frame-array.h", "src/objects/hash-table-inl.h", "src/objects/hash-table.h", - "src/objects/intl-objects-inl.h", + "src/objects/heap-object-inl.h", + "src/objects/heap-object.h", + "src/objects/instance-type-inl.h", + "src/objects/instance-type.h", "src/objects/intl-objects.cc", "src/objects/intl-objects.h", "src/objects/js-array-buffer-inl.h", @@ -2249,9 +2344,14 @@ v8_source_set("v8_base") { "src/objects/js-relative-time-format-inl.h", "src/objects/js-relative-time-format.cc", "src/objects/js-relative-time-format.h", + "src/objects/js-segment-iterator-inl.h", + "src/objects/js-segment-iterator.cc", + "src/objects/js-segment-iterator.h", "src/objects/js-segmenter-inl.h", "src/objects/js-segmenter.cc", "src/objects/js-segmenter.h", + "src/objects/js-weak-refs-inl.h", + "src/objects/js-weak-refs.h", "src/objects/literal-objects-inl.h", "src/objects/literal-objects.cc", "src/objects/literal-objects.h", @@ -2262,9 +2362,6 @@ v8_source_set("v8_base") { "src/objects/maybe-object-inl.h", "src/objects/maybe-object.h", "src/objects/microtask-inl.h", - "src/objects/microtask-queue-inl.h", - "src/objects/microtask-queue.cc", - "src/objects/microtask-queue.h", "src/objects/microtask.h", "src/objects/module-inl.h", "src/objects/module.cc", @@ -2280,6 +2377,8 @@ v8_source_set("v8_base") { "src/objects/promise.h", "src/objects/property-array-inl.h", "src/objects/property-array.h", + "src/objects/property-cell-inl.h", + "src/objects/property-cell.h", "src/objects/property-descriptor-object-inl.h", "src/objects/property-descriptor-object.h", "src/objects/prototype-info-inl.h", @@ -2291,9 +2390,13 @@ v8_source_set("v8_base") { "src/objects/script.h", "src/objects/shared-function-info-inl.h", "src/objects/shared-function-info.h", + "src/objects/slots-atomic-inl.h", + "src/objects/slots-inl.h", + "src/objects/slots.h", "src/objects/stack-frame-info-inl.h", "src/objects/stack-frame-info.h", "src/objects/string-inl.h", + "src/objects/string-table-inl.h", "src/objects/string-table.h", "src/objects/string.h", "src/objects/template-objects.cc", @@ -2304,7 +2407,6 @@ v8_source_set("v8_base") { "src/optimized-compilation-info.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", @@ -2336,6 +2438,7 @@ v8_source_set("v8_base") { "src/pending-compilation-error-handler.h", "src/perf-jit.cc", "src/perf-jit.h", + "src/pointer-with-payload.h", "src/profiler/allocation-tracker.cc", "src/profiler/allocation-tracker.h", "src/profiler/circular-queue-inl.h", @@ -2369,6 +2472,7 @@ v8_source_set("v8_base") { "src/property.cc", "src/property.h", "src/prototype.h", + "src/ptr-compr.h", "src/regexp/bytecodes-irregexp.h", "src/regexp/interpreter-irregexp.cc", "src/regexp/interpreter-irregexp.h", @@ -2432,6 +2536,7 @@ v8_source_set("v8_base") { "src/runtime/runtime-typedarray.cc", "src/runtime/runtime-utils.h", "src/runtime/runtime-wasm.cc", + "src/runtime/runtime-weak-refs.cc", "src/runtime/runtime.cc", "src/runtime/runtime.h", "src/safepoint-table.cc", @@ -2441,23 +2546,14 @@ v8_source_set("v8_base") { "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/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-allocator.cc", + "src/snapshot/deserializer-allocator.h", "src/snapshot/deserializer.cc", "src/snapshot/deserializer.h", - "src/snapshot/macros.h", + "src/snapshot/embedded-data.cc", + "src/snapshot/embedded-data.h", "src/snapshot/natives-common.cc", "src/snapshot/natives.h", "src/snapshot/object-deserializer.cc", @@ -2466,7 +2562,15 @@ v8_source_set("v8_base") { "src/snapshot/partial-deserializer.h", "src/snapshot/partial-serializer.cc", "src/snapshot/partial-serializer.h", + "src/snapshot/read-only-deserializer.cc", + "src/snapshot/read-only-deserializer.h", + "src/snapshot/read-only-serializer.cc", + "src/snapshot/read-only-serializer.h", "src/snapshot/references.h", + "src/snapshot/roots-serializer.cc", + "src/snapshot/roots-serializer.h", + "src/snapshot/serializer-allocator.cc", + "src/snapshot/serializer-allocator.h", "src/snapshot/serializer-common.cc", "src/snapshot/serializer-common.h", "src/snapshot/serializer.cc", @@ -2500,8 +2604,11 @@ v8_source_set("v8_base") { "src/string-stream.h", "src/strtod.cc", "src/strtod.h", + "src/task-utils.cc", + "src/task-utils.h", "src/third_party/utf8-decoder/utf8-decoder.h", - "src/torque-assembler.h", + "src/thread-id.cc", + "src/thread-id.h", "src/tracing/trace-event.cc", "src/tracing/trace-event.h", "src/tracing/traced-value.cc", @@ -2520,7 +2627,6 @@ v8_source_set("v8_base") { "src/turbo-assembler.h", "src/type-hints.cc", "src/type-hints.h", - "src/unicode-cache-inl.h", "src/unicode-cache.h", "src/unicode-decoder.cc", "src/unicode-decoder.h", @@ -2529,6 +2635,7 @@ v8_source_set("v8_base") { "src/unicode.h", "src/unoptimized-compilation-info.cc", "src/unoptimized-compilation-info.h", + "src/unwinder.cc", "src/uri.cc", "src/uri.h", "src/utils-inl.h", @@ -2556,12 +2663,15 @@ v8_source_set("v8_base") { "src/wasm/baseline/liftoff-compiler.cc", "src/wasm/baseline/liftoff-compiler.h", "src/wasm/baseline/liftoff-register.h", + "src/wasm/compilation-environment.h", "src/wasm/decoder.h", "src/wasm/function-body-decoder-impl.h", "src/wasm/function-body-decoder.cc", "src/wasm/function-body-decoder.h", "src/wasm/function-compiler.cc", "src/wasm/function-compiler.h", + "src/wasm/graph-builder-interface.cc", + "src/wasm/graph-builder-interface.h", "src/wasm/jump-table-assembler.cc", "src/wasm/jump-table-assembler.h", "src/wasm/leb-helper.h", @@ -2590,6 +2700,7 @@ v8_source_set("v8_base") { "src/wasm/wasm-feature-flags.h", "src/wasm/wasm-features.cc", "src/wasm/wasm-features.h", + "src/wasm/wasm-import-wrapper-cache-inl.h", "src/wasm/wasm-interpreter.cc", "src/wasm/wasm-interpreter.h", "src/wasm/wasm-js.cc", @@ -2643,7 +2754,6 @@ v8_source_set("v8_base") { # These source files take an unusually large amount of time to # compile. Build them separately to avoid bottlenecks. "src/api.cc", - "src/code-stub-assembler.cc", "src/elements.cc", "src/heap/heap.cc", "src/objects.cc", @@ -2653,15 +2763,14 @@ v8_source_set("v8_base") { if (v8_current_cpu == "x86") { sources += [ ### gcmole(arch:ia32) ### - "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/compiler/backend/ia32/code-generator-ia32.cc", + "src/compiler/backend/ia32/instruction-codes-ia32.h", + "src/compiler/backend/ia32/instruction-scheduler-ia32.cc", + "src/compiler/backend/ia32/instruction-selector-ia32.cc", "src/debug/ia32/debug-ia32.cc", "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/constants-ia32.h", "src/ia32/cpu-ia32.cc", @@ -2681,12 +2790,12 @@ v8_source_set("v8_base") { ] } else if (v8_current_cpu == "x64") { sources += [ ### gcmole(arch:x64) ### - "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/compiler/backend/x64/code-generator-x64.cc", + "src/compiler/backend/x64/instruction-codes-x64.h", + "src/compiler/backend/x64/instruction-scheduler-x64.cc", + "src/compiler/backend/x64/instruction-selector-x64.cc", + "src/compiler/backend/x64/unwinding-info-writer-x64.cc", + "src/compiler/backend/x64/unwinding-info-writer-x64.h", "src/debug/x64/debug-x64.cc", "src/regexp/x64/regexp-macro-assembler-x64.cc", "src/regexp/x64/regexp-macro-assembler-x64.h", @@ -2695,7 +2804,6 @@ v8_source_set("v8_base") { "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/constants-x64.h", "src/x64/cpu-x64.cc", @@ -2711,22 +2819,25 @@ v8_source_set("v8_base") { "src/x64/simulator-x64.h", "src/x64/sse-instr.h", ] - if (is_linux) { + if (is_linux || is_mac) { sources += [ - "src/trap-handler/handler-inside-linux.cc", - "src/trap-handler/handler-outside-linux.cc", + "src/trap-handler/handler-inside-posix.cc", + "src/trap-handler/handler-inside-posix.h", + "src/trap-handler/handler-outside-posix.cc", ] } if (is_win) { - sources += [ "src/trap-handler/handler-outside-win.cc" ] + sources += [ + "src/trap-handler/handler-inside-win.cc", + "src/trap-handler/handler-inside-win.h", + "src/trap-handler/handler-outside-win.cc", + ] } } else if (v8_current_cpu == "arm") { sources += [ ### gcmole(arch:arm) ### "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.cc", "src/arm/constants-arm.h", @@ -2741,12 +2852,12 @@ v8_source_set("v8_base") { "src/arm/macro-assembler-arm.h", "src/arm/simulator-arm.cc", "src/arm/simulator-arm.h", - "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/compiler/backend/arm/code-generator-arm.cc", + "src/compiler/backend/arm/instruction-codes-arm.h", + "src/compiler/backend/arm/instruction-scheduler-arm.cc", + "src/compiler/backend/arm/instruction-selector-arm.cc", + "src/compiler/backend/arm/unwinding-info-writer-arm.cc", + "src/compiler/backend/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", @@ -2757,8 +2868,6 @@ v8_source_set("v8_base") { "src/arm64/assembler-arm64-inl.h", "src/arm64/assembler-arm64.cc", "src/arm64/assembler-arm64.h", - "src/arm64/code-stubs-arm64.cc", - "src/arm64/code-stubs-arm64.h", "src/arm64/codegen-arm64.cc", "src/arm64/constants-arm64.h", "src/arm64/cpu-arm64.cc", @@ -2785,12 +2894,12 @@ v8_source_set("v8_base") { "src/arm64/simulator-logic-arm64.cc", "src/arm64/utils-arm64.cc", "src/arm64/utils-arm64.h", - "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/compiler/backend/arm64/code-generator-arm64.cc", + "src/compiler/backend/arm64/instruction-codes-arm64.h", + "src/compiler/backend/arm64/instruction-scheduler-arm64.cc", + "src/compiler/backend/arm64/instruction-selector-arm64.cc", + "src/compiler/backend/arm64/unwinding-info-writer-arm64.cc", + "src/compiler/backend/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", @@ -2805,16 +2914,14 @@ v8_source_set("v8_base") { } } else if (v8_current_cpu == "mips" || v8_current_cpu == "mipsel") { sources += [ ### gcmole(arch:mipsel) ### - "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/compiler/backend/mips/code-generator-mips.cc", + "src/compiler/backend/mips/instruction-codes-mips.h", + "src/compiler/backend/mips/instruction-scheduler-mips.cc", + "src/compiler/backend/mips/instruction-selector-mips.cc", "src/debug/mips/debug-mips.cc", "src/mips/assembler-mips-inl.h", "src/mips/assembler-mips.cc", "src/mips/assembler-mips.h", - "src/mips/code-stubs-mips.cc", - "src/mips/code-stubs-mips.h", "src/mips/codegen-mips.cc", "src/mips/constants-mips.cc", "src/mips/constants-mips.h", @@ -2834,16 +2941,14 @@ v8_source_set("v8_base") { ] } else if (v8_current_cpu == "mips64" || v8_current_cpu == "mips64el") { sources += [ ### gcmole(arch:mips64el) ### - "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/compiler/backend/mips64/code-generator-mips64.cc", + "src/compiler/backend/mips64/instruction-codes-mips64.h", + "src/compiler/backend/mips64/instruction-scheduler-mips64.cc", + "src/compiler/backend/mips64/instruction-selector-mips64.cc", "src/debug/mips64/debug-mips64.cc", "src/mips64/assembler-mips64-inl.h", "src/mips64/assembler-mips64.cc", "src/mips64/assembler-mips64.h", - "src/mips64/code-stubs-mips64.cc", - "src/mips64/code-stubs-mips64.h", "src/mips64/codegen-mips64.cc", "src/mips64/constants-mips64.cc", "src/mips64/constants-mips64.h", @@ -2863,16 +2968,15 @@ v8_source_set("v8_base") { ] } else if (v8_current_cpu == "ppc" || v8_current_cpu == "ppc64") { sources += [ ### gcmole(arch:ppc) ### - "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/compiler/backend/ppc/code-generator-ppc.cc", + "src/compiler/backend/ppc/instruction-codes-ppc.h", + "src/compiler/backend/ppc/instruction-scheduler-ppc.cc", + "src/compiler/backend/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.cc", "src/ppc/constants-ppc.h", @@ -2892,10 +2996,10 @@ v8_source_set("v8_base") { ] } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { sources += [ ### gcmole(arch:s390) ### - "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/compiler/backend/s390/code-generator-s390.cc", + "src/compiler/backend/s390/instruction-codes-s390.h", + "src/compiler/backend/s390/instruction-scheduler-s390.cc", + "src/compiler/backend/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", @@ -2903,7 +3007,6 @@ v8_source_set("v8_base") { "src/s390/assembler-s390.cc", "src/s390/assembler-s390.h", "src/s390/code-stubs-s390.cc", - "src/s390/code-stubs-s390.h", "src/s390/codegen-s390.cc", "src/s390/constants-s390.cc", "src/s390/constants-s390.h", @@ -2926,7 +3029,7 @@ v8_source_set("v8_base") { defines = [] deps = [ ":generate_bytecode_builtins_list", - ":torque_generated_core", + ":run_torque", ":v8_headers", ":v8_libbase", ":v8_libsampler", @@ -2944,9 +3047,6 @@ v8_source_set("v8_base") { sources -= [ "src/builtins/builtins-intl.cc", "src/char-predicates.cc", - "src/intl.cc", - "src/intl.h", - "src/objects/intl-objects-inl.h", "src/objects/intl-objects.cc", "src/objects/intl-objects.h", "src/objects/js-break-iterator-inl.h", @@ -2973,6 +3073,9 @@ v8_source_set("v8_base") { "src/objects/js-relative-time-format-inl.h", "src/objects/js-relative-time-format.cc", "src/objects/js-relative-time-format.h", + "src/objects/js-segment-iterator-inl.h", + "src/objects/js-segment-iterator.cc", + "src/objects/js-segment-iterator.h", "src/objects/js-segmenter-inl.h", "src/objects/js-segmenter.cc", "src/objects/js-segmenter.h", @@ -3020,8 +3123,6 @@ v8_source_set("torque_base") { "src/torque/implementation-visitor.h", "src/torque/instructions.cc", "src/torque/instructions.h", - "src/torque/scope.cc", - "src/torque/scope.h", "src/torque/source-positions.cc", "src/torque/source-positions.h", "src/torque/torque-parser.cc", @@ -3219,6 +3320,14 @@ v8_component("v8_libbase") { data_deps += [ "//build/win:runtime_libs" ] } + if (v8_current_cpu == "mips" || v8_current_cpu == "mips64") { + # Add runtime libs for mips. + data += [ + "tools/mips_toolchain/sysroot/usr/lib/", + "tools/mips_toolchain/mips-mti-linux-gnu/lib", + ] + } + if (is_tsan && !build_with_chromium) { data += [ "tools/sanitizers/tsan_suppressions.txt" ] } @@ -3358,6 +3467,8 @@ if (v8_use_snapshot && current_toolchain == v8_snapshot_toolchain) { visibility = [ ":*" ] # Only targets in this file can depend on this. sources = [ + "src/snapshot/embedded-file-writer.cc", + "src/snapshot/embedded-file-writer.h", "src/snapshot/mksnapshot.cc", ] @@ -3448,8 +3559,12 @@ group("v8_archive") { deps = [ ":d8", - "test/cctest:cctest", ] + + if (!is_win) { + # On windows, cctest doesn't link with v8_static_library. + deps += [ "test/cctest:cctest" ] + } } # TODO(dglazkov): Remove the "!build_with_chromium" condition once this clause @@ -3563,6 +3678,8 @@ v8_executable("d8") { "src/async-hooks-wrapper.h", "src/d8-console.cc", "src/d8-console.h", + "src/d8-platforms.cc", + "src/d8-platforms.h", "src/d8.cc", "src/d8.h", ] @@ -3777,7 +3894,7 @@ v8_source_set("wasm_module_runner") { deps = [ ":generate_bytecode_builtins_list", - ":torque_generated_core", + ":run_torque", ] if (v8_enable_i18n_support) { @@ -3861,7 +3978,7 @@ v8_source_set("lib_wasm_fuzzer_common") { deps = [ ":generate_bytecode_builtins_list", - ":torque_generated_core", + ":run_torque", ] if (v8_enable_i18n_support) { @@ -4036,3 +4153,19 @@ v8_source_set("wasm_compile_fuzzer") { v8_fuzzer("wasm_compile_fuzzer") { } + +# Target to build all generated .cc files. +group("v8_generated_cc_files") { + testonly = true + + deps = [ + ":d8_js2c", + ":generate_bytecode_builtins_list", + ":js2c", + ":js2c_experimental_extras", + ":js2c_extras", + ":run_torque", + "src/inspector:v8_generated_cc_files", + "test/cctest:v8_generated_cc_files", + ] +} diff --git a/deps/v8/ChangeLog b/deps/v8/ChangeLog index a3377ab473c..57a5d527a09 100644 --- a/deps/v8/ChangeLog +++ b/deps/v8/ChangeLog @@ -1,3 +1,3038 @@ +2018-12-10: Version 7.3.83 + + Performance and stability improvements on all platforms. + + +2018-12-10: Version 7.3.82 + + Performance and stability improvements on all platforms. + + +2018-12-10: Version 7.3.81 + + Performance and stability improvements on all platforms. + + +2018-12-10: Version 7.3.80 + + Performance and stability improvements on all platforms. + + +2018-12-10: Version 7.3.79 + + Performance and stability improvements on all platforms. + + +2018-12-10: Version 7.3.78 + + Performance and stability improvements on all platforms. + + +2018-12-10: Version 7.3.77 + + Performance and stability improvements on all platforms. + + +2018-12-10: Version 7.3.76 + + Performance and stability improvements on all platforms. + + +2018-12-08: Version 7.3.75 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.74 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.73 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.72 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.71 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.70 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.69 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.68 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.67 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.66 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.65 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.64 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.63 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.62 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.61 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.60 + + Performance and stability improvements on all platforms. + + +2018-12-07: Version 7.3.59 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.58 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.57 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.56 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.55 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.54 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.53 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.52 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.51 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.50 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.49 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.48 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.47 + + Performance and stability improvements on all platforms. + + +2018-12-06: Version 7.3.46 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.45 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.44 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.43 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.42 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.41 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.40 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.39 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.38 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.37 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.36 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.35 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.34 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.33 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.32 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.31 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.30 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.29 + + Performance and stability improvements on all platforms. + + +2018-12-05: Version 7.3.28 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.27 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.26 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.25 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.24 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.23 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.22 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.21 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.20 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.19 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.18 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.17 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.16 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.15 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.14 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.13 + + Performance and stability improvements on all platforms. + + +2018-12-04: Version 7.3.12 + + Performance and stability improvements on all platforms. + + +2018-12-03: Version 7.3.11 + + Performance and stability improvements on all platforms. + + +2018-12-03: Version 7.3.10 + + Performance and stability improvements on all platforms. + + +2018-12-03: Version 7.3.9 + + Performance and stability improvements on all platforms. + + +2018-12-03: Version 7.3.8 + + Performance and stability improvements on all platforms. + + +2018-12-03: Version 7.3.7 + + Performance and stability improvements on all platforms. + + +2018-12-03: Version 7.3.6 + + Performance and stability improvements on all platforms. + + +2018-12-03: Version 7.3.5 + + Performance and stability improvements on all platforms. + + +2018-12-03: Version 7.3.4 + + Performance and stability improvements on all platforms. + + +2018-12-03: Version 7.3.3 + + Performance and stability improvements on all platforms. + + +2018-12-03: Version 7.3.2 + + Performance and stability improvements on all platforms. + + +2018-12-03: Version 7.3.1 + + Performance and stability improvements on all platforms. + + +2018-11-29: Version 7.2.505 + + Performance and stability improvements on all platforms. + + +2018-11-29: Version 7.2.504 + + Performance and stability improvements on all platforms. + + +2018-11-29: Version 7.2.503 + + Performance and stability improvements on all platforms. + + +2018-11-28: Version 7.2.502 + + Performance and stability improvements on all platforms. + + +2018-11-28: Version 7.2.501 + + Performance and stability improvements on all platforms. + + +2018-11-28: Version 7.2.500 + + Performance and stability improvements on all platforms. + + +2018-11-28: Version 7.2.499 + + Performance and stability improvements on all platforms. + + +2018-11-28: Version 7.2.498 + + Performance and stability improvements on all platforms. + + +2018-11-28: Version 7.2.497 + + Performance and stability improvements on all platforms. + + +2018-11-28: Version 7.2.496 + + Performance and stability improvements on all platforms. + + +2018-11-28: Version 7.2.495 + + Performance and stability improvements on all platforms. + + +2018-11-28: Version 7.2.494 + + Performance and stability improvements on all platforms. + + +2018-11-28: Version 7.2.493 + + Performance and stability improvements on all platforms. + + +2018-11-28: Version 7.2.492 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.491 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.490 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.489 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.488 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.487 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.486 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.485 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.484 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.483 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.482 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.481 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.480 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.479 + + Performance and stability improvements on all platforms. + + +2018-11-27: Version 7.2.478 + + Performance and stability improvements on all platforms. + + +2018-11-26: Version 7.2.477 + + Performance and stability improvements on all platforms. + + +2018-11-26: Version 7.2.476 + + Performance and stability improvements on all platforms. + + +2018-11-26: Version 7.2.475 + + Performance and stability improvements on all platforms. + + +2018-11-26: Version 7.2.474 + + Performance and stability improvements on all platforms. + + +2018-11-26: Version 7.2.473 + + Performance and stability improvements on all platforms. + + +2018-11-26: Version 7.2.472 + + Performance and stability improvements on all platforms. + + +2018-11-26: Version 7.2.471 + + Performance and stability improvements on all platforms. + + +2018-11-26: Version 7.2.470 + + Performance and stability improvements on all platforms. + + +2018-11-26: Version 7.2.469 + + Performance and stability improvements on all platforms. + + +2018-11-24: Version 7.2.468 + + Performance and stability improvements on all platforms. + + +2018-11-24: Version 7.2.467 + + Performance and stability improvements on all platforms. + + +2018-11-24: Version 7.2.466 + + Performance and stability improvements on all platforms. + + +2018-11-24: Version 7.2.465 + + Performance and stability improvements on all platforms. + + +2018-11-24: Version 7.2.464 + + Performance and stability improvements on all platforms. + + +2018-11-24: Version 7.2.463 + + Performance and stability improvements on all platforms. + + +2018-11-23: Version 7.2.462 + + Performance and stability improvements on all platforms. + + +2018-11-23: Version 7.2.461 + + Performance and stability improvements on all platforms. + + +2018-11-23: Version 7.2.460 + + Performance and stability improvements on all platforms. + + +2018-11-23: Version 7.2.459 + + Performance and stability improvements on all platforms. + + +2018-11-23: Version 7.2.458 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.457 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.456 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.455 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.454 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.453 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.452 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.451 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.450 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.449 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.448 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.447 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.446 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.445 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.444 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.443 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.442 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.441 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.440 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.439 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.438 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.437 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.436 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.435 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.434 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.433 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.432 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.431 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.430 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.429 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.428 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.427 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.426 + + Performance and stability improvements on all platforms. + + +2018-11-22: Version 7.2.425 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.424 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.423 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.422 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.421 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.420 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.419 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.418 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.417 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.416 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.415 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.414 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.413 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.412 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.411 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.410 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.409 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.408 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.407 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.406 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.405 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.404 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.403 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.402 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.401 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.400 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.399 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.398 + + Performance and stability improvements on all platforms. + + +2018-11-21: Version 7.2.397 + + Performance and stability improvements on all platforms. + + +2018-11-20: Version 7.2.396 + + Performance and stability improvements on all platforms. + + +2018-11-20: Version 7.2.395 + + Performance and stability improvements on all platforms. + + +2018-11-20: Version 7.2.394 + + Performance and stability improvements on all platforms. + + +2018-11-20: Version 7.2.393 + + Performance and stability improvements on all platforms. + + +2018-11-20: Version 7.2.392 + + Performance and stability improvements on all platforms. + + +2018-11-20: Version 7.2.391 + + Performance and stability improvements on all platforms. + + +2018-11-20: Version 7.2.390 + + Performance and stability improvements on all platforms. + + +2018-11-20: Version 7.2.389 + + Performance and stability improvements on all platforms. + + +2018-11-20: Version 7.2.388 + + Performance and stability improvements on all platforms. + + +2018-11-19: Version 7.2.387 + + Performance and stability improvements on all platforms. + + +2018-11-19: Version 7.2.386 + + Performance and stability improvements on all platforms. + + +2018-11-19: Version 7.2.385 + + Performance and stability improvements on all platforms. + + +2018-11-19: Version 7.2.384 + + Performance and stability improvements on all platforms. + + +2018-11-19: Version 7.2.383 + + Performance and stability improvements on all platforms. + + +2018-11-19: Version 7.2.382 + + Performance and stability improvements on all platforms. + + +2018-11-19: Version 7.2.381 + + Performance and stability improvements on all platforms. + + +2018-11-19: Version 7.2.380 + + Performance and stability improvements on all platforms. + + +2018-11-19: Version 7.2.379 + + Performance and stability improvements on all platforms. + + +2018-11-18: Version 7.2.378 + + Performance and stability improvements on all platforms. + + +2018-11-18: Version 7.2.377 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.376 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.375 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.374 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.373 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.372 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.371 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.370 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.369 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.368 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.367 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.366 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.365 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.364 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.363 + + Performance and stability improvements on all platforms. + + +2018-11-16: Version 7.2.362 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.361 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.360 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.359 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.358 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.357 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.356 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.355 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.354 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.353 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.352 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.351 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.350 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.349 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.348 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.347 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.346 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.345 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.344 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.343 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.342 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.341 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.340 + + Performance and stability improvements on all platforms. + + +2018-11-15: Version 7.2.339 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.338 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.337 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.336 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.335 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.334 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.333 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.332 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.331 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.330 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.329 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.328 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.327 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.326 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.325 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.324 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.323 + + Performance and stability improvements on all platforms. + + +2018-11-14: Version 7.2.322 + + Performance and stability improvements on all platforms. + + +2018-11-13: Version 7.2.321 + + Performance and stability improvements on all platforms. + + +2018-11-13: Version 7.2.320 + + Performance and stability improvements on all platforms. + + +2018-11-13: Version 7.2.319 + + Performance and stability improvements on all platforms. + + +2018-11-13: Version 7.2.318 + + Performance and stability improvements on all platforms. + + +2018-11-13: Version 7.2.317 + + Performance and stability improvements on all platforms. + + +2018-11-13: Version 7.2.316 + + Performance and stability improvements on all platforms. + + +2018-11-13: Version 7.2.315 + + Performance and stability improvements on all platforms. + + +2018-11-13: Version 7.2.314 + + Performance and stability improvements on all platforms. + + +2018-11-13: Version 7.2.313 + + Performance and stability improvements on all platforms. + + +2018-11-13: Version 7.2.312 + + Performance and stability improvements on all platforms. + + +2018-11-13: Version 7.2.311 + + Performance and stability improvements on all platforms. + + +2018-11-13: Version 7.2.310 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.309 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.308 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.307 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.306 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.305 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.304 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.303 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.302 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.301 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.300 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.299 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.298 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.297 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.296 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.295 + + Performance and stability improvements on all platforms. + + +2018-11-12: Version 7.2.294 + + Performance and stability improvements on all platforms. + + +2018-11-09: Version 7.2.293 + + Performance and stability improvements on all platforms. + + +2018-11-09: Version 7.2.292 + + Performance and stability improvements on all platforms. + + +2018-11-09: Version 7.2.291 + + Performance and stability improvements on all platforms. + + +2018-11-09: Version 7.2.290 + + Performance and stability improvements on all platforms. + + +2018-11-09: Version 7.2.289 + + Performance and stability improvements on all platforms. + + +2018-11-09: Version 7.2.288 + + Performance and stability improvements on all platforms. + + +2018-11-09: Version 7.2.287 + + Performance and stability improvements on all platforms. + + +2018-11-09: Version 7.2.286 + + Performance and stability improvements on all platforms. + + +2018-11-09: Version 7.2.285 + + Performance and stability improvements on all platforms. + + +2018-11-09: Version 7.2.284 + + Performance and stability improvements on all platforms. + + +2018-11-08: Version 7.2.283 + + Performance and stability improvements on all platforms. + + +2018-11-08: Version 7.2.282 + + Performance and stability improvements on all platforms. + + +2018-11-08: Version 7.2.281 + + Performance and stability improvements on all platforms. + + +2018-11-08: Version 7.2.280 + + Performance and stability improvements on all platforms. + + +2018-11-08: Version 7.2.279 + + Performance and stability improvements on all platforms. + + +2018-11-08: Version 7.2.278 + + Performance and stability improvements on all platforms. + + +2018-11-08: Version 7.2.277 + + Performance and stability improvements on all platforms. + + +2018-11-08: Version 7.2.276 + + Performance and stability improvements on all platforms. + + +2018-11-08: Version 7.2.275 + + Performance and stability improvements on all platforms. + + +2018-11-08: Version 7.2.274 + + Performance and stability improvements on all platforms. + + +2018-11-08: Version 7.2.273 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.272 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.271 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.270 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.269 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.268 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.267 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.266 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.265 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.264 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.263 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.262 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.261 + + Performance and stability improvements on all platforms. + + +2018-11-07: Version 7.2.260 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.259 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.258 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.257 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.256 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.255 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.254 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.253 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.252 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.251 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.250 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.249 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.248 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.247 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.246 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.245 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.244 + + Performance and stability improvements on all platforms. + + +2018-11-06: Version 7.2.243 + + Performance and stability improvements on all platforms. + + +2018-11-05: Version 7.2.242 + + Performance and stability improvements on all platforms. + + +2018-11-05: Version 7.2.241 + + Performance and stability improvements on all platforms. + + +2018-11-05: Version 7.2.240 + + Performance and stability improvements on all platforms. + + +2018-11-05: Version 7.2.239 + + Performance and stability improvements on all platforms. + + +2018-11-04: Version 7.2.238 + + Performance and stability improvements on all platforms. + + +2018-11-04: Version 7.2.237 + + Performance and stability improvements on all platforms. + + +2018-11-03: Version 7.2.236 + + Performance and stability improvements on all platforms. + + +2018-11-03: Version 7.2.235 + + Performance and stability improvements on all platforms. + + +2018-11-03: Version 7.2.234 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.233 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.232 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.231 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.230 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.229 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.228 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.227 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.226 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.225 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.224 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.223 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.222 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.221 + + Performance and stability improvements on all platforms. + + +2018-11-02: Version 7.2.220 + + Performance and stability improvements on all platforms. + + +2018-11-01: Version 7.2.219 + + Performance and stability improvements on all platforms. + + +2018-11-01: Version 7.2.218 + + Performance and stability improvements on all platforms. + + +2018-11-01: Version 7.2.217 + + Performance and stability improvements on all platforms. + + +2018-11-01: Version 7.2.216 + + Performance and stability improvements on all platforms. + + +2018-11-01: Version 7.2.215 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.214 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.213 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.212 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.211 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.210 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.209 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.208 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.207 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.206 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.205 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.204 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.203 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.202 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.201 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.200 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.199 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.198 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.197 + + Performance and stability improvements on all platforms. + + +2018-10-31: Version 7.2.196 + + Performance and stability improvements on all platforms. + + +2018-10-30: Version 7.2.195 + + Performance and stability improvements on all platforms. + + +2018-10-30: Version 7.2.194 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.193 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.192 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.191 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.190 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.189 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.188 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.187 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.186 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.185 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.184 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.183 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.182 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.181 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.180 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.179 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.178 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.177 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.176 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.175 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.174 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.173 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.172 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.171 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.170 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.169 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.168 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.167 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.166 + + Performance and stability improvements on all platforms. + + +2018-10-29: Version 7.2.165 + + Performance and stability improvements on all platforms. + + +2018-10-28: Version 7.2.164 + + Performance and stability improvements on all platforms. + + +2018-10-27: Version 7.2.163 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.162 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.161 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.160 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.159 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.158 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.157 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.156 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.155 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.154 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.153 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.152 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.151 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.150 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.149 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.148 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.147 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.146 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.145 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.144 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.143 + + Performance and stability improvements on all platforms. + + +2018-10-26: Version 7.2.142 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.141 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.140 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.139 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.138 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.137 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.136 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.135 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.134 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.133 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.132 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.131 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.130 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.129 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.128 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.127 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.126 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.125 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.124 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.123 + + Performance and stability improvements on all platforms. + + +2018-10-25: Version 7.2.122 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.121 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.120 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.119 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.118 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.117 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.116 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.115 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.114 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.113 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.112 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.111 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.110 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.109 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.108 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.107 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.106 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.105 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.104 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.103 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.102 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.101 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.100 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.99 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.98 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.97 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.96 + + Performance and stability improvements on all platforms. + + +2018-10-24: Version 7.2.95 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.94 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.93 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.92 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.91 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.90 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.89 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.88 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.87 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.86 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.85 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.84 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.83 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.82 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.81 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.80 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.79 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.78 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.77 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.76 + + Performance and stability improvements on all platforms. + + +2018-10-23: Version 7.2.75 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.74 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.73 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.72 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.71 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.70 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.69 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.68 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.67 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.66 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.65 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.64 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.63 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.62 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.61 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.60 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.59 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.58 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.57 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.56 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.55 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.54 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.53 + + Performance and stability improvements on all platforms. + + +2018-10-22: Version 7.2.52 + + Performance and stability improvements on all platforms. + + +2018-10-20: Version 7.2.51 + + Performance and stability improvements on all platforms. + + +2018-10-20: Version 7.2.50 + + Performance and stability improvements on all platforms. + + +2018-10-19: Version 7.2.49 + + Performance and stability improvements on all platforms. + + +2018-10-19: Version 7.2.48 + + Performance and stability improvements on all platforms. + + +2018-10-19: Version 7.2.47 + + Performance and stability improvements on all platforms. + + +2018-10-19: Version 7.2.46 + + Performance and stability improvements on all platforms. + + +2018-10-19: Version 7.2.45 + + Performance and stability improvements on all platforms. + + +2018-10-19: Version 7.2.44 + + Performance and stability improvements on all platforms. + + +2018-10-19: Version 7.2.43 + + Performance and stability improvements on all platforms. + + +2018-10-18: Version 7.2.42 + + Performance and stability improvements on all platforms. + + +2018-10-18: Version 7.2.41 + + Performance and stability improvements on all platforms. + + +2018-10-18: Version 7.2.40 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.39 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.38 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.37 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.36 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.35 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.34 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.33 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.32 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.31 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.30 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.29 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.28 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.27 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.26 + + Performance and stability improvements on all platforms. + + +2018-10-17: Version 7.2.25 + + Performance and stability improvements on all platforms. + + +2018-10-16: Version 7.2.24 + + Performance and stability improvements on all platforms. + + +2018-10-16: Version 7.2.23 + + Performance and stability improvements on all platforms. + + +2018-10-16: Version 7.2.22 + + Performance and stability improvements on all platforms. + + +2018-10-16: Version 7.2.21 + + Performance and stability improvements on all platforms. + + +2018-10-16: Version 7.2.20 + + Performance and stability improvements on all platforms. + + +2018-10-16: Version 7.2.19 + + Performance and stability improvements on all platforms. + + +2018-10-16: Version 7.2.18 + + Performance and stability improvements on all platforms. + + +2018-10-16: Version 7.2.17 + + Performance and stability improvements on all platforms. + + +2018-10-16: Version 7.2.16 + + Performance and stability improvements on all platforms. + + +2018-10-15: Version 7.2.15 + + Performance and stability improvements on all platforms. + + +2018-10-15: Version 7.2.14 + + Performance and stability improvements on all platforms. + + +2018-10-15: Version 7.2.13 + + Performance and stability improvements on all platforms. + + +2018-10-15: Version 7.2.12 + + Performance and stability improvements on all platforms. + + +2018-10-15: Version 7.2.11 + + Performance and stability improvements on all platforms. + + +2018-10-15: Version 7.2.10 + + Performance and stability improvements on all platforms. + + +2018-10-15: Version 7.2.9 + + Performance and stability improvements on all platforms. + + +2018-10-15: Version 7.2.8 + + Performance and stability improvements on all platforms. + + +2018-10-15: Version 7.2.7 + + Performance and stability improvements on all platforms. + + +2018-10-15: Version 7.2.6 + + Performance and stability improvements on all platforms. + + +2018-10-15: Version 7.2.5 + + Performance and stability improvements on all platforms. + + +2018-10-15: Version 7.2.4 + + Performance and stability improvements on all platforms. + + +2018-10-14: Version 7.2.3 + + Performance and stability improvements on all platforms. + + +2018-10-13: Version 7.2.2 + + Performance and stability improvements on all platforms. + + +2018-10-13: Version 7.2.1 + + Performance and stability improvements on all platforms. + + +2018-10-11: Version 7.1.321 + + Performance and stability improvements on all platforms. + + +2018-10-10: Version 7.1.320 + + Performance and stability improvements on all platforms. + + +2018-10-10: Version 7.1.319 + + Performance and stability improvements on all platforms. + + +2018-10-10: Version 7.1.318 + + Performance and stability improvements on all platforms. + + +2018-10-10: Version 7.1.317 + + Performance and stability improvements on all platforms. + + +2018-10-10: Version 7.1.316 + + Performance and stability improvements on all platforms. + + +2018-10-10: Version 7.1.315 + + Performance and stability improvements on all platforms. + + +2018-10-10: Version 7.1.314 + + Performance and stability improvements on all platforms. + + +2018-10-10: Version 7.1.313 + + Performance and stability improvements on all platforms. + + +2018-10-10: Version 7.1.312 + + Performance and stability improvements on all platforms. + + +2018-10-09: Version 7.1.311 + + Performance and stability improvements on all platforms. + + +2018-10-09: Version 7.1.310 + + Performance and stability improvements on all platforms. + + +2018-10-09: Version 7.1.309 + + Performance and stability improvements on all platforms. + + +2018-10-09: Version 7.1.308 + + Performance and stability improvements on all platforms. + + +2018-10-09: Version 7.1.307 + + Performance and stability improvements on all platforms. + + +2018-10-09: Version 7.1.306 + + Performance and stability improvements on all platforms. + + +2018-10-09: Version 7.1.305 + + Performance and stability improvements on all platforms. + + +2018-10-09: Version 7.1.304 + + Performance and stability improvements on all platforms. + + +2018-10-09: Version 7.1.303 + + Performance and stability improvements on all platforms. + + 2018-10-09: Version 7.1.302 Performance and stability improvements on all platforms. diff --git a/deps/v8/DEPS b/deps/v8/DEPS index fdd96f9b820..d690aa35fa2 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -9,19 +9,22 @@ vars = { 'download_jsfunfuzz': False, 'download_mips_toolchain': False, 'check_v8_header_includes': False, + + # luci-go CIPD package version. + 'luci_go': 'git_revision:fdf05508e8a66c773a41521e0243c9d11b9a2a1c', } deps = { 'v8/build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + 'a7674eacc34947257c78fe6ba5cf0da17f60696c', + Var('chromium_url') + '/chromium/src/build.git' + '@' + '510ff4cfe905f5e51a4257cb79b723eec8a9a8d5', 'v8/third_party/depot_tools': - Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '71e3be7a50c21faeee91ed99a8d5addfb7594e7c', + Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + 'fed2cb39c320aa37367e009a37813da869f4d529', 'v8/third_party/icu': - Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'c52a2a250d6c5f5cbdd015dff36af7c5d0ae1150', + Var('chromium_url') + '/chromium/deps/icu.git' + '@' + '407b39301e71006b68bd38e770f35d32398a7b14', 'v8/third_party/instrumented_libraries': - Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + 'a90cbf3b4216430a437991fb53ede8e048dea454', + Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + 'a959e4f0cb643003f2d75d179cede449979e3e77', 'v8/buildtools': - Var('chromium_url') + '/chromium/buildtools.git' + '@' + '2dff9c9c74e9d732e6fe57c84ef7fd044cc45d96', + Var('chromium_url') + '/chromium/buildtools.git' + '@' + '7d88270de197ebe8b439ab5eb57a4a2a0bb810e0', 'v8/base/trace_event/common': Var('chromium_url') + '/chromium/src/base/trace_event/common.git' + '@' + '211b3ed9d0481b4caddbee1322321b86a483ca1f', 'v8/third_party/android_ndk': { @@ -29,11 +32,11 @@ deps = { 'condition': 'checkout_android', }, 'v8/third_party/android_tools': { - 'url': Var('chromium_url') + '/android_tools.git' + '@' + '130499e25286f4d56acafa252fee09f3cc595c49', + 'url': Var('chromium_url') + '/android_tools.git' + '@' + '6fecaa542f73dd5aeed170d9a4cf340159b42976', 'condition': 'checkout_android', }, 'v8/third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + '9ec8468cfde0868ce5f3893e819087278c5af988', + 'url': Var('chromium_url') + '/catapult.git' + '@' + '74c92bb2207675ea7702153dd1cf60fddefe8495', 'condition': 'checkout_android', }, 'v8/third_party/colorama/src': { @@ -41,23 +44,23 @@ deps = { 'condition': 'checkout_android', }, 'v8/third_party/fuchsia-sdk': { - 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-sdk.git' + '@' + '6e1868c9083769d489d3fc25657339d50c22b1d8', + 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-sdk.git' + '@' + 'ac40df877fbffc53aa4513b9c5becab4b686fa70', 'condition': 'checkout_fuchsia', }, 'v8/third_party/googletest/src': - Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '2e68926a9d4929e9289373cd49e40ddcb9a628f7', + Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '879ac092fde0a19e1b3a61b2546b2a422b1528bc', 'v8/third_party/jinja2': Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + 'b41863e42637544c2941b574c7877d3e1f663e25', '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' + '@' + '486c9b53c4d54dd4b95bb6ce0e31160e600dfc11', + Var('chromium_url') + '/infra/luci/client-py.git' + '@' + '0e3e1c4dc4e79f25a5b58fcbc135dc93183c0c54', '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' + '@' + '00cfe1628cc03164dcf03f01ba9c84376e9be735', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'b2597d060d034ade9325b6a5aa0febf37a37d240', 'v8/test/test262/harness': Var('chromium_url') + '/external/github.com/test262-utils/test262-harness-py.git' + '@' + '0f2acdd882c84cff43b9d60df7574a1901e2cdcd', 'v8/third_party/qemu-linux-x64': { @@ -81,11 +84,27 @@ deps = { 'dep_type': 'cipd', }, 'v8/tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '7792d28b069af6dd3a86d1ba83b7f5c4ede605dc', - 'v8/tools/luci-go': - Var('chromium_url') + '/chromium/src/tools/luci-go.git' + '@' + '445d7c4b6a4f10e188edb395b132e3996b127691', - 'v8/test/wasm-js': - Var('chromium_url') + '/external/github.com/WebAssembly/spec.git' + '@' + 'db9cd40808a90ecc5f4a23e88fb375c8f60b8d52', + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '1bc365f702163bc91c6e2cc1711b0d1469b47e40', + 'v8/tools/luci-go': { + 'packages': [ + { + 'package': 'infra/tools/luci/isolate/${{platform}}', + 'version': Var('luci_go'), + }, + { + 'package': 'infra/tools/luci/isolated/${{platform}}', + 'version': Var('luci_go'), + }, + { + 'package': 'infra/tools/luci/swarming/${{platform}}', + 'version': Var('luci_go'), + }, + ], + 'condition': 'host_cpu != "s390"', + 'dep_type': 'cipd', + }, + 'v8/test/wasm-js/data': + Var('chromium_url') + '/external/github.com/WebAssembly/spec.git' + '@' + '4408f60968e540a3eaf7ab01c2d85ec2de890fed', } recursedeps = [ @@ -190,43 +209,6 @@ hooks = [ '--platform=linux*', ], }, - # Pull luci-go binaries (isolate, swarming) using checked-in hashes. - { - 'name': 'luci-go_win', - 'pattern': '.', - 'condition': 'host_os == "win"', - 'action': [ 'download_from_google_storage', - '--no_resume', - '--platform=win32', - '--no_auth', - '--bucket', 'chromium-luci', - '-d', 'v8/tools/luci-go/win64', - ], - }, - { - 'name': 'luci-go_mac', - 'pattern': '.', - 'condition': 'host_os == "mac"', - 'action': [ 'download_from_google_storage', - '--no_resume', - '--platform=darwin', - '--no_auth', - '--bucket', 'chromium-luci', - '-d', 'v8/tools/luci-go/mac64', - ], - }, - { - 'name': 'luci-go_linux', - 'pattern': '.', - 'condition': 'host_os == "linux"', - 'action': [ 'download_from_google_storage', - '--no_resume', - '--platform=linux*', - '--no_auth', - '--bucket', 'chromium-luci', - '-d', 'v8/tools/luci-go/linux64', - ], - }, # Pull GN using checked-in hashes. { 'name': 'gn_win', @@ -275,17 +257,6 @@ hooks = [ '-s', 'v8/test/wasm-spec-tests/tests.tar.gz.sha1', ], }, - { - 'name': 'closure_compiler', - 'pattern': '.', - 'action': [ 'download_from_google_storage', - '--no_resume', - '--no_auth', - '-u', - '--bucket', 'chromium-v8-closure-compiler', - '-s', 'v8/src/inspector/build/closure-compiler.tar.gz.sha1', - ], - }, { 'name': 'sysroot_arm', 'pattern': '.', diff --git a/deps/v8/OWNERS b/deps/v8/OWNERS index d32f7213822..e41066126a2 100644 --- a/deps/v8/OWNERS +++ b/deps/v8/OWNERS @@ -4,12 +4,10 @@ aseemgarg@chromium.org bbudge@chromium.org binji@chromium.org bmeurer@chromium.org -bradnelson@chromium.org cbruni@chromium.org clemensh@chromium.org danno@chromium.org delphick@chromium.org -eholk@chromium.org gdeepti@chromium.org gsathya@chromium.org hablich@chromium.org @@ -19,7 +17,6 @@ ishell@chromium.org jarin@chromium.org jgruber@chromium.org jkummerow@chromium.org -kschimpf@chromium.org leszeks@chromium.org machenbach@chromium.org mathias@chromium.org diff --git a/deps/v8/PRESUBMIT.py b/deps/v8/PRESUBMIT.py index 88a64e727b2..eb027c11c26 100644 --- a/deps/v8/PRESUBMIT.py +++ b/deps/v8/PRESUBMIT.py @@ -458,19 +458,3 @@ def CheckChangeOnCommit(input_api, output_api): input_api, output_api, json_url='http://v8-status.appspot.com/current?format=json')) return results - -def PostUploadHook(cl, change, output_api): - """git cl upload will call this hook after the issue is created/modified. - - This hook adds a noi18n bot if the patch affects Intl. - """ - def affects_intl(f): - return 'intl' in f.LocalPath() or 'test262' in f.LocalPath() - if not change.AffectedFiles(file_filter=affects_intl): - return [] - return output_api.EnsureCQIncludeTrybotsAreAdded( - cl, - [ - 'luci.v8.try:v8_linux_noi18n_rel_ng' - ], - 'Automatically added noi18n trybots to run tests on CQ.') diff --git a/deps/v8/benchmarks/micro/slice-perf.js b/deps/v8/benchmarks/micro/slice-perf.js new file mode 100644 index 00000000000..300d2126666 --- /dev/null +++ b/deps/v8/benchmarks/micro/slice-perf.js @@ -0,0 +1,83 @@ +// 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 kIterations = 1000000; +const kIterationShort = 10000; +const kArraySize = 64; + +let smi_array = []; +for (let i = 0; i < kArraySize; ++i) smi_array[i] = Math.floor(Math.random() * 100); + +let start = performance.now(); +for (let x = 0; x < kIterations; ++x) { + smi_array.slice(0); +} +let stop = performance.now(); +print("smi_array copy: " + (Math.floor((stop - start)*10)/10) + " ms"); + +start = performance.now(); +for (let x = 0; x < kIterations; ++x) { + smi_array.slice(x % kArraySize); +} +stop = performance.now(); +print("smi_array: " + (Math.floor((stop - start)*10)/10) + " ms"); + +let double_array = []; +for (let i = 0; i < kArraySize; ++i) double_array[i] = Math.random() * 100; +start = performance.now(); +for (let x = 0; x < kIterations; ++x) { + double_array.slice(x % kArraySize); +} +stop = performance.now(); +print("double_array: " + (Math.floor((stop - start)*10)/10) + " ms"); + +let object_array = []; +for (let i = 0; i < kArraySize; ++i) object_array[i] = new Object(); +start = performance.now(); +for (let x = 0; x < kIterations; ++x) { + object_array.slice(x % kArraySize); +} +stop = performance.now(); +print("object_array: " + (Math.floor((stop - start)*10)/10) + " ms"); + +let dictionary_array = []; +for (let i = 0; i < kArraySize; ++i) dictionary_array[i] = new Object(); +dictionary_array[100000] = new Object(); +start = performance.now(); +for (let x = 0; x < kIterationShort; ++x) { + dictionary_array.slice(x % kArraySize); +} +stop = performance.now(); +print("dictionary: " + (Math.floor((stop - start)*10)/10) + " ms"); + +let arguments_array; +function sloppy() { + arguments_array = arguments; +} +sloppy.apply(null, smi_array); +start = performance.now(); +for (let x = 0; x < kIterations; ++x) { + let r = Array.prototype.slice.call(arguments_array, x % kArraySize); +} +stop = performance.now(); +print("arguments_array (sloppy): " + (Math.floor((stop - start)*10)/10) + " ms"); + +function sloppy2 (a) { + arguments_array = arguments; +} +sloppy2.apply(null, smi_array); +start = performance.now(); +for (let x = 0; x < kIterations; ++x) { + Array.prototype.slice.call(arguments_array, x % kArraySize); +} +stop = performance.now(); +print("arguments_array (fast aliased): " + (Math.floor((stop - start)*10)/10) + " ms"); + +delete arguments_array[5]; +start = performance.now(); +for (let x = 0; x < kIterationShort; ++x) { + Array.prototype.slice.call(arguments_array, x % kArraySize); +} +stop = performance.now(); +print("arguments_array (slow aliased): " + (Math.floor((stop - start)*10)/10) + " ms"); diff --git a/deps/v8/gypfiles/cctest.gyp b/deps/v8/gypfiles/cctest.gyp index 6e7fddae0bd..ba8f4b04e4d 100644 --- a/deps/v8/gypfiles/cctest.gyp +++ b/deps/v8/gypfiles/cctest.gyp @@ -48,7 +48,6 @@ '../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', @@ -130,6 +129,7 @@ '../test/cctest/test-double.cc', '../test/cctest/test-dtoa.cc', '../test/cctest/test-elements-kind.cc', + '../test/cctest/test-factory.cc', '../test/cctest/test-fast-dtoa.cc', '../test/cctest/test-feedback-vector.cc', '../test/cctest/test-feedback-vector.h', @@ -142,6 +142,7 @@ '../test/cctest/test-hashcode.cc', '../test/cctest/test-hashmap.cc', '../test/cctest/test-heap-profiler.cc', + '../test/cctest/test-icache.cc', '../test/cctest/test-identity-map.cc', '../test/cctest/test-intl.cc', '../test/cctest/test-inobject-slack-tracking.cc', @@ -176,6 +177,7 @@ '../test/cctest/test-unbound-queue.cc', '../test/cctest/test-unboxed-doubles.cc', '../test/cctest/test-unscopables-hidden-prototype.cc', + '../test/cctest/test-unwinder.cc', '../test/cctest/test-usecounters.cc', '../test/cctest/test-utils.cc', '../test/cctest/test-version.cc', @@ -207,18 +209,12 @@ ], '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', @@ -228,9 +224,6 @@ '../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', @@ -240,9 +233,6 @@ '../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', @@ -264,33 +254,21 @@ ], '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', ], diff --git a/deps/v8/gypfiles/d8.gyp b/deps/v8/gypfiles/d8.gyp index 34a4a6afee2..aa1a631d23f 100644 --- a/deps/v8/gypfiles/d8.gyp +++ b/deps/v8/gypfiles/d8.gyp @@ -31,6 +31,8 @@ '../src/async-hooks-wrapper.h', '../src/d8-console.cc', '../src/d8-console.h', + '../src/d8-platforms.cc', + '../src/d8-platforms.h', '../src/d8.cc', '../src/d8.h', ], diff --git a/deps/v8/gypfiles/features.gypi b/deps/v8/gypfiles/features.gypi index 855a7a5d2f4..5585b742671 100644 --- a/deps/v8/gypfiles/features.gypi +++ b/deps/v8/gypfiles/features.gypi @@ -51,10 +51,21 @@ 'v8_enable_gdbjit%': 0, + # Build-time flag for enabling nojit mode. + # TODO(v8:7777): Remove the build-time flag once the --jitless runtime flag + # does everything we need. + 'v8_enable_jitless_mode%': 0, + + # Enable code-generation-time checking of types in the CodeStubAssembler. 'v8_enable_verify_csa%': 0, 'v8_object_print%': 0, + # Lite mode disables a number of performance optimizations to reduce memory + # at the cost of performance. + # Sets --DV8_LITE_MODE. + 'v8_enable_lite_mode%': 0, + 'v8_enable_verify_heap%': 0, 'v8_trace_maps%': 0, @@ -111,22 +122,13 @@ 'v8_enable_pointer_compression%': 'false', - 'v8_enable_embedded_builtins%': 'true', + 'v8_enable_31bit_smis_on_64bit_arch%': 'false', - 'v8_perf_prof_unwinding_info%': 0, + 'v8_enable_embedded_builtins%': 'true', 'v8_enable_fast_mksnapshot%': 0, }, - 'conditions': [ - # V8's predicate inverted since we default to 'true' and set 'false' for unsupported cases. - # v8_use_snapshot && v8_current_cpu != "x86" && !is_aix && ( !is_win || is_clang) - ['not (v8_use_snapshot=="true" and v8_target_arch !="ia32" and OS!="aix" and (OS!="win" or clang==1))', { - 'variables': { - 'v8_enable_embedded_builtins': 'false', - } - }], - ], 'target_defaults': { 'conditions': [ ['v8_embedder_string!=""', { @@ -138,6 +140,9 @@ ['v8_promise_internal_field_count!=0', { 'defines': ['V8_PROMISE_INTERNAL_FIELD_COUNT=<(v8_promise_internal_field_count)'], }], + ['v8_enable_lite_mode==1', { + 'defines': ['V8_LITE_MODE',], + }], ['v8_enable_gdbjit==1', { 'defines': ['ENABLE_GDB_JIT_INTERFACE',], }], @@ -193,12 +198,17 @@ ['v8_enable_pointer_compression=="true"', { 'defines': ['V8_COMPRESS_POINTERS',], }], + ['v8_enable_31bit_smis_on_64bit_arch=="true"', { + 'defines': ['V8_31BIT_SMIS_ON_64BIT_ARCH',], + }], ['v8_enable_embedded_builtins=="true"', { 'defines': [ 'V8_EMBEDDED_BUILTINS', - 'V8_EMBEDDED_BYTECODE_HANDLERS', ], }], + ['v8_enable_jitless_mode==1', { + 'defines': ['V8_JITLESS_MODE',], + }], ], # conditions 'defines': [ 'V8_GYP_BUILD', diff --git a/deps/v8/gypfiles/inspector.gypi b/deps/v8/gypfiles/inspector.gypi index be42ea8b783..840c092efe3 100644 --- a/deps/v8/gypfiles/inspector.gypi +++ b/deps/v8/gypfiles/inspector.gypi @@ -28,12 +28,11 @@ '<(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': [ '../include/v8-inspector.h', '../include/v8-inspector-protocol.h', + '../src/inspector/custom-preview.cc', + '../src/inspector/custom-preview.h', '../src/inspector/injected-script.cc', '../src/inspector/injected-script.h', '../src/inspector/inspected-context.cc', @@ -60,18 +59,12 @@ '../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', @@ -84,6 +77,8 @@ '../src/inspector/v8-stack-trace-impl.h', '../src/inspector/v8-value-utils.cc', '../src/inspector/v8-value-utils.h', + '../src/inspector/value-mirror.cc', + '../src/inspector/value-mirror.h', '../src/inspector/wasm-translation.cc', '../src/inspector/wasm-translation.h', ] @@ -102,7 +97,7 @@ ], 'action': [ 'python', - '<(protocol_path)/CheckProtocolCompatibility.py', + '<(protocol_path)/check_protocol_compatibility.py', '--stamp', '<@(_outputs)', '<(inspector_path)/js_protocol.json', ], @@ -128,23 +123,5 @@ ], 'message': 'Generating inspector protocol sources from protocol json', }, - { - 'action_name': 'convert_js_to_cpp_char_array', - 'inputs': [ - '<(inspector_path)/build/xxd.py', - '<(inspector_injected_script_source)', - ], - 'outputs': [ - '<(inspector_generated_injected_script)', - ], - 'process_outputs_as_sources': 1, - 'action': [ - 'python', - '<(inspector_path)/build/xxd.py', - 'InjectedScriptSource_js', - '<(inspector_path)/injected-script-source.js', - '<@(_outputs)' - ], - }, ], } diff --git a/deps/v8/gypfiles/unittests.gyp b/deps/v8/gypfiles/unittests.gyp index c6d3713b0cf..6d66fcc9ab7 100644 --- a/deps/v8/gypfiles/unittests.gyp +++ b/deps/v8/gypfiles/unittests.gyp @@ -17,7 +17,6 @@ '../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', @@ -141,6 +140,7 @@ '../test/unittests/libplatform/task-queue-unittest.cc', '../test/unittests/libplatform/worker-thread-unittest.cc', '../test/unittests/locked-queue-unittest.cc', + '../test/unittests/microtask-queue-unittest.cc', '../test/unittests/object-unittest.cc', '../test/unittests/parser/ast-value-unittest.cc', '../test/unittests/parser/preparser-unittest.cc', @@ -188,6 +188,7 @@ ], 'unittests_sources_x64': [ '../test/unittests/compiler/x64/instruction-selector-x64-unittest.cc', + '../test/unittests/wasm/trap-handler-x64-unittest.cc', ], 'unittests_sources_ppc': [ '../test/unittests/compiler/ppc/instruction-selector-ppc-unittest.cc', diff --git a/deps/v8/gypfiles/v8.gyp b/deps/v8/gypfiles/v8.gyp index cf952fee63d..5f90bc1219d 100644 --- a/deps/v8/gypfiles/v8.gyp +++ b/deps/v8/gypfiles/v8.gyp @@ -18,27 +18,38 @@ "../src/builtins/array.tq", "../src/builtins/array-copywithin.tq", "../src/builtins/array-foreach.tq", + "../src/builtins/array-join.tq", "../src/builtins/array-lastindexof.tq", + "../src/builtins/array-of.tq", "../src/builtins/array-reverse.tq", + "../src/builtins/array-slice.tq", "../src/builtins/array-splice.tq", "../src/builtins/array-unshift.tq", - "../src/builtins/typed-array.tq", + "../src/builtins/collections.tq", "../src/builtins/data-view.tq", + "../src/builtins/frames.tq", + "../src/builtins/object.tq", + "../src/builtins/object-fromentries.tq", + "../src/builtins/iterator.tq", + "../src/builtins/typed-array.tq", "../test/torque/test-torque.tq", "../third_party/v8/builtins/array-sort.tq", ], - 'torque_modules': [ + 'torque_namespaces': [ "base", "array", + "collections", + "iterator", + "object", "typed-array", "data-view", "test", ], # Since there is no foreach in GYP we manualy unroll the following: - # foreach(module, torque_modules) { + # foreach(namespace, torque_namespaces) { # outputs += [ - # "$target_gen_dir/torque-generated/builtins-$module-from-dsl-gen.cc", - # "$target_gen_dir/torque-generated/builtins-$module-from-dsl-gen.h", + # "$target_gen_dir/torque-generated/builtins-$namespace-from-dsl-gen.cc", + # "$target_gen_dir/torque-generated/builtins-$namespace-from-dsl-gen.h", # ] # } 'torque_outputs': [ @@ -46,6 +57,12 @@ '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-base-from-dsl-gen.h', '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-array-from-dsl-gen.cc', '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-array-from-dsl-gen.h', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-collections-from-dsl-gen.cc', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-collections-from-dsl-gen.h', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-iterator-from-dsl-gen.cc', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-iterator-from-dsl-gen.h', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-object-from-dsl-gen.cc', + '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-object-from-dsl-gen.h', '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-typed-array-from-dsl-gen.cc', '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-typed-array-from-dsl-gen.h', '<(SHARED_INTERMEDIATE_DIR)/torque-generated/builtins-data-view-from-dsl-gen.cc', @@ -134,6 +151,10 @@ 'v8_enable_verify_predictable=<(v8_enable_verify_predictable)', 'v8_target_cpu=<(v8_target_arch)', 'v8_use_snapshot=<(v8_use_snapshot)', + 'v8_enable_embedded_builtins=<(v8_enable_embedded_builtins)', + 'v8_enable_jitless_mode=<(v8_enable_jitless_mode)', + 'v8_enable_verify_csa=<(v8_enable_verify_csa)', + 'v8_enable_lite_mode=<(v8_enable_lite_mode)', ] }, 'conditions': [ @@ -169,7 +190,7 @@ # 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'], + 'dependencies': ['v8_base', 'v8_init', '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'], @@ -269,6 +290,7 @@ '../src/builtins/builtins-lazy-gen.h', '../src/builtins/builtins-math-gen.cc', '../src/builtins/builtins-math-gen.h', + '../src/builtins/builtins-microtask-queue-gen.cc', '../src/builtins/builtins-number-gen.cc', '../src/builtins/builtins-object-gen.cc', '../src/builtins/builtins-promise-gen.cc', @@ -289,6 +311,8 @@ '../src/builtins/growable-fixed-array-gen.cc', '../src/builtins/growable-fixed-array-gen.h', '../src/builtins/setup-builtins-internal.cc', + '../src/code-stub-assembler.cc', + '../src/code-stub-assembler.h', '../src/heap/setup-heap-internal.cc', '../src/ic/accessor-assembler.cc', '../src/ic/accessor-assembler.h', @@ -433,11 +457,11 @@ 'conditions': [ ['v8_enable_embedded_builtins == "true"', { # In this case we use `embedded_variant "Default"` - # and `suffix = ''` for the template `embedded${suffix}.cc`. - 'outputs': [ '<(INTERMEDIATE_DIR)/embedded.cc' ], + # and `suffix = ''` for the template `embedded${suffix}.S`. + 'outputs': [ '<(INTERMEDIATE_DIR)/embedded.S' ], 'variables': { 'mksnapshot_flags': [ - '--embedded_src', '<(INTERMEDIATE_DIR)/embedded.cc', + '--embedded_src', '<(INTERMEDIATE_DIR)/embedded.S', '--embedded_variant', 'Default', ], }, @@ -559,6 +583,8 @@ '../include//v8-value-serializer-version.h', '../include//v8-version-string.h', '../include//v8-version.h', + '../include//v8-wasm-trap-handler-posix.h', + '../include//v8-wasm-trap-handler-win.h', '../include//v8.h', '../include//v8config.h', '../src/accessors.cc', @@ -589,8 +615,6 @@ '../src/asmjs/asm-scanner.h', '../src/asmjs/asm-types.cc', '../src/asmjs/asm-types.h', - '../src/asmjs/switch-logic.cc', - '../src/asmjs/switch-logic.h', '../src/assembler-arch-inl.h', '../src/assembler-arch.h', '../src/assembler-inl.h', @@ -606,13 +630,10 @@ '../src/ast/ast-value-factory.h', '../src/ast/ast.cc', '../src/ast/ast.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-inl.h', '../src/ast/scopes.cc', '../src/ast/scopes.h', '../src/ast/variables.cc', @@ -664,6 +685,7 @@ '../src/builtins/builtins-typed-array.cc', '../src/builtins/builtins-utils-inl.h', '../src/builtins/builtins-utils.h', + '../src/builtins/builtins-weak-refs.cc', '../src/builtins/builtins.cc', '../src/builtins/builtins.h', '../src/builtins/constants-table-builder.cc', @@ -682,11 +704,6 @@ '../src/code-factory.h', '../src/code-reference.cc', '../src/code-reference.h', - '../src/code-stub-assembler.cc', - '../src/code-stub-assembler.h', - '../src/code-stubs-utils.h', - '../src/code-stubs.cc', - '../src/code-stubs.h', '../src/code-tracer.h', '../src/codegen.cc', '../src/codegen.h', @@ -695,16 +712,10 @@ '../src/compilation-cache.h', '../src/compilation-statistics.cc', '../src/compilation-statistics.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/compiler-dispatcher.cc', '../src/compiler-dispatcher/compiler-dispatcher.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/compiler/access-builder.cc', @@ -713,7 +724,34 @@ '../src/compiler/access-info.h', '../src/compiler/all-nodes.cc', '../src/compiler/all-nodes.h', + '../src/compiler/allocation-builder-inl.h', '../src/compiler/allocation-builder.h', + '../src/compiler/backend/code-generator-impl.h', + '../src/compiler/backend/code-generator.cc', + '../src/compiler/backend/code-generator.h', + '../src/compiler/backend/frame-elider.cc', + '../src/compiler/backend/frame-elider.h', + '../src/compiler/backend/gap-resolver.cc', + '../src/compiler/backend/gap-resolver.h', + '../src/compiler/backend/instruction-codes.h', + '../src/compiler/backend/instruction-scheduler.cc', + '../src/compiler/backend/instruction-scheduler.h', + '../src/compiler/backend/instruction-selector-impl.h', + '../src/compiler/backend/instruction-selector.cc', + '../src/compiler/backend/instruction-selector.h', + '../src/compiler/backend/instruction.cc', + '../src/compiler/backend/instruction.h', + '../src/compiler/backend/jump-threading.cc', + '../src/compiler/backend/jump-threading.h', + '../src/compiler/backend/live-range-separator.cc', + '../src/compiler/backend/live-range-separator.h', + '../src/compiler/backend/move-optimizer.cc', + '../src/compiler/backend/move-optimizer.h', + '../src/compiler/backend/register-allocator-verifier.cc', + '../src/compiler/backend/register-allocator-verifier.h', + '../src/compiler/backend/register-allocator.cc', + '../src/compiler/backend/register-allocator.h', + '../src/compiler/backend/unwinding-info-writer.h', '../src/compiler/basic-block-instrumentor.cc', '../src/compiler/basic-block-instrumentor.h', '../src/compiler/branch-elimination.cc', @@ -729,9 +767,6 @@ '../src/compiler/checkpoint-elimination.h', '../src/compiler/code-assembler.cc', '../src/compiler/code-assembler.h', - '../src/compiler/code-generator-impl.h', - '../src/compiler/code-generator.cc', - '../src/compiler/code-generator.h', '../src/compiler/common-node-cache.cc', '../src/compiler/common-node-cache.h', '../src/compiler/common-operator-reducer.cc', @@ -757,15 +792,11 @@ '../src/compiler/escape-analysis-reducer.h', '../src/compiler/escape-analysis.cc', '../src/compiler/escape-analysis.h', - '../src/compiler/frame-elider.cc', - '../src/compiler/frame-elider.h', '../src/compiler/frame-states.cc', '../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', '../src/compiler/graph-assembler.h', '../src/compiler/graph-reducer.cc', @@ -776,14 +807,6 @@ '../src/compiler/graph-visualizer.h', '../src/compiler/graph.cc', '../src/compiler/graph.h', - '../src/compiler/instruction-codes.h', - '../src/compiler/instruction-scheduler.cc', - '../src/compiler/instruction-scheduler.h', - '../src/compiler/instruction-selector-impl.h', - '../src/compiler/instruction-selector.cc', - '../src/compiler/instruction-selector.h', - '../src/compiler/instruction.cc', - '../src/compiler/instruction.h', '../src/compiler/int64-lowering.cc', '../src/compiler/int64-lowering.h', '../src/compiler/js-call-reducer.cc', @@ -814,12 +837,8 @@ '../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', @@ -838,8 +857,6 @@ '../src/compiler/machine-operator.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', @@ -877,10 +894,6 @@ '../src/compiler/redundancy-elimination.h', '../src/compiler/refs-map.cc', '../src/compiler/refs-map.h', - '../src/compiler/register-allocator-verifier.cc', - '../src/compiler/register-allocator-verifier.h', - '../src/compiler/register-allocator.cc', - '../src/compiler/register-allocator.h', '../src/compiler/representation-change.cc', '../src/compiler/representation-change.h', '../src/compiler/schedule.cc', @@ -911,7 +924,6 @@ '../src/compiler/typer.h', '../src/compiler/types.cc', '../src/compiler/types.h', - '../src/compiler/unwinding-info-writer.h', '../src/compiler/value-numbering-reducer.cc', '../src/compiler/value-numbering-reducer.h', '../src/compiler/verifier.cc', @@ -920,6 +932,9 @@ '../src/compiler/wasm-compiler.h', '../src/compiler/zone-stats.cc', '../src/compiler/zone-stats.h', + '../src/constant-pool.cc', + '../src/constant-pool.h', + '../src/constants-arch.h', '../src/contexts-inl.h', '../src/contexts.cc', '../src/contexts.h', @@ -941,6 +956,8 @@ '../src/debug/debug-frames.cc', '../src/debug/debug-frames.h', '../src/debug/debug-interface.h', + '../src/debug/debug-property-iterator.cc', + '../src/debug/debug-property-iterator.h', '../src/debug/debug-scope-iterator.cc', '../src/debug/debug-scope-iterator.h', '../src/debug/debug-scopes.cc', @@ -958,6 +975,7 @@ '../src/deoptimize-reason.h', '../src/deoptimizer.cc', '../src/deoptimizer.h', + '../src/detachable-vector.cc', '../src/detachable-vector.h', '../src/disasm.h', '../src/disassembler.cc', @@ -1079,6 +1097,7 @@ '../src/heap/scavenger-inl.h', '../src/heap/scavenger.cc', '../src/heap/scavenger.h', + '../src/heap/slot-set.cc', '../src/heap/slot-set.h', '../src/heap/spaces-inl.h', '../src/heap/spaces.cc', @@ -1109,8 +1128,6 @@ '../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', @@ -1158,8 +1175,9 @@ '../src/interpreter/interpreter-intrinsics.h', '../src/interpreter/interpreter.cc', '../src/interpreter/interpreter.h', - '../src/intl.cc', - '../src/intl.h', + '../src/isolate-allocator.cc', + '../src/isolate-allocator.h', + '../src/isolate-data.h', '../src/isolate-inl.h', '../src/isolate.cc', '../src/isolate.h', @@ -1197,8 +1215,13 @@ '../src/math-random.h', '../src/maybe-handles-inl.h', '../src/maybe-handles.h', + '../src/memcopy.cc', + '../src/memcopy.h', + '../src/message-template.h', '../src/messages.cc', '../src/messages.h', + '../src/microtask-queue.cc', + '../src/microtask-queue.h', '../src/msan.h', '../src/objects-body-descriptors-inl.h', '../src/objects-body-descriptors.h', @@ -1221,15 +1244,25 @@ '../src/objects/debug-objects-inl.h', '../src/objects/debug-objects.cc', '../src/objects/debug-objects.h', + '../src/objects/descriptor-array-inl.h', '../src/objects/descriptor-array.h', + '../src/objects/dictionary-inl.h', '../src/objects/dictionary.h', + '../src/objects/embedder-data-array-inl.h', + '../src/objects/embedder-data-array.cc', + '../src/objects/embedder-data-array.h', + '../src/objects/embedder-data-slot-inl.h', + '../src/objects/embedder-data-slot.h', '../src/objects/fixed-array-inl.h', '../src/objects/fixed-array.h', '../src/objects/frame-array-inl.h', '../src/objects/frame-array.h', '../src/objects/hash-table-inl.h', '../src/objects/hash-table.h', - '../src/objects/intl-objects-inl.h', + '../src/objects/heap-object-inl.h', + '../src/objects/heap-object.h', + '../src/objects/instance-type-inl.h', + '../src/objects/instance-type.h', '../src/objects/intl-objects.cc', '../src/objects/intl-objects.h', '../src/objects/js-array-buffer-inl.h', @@ -1275,9 +1308,14 @@ '../src/objects/js-relative-time-format-inl.h', '../src/objects/js-relative-time-format.cc', '../src/objects/js-relative-time-format.h', + '../src/objects/js-segment-iterator-inl.h', + '../src/objects/js-segment-iterator.cc', + '../src/objects/js-segment-iterator.h', '../src/objects/js-segmenter-inl.h', '../src/objects/js-segmenter.cc', '../src/objects/js-segmenter.h', + '../src/objects/js-weak-refs-inl.h', + '../src/objects/js-weak-refs.h', '../src/objects/literal-objects-inl.h', '../src/objects/literal-objects.cc', '../src/objects/literal-objects.h', @@ -1288,9 +1326,6 @@ '../src/objects/maybe-object-inl.h', '../src/objects/maybe-object.h', '../src/objects/microtask-inl.h', - '../src/objects/microtask-queue-inl.h', - '../src/objects/microtask-queue.cc', - '../src/objects/microtask-queue.h', '../src/objects/microtask.h', '../src/objects/module-inl.h', '../src/objects/module.cc', @@ -1306,6 +1341,8 @@ '../src/objects/promise.h', '../src/objects/property-array-inl.h', '../src/objects/property-array.h', + '../src/objects/property-cell-inl.h', + '../src/objects/property-cell.h', '../src/objects/property-descriptor-object-inl.h', '../src/objects/property-descriptor-object.h', '../src/objects/prototype-info-inl.h', @@ -1317,9 +1354,13 @@ '../src/objects/script.h', '../src/objects/shared-function-info-inl.h', '../src/objects/shared-function-info.h', + '../src/objects/slots-atomic-inl.h', + '../src/objects/slots-inl.h', + '../src/objects/slots.h', '../src/objects/stack-frame-info-inl.h', '../src/objects/stack-frame-info.h', '../src/objects/string-inl.h', + '../src/objects/string-table-inl.h', '../src/objects/string-table.h', '../src/objects/string.h', '../src/objects/template-objects.cc', @@ -1330,7 +1371,6 @@ '../src/optimized-compilation-info.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', @@ -1362,6 +1402,7 @@ '../src/pending-compilation-error-handler.h', '../src/perf-jit.cc', '../src/perf-jit.h', + '../src/pointer-with-payload.h', '../src/profiler/allocation-tracker.cc', '../src/profiler/allocation-tracker.h', '../src/profiler/circular-queue-inl.h', @@ -1395,6 +1436,7 @@ '../src/property.cc', '../src/property.h', '../src/prototype.h', + '../src/ptr-compr.h', '../src/regexp/bytecodes-irregexp.h', '../src/regexp/interpreter-irregexp.cc', '../src/regexp/interpreter-irregexp.h', @@ -1458,6 +1500,7 @@ '../src/runtime/runtime-typedarray.cc', '../src/runtime/runtime-utils.h', '../src/runtime/runtime-wasm.cc', + '../src/runtime/runtime-weak-refs.cc', '../src/runtime/runtime.cc', '../src/runtime/runtime.h', '../src/safepoint-table.cc', @@ -1467,23 +1510,14 @@ '../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/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-allocator.cc', + '../src/snapshot/deserializer-allocator.h', '../src/snapshot/deserializer.cc', '../src/snapshot/deserializer.h', - '../src/snapshot/macros.h', + '../src/snapshot/embedded-data.cc', + '../src/snapshot/embedded-data.h', '../src/snapshot/natives-common.cc', '../src/snapshot/natives.h', '../src/snapshot/object-deserializer.cc', @@ -1492,7 +1526,15 @@ '../src/snapshot/partial-deserializer.h', '../src/snapshot/partial-serializer.cc', '../src/snapshot/partial-serializer.h', + '../src/snapshot/read-only-deserializer.cc', + '../src/snapshot/read-only-deserializer.h', + '../src/snapshot/read-only-serializer.cc', + '../src/snapshot/read-only-serializer.h', '../src/snapshot/references.h', + '../src/snapshot/roots-serializer.cc', + '../src/snapshot/roots-serializer.h', + '../src/snapshot/serializer-allocator.cc', + '../src/snapshot/serializer-allocator.h', '../src/snapshot/serializer-common.cc', '../src/snapshot/serializer-common.h', '../src/snapshot/serializer.cc', @@ -1526,8 +1568,11 @@ '../src/string-stream.h', '../src/strtod.cc', '../src/strtod.h', + '../src/task-utils.cc', + '../src/task-utils.h', '../src/third_party/utf8-decoder/utf8-decoder.h', - '../src/torque-assembler.h', + '../src/thread-id.cc', + '../src/thread-id.h', '../src/tracing/trace-event.cc', '../src/tracing/trace-event.h', '../src/tracing/traced-value.cc', @@ -1546,7 +1591,6 @@ '../src/turbo-assembler.h', '../src/type-hints.cc', '../src/type-hints.h', - '../src/unicode-cache-inl.h', '../src/unicode-cache.h', '../src/unicode-decoder.cc', '../src/unicode-decoder.h', @@ -1555,6 +1599,7 @@ '../src/unicode.h', '../src/unoptimized-compilation-info.cc', '../src/unoptimized-compilation-info.h', + '../src/unwinder.cc', '../src/uri.cc', '../src/uri.h', '../src/utils-inl.h', @@ -1582,12 +1627,15 @@ '../src/wasm/baseline/liftoff-compiler.cc', '../src/wasm/baseline/liftoff-compiler.h', '../src/wasm/baseline/liftoff-register.h', + '../src/wasm/compilation-environment.h', '../src/wasm/decoder.h', '../src/wasm/function-body-decoder-impl.h', '../src/wasm/function-body-decoder.cc', '../src/wasm/function-body-decoder.h', '../src/wasm/function-compiler.cc', '../src/wasm/function-compiler.h', + '../src/wasm/graph-builder-interface.cc', + '../src/wasm/graph-builder-interface.h', '../src/wasm/jump-table-assembler.cc', '../src/wasm/jump-table-assembler.h', '../src/wasm/leb-helper.h', @@ -1616,6 +1664,7 @@ '../src/wasm/wasm-feature-flags.h', '../src/wasm/wasm-features.cc', '../src/wasm/wasm-features.h', + '../src/wasm/wasm-import-wrapper-cache-inl.h', '../src/wasm/wasm-interpreter.cc', '../src/wasm/wasm-interpreter.h', '../src/wasm/wasm-js.cc', @@ -1663,15 +1712,14 @@ }], ['v8_target_arch=="ia32"', { 'sources': [ - '../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/compiler/backend/ia32/code-generator-ia32.cc', + '../src/compiler/backend/ia32/instruction-codes-ia32.h', + '../src/compiler/backend/ia32/instruction-scheduler-ia32.cc', + '../src/compiler/backend/ia32/instruction-selector-ia32.cc', '../src/debug/ia32/debug-ia32.cc', '../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/constants-ia32.h', '../src/ia32/cpu-ia32.cc', @@ -1692,12 +1740,12 @@ }], ['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/compiler/backend/x64/code-generator-x64.cc', + '../src/compiler/backend/x64/instruction-codes-x64.h', + '../src/compiler/backend/x64/instruction-scheduler-x64.cc', + '../src/compiler/backend/x64/instruction-selector-x64.cc', + '../src/compiler/backend/x64/unwinding-info-writer-x64.cc', + '../src/compiler/backend/x64/unwinding-info-writer-x64.h', '../src/debug/x64/debug-x64.cc', '../src/regexp/x64/regexp-macro-assembler-x64.cc', '../src/regexp/x64/regexp-macro-assembler-x64.h', @@ -1706,7 +1754,6 @@ '../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/constants-x64.h', '../src/x64/cpu-x64.cc', @@ -1723,14 +1770,17 @@ '../src/x64/sse-instr.h', ], }], - ['v8_target_arch=="x64" and OS=="linux"', { + ['v8_target_arch=="x64" and (OS=="linux" or OS=="mac")', { 'sources': [ - '../src/trap-handler/handler-inside-linux.cc', - '../src/trap-handler/handler-outside-linux.cc', + '../src/trap-handler/handler-inside-posix.cc', + '../src/trap-handler/handler-inside-posix.h', + '../src/trap-handler/handler-outside-posix.cc', ], }], ['v8_target_arch=="x64" and OS=="win"', { 'sources': [ + '../src/trap-handler/handler-inside-win.cc', + '../src/trap-handler/handler-inside-win.h', '../src/trap-handler/handler-outside-win.cc', ], }], @@ -1739,8 +1789,6 @@ '../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', @@ -1755,12 +1803,12 @@ '../src/arm/macro-assembler-arm.h', '../src/arm/simulator-arm.cc', '../src/arm/simulator-arm.h', - '../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/compiler/backend/arm/code-generator-arm.cc', + '../src/compiler/backend/arm/instruction-codes-arm.h', + '../src/compiler/backend/arm/instruction-scheduler-arm.cc', + '../src/compiler/backend/arm/instruction-selector-arm.cc', + '../src/compiler/backend/arm/unwinding-info-writer-arm.cc', + '../src/compiler/backend/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', @@ -1772,8 +1820,6 @@ '../src/arm64/assembler-arm64-inl.h', '../src/arm64/assembler-arm64.cc', '../src/arm64/assembler-arm64.h', - '../src/arm64/code-stubs-arm64.cc', - '../src/arm64/code-stubs-arm64.h', '../src/arm64/codegen-arm64.cc', '../src/arm64/constants-arm64.h', '../src/arm64/cpu-arm64.cc', @@ -1800,12 +1846,12 @@ '../src/arm64/simulator-logic-arm64.cc', '../src/arm64/utils-arm64.cc', '../src/arm64/utils-arm64.h', - '../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/compiler/backend/arm64/code-generator-arm64.cc', + '../src/compiler/backend/arm64/instruction-codes-arm64.h', + '../src/compiler/backend/arm64/instruction-scheduler-arm64.cc', + '../src/compiler/backend/arm64/instruction-selector-arm64.cc', + '../src/compiler/backend/arm64/unwinding-info-writer-arm64.cc', + '../src/compiler/backend/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', @@ -1814,16 +1860,14 @@ }], ['v8_target_arch=="mips" or v8_target_arch=="mipsel"', { 'sources': [ - '../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/compiler/backend/mips/code-generator-mips.cc', + '../src/compiler/backend/mips/instruction-codes-mips.h', + '../src/compiler/backend/mips/instruction-scheduler-mips.cc', + '../src/compiler/backend/mips/instruction-selector-mips.cc', '../src/debug/mips/debug-mips.cc', '../src/mips/assembler-mips-inl.h', '../src/mips/assembler-mips.cc', '../src/mips/assembler-mips.h', - '../src/mips/code-stubs-mips.cc', - '../src/mips/code-stubs-mips.h', '../src/mips/codegen-mips.cc', '../src/mips/constants-mips.cc', '../src/mips/constants-mips.h', @@ -1844,16 +1888,14 @@ }], ['v8_target_arch=="mips64" or v8_target_arch=="mips64el"', { 'sources': [ - '../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/compiler/backend/mips64/code-generator-mips64.cc', + '../src/compiler/backend/mips64/instruction-codes-mips64.h', + '../src/compiler/backend/mips64/instruction-scheduler-mips64.cc', + '../src/compiler/backend/mips64/instruction-selector-mips64.cc', '../src/debug/mips64/debug-mips64.cc', '../src/mips64/assembler-mips64-inl.h', '../src/mips64/assembler-mips64.cc', '../src/mips64/assembler-mips64.h', - '../src/mips64/code-stubs-mips64.cc', - '../src/mips64/code-stubs-mips64.h', '../src/mips64/codegen-mips64.cc', '../src/mips64/constants-mips64.cc', '../src/mips64/constants-mips64.h', @@ -1874,16 +1916,15 @@ }], ['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/compiler/backend/ppc/code-generator-ppc.cc', + '../src/compiler/backend/ppc/instruction-codes-ppc.h', + '../src/compiler/backend/ppc/instruction-scheduler-ppc.cc', + '../src/compiler/backend/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', @@ -1904,10 +1945,10 @@ }], ['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/compiler/backend/s390/code-generator-s390.cc', + '../src/compiler/backend/s390/instruction-codes-s390.h', + '../src/compiler/backend/s390/instruction-scheduler-s390.cc', + '../src/compiler/backend/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', @@ -1915,7 +1956,6 @@ '../src/s390/assembler-s390.cc', '../src/s390/assembler-s390.h', '../src/s390/code-stubs-s390.cc', - '../src/s390/code-stubs-s390.h', '../src/s390/codegen-s390.cc', '../src/s390/constants-s390.cc', '../src/s390/constants-s390.h', @@ -1992,9 +2032,6 @@ 'sources!': [ '../src/builtins/builtins-intl.cc', '../src/char-predicates.cc', - '../src/intl.cc', - '../src/intl.h', - '../src/objects/intl-objects-inl.h', '../src/objects/intl-objects.cc', '../src/objects/intl-objects.h', '../src/objects/js-break-iterator-inl.h', @@ -2021,6 +2058,9 @@ '../src/objects/js-relative-time-format-inl.h', '../src/objects/js-relative-time-format.cc', '../src/objects/js-relative-time-format.h', + '../src/objects/js-segment-iterator-inl.h', + '../src/objects/js-segment-iterator.cc', + '../src/objects/js-segment-iterator.h', '../src/objects/js-segmenter-inl.h', '../src/objects/js-segmenter.cc', '../src/objects/js-segmenter.h', @@ -2600,7 +2640,7 @@ 'variables': { 'library_files': [ '../src/js/macros.py', - '../src/messages.h', + '../src/message-template.h', '../src/js/prologue.js', '../src/js/array.js', '../src/js/typedarray.js', @@ -2608,11 +2648,6 @@ 'libraries_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries.bin', 'libraries_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-extras.bin', 'libraries_experimental_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental-extras.bin', - 'conditions': [ - ['v8_enable_i18n_support==1', { - 'library_files': ['../src/js/intl.js'], - }], - ], }, 'actions': [ { @@ -2701,8 +2736,6 @@ '../src/torque/implementation-visitor.h', '../src/torque/instructions.cc', '../src/torque/instructions.h', - '../src/torque/scope.cc', - '../src/torque/scope.h', '../src/torque/source-positions.cc', '../src/torque/source-positions.h', '../src/torque/torque-parser.cc', @@ -2751,12 +2784,17 @@ '../src/objects/data-handler-inl.h', '../src/objects/fixed-array-inl.h', '../src/objects/fixed-array.h', + '../src/objects/heap-object-inl.h', + '../src/objects/heap-object.h', + '../src/objects/instance-type.h', '../src/objects/js-array-inl.h', '../src/objects/js-array.h', '../src/objects/js-array-buffer-inl.h', '../src/objects/js-array-buffer.h', '../src/objects/js-objects-inl.h', '../src/objects/js-objects.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/js-regexp-string-iterator-inl.h', @@ -2808,6 +2846,8 @@ '<(DEPTH)', ], 'sources': [ + '../src/snapshot/embedded-file-writer.cc', + '../src/snapshot/embedded-file-writer.h', '../src/snapshot/mksnapshot.cc', ], 'conditions': [ diff --git a/deps/v8/include/OWNERS b/deps/v8/include/OWNERS index d20fb79fe16..7953cfe133a 100644 --- a/deps/v8/include/OWNERS +++ b/deps/v8/include/OWNERS @@ -5,6 +5,7 @@ danno@chromium.org ulan@chromium.org yangguo@chromium.org +per-file v8-internal.h=file://OWNERS per-file v8-inspector.h=dgozman@chromium.org per-file v8-inspector.h=pfeldman@chromium.org per-file v8-inspector.h=kozyatinskiy@chromium.org diff --git a/deps/v8/include/PRESUBMIT.py b/deps/v8/include/PRESUBMIT.py deleted file mode 100644 index 8002e4dcacb..00000000000 --- a/deps/v8/include/PRESUBMIT.py +++ /dev/null @@ -1,29 +0,0 @@ -# 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. - -"""Presubmit script for //v8/include - -See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts -for more details about the presubmit API built into depot_tools. -""" - -import os - - -def PostUploadHook(cl, change, output_api): - """git cl upload will call this hook after the issue is created/modified. - - This hook adds extra try bots to the CL description in order to run layout - tests in addition to CQ try bots. - """ - def header_filter(f): - return '.h' in os.path.split(f.LocalPath())[1] - if not change.AffectedFiles(file_filter=header_filter): - return [] - return output_api.EnsureCQIncludeTrybotsAreAdded( - cl, - [ - 'luci.chromium.try:linux_chromium_rel_ng' - ], - 'Automatically added layout test trybots to run tests on CQ.') diff --git a/deps/v8/include/v8-internal.h b/deps/v8/include/v8-internal.h index 80f7367bfee..9f6735cf809 100644 --- a/deps/v8/include/v8-internal.h +++ b/deps/v8/include/v8-internal.h @@ -20,15 +20,17 @@ class Isolate; namespace internal { -class Object; +typedef uintptr_t Address; +static const Address kNullAddress = 0; /** * Configuration of tagging scheme. */ -const int kApiPointerSize = sizeof(void*); // NOLINT -const int kApiDoubleSize = sizeof(double); // NOLINT -const int kApiIntSize = sizeof(int); // NOLINT -const int kApiInt64Size = sizeof(int64_t); // NOLINT +const int kApiSystemPointerSize = sizeof(void*); +const int kApiTaggedSize = kApiSystemPointerSize; +const int kApiDoubleSize = sizeof(double); +const int kApiIntSize = sizeof(int); +const int kApiInt64Size = sizeof(int64_t); // Tag information for HeapObject. const int kHeapObjectTag = 1; @@ -44,33 +46,20 @@ const intptr_t kSmiTagMask = (1 << kSmiTagSize) - 1; template struct SmiTagging; -template -V8_INLINE internal::Object* IntToSmi(int value) { - int smi_shift_bits = kSmiTagSize + kSmiShiftSize; - intptr_t tagged_value = - (static_cast(value) << smi_shift_bits) | kSmiTag; - return reinterpret_cast(tagged_value); -} - // Smi constants for systems where tagged pointer is a 32-bit value. template <> struct SmiTagging<4> { enum { kSmiShiftSize = 0, kSmiValueSize = 31 }; - static int SmiShiftSize() { return kSmiShiftSize; } - static int SmiValueSize() { return kSmiValueSize; } - V8_INLINE static int SmiToInt(const internal::Object* value) { + V8_INLINE static int SmiToInt(const internal::Address value) { int shift_bits = kSmiTagSize + kSmiShiftSize; - // Throw away top 32 bits and shift down (requires >> to be sign extending). - return static_cast(reinterpret_cast(value)) >> shift_bits; - } - V8_INLINE static internal::Object* IntToSmi(int value) { - return internal::IntToSmi(value); + // Shift down (requires >> to be sign extending). + return static_cast(static_cast(value)) >> shift_bits; } V8_INLINE static constexpr bool IsValidSmi(intptr_t value) { // To be representable as an tagged small integer, the two // most-significant bits of 'value' must be either 00 or 11 due to // sign-extension. To check this we add 01 to the two - // most-significant bits, and check if the most-significant bit is 0 + // most-significant bits, and check if the most-significant bit is 0. // // CAUTION: The original code below: // bool result = ((value + 0x40000000) & 0x80000000) == 0; @@ -86,15 +75,10 @@ struct SmiTagging<4> { template <> struct SmiTagging<8> { enum { kSmiShiftSize = 31, kSmiValueSize = 32 }; - static int SmiShiftSize() { return kSmiShiftSize; } - static int SmiValueSize() { return kSmiValueSize; } - V8_INLINE static int SmiToInt(const internal::Object* value) { + V8_INLINE static int SmiToInt(const internal::Address value) { int shift_bits = kSmiTagSize + kSmiShiftSize; // Shift down and throw away top 32 bits. - return static_cast(reinterpret_cast(value) >> shift_bits); - } - V8_INLINE static internal::Object* IntToSmi(int value) { - return internal::IntToSmi(value); + return static_cast(static_cast(value) >> shift_bits); } V8_INLINE static constexpr bool IsValidSmi(intptr_t value) { // To be representable as a long smi, the value must be a 32-bit integer. @@ -102,13 +86,16 @@ struct SmiTagging<8> { } }; -#if V8_COMPRESS_POINTERS +#if defined(V8_COMPRESS_POINTERS) static_assert( - kApiPointerSize == kApiInt64Size, + kApiSystemPointerSize == kApiInt64Size, "Pointer compression can be enabled only for 64-bit architectures"); -typedef SmiTagging<4> PlatformSmiTagging; +#endif + +#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH) +typedef SmiTagging PlatformSmiTagging; #else -typedef SmiTagging PlatformSmiTagging; +typedef SmiTagging PlatformSmiTagging; #endif const int kSmiShiftSize = PlatformSmiTagging::kSmiShiftSize; @@ -118,6 +105,11 @@ const int kSmiMaxValue = -(kSmiMinValue + 1); constexpr bool SmiValuesAre31Bits() { return kSmiValueSize == 31; } constexpr bool SmiValuesAre32Bits() { return kSmiValueSize == 32; } +V8_INLINE static constexpr internal::Address IntToSmi(int value) { + return (static_cast
(value) << (kSmiTagSize + kSmiShiftSize)) | + kSmiTag; +} + /** * This class exports constants and functionality from within v8 that * is necessary to implement inline functions in the v8 api. Don't @@ -128,30 +120,37 @@ class Internals { // These values match non-compiler-dependent values defined within // the implementation of v8. static const int kHeapObjectMapOffset = 0; - static const int kMapInstanceTypeOffset = 1 * kApiPointerSize + kApiIntSize; - static const int kStringResourceOffset = - 1 * kApiPointerSize + 2 * kApiIntSize; - - static const int kOddballKindOffset = 4 * kApiPointerSize + kApiDoubleSize; - static const int kForeignAddressOffset = kApiPointerSize; - static const int kJSObjectHeaderSize = 3 * kApiPointerSize; - static const int kFixedArrayHeaderSize = 2 * kApiPointerSize; - static const int kContextHeaderSize = 2 * kApiPointerSize; - static const int kContextEmbedderDataIndex = 5; + static const int kMapInstanceTypeOffset = 1 * kApiTaggedSize + kApiIntSize; + static const int kStringResourceOffset = 1 * kApiTaggedSize + 2 * kApiIntSize; + + static const int kOddballKindOffset = 4 * kApiTaggedSize + kApiDoubleSize; + static const int kForeignAddressOffset = kApiTaggedSize; + static const int kJSObjectHeaderSize = 3 * kApiTaggedSize; + static const int kFixedArrayHeaderSize = 2 * kApiTaggedSize; + static const int kEmbedderDataArrayHeaderSize = 2 * kApiTaggedSize; + static const int kEmbedderDataSlotSize = +#ifdef V8_COMPRESS_POINTERS + 2 * +#endif + kApiSystemPointerSize; + static const int kNativeContextEmbedderDataOffset = 7 * kApiTaggedSize; static const int kFullStringRepresentationMask = 0x0f; static const int kStringEncodingMask = 0x8; static const int kExternalTwoByteRepresentationTag = 0x02; static const int kExternalOneByteRepresentationTag = 0x0a; - static const int kIsolateEmbedderDataOffset = 0 * kApiPointerSize; - static const int kExternalMemoryOffset = 4 * kApiPointerSize; + static const uint32_t kNumIsolateDataSlots = 4; + + static const int kIsolateEmbedderDataOffset = 0; + static const int kExternalMemoryOffset = + kNumIsolateDataSlots * kApiTaggedSize; static const int kExternalMemoryLimitOffset = kExternalMemoryOffset + kApiInt64Size; static const int kExternalMemoryAtLastMarkCompactOffset = kExternalMemoryLimitOffset + kApiInt64Size; - static const int kIsolateRootsOffset = kExternalMemoryLimitOffset + - kApiInt64Size + kApiInt64Size + - kApiPointerSize + kApiPointerSize; + static const int kIsolateRootsOffset = + kExternalMemoryAtLastMarkCompactOffset + kApiInt64Size; + static const int kUndefinedValueRootIndex = 4; static const int kTheHoleValueRootIndex = 5; static const int kNullValueRootIndex = 6; @@ -159,8 +158,8 @@ class Internals { static const int kFalseValueRootIndex = 8; static const int kEmptyStringRootIndex = 9; - static const int kNodeClassIdOffset = 1 * kApiPointerSize; - static const int kNodeFlagsOffset = 1 * kApiPointerSize + 3; + static const int kNodeClassIdOffset = 1 * kApiTaggedSize; + static const int kNodeFlagsOffset = 1 * kApiTaggedSize + 3; static const int kNodeStateMask = 0x7; static const int kNodeStateIsWeakValue = 2; static const int kNodeStateIsPendingValue = 3; @@ -178,8 +177,6 @@ class Internals { static const int kUndefinedOddballKind = 5; static const int kNullOddballKind = 3; - static const uint32_t kNumIsolateDataSlots = 4; - // Soft limit for AdjustAmountofExternalAllocatedMemory. Trigger an // incremental GC once the external memory reaches this limit. static constexpr int kExternalAllocationSoftLimit = 64 * 1024 * 1024; @@ -191,32 +188,30 @@ class Internals { #endif } - V8_INLINE static bool HasHeapObjectTag(const internal::Object* value) { - return ((reinterpret_cast(value) & kHeapObjectTagMask) == - kHeapObjectTag); + V8_INLINE static bool HasHeapObjectTag(const internal::Address value) { + return (value & kHeapObjectTagMask) == static_cast
(kHeapObjectTag); } - V8_INLINE static int SmiValue(const internal::Object* value) { + V8_INLINE static int SmiValue(const internal::Address value) { return PlatformSmiTagging::SmiToInt(value); } - V8_INLINE static internal::Object* IntToSmi(int value) { - return PlatformSmiTagging::IntToSmi(value); + V8_INLINE static constexpr internal::Address IntToSmi(int value) { + return internal::IntToSmi(value); } V8_INLINE static constexpr bool IsValidSmi(intptr_t value) { return PlatformSmiTagging::IsValidSmi(value); } - V8_INLINE static int GetInstanceType(const internal::Object* obj) { - typedef internal::Object O; - O* map = ReadField(obj, kHeapObjectMapOffset); + V8_INLINE static int GetInstanceType(const internal::Address obj) { + typedef internal::Address A; + A map = ReadField(obj, kHeapObjectMapOffset); return ReadField(map, kMapInstanceTypeOffset); } - V8_INLINE static int GetOddballKind(const internal::Object* obj) { - typedef internal::Object O; - return SmiValue(ReadField(obj, kOddballKindOffset)); + V8_INLINE static int GetOddballKind(const internal::Address obj) { + return SmiValue(ReadField(obj, kOddballKindOffset)); } V8_INLINE static bool IsExternalTwoByteString(int instance_type) { @@ -224,67 +219,70 @@ class Internals { return representation == kExternalTwoByteRepresentationTag; } - V8_INLINE static uint8_t GetNodeFlag(internal::Object** obj, int shift) { + V8_INLINE static uint8_t GetNodeFlag(internal::Address* obj, int shift) { uint8_t* addr = reinterpret_cast(obj) + kNodeFlagsOffset; return *addr & static_cast(1U << shift); } - V8_INLINE static void UpdateNodeFlag(internal::Object** obj, bool value, + V8_INLINE static void UpdateNodeFlag(internal::Address* obj, bool value, int shift) { uint8_t* addr = reinterpret_cast(obj) + kNodeFlagsOffset; uint8_t mask = static_cast(1U << shift); *addr = static_cast((*addr & ~mask) | (value << shift)); } - V8_INLINE static uint8_t GetNodeState(internal::Object** obj) { + V8_INLINE static uint8_t GetNodeState(internal::Address* obj) { uint8_t* addr = reinterpret_cast(obj) + kNodeFlagsOffset; return *addr & kNodeStateMask; } - V8_INLINE static void UpdateNodeState(internal::Object** obj, uint8_t value) { + V8_INLINE static void UpdateNodeState(internal::Address* obj, uint8_t value) { uint8_t* addr = reinterpret_cast(obj) + kNodeFlagsOffset; *addr = static_cast((*addr & ~kNodeStateMask) | value); } V8_INLINE static void SetEmbedderData(v8::Isolate* isolate, uint32_t slot, void* data) { - uint8_t* addr = reinterpret_cast(isolate) + - kIsolateEmbedderDataOffset + slot * kApiPointerSize; + internal::Address addr = reinterpret_cast(isolate) + + kIsolateEmbedderDataOffset + + slot * kApiSystemPointerSize; *reinterpret_cast(addr) = data; } V8_INLINE static void* GetEmbedderData(const v8::Isolate* isolate, uint32_t slot) { - const uint8_t* addr = reinterpret_cast(isolate) + - kIsolateEmbedderDataOffset + slot * kApiPointerSize; + internal::Address addr = reinterpret_cast(isolate) + + kIsolateEmbedderDataOffset + + slot * kApiSystemPointerSize; return *reinterpret_cast(addr); } - V8_INLINE static internal::Object** GetRoot(v8::Isolate* isolate, int index) { - uint8_t* addr = reinterpret_cast(isolate) + kIsolateRootsOffset; - return reinterpret_cast(addr + index * kApiPointerSize); + V8_INLINE static internal::Address* GetRoot(v8::Isolate* isolate, int index) { + internal::Address addr = reinterpret_cast(isolate) + + kIsolateRootsOffset + + index * kApiSystemPointerSize; + return reinterpret_cast(addr); } template - V8_INLINE static T ReadField(const internal::Object* ptr, int offset) { - const uint8_t* addr = - reinterpret_cast(ptr) + offset - kHeapObjectTag; + V8_INLINE static T ReadField(const internal::Address heap_object_ptr, + int offset) { + internal::Address addr = heap_object_ptr + offset - kHeapObjectTag; return *reinterpret_cast(addr); } +#ifndef V8_COMPRESS_POINTERS template V8_INLINE static T ReadEmbedderData(const v8::Context* context, int index) { - typedef internal::Object O; + typedef internal::Address A; typedef internal::Internals I; - O* ctx = *reinterpret_cast(context); - int embedder_data_offset = - I::kContextHeaderSize + - (internal::kApiPointerSize * I::kContextEmbedderDataIndex); - O* embedder_data = I::ReadField(ctx, embedder_data_offset); + A ctx = *reinterpret_cast(context); + A embedder_data = I::ReadField(ctx, I::kNativeContextEmbedderDataOffset); int value_offset = - I::kFixedArrayHeaderSize + (internal::kApiPointerSize * index); + I::kEmbedderDataArrayHeaderSize + (I::kEmbedderDataSlotSize * index); return I::ReadField(embedder_data, value_offset); } +#endif }; // Only perform cast check for types derived from v8::Data since diff --git a/deps/v8/include/v8-platform.h b/deps/v8/include/v8-platform.h index d983c302495..b9b0363a426 100644 --- a/deps/v8/include/v8-platform.h +++ b/deps/v8/include/v8-platform.h @@ -53,6 +53,15 @@ class TaskRunner { */ virtual void PostTask(std::unique_ptr task) = 0; + /** + * Schedules a task to be invoked by this TaskRunner. The TaskRunner + * implementation takes ownership of |task|. The |task| cannot be nested + * within other task executions. + * + * Requires that |TaskRunner::NonNestableTasksEnabled()| is true. + */ + virtual void PostNonNestableTask(std::unique_ptr task) {} + /** * Schedules a task to be invoked by this TaskRunner. The task is scheduled * after the given number of seconds |delay_in_seconds|. The TaskRunner @@ -64,7 +73,7 @@ class TaskRunner { /** * Schedules an idle task to be invoked by this TaskRunner. The task is * scheduled when the embedder is idle. Requires that - * TaskRunner::SupportsIdleTasks(isolate) is true. Idle tasks may be reordered + * |TaskRunner::IdleTasksEnabled()| is true. Idle tasks may be reordered * relative to other task types and may be starved for an arbitrarily long * time if no idle time is available. The TaskRunner implementation takes * ownership of |task|. @@ -76,6 +85,11 @@ class TaskRunner { */ virtual bool IdleTasksEnabled() = 0; + /** + * Returns true if non-nestable tasks are enabled for this TaskRunner. + */ + virtual bool NonNestableTasksEnabled() const { return false; } + TaskRunner() = default; virtual ~TaskRunner() = default; @@ -236,6 +250,13 @@ class PageAllocator { */ virtual bool SetPermissions(void* address, size_t length, Permission permissions) = 0; + + /** + * Frees memory in the given [address, address + size) range. address and size + * should be operating system page-aligned. The next write to this + * memory area brings the memory transparently back. + */ + virtual bool DiscardSystemPages(void* address, size_t size) { return true; } }; /** @@ -388,6 +409,12 @@ class Platform { */ virtual TracingController* GetTracingController() = 0; + /** + * Tells the embedder to generate and upload a crashdump during an unexpected + * but non-critical scenario. + */ + virtual void DumpWithoutCrashing() {} + protected: /** * Default implementation of current wall-clock time in milliseconds diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index f30688582df..94d3fcfcf63 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -611,6 +611,11 @@ class V8_EXPORT AllocationProfile { */ int column_number; + /** + * Unique id of the node. + */ + uint32_t node_id; + /** * List of callees called from this node for which we have sampled * allocations. The lifetime of the children is scoped to the containing @@ -624,12 +629,39 @@ class V8_EXPORT AllocationProfile { std::vector allocations; }; + /** + * Represent a single sample recorded for an allocation. + */ + struct Sample { + /** + * id of the node in the profile tree. + */ + uint32_t node_id; + + /** + * Size of the sampled allocation object. + */ + size_t size; + + /** + * The number of objects of such size that were sampled. + */ + unsigned int count; + + /** + * Unique time-ordered id of the allocation sample. Can be used to track + * what samples were added or removed between two snapshots. + */ + uint64_t sample_id; + }; + /** * Returns the root node of the call-graph. The root node corresponds to an * empty JS call-stack. The lifetime of the returned Node* is scoped to the * containing AllocationProfile. */ virtual Node* GetRootNode() = 0; + virtual const std::vector& GetSamples() = 0; virtual ~AllocationProfile() = default; diff --git a/deps/v8/include/v8-util.h b/deps/v8/include/v8-util.h index 96c9acbbdc2..475026fe2c8 100644 --- a/deps/v8/include/v8-util.h +++ b/deps/v8/include/v8-util.h @@ -25,13 +25,11 @@ enum PersistentContainerCallbackType { kNotWeak, // These correspond to v8::WeakCallbackType kWeakWithParameter, - kWeakWithInternalFields, - kWeak = kWeakWithParameter // For backwards compatibility. Deprecate. + kWeakWithInternalFields }; - /** - * A default trait implemenation for PersistentValueMap which uses std::map + * A default trait implementation for PersistentValueMap which uses std::map * as a backing map. * * Users will have to implement their own weak callbacks & dispose traits. @@ -203,7 +201,7 @@ class PersistentValueMapBase { void RegisterExternallyReferencedObject(K& key) { assert(Contains(key)); V8::RegisterExternallyReferencedObject( - reinterpret_cast(FromVal(Traits::Get(&impl_, key))), + reinterpret_cast(FromVal(Traits::Get(&impl_, key))), reinterpret_cast(GetIsolate())); } @@ -340,7 +338,7 @@ class PersistentValueMapBase { bool hasValue = value != kPersistentContainerNotFound; if (hasValue) { returnValue->SetInternal( - *reinterpret_cast(FromVal(value))); + *reinterpret_cast(FromVal(value))); } return hasValue; } diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 8624767047c..526652bb8fe 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 7 -#define V8_MINOR_VERSION 1 -#define V8_BUILD_NUMBER 302 -#define V8_PATCH_LEVEL 28 +#define V8_MINOR_VERSION 3 +#define V8_BUILD_NUMBER 83 +#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-wasm-trap-handler-posix.h b/deps/v8/include/v8-wasm-trap-handler-posix.h new file mode 100644 index 00000000000..8ba4918da9a --- /dev/null +++ b/deps/v8/include/v8-wasm-trap-handler-posix.h @@ -0,0 +1,31 @@ +// 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. + +#ifndef V8_WASM_TRAP_HANDLER_POSIX_H_ +#define V8_WASM_TRAP_HANDLER_POSIX_H_ + +#include + +#include "include/v8config.h" + +namespace v8 { +/** + * This function determines whether a memory access violation has been an + * out-of-bounds memory access in WebAssembly. If so, it will modify the context + * parameter and add a return address where the execution can continue after the + * signal handling, and return true. Otherwise, false will be returned. + * + * The parameters to this function correspond to those passed to a Posix signal + * handler. Use this function only on Linux and Mac. + * + * \param sig_code The signal code, e.g. SIGSEGV. + * \param info A pointer to the siginfo_t struct provided to the signal handler. + * \param context A pointer to a ucontext_t struct provided to the signal + * handler. + */ +V8_EXPORT bool TryHandleWebAssemblyTrapPosix(int sig_code, siginfo_t* info, + void* context); + +} // namespace v8 +#endif // V8_WASM_TRAP_HANDLER_POSIX_H_ diff --git a/deps/v8/include/v8-wasm-trap-handler-win.h b/deps/v8/include/v8-wasm-trap-handler-win.h new file mode 100644 index 00000000000..d6c1407ab12 --- /dev/null +++ b/deps/v8/include/v8-wasm-trap-handler-win.h @@ -0,0 +1,27 @@ +// 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. + +#ifndef V8_WASM_TRAP_HANDLER_WIN_H_ +#define V8_WASM_TRAP_HANDLER_WIN_H_ + +#include +#include "include/v8config.h" + +namespace v8 { +/** + * This function determines whether a memory access violation has been an + * out-of-bounds memory access in WebAssembly. If so, it will modify the + * exception parameter and add a return address where the execution can continue + * after the exception handling, and return true. Otherwise the return value + * will be false. + * + * The parameter to this function corresponds to the one passed to a Windows + * vectored exception handler. Use this function only on Windows. + * + * \param exception An EXCEPTION_POINTERS* as provided to the exception handler. + */ +V8_EXPORT bool TryHandleWebAssemblyTrapWindows(EXCEPTION_POINTERS* exception); + +} // namespace v8 +#endif // V8_WASM_TRAP_HANDLER_WIN_H_ diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index 9b7be9fb930..e38d6506a7c 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -81,7 +81,7 @@ class Private; class Uint32; class Utils; class Value; -class WasmCompiledModule; +class WasmModuleObject; template class Local; template class MaybeLocal; @@ -118,7 +118,6 @@ class HeapObject; class Isolate; class LocalEmbedderHeapTracer; class NeverReadOnlySpaceObject; -class Object; struct ScriptStreamingData; template class CustomArguments; class PropertyCallbackArguments; @@ -212,8 +211,8 @@ class Local { */ template V8_INLINE bool operator==(const Local& that) const { - internal::Object** a = reinterpret_cast(this->val_); - internal::Object** b = reinterpret_cast(that.val_); + internal::Address* a = reinterpret_cast(this->val_); + internal::Address* b = reinterpret_cast(that.val_); if (a == nullptr) return b == nullptr; if (b == nullptr) return false; return *a == *b; @@ -221,8 +220,8 @@ class Local { template V8_INLINE bool operator==( const PersistentBase& that) const { - internal::Object** a = reinterpret_cast(this->val_); - internal::Object** b = reinterpret_cast(that.val_); + internal::Address* a = reinterpret_cast(this->val_); + internal::Address* b = reinterpret_cast(that.val_); if (a == nullptr) return b == nullptr; if (b == nullptr) return false; return *a == *b; @@ -477,8 +476,8 @@ template class PersistentBase { template V8_INLINE bool operator==(const PersistentBase& that) const { - internal::Object** a = reinterpret_cast(this->val_); - internal::Object** b = reinterpret_cast(that.val_); + internal::Address* a = reinterpret_cast(this->val_); + internal::Address* b = reinterpret_cast(that.val_); if (a == nullptr) return b == nullptr; if (b == nullptr) return false; return *a == *b; @@ -486,8 +485,8 @@ template class PersistentBase { template V8_INLINE bool operator==(const Local& that) const { - internal::Object** a = reinterpret_cast(this->val_); - internal::Object** b = reinterpret_cast(that.val_); + internal::Address* a = reinterpret_cast(this->val_); + internal::Address* b = reinterpret_cast(that.val_); if (a == nullptr) return b == nullptr; if (b == nullptr) return false; return *a == *b; @@ -859,8 +858,8 @@ class V8_EXPORT HandleScope { void Initialize(Isolate* isolate); - static internal::Object** CreateHandle(internal::Isolate* isolate, - internal::Object* value); + static internal::Address* CreateHandle(internal::Isolate* isolate, + internal::Address value); private: // Declaring operator new and delete as deleted is not spec compliant. @@ -871,12 +870,12 @@ class V8_EXPORT HandleScope { void operator delete[](void*, size_t); // Uses heap_object to obtain the current Isolate. - static internal::Object** CreateHandle( - internal::NeverReadOnlySpaceObject* heap_object, internal::Object* value); + static internal::Address* CreateHandle( + internal::NeverReadOnlySpaceObject* heap_object, internal::Address value); internal::Isolate* isolate_; - internal::Object** prev_next_; - internal::Object** prev_limit_; + internal::Address* prev_next_; + internal::Address* prev_limit_; // Local::New uses CreateHandle with an Isolate* parameter. template friend class Local; @@ -903,8 +902,8 @@ class V8_EXPORT EscapableHandleScope : public HandleScope { */ template V8_INLINE Local Escape(Local value) { - internal::Object** slot = - Escape(reinterpret_cast(*value)); + internal::Address* slot = + Escape(reinterpret_cast(*value)); return Local(reinterpret_cast(slot)); } @@ -924,8 +923,8 @@ class V8_EXPORT EscapableHandleScope : public HandleScope { void operator delete(void*, size_t); void operator delete[](void*, size_t); - internal::Object** Escape(internal::Object** escape_value); - internal::Object** escape_slot_; + internal::Address* Escape(internal::Address* escape_value); + internal::Address* escape_slot_; }; /** @@ -950,7 +949,7 @@ class V8_EXPORT SealHandleScope { void operator delete[](void*, size_t); internal::Isolate* const isolate_; - internal::Object** prev_limit_; + internal::Address* prev_limit_; int prev_sealed_level_; }; @@ -1393,10 +1392,6 @@ class V8_EXPORT ScriptCompiler { StreamedSource(ExternalSourceStream* source_stream, Encoding encoding); ~StreamedSource(); - V8_DEPRECATED("No longer used", const CachedData* GetCachedData() const) { - return nullptr; - } - internal::ScriptStreamingData* impl() const { return impl_.get(); } // Prevent copying. @@ -1426,10 +1421,6 @@ class V8_EXPORT ScriptCompiler { enum CompileOptions { kNoCompileOptions = 0, - kProduceParserCache, - kConsumeParserCache, - kProduceCodeCache, - kProduceFullCodeCache, kConsumeCodeCache, kEagerCompile }; @@ -1827,8 +1818,18 @@ struct SampleInfo { }; struct MemoryRange { - const void* start; - size_t length_in_bytes; + const void* start = nullptr; + size_t length_in_bytes = 0; +}; + +struct JSEntryStub { + MemoryRange code; +}; + +struct UnwindState { + MemoryRange code_range; + MemoryRange embedded_code_range; + JSEntryStub js_entry_stub; }; /** @@ -1840,12 +1841,10 @@ class V8_EXPORT JSON { * Tries to parse the string |json_string| and returns it as value if * successful. * + * \param the context in which to parse and create the value. * \param json_string The string to parse. * \return The corresponding value if successfully parsed. */ - static V8_DEPRECATED("Use the maybe version taking context", - MaybeLocal Parse(Isolate* isolate, - Local json_string)); static V8_WARN_UNUSED_RESULT MaybeLocal Parse( Local context, Local json_string); @@ -1903,7 +1902,7 @@ class V8_EXPORT ValueSerializer { Isolate* isolate, Local shared_array_buffer); virtual Maybe GetWasmModuleTransferId( - Isolate* isolate, Local module); + Isolate* isolate, Local module); /** * Allocates memory for the buffer of at least the size provided. The actual * size (which may be greater or equal) is written to |actual_size|. If no @@ -1941,12 +1940,6 @@ class V8_EXPORT ValueSerializer { V8_WARN_UNUSED_RESULT Maybe WriteValue(Local context, Local value); - /** - * Returns the stored data. This serializer should not be used once the buffer - * is released. The contents are undefined if a previous write has failed. - */ - V8_DEPRECATED("Use Release()", std::vector ReleaseBuffer()); - /** * Returns the stored data (allocated using the delegate's * ReallocateBufferMemory) and its size. This serializer should not be used @@ -1963,13 +1956,6 @@ class V8_EXPORT ValueSerializer { void TransferArrayBuffer(uint32_t transfer_id, Local array_buffer); - /** - * Similar to TransferArrayBuffer, but for SharedArrayBuffer. - */ - V8_DEPRECATED("Use Delegate::GetSharedArrayBufferId", - void TransferSharedArrayBuffer( - uint32_t transfer_id, - Local shared_array_buffer)); /** * Indicate whether to treat ArrayBufferView objects as host objects, @@ -2020,10 +2006,10 @@ class V8_EXPORT ValueDeserializer { virtual MaybeLocal ReadHostObject(Isolate* isolate); /** - * Get a WasmCompiledModule given a transfer_id previously provided + * Get a WasmModuleObject given a transfer_id previously provided * by ValueSerializer::GetWasmModuleTransferId */ - virtual MaybeLocal GetWasmModuleFromId( + virtual MaybeLocal GetWasmModuleFromId( Isolate* isolate, uint32_t transfer_id); /** @@ -2531,7 +2517,7 @@ enum class NewStringType { */ class V8_EXPORT String : public Name { public: - static constexpr int kMaxLength = internal::kApiPointerSize == 4 + static constexpr int kMaxLength = internal::kApiTaggedSize == 4 ? (1 << 28) - 16 : internal::kSmiMaxValue / 2 - 24; @@ -2631,8 +2617,7 @@ class V8_EXPORT String : public Name { public: virtual ~ExternalStringResourceBase() = default; - V8_DEPRECATE_SOON("Use IsCacheable().", - virtual bool IsCompressible() const) { + V8_DEPRECATED("Use IsCacheable().", virtual bool IsCompressible() const) { return false; } @@ -2641,16 +2626,7 @@ class V8_EXPORT String : public Name { * ExternalStringResource::data() may be cached, otherwise it is not * expected to be stable beyond the current top-level task. */ - virtual bool IsCacheable() const { -#if __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" -#endif - return !IsCompressible(); -#if __clang__ -#pragma clang diagnostic pop -#endif - } + virtual bool IsCacheable() const { return true; } protected: ExternalStringResourceBase() = default; @@ -2775,7 +2751,7 @@ class V8_EXPORT String : public Name { }; /** Allocates a new string from UTF-8 data.*/ - static V8_DEPRECATE_SOON( + static V8_DEPRECATED( "Use maybe version", Local NewFromUtf8(Isolate* isolate, const char* data, NewStringType type = kNormalString, @@ -2925,8 +2901,6 @@ class V8_EXPORT String : public Name { ExternalStringResource* GetExternalStringResourceSlow() const; ExternalStringResourceBase* GetExternalStringResourceBaseSlow( String::Encoding* encoding_out) const; - const ExternalOneByteStringResource* GetExternalOneByteStringResourceSlow() - const; static void CheckCast(v8::Value* obj); }; @@ -3317,7 +3291,6 @@ class V8_EXPORT Object : public Value { V8_WARN_UNUSED_RESULT MaybeLocal GetOwnPropertyDescriptor( Local context, Local key); - V8_DEPRECATE_SOON("Use maybe version", bool Has(Local key)); /** * Object::Has() calls the abstract operation HasProperty(O, P) described * in ECMA-262, 7.3.10. Has() returns @@ -3336,7 +3309,6 @@ class V8_EXPORT Object : public Value { V8_WARN_UNUSED_RESULT Maybe Has(Local context, Local key); - V8_DEPRECATE_SOON("Use maybe version", bool Delete(Local key)); V8_WARN_UNUSED_RESULT Maybe Delete(Local context, Local key); @@ -3657,6 +3629,18 @@ class V8_EXPORT Object : public Value { static Local New(Isolate* isolate); + /** + * Creates a JavaScript object with the given properties, and + * a the given prototype_or_null (which can be any JavaScript + * value, and if it's null, the newly created object won't have + * a prototype at all). This is similar to Object.create(). + * All properties will be created as enumerable, configurable + * and writable properties. + */ + static Local New(Isolate* isolate, Local prototype_or_null, + Local* names, Local* values, + size_t length); + V8_INLINE static Object* Cast(Value* obj); private: @@ -3770,8 +3754,8 @@ class ReturnValue { } // Local setters template - V8_INLINE V8_DEPRECATE_SOON("Use Global<> instead", - void Set(const Persistent& handle)); + V8_INLINE V8_DEPRECATED("Use Global<> instead", + void Set(const Persistent& handle)); template V8_INLINE void Set(const Global& handle); template @@ -3803,10 +3787,10 @@ class ReturnValue { template friend class PropertyCallbackInfo; template friend class PersistentValueMapBase; - V8_INLINE void SetInternal(internal::Object* value) { *value_ = value; } - V8_INLINE internal::Object* GetDefaultValue(); - V8_INLINE explicit ReturnValue(internal::Object** slot); - internal::Object** value_; + V8_INLINE void SetInternal(internal::Address value) { *value_ = value; } + V8_INLINE internal::Address GetDefaultValue(); + V8_INLINE explicit ReturnValue(internal::Address* slot); + internal::Address* value_; }; @@ -3860,10 +3844,10 @@ class FunctionCallbackInfo { static const int kDataIndex = 4; static const int kNewTargetIndex = 5; - V8_INLINE FunctionCallbackInfo(internal::Object** implicit_args, - internal::Object** values, int length); - internal::Object** implicit_args_; - internal::Object** values_; + V8_INLINE FunctionCallbackInfo(internal::Address* implicit_args, + internal::Address* values, int length); + internal::Address* implicit_args_; + internal::Address* values_; int length_; }; @@ -3975,8 +3959,8 @@ class PropertyCallbackInfo { static const int kDataIndex = 5; static const int kThisIndex = 6; - V8_INLINE PropertyCallbackInfo(internal::Object** args) : args_(args) {} - internal::Object** args_; + V8_INLINE PropertyCallbackInfo(internal::Address* args) : args_(args) {} + internal::Address* args_; }; @@ -3998,10 +3982,11 @@ class V8_EXPORT Function : public Object { Local data = Local(), int length = 0, ConstructorBehavior behavior = ConstructorBehavior::kAllow, SideEffectType side_effect_type = SideEffectType::kHasSideEffect); - static V8_DEPRECATE_SOON( - "Use maybe version", - Local New(Isolate* isolate, FunctionCallback callback, - Local data = Local(), int length = 0)); + static V8_DEPRECATED("Use maybe version", + Local New(Isolate* isolate, + FunctionCallback callback, + Local data = Local(), + int length = 0)); V8_WARN_UNUSED_RESULT MaybeLocal NewInstance( Local context, int argc, Local argv[]) const; @@ -4020,9 +4005,9 @@ class V8_EXPORT Function : public Object { Local context, int argc, Local argv[], SideEffectType side_effect_type = SideEffectType::kHasSideEffect) const; - V8_DEPRECATE_SOON("Use maybe version", - Local Call(Local recv, int argc, - Local argv[])); + V8_DEPRECATED("Use maybe version", + Local Call(Local recv, int argc, + Local argv[])); V8_WARN_UNUSED_RESULT MaybeLocal Call(Local context, Local recv, int argc, Local argv[]); @@ -4156,6 +4141,11 @@ class V8_EXPORT Promise : public Object { */ PromiseState State(); + /** + * Marks this promise as handled to avoid reporting unhandled rejections. + */ + void MarkAsHandled(); + V8_INLINE static Promise* Cast(Value* obj); static const int kEmbedderFieldCount = V8_PROMISE_INTERNAL_FIELD_COUNT; @@ -4263,9 +4253,8 @@ class V8_EXPORT Proxy : public Object { static void CheckCast(Value* obj); }; -// TODO(mtrofin): rename WasmCompiledModule to WasmModuleObject, for -// consistency with internal APIs. -class V8_EXPORT WasmCompiledModule : public Object { +// An instance of WebAssembly.Module. +class V8_EXPORT WasmModuleObject : public Object { public: typedef std::pair, size_t> SerializedModule; @@ -4294,7 +4283,7 @@ class V8_EXPORT WasmCompiledModule : public Object { private: typedef std::shared_ptr SharedModule; typedef std::pair, size_t> OwnedBuffer; - friend class WasmCompiledModule; + friend class WasmModuleObject; explicit TransferrableModule(SharedModule shared_module) : shared_module_(std::move(shared_module)) {} TransferrableModule(OwnedBuffer serialized, OwnedBuffer bytes) @@ -4313,10 +4302,10 @@ class V8_EXPORT WasmCompiledModule : public Object { TransferrableModule GetTransferrableModule(); /** - * Efficiently re-create a WasmCompiledModule, without recompiling, from + * Efficiently re-create a WasmModuleObject, without recompiling, from * a TransferrableModule. */ - static MaybeLocal FromTransferrableModule( + static MaybeLocal FromTransferrableModule( Isolate* isolate, const TransferrableModule&); /** @@ -4334,31 +4323,34 @@ class V8_EXPORT WasmCompiledModule : public Object { * If possible, deserialize the module, otherwise compile it from the provided * uncompiled bytes. */ - static MaybeLocal DeserializeOrCompile( + static MaybeLocal DeserializeOrCompile( Isolate* isolate, BufferReference serialized_module, BufferReference wire_bytes); - V8_INLINE static WasmCompiledModule* Cast(Value* obj); + V8_INLINE static WasmModuleObject* Cast(Value* obj); private: - static MaybeLocal Deserialize( + static MaybeLocal Deserialize( Isolate* isolate, BufferReference serialized_module, BufferReference wire_bytes); - static MaybeLocal Compile(Isolate* isolate, - const uint8_t* start, - size_t length); + static MaybeLocal Compile(Isolate* isolate, + const uint8_t* start, + size_t length); static BufferReference AsReference( const TransferrableModule::OwnedBuffer& buff) { return {buff.first.get(), buff.second}; } - WasmCompiledModule(); + WasmModuleObject(); static void CheckCast(Value* obj); }; +V8_DEPRECATE_SOON("Use WasmModuleObject", + typedef WasmModuleObject WasmCompiledModule); + /** * The V8 interface for WebAssembly streaming compilation. When streaming * compilation is initiated, V8 passes a {WasmStreaming} object to the embedder - * such that the embedder can pass the input butes for streaming compilation to + * such that the embedder can pass the input bytes for streaming compilation to * V8. */ class V8_EXPORT WasmStreaming final { @@ -4370,7 +4362,7 @@ class V8_EXPORT WasmStreaming final { ~WasmStreaming(); /** - * Pass a new chunck of bytes to WebAssembly streaming compilation. + * Pass a new chunk of bytes to WebAssembly streaming compilation. * The buffer passed into {OnBytesReceived} is owned by the caller. */ void OnBytesReceived(const uint8_t* bytes, size_t size); @@ -4389,6 +4381,29 @@ class V8_EXPORT WasmStreaming final { */ void Abort(MaybeLocal exception); + /** + * Callback for module compiled notifications. |data| is the identifier + * passed to {SetModuleCompiledCallback}, |compiled_module| is the result. + */ + typedef void (*ModuleCompiledCallback)( + intptr_t data, Local compiled_module); + + /** + * Sets a callback for when compilation of the Wasm module has been completed + * to the highest tier. |data| will be passed as the first callback parameter. + */ + void SetModuleCompiledCallback(ModuleCompiledCallback callback, + intptr_t data); + + /** + * Passes previously compiled module bytes. This must be called before calling + * any non-static methods of this class. Returns true if the module bytes can + * be used, false otherwise. The buffer passed into {SetCompiledModuleBytes} + * is owned by the caller. If {SetCompiledModuleBytes} returns true, the + * buffer must remain valid until either {Finish} or {Abort} completes. + */ + bool SetCompiledModuleBytes(const uint8_t* bytes, size_t size); + /** * Unpacks a {WasmStreaming} object wrapped in a {Managed} for the embedder. * Since the embedder is on the other side of the API, it cannot unpack the @@ -5055,8 +5070,6 @@ class V8_EXPORT SharedArrayBuffer : public Object { */ class V8_EXPORT Date : public Object { public: - static V8_DEPRECATED("Use maybe version.", - Local New(Isolate* isolate, double time)); static V8_WARN_UNUSED_RESULT MaybeLocal New(Local context, double time); @@ -5705,7 +5718,7 @@ class V8_EXPORT FunctionTemplate : public Template { SideEffectType side_effect_type = SideEffectType::kHasSideEffect); /** Returns the unique function instance in the current execution context.*/ - V8_DEPRECATE_SOON("Use maybe version", Local GetFunction()); + V8_DEPRECATED("Use maybe version", Local GetFunction()); V8_WARN_UNUSED_RESULT MaybeLocal GetFunction( Local context); @@ -6002,7 +6015,7 @@ class V8_EXPORT ObjectTemplate : public Template { size_t index); /** Creates a new instance of this template.*/ - V8_DEPRECATE_SOON("Use maybe version", Local NewInstance()); + V8_DEPRECATED("Use maybe version", Local NewInstance()); V8_WARN_UNUSED_RESULT MaybeLocal NewInstance(Local context); /** @@ -6222,7 +6235,7 @@ class V8_EXPORT AccessorSignature : public Data { // --- Extensions --- -V8_DEPRECATE_SOON("Implementation detail", class) +V8_DEPRECATED("Implementation detail", class) V8_EXPORT ExternalOneByteStringResourceImpl : public String::ExternalOneByteStringResource { public: @@ -6316,18 +6329,6 @@ class V8_EXPORT ResourceConstraints { void ConfigureDefaults(uint64_t physical_memory, uint64_t virtual_memory_limit); - // Returns the max semi-space size in MB. - V8_DEPRECATED("Use max_semi_space_size_in_kb()", - size_t max_semi_space_size()) { - return max_semi_space_size_in_kb_ / 1024; - } - - // Sets the max semi-space size in MB. - V8_DEPRECATED("Use set_max_semi_space_size_in_kb(size_t limit_in_kb)", - void set_max_semi_space_size(size_t limit_in_mb)) { - max_semi_space_size_in_kb_ = limit_in_mb * 1024; - } - // Returns the max semi-space size in KB. size_t max_semi_space_size_in_kb() const { return max_semi_space_size_in_kb_; @@ -6342,14 +6343,6 @@ class V8_EXPORT ResourceConstraints { void set_max_old_space_size(size_t limit_in_mb) { max_old_space_size_ = limit_in_mb; } - V8_DEPRECATED("max_executable_size_ is subsumed by max_old_space_size_", - size_t max_executable_size() const) { - return max_executable_size_; - } - V8_DEPRECATED("max_executable_size_ is subsumed by max_old_space_size_", - void set_max_executable_size(size_t limit_in_mb)) { - max_executable_size_ = limit_in_mb; - } uint32_t* stack_limit() const { return stack_limit_; } // Sets an address beyond which the VM's stack may not grow. void set_stack_limit(uint32_t* value) { stack_limit_ = value; } @@ -6366,7 +6359,6 @@ class V8_EXPORT ResourceConstraints { // The remaining limits are in MB size_t max_old_space_size_; - size_t max_executable_size_; uint32_t* stack_limit_; size_t code_range_size_; size_t max_zone_pool_size_; @@ -6473,10 +6465,12 @@ typedef void (*HostInitializeImportMetaObjectCallback)(Local context, * PrepareStackTraceCallback is called when the stack property of an error is * first accessed. The return value will be used as the stack value. If this * callback is registed, the |Error.prepareStackTrace| API will be disabled. + * |sites| is an array of call sites, specified in + * https://github.com/v8/v8/wiki/Stack-Trace-API */ typedef MaybeLocal (*PrepareStackTraceCallback)(Local context, Local error, - Local trace); + Local sites); /** * PromiseHook with type kInit is called when a new promise is @@ -6771,21 +6765,6 @@ class V8_EXPORT HeapCodeStatistics { class RetainedObjectInfo; - -/** - * FunctionEntryHook is the type of the profile entry hook called at entry to - * any generated function when function-level profiling is enabled. - * - * \param function the address of the function that's being entered. - * \param return_addr_location points to a location on stack where the machine - * return address resides. This can be used to identify the caller of - * \p function, and/or modified to divert execution when \p function exits. - * - * \note the entry hook must not cause garbage collection. - */ -typedef void (*FunctionEntryHook)(uintptr_t function, - uintptr_t return_addr_location); - /** * A JIT code event is issued each time code is added, moved or removed. * @@ -6947,15 +6926,6 @@ class V8_EXPORT EmbedderHeapTracer { kEmpty, }; - enum ForceCompletionAction { FORCE_COMPLETION, DO_NOT_FORCE_COMPLETION }; - - struct AdvanceTracingActions { - explicit AdvanceTracingActions(ForceCompletionAction force_completion_) - : force_completion(force_completion_) {} - - ForceCompletionAction force_completion; - }; - virtual ~EmbedderHeapTracer() = default; /** @@ -6972,25 +6942,6 @@ class V8_EXPORT EmbedderHeapTracer { */ virtual void TracePrologue() = 0; - /** - * Called to make a tracing step in the embedder. - * - * The embedder is expected to trace its heap starting from wrappers reported - * by RegisterV8References method, and report back all reachable wrappers. - * Furthermore, the embedder is expected to stop tracing by the given - * deadline. - * - * Returns true if there is still work to do. - * - * Note: Only one of the AdvanceTracing methods needs to be overriden by the - * embedder. - */ - V8_DEPRECATED("Use void AdvanceTracing(deadline_in_ms)", - virtual bool AdvanceTracing(double deadline_in_ms, - AdvanceTracingActions actions)) { - return false; - } - /** * Called to advance tracing in the embedder. * @@ -7000,17 +6951,14 @@ class V8_EXPORT EmbedderHeapTracer { * deadline. A deadline of infinity means that tracing should be finished. * * Returns |true| if tracing is done, and false otherwise. - * - * Note: Only one of the AdvanceTracing methods needs to be overriden by the - * embedder. */ - virtual bool AdvanceTracing(double deadline_in_ms); + virtual bool AdvanceTracing(double deadline_in_ms) = 0; /* * Returns true if there no more tracing work to be done (see AdvanceTracing) * and false otherwise. */ - virtual bool IsTracingDone(); + virtual bool IsTracingDone() = 0; /** * Called at the end of a GC cycle. @@ -7022,13 +6970,8 @@ class V8_EXPORT EmbedderHeapTracer { /** * Called upon entering the final marking pause. No more incremental marking * steps will follow this call. - * - * Note: Only one of the EnterFinalPause methods needs to be overriden by the - * embedder. */ - V8_DEPRECATED("Use void EnterFinalPause(EmbedderStackState)", - virtual void EnterFinalPause()) {} - virtual void EnterFinalPause(EmbedderStackState stack_state); + virtual void EnterFinalPause(EmbedderStackState stack_state) = 0; /** * Called when tracing is aborted. @@ -7036,8 +6979,8 @@ class V8_EXPORT EmbedderHeapTracer { * The embedder is expected to throw away all intermediate data and reset to * the initial state. */ - V8_DEPRECATE_SOON("Obsolete as V8 will not abort tracing anymore.", - virtual void AbortTracing()) {} + V8_DEPRECATED("Obsolete as V8 will not abort tracing anymore.", + virtual void AbortTracing()) {} /* * Called by the embedder to request immediate finalization of the currently @@ -7063,13 +7006,6 @@ class V8_EXPORT EmbedderHeapTracer { */ v8::Isolate* isolate() const { return isolate_; } - /** - * Returns the number of wrappers that are still to be traced by the embedder. - */ - V8_DEPRECATED("Use IsTracingDone", virtual size_t NumberOfWrappersToTrace()) { - return 0; - } - protected: v8::Isolate* isolate_ = nullptr; @@ -7079,6 +7015,10 @@ class V8_EXPORT EmbedderHeapTracer { /** * Callback and supporting data used in SnapshotCreator to implement embedder * logic to serialize internal fields. + * Internal fields that directly reference V8 objects are serialized without + * calling this callback. Internal fields that contain aligned pointers are + * serialized by this callback if it returns non-zero result. Otherwise it is + * serialized verbatim. */ struct SerializeInternalFieldsCallback { typedef StartupData (*CallbackFunction)(Local holder, int index, @@ -7124,8 +7064,7 @@ class V8_EXPORT Isolate { */ struct CreateParams { CreateParams() - : entry_hook(nullptr), - code_event_handler(nullptr), + : code_event_handler(nullptr), snapshot_blob(nullptr), counter_lookup_callback(nullptr), create_histogram_callback(nullptr), @@ -7135,16 +7074,6 @@ class V8_EXPORT Isolate { allow_atomics_wait(true), only_terminate_in_safe_scope(false) {} - /** - * The optional entry_hook allows the host application to provide the - * address of a function that's invoked on entry to every V8-generated - * function. Note that entry_hook is invoked at the very start of each - * generated function. - * An entry_hook can only be provided in no-snapshot builds; in snapshot - * builds it must be nullptr. - */ - FunctionEntryHook entry_hook; - /** * Allows the host application to provide the address of a function that is * notified each time code is added, moved or removed. @@ -7230,7 +7159,7 @@ class V8_EXPORT Isolate { */ class V8_EXPORT DisallowJavascriptExecutionScope { public: - enum OnFailure { CRASH_ON_FAILURE, THROW_ON_FAILURE }; + enum OnFailure { CRASH_ON_FAILURE, THROW_ON_FAILURE, DUMP_ON_FAILURE }; DisallowJavascriptExecutionScope(Isolate* isolate, OnFailure on_failure); ~DisallowJavascriptExecutionScope(); @@ -7242,7 +7171,7 @@ class V8_EXPORT Isolate { const DisallowJavascriptExecutionScope&) = delete; private: - bool on_failure_; + OnFailure on_failure_; void* internal_; }; @@ -7264,6 +7193,7 @@ class V8_EXPORT Isolate { private: void* internal_throws_; void* internal_assert_; + void* internal_dump_; }; /** @@ -7387,6 +7317,11 @@ class V8_EXPORT Isolate { kDateToLocaleString = 66, kDateToLocaleDateString = 67, kDateToLocaleTimeString = 68, + kAttemptOverrideReadOnlyOnPrototypeSloppy = 69, + kAttemptOverrideReadOnlyOnPrototypeStrict = 70, + kOptimizedFunctionWithOneShotBytecode = 71, + kRegExpMatchIsTrueishOnNonJSRegExp = 72, + kRegExpMatchIsFalseishOnJSRegExp = 73, // If you add new values here, you'll also need to update Chromium's: // web_feature.mojom, UseCounterCallback.cpp, and enums.xml. V8 changes to @@ -7662,7 +7597,8 @@ class V8_EXPORT Isolate { Local GetCurrentContext(); /** Returns the last context entered through V8's C++ API. */ - Local GetEnteredContext(); + V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().", + Local GetEnteredContext()); /** * Returns either the last context entered through V8's C++ API, or the @@ -7788,7 +7724,7 @@ class V8_EXPORT Isolate { */ typedef void (*AtomicsWaitCallback)(AtomicsWaitEvent event, Local array_buffer, - size_t offset_in_bytes, int32_t value, + size_t offset_in_bytes, int64_t value, double timeout_in_ms, AtomicsWaitWakeHandle* stop_handle, void* data); @@ -8137,13 +8073,9 @@ class V8_EXPORT Isolate { void GetCodeRange(void** start, size_t* length_in_bytes); /** - * Returns a memory range containing the code for V8's embedded functions - * (e.g. builtins) which are shared across isolates. - * - * If embedded builtins are disabled, then the memory range will be a null - * pointer with 0 length. + * Returns the UnwindState necessary for use with the Unwinder API. */ - MemoryRange GetEmbeddedCodeRange(); + UnwindState GetUnwindState(); /** Set the callback to invoke in case of fatal errors. */ void SetFatalErrorHandler(FatalErrorCallback that); @@ -8189,7 +8121,9 @@ class V8_EXPORT Isolate { void SetWasmModuleCallback(ExtensionCallback callback); void SetWasmInstanceCallback(ExtensionCallback callback); - void SetWasmCompileStreamingCallback(ApiImplementationCallback callback); + V8_DEPRECATE_SOON( + "The callback set in SetWasmStreamingCallback is used now", + void SetWasmCompileStreamingCallback(ApiImplementationCallback callback)); void SetWasmStreamingCallback(WasmStreamingCallback callback); @@ -8301,7 +8235,7 @@ class V8_EXPORT Isolate { template friend class PersistentValueMapBase; - internal::Object** GetDataFromSnapshotOnce(size_t index); + internal::Address* GetDataFromSnapshotOnce(size_t index); void ReportExternalAllocationLimitReached(); void CheckMemoryPressure(); }; @@ -8483,15 +8417,17 @@ class V8_EXPORT V8 { * \param context The third argument passed to the Linux signal handler, which * points to a ucontext_t structure. */ - static bool TryHandleSignal(int signal_number, void* info, void* context); + V8_DEPRECATE_SOON("Use TryHandleWebAssemblyTrapPosix", + static bool TryHandleSignal(int signal_number, void* info, + void* context)); #endif // V8_OS_POSIX /** * Enable the default signal handler rather than using one provided by the * embedder. */ - V8_DEPRECATE_SOON("Use EnableWebAssemblyTrapHandler", - static bool RegisterDefaultSignalHandler()); + V8_DEPRECATED("Use EnableWebAssemblyTrapHandler", + static bool RegisterDefaultSignalHandler()); /** * Activate trap-based bounds checking for WebAssembly. @@ -8504,26 +8440,20 @@ class V8_EXPORT V8 { private: V8(); - static internal::Object** GlobalizeReference(internal::Isolate* isolate, - internal::Object** handle); - static internal::Object** CopyPersistent(internal::Object** handle); - static void DisposeGlobal(internal::Object** global_handle); - static void MakeWeak(internal::Object** location, void* data, + static internal::Address* GlobalizeReference(internal::Isolate* isolate, + internal::Address* handle); + static internal::Address* CopyPersistent(internal::Address* handle); + static void DisposeGlobal(internal::Address* global_handle); + static void MakeWeak(internal::Address* location, void* data, WeakCallbackInfo::Callback weak_callback, WeakCallbackType type); - static void MakeWeak(internal::Object** location, void* data, - // Must be 0 or -1. - int internal_field_index1, - // Must be 1 or -1. - int internal_field_index2, - WeakCallbackInfo::Callback weak_callback); - static void MakeWeak(internal::Object*** location_addr); - static void* ClearWeak(internal::Object** location); - static void AnnotateStrongRetainer(internal::Object** location, + static void MakeWeak(internal::Address** location_addr); + static void* ClearWeak(internal::Address* location); + static void AnnotateStrongRetainer(internal::Address* location, const char* label); static Value* Eternalize(Isolate* isolate, Value* handle); - static void RegisterExternallyReferencedObject(internal::Object** object, + static void RegisterExternallyReferencedObject(internal::Address* location, internal::Isolate* isolate); template @@ -8644,8 +8574,8 @@ class V8_EXPORT SnapshotCreator { void operator=(const SnapshotCreator&) = delete; private: - size_t AddData(Local context, internal::Object* object); - size_t AddData(internal::Object* object); + size_t AddData(Local context, internal::Address object); + size_t AddData(internal::Address object); void* data_; }; @@ -9166,7 +9096,7 @@ class V8_EXPORT Context { * stack. * https://html.spec.whatwg.org/multipage/webappapis.html#backup-incumbent-settings-object-stack */ - class V8_EXPORT BackupIncumbentScope { + class V8_EXPORT BackupIncumbentScope final { public: /** * |backup_incumbent_context| is pushed onto the backup incumbent settings @@ -9175,10 +9105,20 @@ class V8_EXPORT Context { explicit BackupIncumbentScope(Local backup_incumbent_context); ~BackupIncumbentScope(); + /** + * Returns address that is comparable with JS stack address. Note that JS + * stack may be allocated separately from the native stack. See also + * |TryCatch::JSStackComparableAddress| for details. + */ + uintptr_t JSStackComparableAddress() const { + return js_stack_comparable_address_; + } + private: friend class internal::Isolate; Local backup_incumbent_context_; + uintptr_t js_stack_comparable_address_ = 0; const BackupIncumbentScope* prev_ = nullptr; }; @@ -9188,7 +9128,7 @@ class V8_EXPORT Context { friend class Object; friend class Function; - internal::Object** GetDataFromSnapshotOnce(size_t index); + internal::Address* GetDataFromSnapshotOnce(size_t index); Local SlowGetEmbedderData(int index); void* SlowGetAlignedPointerFromEmbedderData(int index); }; @@ -9317,6 +9257,55 @@ class V8_EXPORT Locker { internal::Isolate* isolate_; }; +/** + * Various helpers for skipping over V8 frames in a given stack. + * + * The unwinder API is only supported on the x64 architecture. + */ +class V8_EXPORT Unwinder { + public: + /** + * Attempt to unwind the stack to the most recent C++ frame. This function is + * signal-safe and does not access any V8 state and thus doesn't require an + * Isolate. + * + * The unwinder needs to know the location of the JS Entry Stub (a piece of + * code that is run when C++ code calls into generated JS code). This is used + * for edge cases where the current frame is being constructed or torn down + * when the stack sample occurs. + * + * The unwinder also needs the virtual memory range of all possible V8 code + * objects. There are two ranges required - the heap code range and the range + * for code embedded in the binary. The V8 API provides all required inputs + * via an UnwindState object through the Isolate::GetUnwindState() API. These + * values will not change after Isolate initialization, so the same + * |unwind_state| can be used for multiple calls. + * + * \param unwind_state Input state for the Isolate that the stack comes from. + * \param register_state The current registers. This is an in-out param that + * will be overwritten with the register values after unwinding, on success. + * \param stack_base The resulting stack pointer and frame pointer values are + * bounds-checked against the stack_base and the original stack pointer value + * to ensure that they are valid locations in the given stack. If these values + * or any intermediate frame pointer values used during unwinding are ever out + * of these bounds, unwinding will fail. + * + * \return True on success. + */ + static bool TryUnwindV8Frames(const UnwindState& unwind_state, + RegisterState* register_state, + const void* stack_base); + + /** + * Whether the PC is within the V8 code range represented by code_range or + * embedded_code_range in |unwind_state|. + * + * If this returns false, then calling UnwindV8Frames() with the same PC + * and unwind_state will always fail. If it returns true, then unwinding may + * (but not necessarily) be successful. + */ + static bool PCIsInV8(const UnwindState& unwind_state, void* pc); +}; // --- Implementation --- @@ -9335,7 +9324,7 @@ template Local Local::New(Isolate* isolate, T* that) { if (that == nullptr) return Local(); T* that_ptr = that; - internal::Object** p = reinterpret_cast(that_ptr); + internal::Address* p = reinterpret_cast(that_ptr); return Local(reinterpret_cast(HandleScope::CreateHandle( reinterpret_cast(isolate), *p))); } @@ -9378,7 +9367,7 @@ void* WeakCallbackInfo::GetInternalField(int index) const { template T* PersistentBase::New(Isolate* isolate, T* that) { if (that == nullptr) return nullptr; - internal::Object** p = reinterpret_cast(that); + internal::Address* p = reinterpret_cast(that); return reinterpret_cast( V8::GlobalizeReference(reinterpret_cast(isolate), p)); @@ -9391,7 +9380,7 @@ void Persistent::Copy(const Persistent& that) { TYPE_CHECK(T, S); this->Reset(); if (that.IsEmpty()) return; - internal::Object** p = reinterpret_cast(that.val_); + internal::Address* p = reinterpret_cast(that.val_); this->val_ = reinterpret_cast(V8::CopyPersistent(p)); M::Copy(that, this); } @@ -9400,7 +9389,7 @@ template bool PersistentBase::IsIndependent() const { typedef internal::Internals I; if (this->IsEmpty()) return false; - return I::GetNodeFlag(reinterpret_cast(this->val_), + return I::GetNodeFlag(reinterpret_cast(this->val_), I::kNodeIsIndependentShift); } @@ -9409,7 +9398,7 @@ bool PersistentBase::IsNearDeath() const { typedef internal::Internals I; if (this->IsEmpty()) return false; uint8_t node_state = - I::GetNodeState(reinterpret_cast(this->val_)); + I::GetNodeState(reinterpret_cast(this->val_)); return node_state == I::kNodeStateIsNearDeathValue || node_state == I::kNodeStateIsPendingValue; } @@ -9419,15 +9408,15 @@ template bool PersistentBase::IsWeak() const { typedef internal::Internals I; if (this->IsEmpty()) return false; - return I::GetNodeState(reinterpret_cast(this->val_)) == - I::kNodeStateIsWeakValue; + return I::GetNodeState(reinterpret_cast(this->val_)) == + I::kNodeStateIsWeakValue; } template void PersistentBase::Reset() { if (this->IsEmpty()) return; - V8::DisposeGlobal(reinterpret_cast(this->val_)); + V8::DisposeGlobal(reinterpret_cast(this->val_)); val_ = nullptr; } @@ -9459,25 +9448,25 @@ V8_INLINE void PersistentBase::SetWeak( P* parameter, typename WeakCallbackInfo

::Callback callback, WeakCallbackType type) { typedef typename WeakCallbackInfo::Callback Callback; - V8::MakeWeak(reinterpret_cast(this->val_), parameter, + V8::MakeWeak(reinterpret_cast(this->val_), parameter, reinterpret_cast(callback), type); } template void PersistentBase::SetWeak() { - V8::MakeWeak(reinterpret_cast(&this->val_)); + V8::MakeWeak(reinterpret_cast(&this->val_)); } template template P* PersistentBase::ClearWeak() { return reinterpret_cast( - V8::ClearWeak(reinterpret_cast(this->val_))); + V8::ClearWeak(reinterpret_cast(this->val_))); } template void PersistentBase::AnnotateStrongRetainer(const char* label) { - V8::AnnotateStrongRetainer(reinterpret_cast(this->val_), + V8::AnnotateStrongRetainer(reinterpret_cast(this->val_), label); } @@ -9485,7 +9474,7 @@ template void PersistentBase::RegisterExternalReference(Isolate* isolate) const { if (IsEmpty()) return; V8::RegisterExternallyReferencedObject( - reinterpret_cast(this->val_), + reinterpret_cast(this->val_), reinterpret_cast(isolate)); } @@ -9493,7 +9482,7 @@ template void PersistentBase::MarkIndependent() { typedef internal::Internals I; if (this->IsEmpty()) return; - I::UpdateNodeFlag(reinterpret_cast(this->val_), true, + I::UpdateNodeFlag(reinterpret_cast(this->val_), true, I::kNodeIsIndependentShift); } @@ -9501,7 +9490,7 @@ template void PersistentBase::MarkActive() { typedef internal::Internals I; if (this->IsEmpty()) return; - I::UpdateNodeFlag(reinterpret_cast(this->val_), true, + I::UpdateNodeFlag(reinterpret_cast(this->val_), true, I::kNodeIsActiveShift); } @@ -9510,7 +9499,7 @@ template void PersistentBase::SetWrapperClassId(uint16_t class_id) { typedef internal::Internals I; if (this->IsEmpty()) return; - internal::Object** obj = reinterpret_cast(this->val_); + internal::Address* obj = reinterpret_cast(this->val_); uint8_t* addr = reinterpret_cast(obj) + I::kNodeClassIdOffset; *reinterpret_cast(addr) = class_id; } @@ -9520,14 +9509,13 @@ template uint16_t PersistentBase::WrapperClassId() const { typedef internal::Internals I; if (this->IsEmpty()) return 0; - internal::Object** obj = reinterpret_cast(this->val_); + internal::Address* obj = reinterpret_cast(this->val_); uint8_t* addr = reinterpret_cast(obj) + I::kNodeClassIdOffset; return *reinterpret_cast(addr); } - -template -ReturnValue::ReturnValue(internal::Object** slot) : value_(slot) {} +template +ReturnValue::ReturnValue(internal::Address* slot) : value_(slot) {} template template @@ -9536,7 +9524,7 @@ void ReturnValue::Set(const Persistent& handle) { if (V8_UNLIKELY(handle.IsEmpty())) { *value_ = GetDefaultValue(); } else { - *value_ = *reinterpret_cast(*handle); + *value_ = *reinterpret_cast(*handle); } } @@ -9547,7 +9535,7 @@ void ReturnValue::Set(const Global& handle) { if (V8_UNLIKELY(handle.IsEmpty())) { *value_ = GetDefaultValue(); } else { - *value_ = *reinterpret_cast(*handle); + *value_ = *reinterpret_cast(*handle); } } @@ -9558,7 +9546,7 @@ void ReturnValue::Set(const Local handle) { if (V8_UNLIKELY(handle.IsEmpty())) { *value_ = GetDefaultValue(); } else { - *value_ = *reinterpret_cast(*handle); + *value_ = *reinterpret_cast(*handle); } } @@ -9646,15 +9634,15 @@ void ReturnValue::Set(S* whatever) { TYPE_CHECK(S*, Primitive); } -template -internal::Object* ReturnValue::GetDefaultValue() { +template +internal::Address ReturnValue::GetDefaultValue() { // Default value is always the pointer below value_ on the stack. return value_[-1]; } template -FunctionCallbackInfo::FunctionCallbackInfo(internal::Object** implicit_args, - internal::Object** values, +FunctionCallbackInfo::FunctionCallbackInfo(internal::Address* implicit_args, + internal::Address* values, int length) : implicit_args_(implicit_args), values_(values), length_(length) {} @@ -9823,19 +9811,19 @@ AccessorSignature* AccessorSignature::Cast(Data* data) { } Local Object::GetInternalField(int index) { -#ifndef V8_ENABLE_CHECKS - typedef internal::Object O; +#if !defined(V8_ENABLE_CHECKS) && !defined(V8_COMPRESS_POINTERS) + typedef internal::Address A; typedef internal::Internals I; - O* obj = *reinterpret_cast(this); + A obj = *reinterpret_cast(this); // Fast path: If the object is a plain JSObject, which is the common case, we // know where to find the internal fields and can return the value directly. auto instance_type = I::GetInstanceType(obj); if (instance_type == I::kJSObjectType || instance_type == I::kJSApiObjectType || instance_type == I::kJSSpecialApiObjectType) { - int offset = I::kJSObjectHeaderSize + (internal::kApiPointerSize * index); - O* value = I::ReadField(obj, offset); - O** result = HandleScope::CreateHandle( + int offset = I::kJSObjectHeaderSize + (I::kEmbedderDataSlotSize * index); + A value = I::ReadField(obj, offset); + A* result = HandleScope::CreateHandle( reinterpret_cast(obj), value); return Local(reinterpret_cast(result)); } @@ -9845,17 +9833,17 @@ Local Object::GetInternalField(int index) { void* Object::GetAlignedPointerFromInternalField(int index) { -#ifndef V8_ENABLE_CHECKS - typedef internal::Object O; +#if !defined(V8_ENABLE_CHECKS) && !defined(V8_COMPRESS_POINTERS) + typedef internal::Address A; typedef internal::Internals I; - O* obj = *reinterpret_cast(this); + A obj = *reinterpret_cast(this); // Fast path: If the object is a plain JSObject, which is the common case, we // know where to find the internal fields and can return the value directly. auto instance_type = I::GetInstanceType(obj); if (V8_LIKELY(instance_type == I::kJSObjectType || instance_type == I::kJSApiObjectType || instance_type == I::kJSSpecialApiObjectType)) { - int offset = I::kJSObjectHeaderSize + (internal::kApiPointerSize * index); + int offset = I::kJSObjectHeaderSize + (I::kEmbedderDataSlotSize * index); return I::ReadField(obj, offset); } #endif @@ -9871,7 +9859,7 @@ String* String::Cast(v8::Value* value) { Local String::Empty(Isolate* isolate) { - typedef internal::Object* S; + typedef internal::Address S; typedef internal::Internals I; I::CheckInitialized(isolate); S* slot = I::GetRoot(isolate, I::kEmptyStringRootIndex); @@ -9880,9 +9868,9 @@ Local String::Empty(Isolate* isolate) { String::ExternalStringResource* String::GetExternalStringResource() const { - typedef internal::Object O; + typedef internal::Address A; typedef internal::Internals I; - O* obj = *reinterpret_cast(this); + A obj = *reinterpret_cast(this); ExternalStringResource* result; if (I::IsExternalTwoByteString(I::GetInstanceType(obj))) { @@ -9900,9 +9888,9 @@ String::ExternalStringResource* String::GetExternalStringResource() const { String::ExternalStringResourceBase* String::GetExternalStringResourceBase( String::Encoding* encoding_out) const { - typedef internal::Object O; + typedef internal::Address A; typedef internal::Internals I; - O* obj = *reinterpret_cast(this); + A obj = *reinterpret_cast(this); int type = I::GetInstanceType(obj) & I::kFullStringRepresentationMask; *encoding_out = static_cast(type & I::kStringEncodingMask); ExternalStringResourceBase* resource; @@ -9929,9 +9917,9 @@ bool Value::IsUndefined() const { } bool Value::QuickIsUndefined() const { - typedef internal::Object O; + typedef internal::Address A; typedef internal::Internals I; - O* obj = *reinterpret_cast(this); + A obj = *reinterpret_cast(this); if (!I::HasHeapObjectTag(obj)) return false; if (I::GetInstanceType(obj) != I::kOddballType) return false; return (I::GetOddballKind(obj) == I::kUndefinedOddballKind); @@ -9947,9 +9935,9 @@ bool Value::IsNull() const { } bool Value::QuickIsNull() const { - typedef internal::Object O; + typedef internal::Address A; typedef internal::Internals I; - O* obj = *reinterpret_cast(this); + A obj = *reinterpret_cast(this); if (!I::HasHeapObjectTag(obj)) return false; if (I::GetInstanceType(obj) != I::kOddballType) return false; return (I::GetOddballKind(obj) == I::kNullOddballKind); @@ -9964,9 +9952,9 @@ bool Value::IsNullOrUndefined() const { } bool Value::QuickIsNullOrUndefined() const { - typedef internal::Object O; + typedef internal::Address A; typedef internal::Internals I; - O* obj = *reinterpret_cast(this); + A obj = *reinterpret_cast(this); if (!I::HasHeapObjectTag(obj)) return false; if (I::GetInstanceType(obj) != I::kOddballType) return false; int kind = I::GetOddballKind(obj); @@ -9982,9 +9970,9 @@ bool Value::IsString() const { } bool Value::QuickIsString() const { - typedef internal::Object O; + typedef internal::Address A; typedef internal::Internals I; - O* obj = *reinterpret_cast(this); + A obj = *reinterpret_cast(this); if (!I::HasHeapObjectTag(obj)) return false; return (I::GetInstanceType(obj) < I::kFirstNonstringType); } @@ -10166,11 +10154,11 @@ Proxy* Proxy::Cast(v8::Value* value) { return static_cast(value); } -WasmCompiledModule* WasmCompiledModule::Cast(v8::Value* value) { +WasmModuleObject* WasmModuleObject::Cast(v8::Value* value) { #ifdef V8_ENABLE_CHECKS CheckCast(value); #endif - return static_cast(value); + return static_cast(value); } Promise::Resolver* Promise::Resolver::Cast(v8::Value* value) { @@ -10359,7 +10347,7 @@ bool PropertyCallbackInfo::ShouldThrowOnError() const { Local Undefined(Isolate* isolate) { - typedef internal::Object* S; + typedef internal::Address S; typedef internal::Internals I; I::CheckInitialized(isolate); S* slot = I::GetRoot(isolate, I::kUndefinedValueRootIndex); @@ -10368,7 +10356,7 @@ Local Undefined(Isolate* isolate) { Local Null(Isolate* isolate) { - typedef internal::Object* S; + typedef internal::Address S; typedef internal::Internals I; I::CheckInitialized(isolate); S* slot = I::GetRoot(isolate, I::kNullValueRootIndex); @@ -10377,7 +10365,7 @@ Local Null(Isolate* isolate) { Local True(Isolate* isolate) { - typedef internal::Object* S; + typedef internal::Address S; typedef internal::Internals I; I::CheckInitialized(isolate); S* slot = I::GetRoot(isolate, I::kTrueValueRootIndex); @@ -10386,7 +10374,7 @@ Local True(Isolate* isolate) { Local False(Isolate* isolate) { - typedef internal::Object* S; + typedef internal::Address S; typedef internal::Internals I; I::CheckInitialized(isolate); S* slot = I::GetRoot(isolate, I::kFalseValueRootIndex); @@ -10421,7 +10409,7 @@ MaybeLocal Isolate::GetDataFromSnapshotOnce(size_t index) { int64_t Isolate::AdjustAmountOfExternalAllocatedMemory( int64_t change_in_bytes) { typedef internal::Internals I; - const int64_t kMemoryReducerActivationLimit = 32 * 1024 * 1024; + constexpr int64_t kMemoryReducerActivationLimit = 32 * 1024 * 1024; int64_t* external_memory = reinterpret_cast( reinterpret_cast(this) + I::kExternalMemoryOffset); int64_t* external_memory_limit = reinterpret_cast( @@ -10429,15 +10417,14 @@ int64_t Isolate::AdjustAmountOfExternalAllocatedMemory( int64_t* external_memory_at_last_mc = reinterpret_cast(reinterpret_cast(this) + I::kExternalMemoryAtLastMarkCompactOffset); - const int64_t amount = *external_memory + change_in_bytes; + const int64_t amount = *external_memory + change_in_bytes; *external_memory = amount; int64_t allocation_diff_since_last_mc = - *external_memory_at_last_mc - *external_memory; - allocation_diff_since_last_mc = allocation_diff_since_last_mc < 0 - ? -allocation_diff_since_last_mc - : allocation_diff_since_last_mc; + *external_memory - *external_memory_at_last_mc; + // Only check memory pressure and potentially trigger GC if the amount of + // external memory increased. if (allocation_diff_since_last_mc > kMemoryReducerActivationLimit) { CheckMemoryPressure(); } @@ -10453,12 +10440,12 @@ int64_t Isolate::AdjustAmountOfExternalAllocatedMemory( } Local Context::GetEmbedderData(int index) { -#ifndef V8_ENABLE_CHECKS - typedef internal::Object O; +#if !defined(V8_ENABLE_CHECKS) && !defined(V8_COMPRESS_POINTERS) + typedef internal::Address A; typedef internal::Internals I; auto* context = *reinterpret_cast(this); - O** result = - HandleScope::CreateHandle(context, I::ReadEmbedderData(this, index)); + A* result = + HandleScope::CreateHandle(context, I::ReadEmbedderData(this, index)); return Local(reinterpret_cast(result)); #else return SlowGetEmbedderData(index); @@ -10467,7 +10454,7 @@ Local Context::GetEmbedderData(int index) { void* Context::GetAlignedPointerFromEmbedderData(int index) { -#ifndef V8_ENABLE_CHECKS +#if !defined(V8_ENABLE_CHECKS) && !defined(V8_COMPRESS_POINTERS) typedef internal::Internals I; return I::ReadEmbedderData(this, index); #else @@ -10485,14 +10472,14 @@ MaybeLocal Context::GetDataFromSnapshotOnce(size_t index) { template size_t SnapshotCreator::AddData(Local context, Local object) { T* object_ptr = *object; - internal::Object** p = reinterpret_cast(object_ptr); + internal::Address* p = reinterpret_cast(object_ptr); return AddData(context, *p); } template size_t SnapshotCreator::AddData(Local object) { T* object_ptr = *object; - internal::Object** p = reinterpret_cast(object_ptr); + internal::Address* p = reinterpret_cast(object_ptr); return AddData(*p); } diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h index 93c4629825b..1841bdbcae8 100644 --- a/deps/v8/include/v8config.h +++ b/deps/v8/include/v8config.h @@ -236,6 +236,10 @@ # define V8_HAS_CXX11_ALIGNAS (__has_feature(cxx_alignas)) +# if __cplusplus >= 201402L +# define V8_CAN_HAVE_DCHECK_IN_CONSTEXPR 1 +# endif + #elif defined(__GNUC__) # define V8_CC_GNU 1 diff --git a/deps/v8/infra/config/cq.cfg b/deps/v8/infra/config/cq.cfg index 53ea0cdd441..cdd6cd3fa06 100644 --- a/deps/v8/infra/config/cq.cfg +++ b/deps/v8/infra/config/cq.cfg @@ -42,10 +42,13 @@ verifiers { name: "v8_linux64_rel_ng_triggered" triggered_by: "v8_linux64_rel_ng" } + # TODO(machenbach): Figure out if bot should be removed or if + # functionality should be revived. builders { name: "v8_linux64_sanitizer_coverage_rel" - experiment_percentage: 100 + experiment_percentage: 10 } + builders { name: "v8_linux64_shared_compile_rel" } builders { name: "v8_linux64_verify_csa_rel_ng" } builders { name: "v8_linux64_verify_csa_rel_ng_triggered" @@ -77,7 +80,6 @@ verifiers { name: "v8_linux_rel_ng_triggered" triggered_by: "v8_linux_rel_ng" } - builders { name: "v8_linux_shared_compile_rel" } builders { name: "v8_linux_verify_csa_rel_ng" } builders { name: "v8_linux_verify_csa_rel_ng_triggered" @@ -89,7 +91,10 @@ verifiers { triggered_by: "v8_mac64_rel_ng" } builders { name: "v8_node_linux64_rel" } - builders { name: "v8_presubmit" } + builders { + name: "v8_presubmit" + disable_reuse: true + } builders { name: "v8_win64_msvc_compile_rel" } builders { name: "v8_win64_rel_ng" } builders { @@ -107,21 +112,43 @@ verifiers { name: "v8_win_rel_ng_triggered" triggered_by: "v8_win_rel_ng" } + builders { + name: "v8_linux_noi18n_rel_ng" + path_regexp: ".*intl.*" + path_regexp: ".*test262.*" + } } - # TODO(machenbach): Remove after testing in practice and migrate to - # PRESUBMIT.py scripts. + buckets { name: "luci.chromium.try" builders { - name: "cast_shell_android" - experiment_percentage: 20 + name: "linux_chromium_rel_ng" + path_regexp: "include/.+\\.h" + path_regexp: "src/api\\.cc" } builders { - name: "cast_shell_linux" + name: "linux_chromium_headless_rel" + path_regexp: "src/inspector/.+" + path_regexp: "test/inspector/.+" + } + builders { + name: "linux-blink-rel" + path_regexp: "src/inspector/.+" + path_regexp: "test/inspector/.+" + } + # TODO(machenbach): Uncomment path_regexp after testing, as currently, + # path_regexp can not be combined with experiment_percentage. See more + # details at crbug.com/v8/8058. + builders { + name: "cast_shell_android" + #path_regexp: "include/.+\\.h" + #path_regexp: "src/api\\.cc" experiment_percentage: 20 } builders { - name: "linux-chromeos-rel" + name: "cast_shell_linux" + #path_regexp: "include/.+\\.h" + #path_regexp: "src/api\\.cc" experiment_percentage: 20 } } diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index 124524c552f..9b9b01581af 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -62,6 +62,7 @@ 'V8 Linux64 - custom snapshot - debug builder': 'debug_x64_custom', 'V8 Linux64 - internal snapshot': 'release_x64_internal', 'V8 Linux64 - debug - header includes': 'debug_x64_header_includes', + 'V8 Linux64 - shared': 'release_x64_shared_verify_heap', 'V8 Linux64 - verify csa': 'release_x64_verify_csa', # Jumbo. 'V8 Linux64 Jumbo': 'release_x64_jumbo', @@ -91,8 +92,9 @@ 'V8 Linux gcc 4.8': 'release_x86_gcc', 'V8 Linux64 gcc 4.8 - debug': 'debug_x64_gcc', # FYI. - 'V8 Linux - embedded builtins': 'release_x86_embedded_builtins', - 'V8 Linux - embedded builtins - debug': 'debug_x86_embedded_builtins', + 'V8 Linux64 - pointer compression': 'release_x64_pointer_compression', + 'V8 Linux - noembed': 'release_x86_noembed', + 'V8 Linux - noembed - debug': 'debug_x86_noembed', 'V8 Fuchsia': 'release_x64_fuchsia', 'V8 Fuchsia - debug': 'debug_x64_fuchsia', 'V8 Linux64 - cfi': 'release_x64_cfi', @@ -120,8 +122,6 @@ 'V8 Clusterfuzz Linux64 - release builder': 'release_x64_correctness_fuzzer', 'V8 Clusterfuzz Linux64 - debug builder': 'debug_x64', - 'V8 Clusterfuzz Linux64 - nosnap release builder': 'release_x64_no_snap', - 'V8 Clusterfuzz Linux64 - nosnap debug builder': 'debug_x64_no_snap', 'V8 Clusterfuzz Linux64 ASAN no inline - release builder': 'release_x64_asan_symbolized_edge_verify_heap', 'V8 Clusterfuzz Linux64 ASAN - debug builder': 'debug_x64_asan_edge', @@ -146,6 +146,8 @@ 'V8 Android Arm - builder': 'release_android_arm', 'V8 Linux - arm - sim': 'release_simulate_arm', 'V8 Linux - arm - sim - debug': 'debug_simulate_arm', + 'V8 Linux - arm - sim - lite': 'release_simulate_arm_lite', + 'V8 Linux - arm - sim - lite - debug': 'debug_simulate_arm_lite', # Arm64. 'V8 Android Arm64 - builder': 'release_android_arm64', 'V8 Android Arm64 - debug builder': 'debug_android_arm64', @@ -189,7 +191,7 @@ 'v8_android_arm64_compile_dbg': 'debug_android_arm64', 'v8_android_arm64_n5x_rel_ng': 'release_android_arm64', 'v8_fuchsia_rel_ng': 'release_x64_fuchsia_trybot', - 'v8_linux_embedded_builtins_rel_ng': 'release_x86_embedded_builtins_trybot', + 'v8_linux_noembed_rel_ng': 'release_x86_noembed_trybot', 'v8_linux_rel_ng': 'release_x86_gcmole_trybot', 'v8_linux_optional_rel_ng': 'release_x86_trybot', 'v8_linux_verify_csa_rel_ng': 'release_x86_verify_csa', @@ -207,7 +209,9 @@ 'v8_linux64_gcc_compile_dbg': 'debug_x64_gcc', 'v8_linux64_header_includes_dbg': 'debug_x64_header_includes', 'v8_linux64_fyi_rel_ng': 'release_x64_test_features_trybot', + 'v8_linux64_pointer_compression_rel_ng': 'release_x64_pointer_compression', 'v8_linux64_rel_ng': 'release_x64_test_features_trybot', + 'v8_linux64_shared_compile_rel': 'release_x64_shared_verify_heap', 'v8_linux64_verify_csa_rel_ng': 'release_x64_verify_csa', 'v8_linux64_asan_rel_ng': 'release_x64_asan_minimal_symbols', 'v8_linux64_cfi_rel_ng': 'release_x64_cfi', @@ -239,6 +243,7 @@ 'v8_mac64_asan_rel': 'release_x64_asan_no_lsan', 'v8_mips_compile_rel': 'release_mips_no_snap_no_i18n', 'v8_linux_arm_rel_ng': 'release_simulate_arm_trybot', + 'v8_linux_arm_lite_rel_ng': 'release_simulate_arm_lite_trybot', 'v8_linux_arm_dbg': 'debug_simulate_arm', 'v8_linux_arm_armv8a_rel': 'release_simulate_arm_trybot', 'v8_linux_arm_armv8a_dbg': 'debug_simulate_arm', @@ -330,6 +335,8 @@ 'debug_bot', 'simulate_arm'], 'debug_simulate_arm_asan_edge': [ 'debug_bot', 'simulate_arm', 'asan', 'edge'], + 'debug_simulate_arm_lite': [ + 'debug_bot', 'simulate_arm', 'v8_enable_lite_mode'], 'debug_simulate_arm64': [ 'debug_bot', 'simulate_arm64'], 'debug_simulate_arm64_asan_edge': [ @@ -341,8 +348,12 @@ # Release configs for simulators. 'release_simulate_arm': [ 'release_bot', 'simulate_arm'], + 'release_simulate_arm_lite': [ + 'release_bot', 'simulate_arm', 'v8_enable_lite_mode'], 'release_simulate_arm_trybot': [ 'release_trybot', 'simulate_arm'], + 'release_simulate_arm_lite_trybot': [ + 'release_trybot', 'simulate_arm', 'v8_enable_lite_mode'], 'release_simulate_arm64': [ 'release_bot', 'simulate_arm64'], 'release_simulate_arm64_msan': [ @@ -427,8 +438,9 @@ 'release_trybot', 'x64', 'jumbo_limited'], 'release_x64_minimal_symbols': [ 'release_bot', 'x64', 'minimal_symbols'], - 'release_x64_no_snap': [ - 'release_bot', 'x64', 'v8_snapshot_none'], + 'release_x64_pointer_compression': [ + 'release_bot', 'x64', 'dcheck_always_on', 'v8_enable_slow_dchecks', + 'v8_enable_pointer_compression'], 'release_x64_trybot': [ 'release_trybot', 'x64'], 'release_x64_test_features_trybot': [ @@ -445,6 +457,8 @@ 'release_bot', 'x64', 'edge', 'ubsan_vptr_recover'], 'release_x64_ubsan_vptr_minimal_symbols': [ 'release_bot', 'x64', 'ubsan_vptr', 'minimal_symbols'], + 'release_x64_shared_verify_heap': [ + 'release_bot', 'x64', 'shared', 'v8_verify_heap'], 'release_x64_verify_csa': [ 'release_bot', 'x64', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_verify_csa'], @@ -471,17 +485,14 @@ 'debug_bot', 'x64', 'jumbo_limited'], 'debug_x64_minimal_symbols': [ 'debug_bot', 'x64', 'minimal_symbols'], - 'debug_x64_no_snap': [ - 'debug_bot', 'x64', 'v8_snapshot_none'], 'debug_x64_trybot': [ 'debug_trybot', 'x64'], # Debug configs for x86. 'debug_x86': [ 'debug_bot', 'x86'], - 'debug_x86_embedded_builtins': [ - 'debug_bot', 'x86', 'v8_enable_embedded_builtins', - 'v8_no_untrusted_code_mitigations'], + 'debug_x86_noembed': [ + 'debug_bot', 'x86', 'v8_no_enable_embedded_builtins'], 'debug_x86_minimal_symbols': [ 'debug_bot', 'x86', 'minimal_symbols'], 'debug_x86_no_i18n': [ @@ -501,12 +512,10 @@ # Release configs for x86. 'release_x86': [ 'release_bot', 'x86'], - 'release_x86_embedded_builtins': [ - 'release_bot', 'x86', 'v8_enable_embedded_builtins', - 'v8_no_untrusted_code_mitigations'], - 'release_x86_embedded_builtins_trybot': [ - 'release_trybot', 'x86', 'v8_enable_embedded_builtins', - 'v8_no_untrusted_code_mitigations'], + 'release_x86_noembed': [ + 'release_bot', 'x86', 'v8_no_enable_embedded_builtins'], + 'release_x86_noembed_trybot': [ + 'release_trybot', 'x86', 'v8_no_enable_embedded_builtins'], 'release_x86_gcc': [ 'release_bot', 'x86', 'gcc'], 'release_x86_gcc_minimal_symbols': [ @@ -656,7 +665,10 @@ }, 'mips_bundled_toolchain': { - 'gn_args': 'custom_toolchain="//tools/toolchain:mips-bundled"', + 'gn_args': 'custom_toolchain="tools/toolchain:mips-bundled" ' + 'ldso_path="tools/mips_toolchain/sysroot/usr/lib/ld.so.1" ' + 'gcc_target_rpath="tools/mips_toolchain/sysroot/usr/lib:' + 'tools/mips_toolchain/mips-mti-linux-gnu/lib:\$ORIGIN/."', }, 'msan': { @@ -769,14 +781,22 @@ 'gn_args': 'v8_correctness_fuzzer=true v8_multi_arch_build=true', }, - 'v8_enable_embedded_builtins': { - 'gn_args': 'v8_enable_embedded_builtins=true', + 'v8_no_enable_embedded_builtins': { + 'gn_args': 'v8_enable_embedded_builtins=false', + }, + + 'v8_enable_lite_mode': { + 'gn_args': 'v8_enable_lite_mode=true', }, 'v8_enable_slow_dchecks': { 'gn_args': 'v8_enable_slow_dchecks=true', }, + 'v8_enable_pointer_compression': { + 'gn_args': 'v8_enable_pointer_compression=true', + }, + 'v8_enable_test_features': { 'gn_args': 'v8_enable_test_features=true', }, @@ -818,10 +838,6 @@ 'gn_args': 'v8_use_snapshot=false', }, - 'v8_no_untrusted_code_mitigations': { - 'gn_args': 'v8_untrusted_code_mitigations=false', - }, - 'v8_verify_heap': { 'gn_args': 'v8_enable_verify_heap=true', }, diff --git a/deps/v8/infra/testing/builders.pyl b/deps/v8/infra/testing/builders.pyl index 31aef9c3214..3e2250c7a95 100644 --- a/deps/v8/infra/testing/builders.pyl +++ b/deps/v8/infra/testing/builders.pyl @@ -127,7 +127,7 @@ {'name': 'mozilla', 'variant': 'extra'}, {'name': 'optimize_for_size'}, {'name': 'test262_variants', 'shards': 4}, - {'name': 'test262_variants', 'variant': 'extra', 'shards': 2}, + {'name': 'test262_variants', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'suffix': 'isolates', 'test_args': ['--isolates'], 'shards': 2}, {'name': 'v8testing', 'variant': 'extra'}, @@ -270,6 +270,11 @@ {'name': 'v8testing', 'shards': 5}, ], }, + 'v8_linux64_pointer_compression_rel_ng_triggered': { + 'tests': [ + {'name': 'v8testing', 'shards': 3}, + ], + }, 'v8_linux64_rel_ng_triggered': { 'swarming_dimensions' : { 'cpu': 'x86-64-avx2', @@ -280,7 +285,7 @@ {'name': 'mjsunit_sp_frame_access'}, {'name': 'optimize_for_size'}, {'name': 'test262_variants', 'shards': 4}, - {'name': 'test262_variants', 'variant': 'extra', 'shards': 2}, + {'name': 'test262_variants', 'variant': 'extra', 'shards': 3}, {'name': 'v8initializers'}, {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra'}, @@ -299,6 +304,11 @@ {'name': 'v8testing', 'shards': 2}, ], }, + 'v8_linux64_sanitizer_coverage_rel': { + 'tests': [ + {'name': 'v8testing', 'shards': 3}, + ], + }, 'v8_linux64_tsan_rel': { 'tests': [ {'name': 'benchmarks'}, @@ -329,10 +339,10 @@ 'v8_linux_arm64_dbg': { 'tests': [ {'name': 'mjsunit_sp_frame_access'}, - {'name': 'mozilla'}, - {'name': 'test262'}, - {'name': 'v8testing', 'shards': 7}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, + {'name': 'mozilla', 'shards': 2}, + {'name': 'test262', 'shards': 2}, + {'name': 'v8testing', 'shards': 10}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 6}, ], }, 'v8_linux_arm64_gc_stress_dbg': { @@ -481,7 +491,7 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262'}, + {'name': 'test262', 'shards': 2}, {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra'}, ], @@ -563,8 +573,8 @@ {'name': 'mozilla', 'variant': 'extra'}, {'name': 'optimize_for_size'}, {'name': 'test262_variants', 'shards': 6}, - {'name': 'test262_variants', 'variant': 'code_serializer', 'shards': 1}, - {'name': 'test262_variants', 'variant': 'extra', 'shards': 2}, + {'name': 'test262_variants', 'variant': 'code_serializer', 'shards': 2}, + {'name': 'test262_variants', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'shards': 3}, { 'name': 'v8testing', @@ -620,8 +630,13 @@ ], }, 'V8 Linux - full debug': { + 'swarming_task_attrs': { + 'expiration': 14400, + 'hard_timeout': 3600, + 'priority': 35, + }, 'tests': [ - {'name': 'v8testing', 'variant': 'default'}, + {'name': 'v8testing', 'variant': 'default', 'shards': 3}, ], }, 'V8 Linux - gc stress': { @@ -664,7 +679,7 @@ }, 'tests': [ {'name': 'mozilla', 'variant': 'default'}, - {'name': 'test262', 'variant': 'default', 'shards': 2}, + {'name': 'test262', 'variant': 'default', 'shards': 3}, {'name': 'v8testing', 'variant': 'default', 'shards': 3}, ], }, @@ -763,7 +778,7 @@ {'name': 'mozilla', 'variant': 'extra'}, {'name': 'optimize_for_size'}, {'name': 'test262_variants', 'shards': 5}, - {'name': 'test262_variants', 'variant': 'extra', 'shards': 2}, + {'name': 'test262_variants', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra'}, {'name': 'v8testing', 'variant': 'minor_mc', 'shards': 1}, @@ -815,6 +830,18 @@ {'name': 'v8testing'}, ], }, + 'V8 Linux64 - pointer compression': { + 'tests': [ + {'name': 'v8testing', 'shards': 2}, + ], + }, + 'V8 Linux64 - shared': { + 'tests': [ + {'name': 'mozilla'}, + {'name': 'test262'}, + {'name': 'v8testing'}, + ], + }, 'V8 Linux64 - verify csa': { 'tests': [ {'name': 'v8testing'}, @@ -876,7 +903,7 @@ }, 'V8 Linux64 TSAN - isolates': { 'tests': [ - {'name': 'v8testing', 'test_args': ['--isolates'], 'shards': 5}, + {'name': 'v8testing', 'test_args': ['--isolates'], 'shards': 7}, ], }, 'V8 Linux64 UBSan': { @@ -897,7 +924,7 @@ 'tests': [ {'name': 'mozilla'}, {'name': 'test262'}, - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra'}, ], }, @@ -908,7 +935,7 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262'}, + {'name': 'test262', 'shards': 2}, {'name': 'v8testing', 'shards': 3}, {'name': 'v8testing', 'variant': 'extra'}, ], @@ -1037,7 +1064,9 @@ 'cores': '8', 'os': 'Ubuntu-16.04', 'cpu': 'armv7l-32-ODROID-XU4', - } + }, + # Less parallelism to prevent OOMs in benchmarks. + 'test_args': ['-j2'], }, { 'name': 'optimize_for_size', @@ -1179,7 +1208,7 @@ {'name': 'mjsunit_sp_frame_access'}, {'name': 'mozilla'}, {'name': 'test262'}, - {'name': 'v8testing', 'shards': 7}, + {'name': 'v8testing', 'shards': 8}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, # Armv8-a. { @@ -1196,7 +1225,7 @@ 'name': 'v8testing', 'suffix': 'armv8-a', 'test_args': ['--extra-flags', '--enable-armv8'], - 'shards': 7 + 'shards': 8 }, # Novfp3. { @@ -1216,7 +1245,7 @@ 'suffix': 'novfp3', 'variant': 'default', 'test_args': ['--novfp3'], - 'shards': 7 + 'shards': 8 }, ], }, @@ -1240,10 +1269,14 @@ ], }, 'V8 Linux - arm64 - sim - debug': { + # TODO(machenbach): Remove longer timeout when this builder scales better. + 'swarming_task_attrs': { + 'hard_timeout': 3600, + }, 'tests': [ {'name': 'mjsunit_sp_frame_access'}, - {'name': 'mozilla'}, - {'name': 'test262'}, + {'name': 'mozilla', 'shards': 2}, + {'name': 'test262', 'shards': 2}, {'name': 'v8testing', 'shards': 10}, {'name': 'v8testing', 'variant': 'extra', 'shards': 6}, ], @@ -1463,44 +1496,8 @@ }, ], }, - 'V8 NumFuzz - nosnap': { - 'swarming_task_attrs': { - 'expiration': 14400, - 'hard_timeout': 3600, - 'priority': 35, - }, - 'tests': [ - { - 'name': 'numfuzz', - 'suffix': 'interrupt-budget', - 'test_args': [ - '--total-timeout-sec=2100', - '--stress-interrupt-budget=10', - '--stress-deopt=5', - ] - }, - ], - }, - 'V8 NumFuzz - nosnap debug': { - 'swarming_task_attrs': { - 'expiration': 14400, - 'hard_timeout': 3600, - 'priority': 35, - }, - 'tests': [ - { - 'name': 'numfuzz', - 'suffix': 'interrupt-budget', - 'test_args': [ - '--total-timeout-sec=2100', - '--stress-interrupt-budget=10', - '--stress-deopt=5', - ] - }, - ], - }, ############################################################################## - # Clusterfuzz. + # Branches. 'V8 Linux - beta branch': { 'swarming_task_attrs': { 'expiration': 14400, diff --git a/deps/v8/snapshot_toolchain.gni b/deps/v8/snapshot_toolchain.gni index 756413e5ce4..f1c69094394 100644 --- a/deps/v8/snapshot_toolchain.gni +++ b/deps/v8/snapshot_toolchain.gni @@ -83,7 +83,13 @@ if (v8_snapshot_toolchain == "") { if (v8_current_cpu == "x64" || v8_current_cpu == "x86") { _cpus = v8_current_cpu } else if (v8_current_cpu == "arm64" || v8_current_cpu == "mips64el") { - _cpus = "x64_v8_${v8_current_cpu}" + if (is_win && v8_current_cpu == "arm64") { + # set _cpus to blank for Windows ARM64 so host_toolchain could be + # selected as snapshot toolchain later. + _cpus = "" + } else { + _cpus = "x64_v8_${v8_current_cpu}" + } } else if (v8_current_cpu == "arm" || v8_current_cpu == "mipsel") { _cpus = "x86_v8_${v8_current_cpu}" } else { @@ -94,6 +100,9 @@ if (v8_snapshot_toolchain == "") { if (_cpus != "") { v8_snapshot_toolchain = "//build/toolchain/${host_os}:${_clang}${_cpus}" + } else if (is_win && v8_current_cpu == "arm64") { + # cross compile Windows arm64 with Windows x64 toolchain. + v8_snapshot_toolchain = host_toolchain } } } diff --git a/deps/v8/src/DEPS b/deps/v8/src/DEPS index 99873803c99..f8190e8fd9d 100644 --- a/deps/v8/src/DEPS +++ b/deps/v8/src/DEPS @@ -27,6 +27,8 @@ include_rules = [ "+src/interpreter/interpreter-generator.h", "+src/interpreter/setup-interpreter.h", "-src/trap-handler", + "+src/trap-handler/handler-inside-posix.h", + "+src/trap-handler/handler-inside-win.h", "+src/trap-handler/trap-handler.h", "+testing/gtest/include/gtest/gtest_prod.h", "-src/libplatform", diff --git a/deps/v8/src/OWNERS b/deps/v8/src/OWNERS index 5f6fedcd362..abad5274c88 100644 --- a/deps/v8/src/OWNERS +++ b/deps/v8/src/OWNERS @@ -2,7 +2,6 @@ per-file intl.*=cira@chromium.org per-file intl.*=mnita@google.com per-file intl.*=jshin@chromium.org per-file typing-asm.*=aseemgarg@chromium.org -per-file typing-asm.*=bradnelson@chromium.org per-file objects-body-descriptors*=hpayer@chromium.org per-file objects-body-descriptors*=mlippautz@chromium.org per-file objects-body-descriptors*=ulan@chromium.org diff --git a/deps/v8/src/PRESUBMIT.py b/deps/v8/src/PRESUBMIT.py deleted file mode 100644 index b97eefaeb06..00000000000 --- a/deps/v8/src/PRESUBMIT.py +++ /dev/null @@ -1,29 +0,0 @@ -# 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. - -"""Presubmit script for //v8/src - -See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts -for more details about the presubmit API built into depot_tools. -""" - -import os - - -def PostUploadHook(cl, change, output_api): - """git cl upload will call this hook after the issue is created/modified. - - This hook adds extra try bots to the CL description in order to run layout - tests in addition to CQ try bots. - """ - def is_api_cc(f): - return 'api.cc' == os.path.split(f.LocalPath())[1] - if not change.AffectedFiles(file_filter=is_api_cc): - return [] - return output_api.EnsureCQIncludeTrybotsAreAdded( - cl, - [ - 'luci.chromium.try:linux_chromium_rel_ng' - ], - 'Automatically added layout test trybots to run tests on CQ.') diff --git a/deps/v8/src/accessors.cc b/deps/v8/src/accessors.cc index 226178394db..b62edb489c6 100644 --- a/deps/v8/src/accessors.cc +++ b/deps/v8/src/accessors.cc @@ -6,6 +6,7 @@ #include "src/api-inl.h" #include "src/contexts.h" +#include "src/counters.h" #include "src/deoptimizer.h" #include "src/execution.h" #include "src/frames-inl.h" @@ -156,7 +157,7 @@ void Accessors::ArrayLengthGetter( RuntimeCallCounterId::kArrayLengthGetter); DisallowHeapAllocation no_allocation; HandleScope scope(isolate); - JSArray* holder = JSArray::cast(*Utils::OpenHandle(*info.Holder())); + JSArray holder = JSArray::cast(*Utils::OpenHandle(*info.Holder())); Object* result = holder->length(); info.GetReturnValue().Set(Utils::ToLocal(Handle(result, isolate))); } @@ -235,7 +236,7 @@ void Accessors::ModuleNamespaceEntryGetter( v8::Local name, const v8::PropertyCallbackInfo& info) { i::Isolate* isolate = reinterpret_cast(info.GetIsolate()); HandleScope scope(isolate); - JSModuleNamespace* holder = + JSModuleNamespace holder = JSModuleNamespace::cast(*Utils::OpenHandle(*info.Holder())); Handle result; if (!holder @@ -560,13 +561,11 @@ Handle Accessors::MakeFunctionArgumentsInfo(Isolate* isolate) { // Accessors::FunctionCaller // - -static inline bool AllowAccessToFunction(Context* current_context, - JSFunction* function) { +static inline bool AllowAccessToFunction(Context current_context, + JSFunction function) { return current_context->HasSameSecurityTokenAs(function->context()); } - class FrameFunctionIterator { public: explicit FrameFunctionIterator(Isolate* isolate) @@ -795,7 +794,7 @@ MaybeHandle ClearInternalStackTrace(Isolate* isolate, Handle error) { RETURN_ON_EXCEPTION( isolate, - JSReceiver::SetProperty( + Object::SetProperty( isolate, error, isolate->factory()->stack_trace_symbol(), isolate->factory()->undefined_value(), LanguageMode::kStrict), JSReceiver); diff --git a/deps/v8/src/address-map.cc b/deps/v8/src/address-map.cc index ad71a25a99d..d8a80dd22e6 100644 --- a/deps/v8/src/address-map.cc +++ b/deps/v8/src/address-map.cc @@ -14,15 +14,15 @@ RootIndexMap::RootIndexMap(Isolate* isolate) { map_ = isolate->root_index_map(); if (map_ != nullptr) return; map_ = new HeapObjectToIndexHashMap(); - for (RootIndex root_index = RootIndex::kFirstStrongRoot; - root_index <= RootIndex::kLastStrongRoot; ++root_index) { - Object* root = isolate->heap()->root(root_index); + for (RootIndex root_index = RootIndex::kFirstStrongOrReadOnlyRoot; + root_index <= RootIndex::kLastStrongOrReadOnlyRoot; ++root_index) { + Object* root = isolate->root(root_index); if (!root->IsHeapObject()) continue; // Omit root entries that can be written after initialization. They must // not be referenced through the root list in the snapshot. // Since we map the raw address of an root item to its root list index, the // raw address must be constant, i.e. the object must be immovable. - if (isolate->heap()->RootCanBeTreatedAsConstant(root_index)) { + if (RootsTable::IsImmortalImmovable(root_index)) { HeapObject* heap_object = HeapObject::cast(root); Maybe maybe_index = map_->Get(heap_object); uint32_t index = static_cast(root_index); @@ -32,11 +32,6 @@ RootIndexMap::RootIndexMap(Isolate* isolate) { } else { map_->Set(heap_object, index); } - } else { - // Immortal immovable root objects are constant and allocated on the first - // page of old space. Non-constant roots cannot be immortal immovable. The - // root index map contains all immortal immmovable root objects. - CHECK(!Heap::RootIsImmortalImmovable(root_index)); } } isolate->set_root_index_map(map_); diff --git a/deps/v8/src/address-map.h b/deps/v8/src/address-map.h index f7a1cc2ad9a..0c150403c39 100644 --- a/deps/v8/src/address-map.h +++ b/deps/v8/src/address-map.h @@ -57,7 +57,7 @@ class RootIndexMap { explicit RootIndexMap(Isolate* isolate); // Returns true on successful lookup and sets *|out_root_list|. - bool Lookup(HeapObject* obj, RootIndex* out_root_list) { + bool Lookup(HeapObject* obj, RootIndex* out_root_list) const { Maybe maybe_index = map_->Get(obj); if (maybe_index.IsJust()) { *out_root_list = static_cast(maybe_index.FromJust()); @@ -65,6 +65,9 @@ class RootIndexMap { } return false; } + bool Lookup(Address obj, RootIndex* out_root_list) { + return Lookup(reinterpret_cast(obj), out_root_list); + } private: HeapObjectToIndexHashMap* map_; diff --git a/deps/v8/src/allocation-site-scopes-inl.h b/deps/v8/src/allocation-site-scopes-inl.h index e114bb3885c..67378adf849 100644 --- a/deps/v8/src/allocation-site-scopes-inl.h +++ b/deps/v8/src/allocation-site-scopes-inl.h @@ -12,6 +12,13 @@ namespace v8 { namespace internal { +void AllocationSiteContext::InitializeTraversal(Handle site) { + top_ = site; + // {current_} is updated in place to not create unnecessary Handles, hence + // we initially need a separate handle. + current_ = Handle::New(*top_, isolate()); +} + Handle AllocationSiteUsageContext::EnterNewScope() { if (top().is_null()) { InitializeTraversal(top_site_); diff --git a/deps/v8/src/allocation-site-scopes.h b/deps/v8/src/allocation-site-scopes.h index 0a729948db2..4ae065ad303 100644 --- a/deps/v8/src/allocation-site-scopes.h +++ b/deps/v8/src/allocation-site-scopes.h @@ -7,6 +7,7 @@ #include "src/handles.h" #include "src/objects.h" +#include "src/objects/allocation-site.h" #include "src/objects/map.h" namespace v8 { @@ -29,15 +30,10 @@ class AllocationSiteContext { protected: void update_current_site(AllocationSite* site) { - *(current_.location()) = site; + *(current_.location()) = site->ptr(); } - void InitializeTraversal(Handle site) { - top_ = site; - // {current_} is updated in place to not create unnecessary Handles, hence - // we initially need a separate handle. - current_ = Handle::New(*top_, isolate()); - } + inline void InitializeTraversal(Handle site); private: Isolate* isolate_; diff --git a/deps/v8/src/allocation.cc b/deps/v8/src/allocation.cc index 6327a9c965a..9d8ee2a1289 100644 --- a/deps/v8/src/allocation.cc +++ b/deps/v8/src/allocation.cc @@ -11,8 +11,9 @@ #include "src/base/lsan-page-allocator.h" #include "src/base/page-allocator.h" #include "src/base/platform/platform.h" -#include "src/utils.h" +#include "src/memcopy.h" #include "src/v8.h" +#include "src/vector.h" #if V8_LIBC_BIONIC #include // NOLINT @@ -45,13 +46,16 @@ struct InitializePageAllocator { v8::PageAllocator* page_allocator = V8::GetCurrentPlatform()->GetPageAllocator(); if (page_allocator == nullptr) { - static v8::base::PageAllocator default_allocator; - page_allocator = &default_allocator; + // On the heap and leaked so that no destructor needs to run at exit time. + static auto* default_allocator = new v8::base::PageAllocator; + page_allocator = default_allocator; } #if defined(LEAK_SANITIZER) { - static v8::base::LsanPageAllocator lsan_allocator(page_allocator); - page_allocator = &lsan_allocator; + // On the heap and leaked so that no destructor needs to run at exit time. + static auto* lsan_allocator = + new v8::base::LsanPageAllocator(page_allocator); + page_allocator = lsan_allocator; } #endif *page_allocator_ptr = page_allocator; @@ -71,6 +75,13 @@ v8::PageAllocator* GetPlatformPageAllocator() { return page_allocator.Get(); } +v8::PageAllocator* SetPlatformPageAllocatorForTesting( + v8::PageAllocator* new_page_allocator) { + v8::PageAllocator* old_page_allocator = GetPlatformPageAllocator(); + *page_allocator.Pointer() = new_page_allocator; + return old_page_allocator; +} + void* Malloced::New(size_t size) { void* result = AllocWithRetry(size); if (result == nullptr) { @@ -155,7 +166,7 @@ void* AllocatePages(v8::PageAllocator* page_allocator, void* address, PageAllocator::Permission access) { DCHECK_NOT_NULL(page_allocator); DCHECK_EQ(address, AlignedAddress(address, alignment)); - DCHECK_EQ(0UL, size & (page_allocator->AllocatePageSize() - 1)); + DCHECK(IsAligned(size, page_allocator->AllocatePageSize())); void* result = nullptr; for (int i = 0; i < kAllocationTries; ++i) { result = page_allocator->AllocatePages(address, size, alignment, access); @@ -169,7 +180,7 @@ void* AllocatePages(v8::PageAllocator* page_allocator, void* address, bool FreePages(v8::PageAllocator* page_allocator, void* address, const size_t size) { DCHECK_NOT_NULL(page_allocator); - DCHECK_EQ(0UL, size & (page_allocator->AllocatePageSize() - 1)); + DCHECK(IsAligned(size, page_allocator->AllocatePageSize())); return page_allocator->FreePages(address, size); } @@ -177,6 +188,7 @@ bool ReleasePages(v8::PageAllocator* page_allocator, void* address, size_t size, size_t new_size) { DCHECK_NOT_NULL(page_allocator); DCHECK_LT(new_size, size); + DCHECK(IsAligned(new_size, page_allocator->CommitPageSize())); return page_allocator->ReleasePages(address, size, new_size); } @@ -209,12 +221,14 @@ VirtualMemory::VirtualMemory(v8::PageAllocator* page_allocator, size_t size, void* hint, size_t alignment) : page_allocator_(page_allocator) { DCHECK_NOT_NULL(page_allocator); + DCHECK(IsAligned(size, page_allocator_->CommitPageSize())); size_t page_size = page_allocator_->AllocatePageSize(); alignment = RoundUp(alignment, page_size); - size = RoundUp(size, page_size); - Address address = reinterpret_cast
(AllocatePages( - page_allocator_, hint, size, alignment, PageAllocator::kNoAccess)); + Address address = reinterpret_cast
( + AllocatePages(page_allocator_, hint, RoundUp(size, page_size), alignment, + PageAllocator::kNoAccess)); if (address != kNullAddress) { + DCHECK(IsAligned(address, alignment)); region_ = base::AddressRegion(address, size); } } @@ -241,7 +255,7 @@ bool VirtualMemory::SetPermissions(Address address, size_t size, size_t VirtualMemory::Release(Address free_start) { DCHECK(IsReserved()); - DCHECK(IsAddressAligned(free_start, page_allocator_->CommitPageSize())); + DCHECK(IsAligned(free_start, page_allocator_->CommitPageSize())); // Notice: Order is important here. The VirtualMemory object might live // inside the allocated region. diff --git a/deps/v8/src/allocation.h b/deps/v8/src/allocation.h index 3a21310af8e..df6e416e702 100644 --- a/deps/v8/src/allocation.h +++ b/deps/v8/src/allocation.h @@ -86,6 +86,13 @@ void AlignedFree(void *ptr); // Returns platfrom page allocator instance. Guaranteed to be a valid pointer. V8_EXPORT_PRIVATE v8::PageAllocator* GetPlatformPageAllocator(); +// Sets the given page allocator as the platform page allocator and returns +// the current one. This function *must* be used only for testing purposes. +// It is not thread-safe and the testing infrastructure should ensure that +// the tests do not modify the value simultaneously. +V8_EXPORT_PRIVATE v8::PageAllocator* SetPlatformPageAllocatorForTesting( + v8::PageAllocator* page_allocator); + // Gets the page granularity for AllocatePages and FreePages. Addresses returned // by AllocatePages and AllocatePage are aligned to this size. V8_EXPORT_PRIVATE size_t AllocatePageSize(); @@ -160,7 +167,7 @@ class V8_EXPORT_PRIVATE VirtualMemory final { // Reserves virtual memory containing an area of the given size that is // aligned per |alignment| rounded up to the |page_allocator|'s allocate page - // size. + // size. The |size| must be aligned with |page_allocator|'s commit page size. // This may not be at the position returned by address(). VirtualMemory(v8::PageAllocator* page_allocator, size_t size, void* hint, size_t alignment = 1); @@ -170,6 +177,8 @@ class V8_EXPORT_PRIVATE VirtualMemory final { VirtualMemory(v8::PageAllocator* page_allocator, Address address, size_t size) : page_allocator_(page_allocator), region_(address, size) { DCHECK_NOT_NULL(page_allocator); + DCHECK(IsAligned(address, page_allocator->AllocatePageSize())); + DCHECK(IsAligned(size, page_allocator->CommitPageSize())); } // Releases the reserved memory, if any, controlled by this VirtualMemory diff --git a/deps/v8/src/api-arguments-inl.h b/deps/v8/src/api-arguments-inl.h index 1e5d6b2aaa7..478b807383d 100644 --- a/deps/v8/src/api-arguments-inl.h +++ b/deps/v8/src/api-arguments-inl.h @@ -10,6 +10,7 @@ #include "src/api-inl.h" #include "src/debug/debug.h" #include "src/objects/api-callbacks.h" +#include "src/objects/slots-inl.h" #include "src/tracing/trace-event.h" #include "src/vm-state-inl.h" @@ -19,28 +20,33 @@ namespace internal { CustomArgumentsBase::CustomArgumentsBase(Isolate* isolate) : Relocatable(isolate) {} +template +CustomArguments::~CustomArguments() { + slot_at(kReturnValueOffset).store(ObjectPtr(kHandleZapValue)); +} + template template Handle CustomArguments::GetReturnValue(Isolate* isolate) { // Check the ReturnValue. - Object** handle = &this->begin()[kReturnValueOffset]; + FullObjectSlot slot = slot_at(kReturnValueOffset); // Nothing was set, return empty handle as per previous behaviour. - if ((*handle)->IsTheHole(isolate)) return Handle(); - Handle result = Handle::cast(Handle(handle)); + if ((*slot)->IsTheHole(isolate)) return Handle(); + Handle result = Handle::cast(Handle(slot.location())); result->VerifyApiCallResultType(); return result; } -inline JSObject* PropertyCallbackArguments::holder() { - return JSObject::cast(this->begin()[T::kHolderIndex]); +inline JSObject PropertyCallbackArguments::holder() { + return JSObject::cast(*slot_at(T::kHolderIndex)); } inline Object* PropertyCallbackArguments::receiver() { - return Object::cast(this->begin()[T::kThisIndex]); + return Object::cast(*slot_at(T::kThisIndex)); } -inline JSObject* FunctionCallbackArguments::holder() { - return JSObject::cast(this->begin()[T::kHolderIndex]); +inline JSObject FunctionCallbackArguments::holder() { + return JSObject::cast(*slot_at(T::kHolderIndex)); } #define FOR_EACH_CALLBACK(F) \ @@ -61,7 +67,7 @@ inline JSObject* FunctionCallbackArguments::holder() { } \ VMState state(ISOLATE); \ ExternalCallbackScope call_scope(ISOLATE, FUNCTION_ADDR(F)); \ - PropertyCallbackInfo callback_info(begin()); + PropertyCallbackInfo callback_info(values_); #define PREPARE_CALLBACK_INFO_FAIL_SIDE_EFFECT_CHECK(ISOLATE, F, RETURN_VALUE, \ API_RETURN_TYPE) \ @@ -70,7 +76,7 @@ inline JSObject* FunctionCallbackArguments::holder() { } \ VMState state(ISOLATE); \ ExternalCallbackScope call_scope(ISOLATE, FUNCTION_ADDR(F)); \ - PropertyCallbackInfo callback_info(begin()); + PropertyCallbackInfo callback_info(values_); #define CREATE_NAMED_CALLBACK(FUNCTION, TYPE, RETURN_TYPE, API_RETURN_TYPE, \ INFO_FOR_SIDE_EFFECT) \ @@ -136,7 +142,7 @@ Handle FunctionCallbackArguments::Call(CallHandlerInfo* handler) { } VMState state(isolate); ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f)); - FunctionCallbackInfo info(begin(), argv_, argc_); + FunctionCallbackInfo info(values_, argv_, argc_); f(info); return GetReturnValue(isolate); } diff --git a/deps/v8/src/api-arguments.cc b/deps/v8/src/api-arguments.cc index 4b290d9dabb..82cbdd0b0ff 100644 --- a/deps/v8/src/api-arguments.cc +++ b/deps/v8/src/api-arguments.cc @@ -11,43 +11,41 @@ namespace internal { PropertyCallbackArguments::PropertyCallbackArguments(Isolate* isolate, Object* data, Object* self, - JSObject* holder, + JSObject holder, ShouldThrow should_throw) : Super(isolate) { - Object** values = this->begin(); - values[T::kThisIndex] = self; - values[T::kHolderIndex] = holder; - values[T::kDataIndex] = data; - values[T::kIsolateIndex] = reinterpret_cast(isolate); - values[T::kShouldThrowOnErrorIndex] = - Smi::FromInt(should_throw == kThrowOnError ? 1 : 0); + slot_at(T::kThisIndex).store(self); + slot_at(T::kHolderIndex).store(holder); + slot_at(T::kDataIndex).store(data); + slot_at(T::kIsolateIndex).store(reinterpret_cast(isolate)); + slot_at(T::kShouldThrowOnErrorIndex) + .store(Smi::FromInt(should_throw == kThrowOnError ? 1 : 0)); // Here the hole is set as default value. // It cannot escape into js as it's removed in Call below. HeapObject* the_hole = ReadOnlyRoots(isolate).the_hole_value(); - values[T::kReturnValueDefaultValueIndex] = the_hole; - values[T::kReturnValueIndex] = the_hole; - DCHECK(values[T::kHolderIndex]->IsHeapObject()); - DCHECK(values[T::kIsolateIndex]->IsSmi()); + slot_at(T::kReturnValueDefaultValueIndex).store(the_hole); + slot_at(T::kReturnValueIndex).store(the_hole); + DCHECK((*slot_at(T::kHolderIndex))->IsHeapObject()); + DCHECK((*slot_at(T::kIsolateIndex))->IsSmi()); } FunctionCallbackArguments::FunctionCallbackArguments( internal::Isolate* isolate, internal::Object* data, internal::HeapObject* callee, internal::Object* holder, - internal::HeapObject* new_target, internal::Object** argv, int argc) + internal::HeapObject* new_target, internal::Address* argv, int argc) : Super(isolate), argv_(argv), argc_(argc) { - Object** values = begin(); - values[T::kDataIndex] = data; - values[T::kHolderIndex] = holder; - values[T::kNewTargetIndex] = new_target; - values[T::kIsolateIndex] = reinterpret_cast(isolate); + slot_at(T::kDataIndex).store(data); + slot_at(T::kHolderIndex).store(holder); + slot_at(T::kNewTargetIndex).store(new_target); + slot_at(T::kIsolateIndex).store(reinterpret_cast(isolate)); // Here the hole is set as default value. // It cannot escape into js as it's remove in Call below. HeapObject* the_hole = ReadOnlyRoots(isolate).the_hole_value(); - values[T::kReturnValueDefaultValueIndex] = the_hole; - values[T::kReturnValueIndex] = the_hole; - DCHECK(values[T::kHolderIndex]->IsHeapObject()); - DCHECK(values[T::kIsolateIndex]->IsSmi()); + slot_at(T::kReturnValueDefaultValueIndex).store(the_hole); + slot_at(T::kReturnValueIndex).store(the_hole); + DCHECK((*slot_at(T::kHolderIndex))->IsHeapObject()); + DCHECK((*slot_at(T::kIsolateIndex))->IsSmi()); } } // namespace internal diff --git a/deps/v8/src/api-arguments.h b/deps/v8/src/api-arguments.h index d8fc2b49ab2..e0fc359302d 100644 --- a/deps/v8/src/api-arguments.h +++ b/deps/v8/src/api-arguments.h @@ -8,6 +8,7 @@ #include "src/api.h" #include "src/debug/debug.h" #include "src/isolate.h" +#include "src/objects/slots.h" #include "src/visitors.h" namespace v8 { @@ -26,14 +27,11 @@ class CustomArguments : public CustomArgumentsBase { public: static const int kReturnValueOffset = T::kReturnValueIndex; - ~CustomArguments() override { - this->begin()[kReturnValueOffset] = - reinterpret_cast(kHandleZapValue); - } + ~CustomArguments() override; inline void IterateInstance(RootVisitor* v) override { - v->VisitRootPointers(Root::kRelocatable, nullptr, values_, - values_ + T::kArgsLength); + v->VisitRootPointers(Root::kRelocatable, nullptr, slot_at(0), + slot_at(T::kArgsLength)); } protected: @@ -44,11 +42,17 @@ class CustomArguments : public CustomArgumentsBase { Handle GetReturnValue(Isolate* isolate); inline Isolate* isolate() { - return reinterpret_cast(this->begin()[T::kIsolateIndex]); + return reinterpret_cast(*slot_at(T::kIsolateIndex)); } - inline Object** begin() { return values_; } - Object* values_[T::kArgsLength]; + inline FullObjectSlot slot_at(int index) { + // This allows index == T::kArgsLength so "one past the end" slots + // can be retrieved for iterating purposes. + DCHECK_LE(static_cast(index), + static_cast(T::kArgsLength)); + return FullObjectSlot(values_ + index); + } + Address values_[T::kArgsLength]; }; // Note: Calling args.Call() sets the return value on args. For multiple @@ -68,7 +72,7 @@ class PropertyCallbackArguments static const int kShouldThrowOnErrorIndex = T::kShouldThrowOnErrorIndex; PropertyCallbackArguments(Isolate* isolate, Object* data, Object* self, - JSObject* holder, ShouldThrow should_throw); + JSObject holder, ShouldThrow should_throw); // ------------------------------------------------------------------------- // Accessor Callbacks @@ -135,7 +139,7 @@ class PropertyCallbackArguments GenericNamedPropertyGetterCallback f, Handle name, Handle info, Handle receiver = Handle()); - inline JSObject* holder(); + inline JSObject holder(); inline Object* receiver(); // Don't copy PropertyCallbackArguments, because they would both have the @@ -160,7 +164,7 @@ class FunctionCallbackArguments internal::HeapObject* callee, internal::Object* holder, internal::HeapObject* new_target, - internal::Object** argv, int argc); + internal::Address* argv, int argc); /* * The following Call function wraps the calling of all callbacks to handle @@ -173,9 +177,9 @@ class FunctionCallbackArguments inline Handle Call(CallHandlerInfo* handler); private: - inline JSObject* holder(); + inline JSObject holder(); - internal::Object** argv_; + internal::Address* argv_; int argc_; }; diff --git a/deps/v8/src/api-inl.h b/deps/v8/src/api-inl.h index 5758729dd32..bc3519e7176 100644 --- a/deps/v8/src/api-inl.h +++ b/deps/v8/src/api-inl.h @@ -6,6 +6,7 @@ #define V8_API_INL_H_ #include "src/api.h" +#include "src/handles-inl.h" #include "src/objects-inl.h" #include "src/objects/stack-frame-info.h" @@ -115,7 +116,8 @@ MAKE_TO_LOCAL(ScriptOrModuleToLocal, Script, ScriptOrModule) DCHECK(that == nullptr || \ (*reinterpret_cast(that))->Is##To()); \ return v8::internal::Handle( \ - reinterpret_cast(const_cast(that))); \ + reinterpret_cast( \ + const_cast(that))); \ } OPEN_HANDLE_LIST(MAKE_OPEN_HANDLE) @@ -126,7 +128,9 @@ OPEN_HANDLE_LIST(MAKE_OPEN_HANDLE) namespace internal { Handle HandleScopeImplementer::MicrotaskContext() { - if (microtask_context_) return Handle(microtask_context_, isolate_); + if (!microtask_context_.is_null()) { + return Handle(microtask_context_, isolate_); + } return Handle::null(); } @@ -135,6 +139,12 @@ Handle HandleScopeImplementer::LastEnteredContext() { return Handle(entered_contexts_.back(), isolate_); } +Handle HandleScopeImplementer::LastEnteredOrMicrotaskContext() { + if (MicrotaskContextIsLastEnteredContext()) return MicrotaskContext(); + if (entered_contexts_.empty()) return Handle::null(); + return Handle(entered_contexts_.back(), isolate_); +} + } // namespace internal } // namespace v8 diff --git a/deps/v8/src/api-natives.cc b/deps/v8/src/api-natives.cc index 11b63d56d8d..aa8c3e62e94 100644 --- a/deps/v8/src/api-natives.cc +++ b/deps/v8/src/api-natives.cc @@ -7,9 +7,10 @@ #include "src/api-inl.h" #include "src/isolate-inl.h" #include "src/lookup.h" -#include "src/messages.h" +#include "src/message-template.h" #include "src/objects/api-callbacks.h" #include "src/objects/hash-table-inl.h" +#include "src/objects/property-cell.h" #include "src/objects/templates.h" namespace v8 { @@ -348,11 +349,11 @@ void UncacheTemplateInstantiation(Isolate* isolate, int serial_number, } bool IsSimpleInstantiation(Isolate* isolate, ObjectTemplateInfo* info, - JSReceiver* new_target) { + JSReceiver new_target) { DisallowHeapAllocation no_gc; if (!new_target->IsJSFunction()) return false; - JSFunction* fun = JSFunction::cast(new_target); + JSFunction fun = JSFunction::cast(new_target); if (fun->shared()->function_data() != info->constructor()) return false; if (info->immutable_proto()) return false; return fun->context()->native_context() == isolate->raw_native_context(); @@ -467,9 +468,9 @@ MaybeHandle InstantiateFunction(Isolate* isolate, } Handle prototype; if (!data->remove_prototype()) { - Object* prototype_templ = data->prototype_template(); + Object* prototype_templ = data->GetPrototypeTemplate(); if (prototype_templ->IsUndefined(isolate)) { - Object* protoype_provider_templ = data->prototype_provider_template(); + Object* protoype_provider_templ = data->GetPrototypeProviderTemplate(); if (protoype_provider_templ->IsUndefined(isolate)) { prototype = isolate->factory()->NewJSObject(isolate->object_function()); } else { @@ -486,7 +487,7 @@ MaybeHandle InstantiateFunction(Isolate* isolate, Handle(), data->hidden_prototype(), true), JSFunction); } - Object* parent = data->parent_template(); + Object* parent = data->GetParentTemplate(); if (!parent->IsUndefined(isolate)) { Handle parent_prototype; ASSIGN_RETURN_ON_EXCEPTION(isolate, parent_prototype, @@ -498,8 +499,8 @@ MaybeHandle InstantiateFunction(Isolate* isolate, } InstanceType function_type = (!data->needs_access_check() && - data->named_property_handler()->IsUndefined(isolate) && - data->indexed_property_handler()->IsUndefined(isolate)) + data->GetNamedPropertyHandler()->IsUndefined(isolate) && + data->GetIndexedPropertyHandler()->IsUndefined(isolate)) ? JS_API_OBJECT_TYPE : JS_SPECIAL_API_OBJECT_TYPE; @@ -570,7 +571,8 @@ MaybeHandle ApiNatives::InstantiateRemoteObject( FunctionTemplateInfo::cast(data->constructor()), isolate); Handle object_map = isolate->factory()->NewMap( JS_SPECIAL_API_OBJECT_TYPE, - JSObject::kHeaderSize + data->embedder_field_count() * kPointerSize, + JSObject::kHeaderSize + + data->embedder_field_count() * kEmbedderDataSlotSize, TERMINAL_FAST_ELEMENTS_KIND); object_map->SetConstructor(*constructor); object_map->set_is_access_check_needed(true); @@ -662,7 +664,7 @@ Handle ApiNatives::CreateApiFunction( if (prototype->IsTheHole(isolate)) { prototype = isolate->factory()->NewFunctionPrototype(result); - } else if (obj->prototype_provider_template()->IsUndefined(isolate)) { + } else if (obj->GetPrototypeProviderTemplate()->IsUndefined(isolate)) { JSObject::AddProperty(isolate, Handle::cast(prototype), isolate->factory()->constructor_string(), result, DONT_ENUM); @@ -670,17 +672,17 @@ Handle ApiNatives::CreateApiFunction( int embedder_field_count = 0; bool immutable_proto = false; - if (!obj->instance_template()->IsUndefined(isolate)) { - Handle instance_template = Handle( - ObjectTemplateInfo::cast(obj->instance_template()), isolate); - embedder_field_count = instance_template->embedder_field_count(); - immutable_proto = instance_template->immutable_proto(); + if (!obj->GetInstanceTemplate()->IsUndefined(isolate)) { + Handle GetInstanceTemplate = Handle( + ObjectTemplateInfo::cast(obj->GetInstanceTemplate()), isolate); + embedder_field_count = GetInstanceTemplate->embedder_field_count(); + immutable_proto = GetInstanceTemplate->immutable_proto(); } // JS_FUNCTION_TYPE requires information about the prototype slot. DCHECK_NE(JS_FUNCTION_TYPE, type); - int instance_size = - JSObject::GetHeaderSize(type) + kPointerSize * embedder_field_count; + int instance_size = JSObject::GetHeaderSize(type) + + kEmbedderDataSlotSize * embedder_field_count; Handle map = isolate->factory()->NewMap(type, instance_size, TERMINAL_FAST_ELEMENTS_KIND); @@ -693,7 +695,7 @@ Handle ApiNatives::CreateApiFunction( // undetectable and callable. If we ever see the need to have an object // that is undetectable but not callable, we need to update the types.h // to allow encoding this. - CHECK(!obj->instance_call_handler()->IsUndefined(isolate)); + CHECK(!obj->GetInstanceCallHandler()->IsUndefined(isolate)); map->set_is_undetectable(true); } @@ -704,17 +706,18 @@ Handle ApiNatives::CreateApiFunction( } // Set interceptor information in the map. - if (!obj->named_property_handler()->IsUndefined(isolate)) { + if (!obj->GetNamedPropertyHandler()->IsUndefined(isolate)) { map->set_has_named_interceptor(true); map->set_may_have_interesting_symbols(true); } - if (!obj->indexed_property_handler()->IsUndefined(isolate)) { + if (!obj->GetIndexedPropertyHandler()->IsUndefined(isolate)) { map->set_has_indexed_interceptor(true); } // Mark instance as callable in the map. - if (!obj->instance_call_handler()->IsUndefined(isolate)) { + if (!obj->GetInstanceCallHandler()->IsUndefined(isolate)) { map->set_is_callable(true); + map->set_is_constructor(!obj->undetectable()); } if (immutable_proto) map->set_is_immutable_proto(true); diff --git a/deps/v8/src/api-natives.h b/deps/v8/src/api-natives.h index ff6cdc6c864..9a9ae50da81 100644 --- a/deps/v8/src/api-natives.h +++ b/deps/v8/src/api-natives.h @@ -16,6 +16,7 @@ namespace v8 { namespace internal { // Forward declarations. +enum InstanceType : uint16_t; class ObjectTemplateInfo; class TemplateInfo; diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc index 64676f06c1a..c7c5588b36f 100644 --- a/deps/v8/src/api.cc +++ b/deps/v8/src/api.cc @@ -26,12 +26,12 @@ #include "src/bootstrapper.h" #include "src/builtins/builtins-utils.h" #include "src/char-predicates-inl.h" -#include "src/code-stubs.h" #include "src/compiler-dispatcher/compiler-dispatcher.h" #include "src/compiler.h" #include "src/contexts.h" #include "src/conversions-inl.h" #include "src/counters.h" +#include "src/date.h" #include "src/debug/debug-coverage.h" #include "src/debug/debug-evaluate.h" #include "src/debug/debug-type-profile.h" @@ -51,6 +51,10 @@ #include "src/messages.h" #include "src/objects-inl.h" #include "src/objects/api-callbacks.h" +#include "src/objects/embedder-data-array-inl.h" +#include "src/objects/embedder-data-slot-inl.h" +#include "src/objects/hash-table-inl.h" +#include "src/objects/heap-object.h" #include "src/objects/js-array-inl.h" #include "src/objects/js-collection-inl.h" #include "src/objects/js-generator-inl.h" @@ -58,6 +62,8 @@ #include "src/objects/js-regexp-inl.h" #include "src/objects/module-inl.h" #include "src/objects/ordered-hash-table-inl.h" +#include "src/objects/slots.h" +#include "src/objects/smi.h" #include "src/objects/stack-frame-info-inl.h" #include "src/objects/templates.h" #include "src/parsing/parse-info.h" @@ -76,15 +82,16 @@ #include "src/runtime-profiler.h" #include "src/runtime/runtime.h" #include "src/simulator.h" -#include "src/snapshot/builtin-serializer.h" #include "src/snapshot/code-serializer.h" #include "src/snapshot/natives.h" +#include "src/snapshot/partial-serializer.h" +#include "src/snapshot/read-only-serializer.h" #include "src/snapshot/snapshot.h" +#include "src/snapshot/startup-serializer.h" #include "src/startup-data-util.h" #include "src/string-hasher.h" #include "src/tracing/trace-event.h" #include "src/trap-handler/trap-handler.h" -#include "src/unicode-cache-inl.h" #include "src/unicode-inl.h" #include "src/v8.h" #include "src/v8threads.h" @@ -97,6 +104,18 @@ #include "src/wasm/wasm-result.h" #include "src/wasm/wasm-serialization.h" +#if V8_OS_LINUX || V8_OS_MACOSX +#include +#include "include/v8-wasm-trap-handler-posix.h" +#include "src/trap-handler/handler-inside-posix.h" +#endif + +#if V8_OS_WIN +#include +#include "include/v8-wasm-trap-handler-win.h" +#include "src/trap-handler/handler-inside-win.h" +#endif + namespace v8 { /* @@ -217,7 +236,7 @@ namespace v8 { namespace { Local ContextFromNeverReadOnlySpaceObject( - i::Handle obj) { + i::Handle obj) { return reinterpret_cast(obj->GetIsolate())->GetCurrentContext(); } @@ -253,14 +272,12 @@ class CallDepthScope { ? i::InterruptsScope::kRunInterrupts : i::InterruptsScope::kPostponeInterrupts) : i::InterruptsScope::kNoop) { - // TODO(dcarney): remove this when blink stops crashing. - DCHECK(!isolate_->external_caught_exception()); isolate_->handle_scope_implementer()->IncrementCallDepth(); isolate_->set_next_v8_call_is_safe_for_termination(false); if (!context.IsEmpty()) { i::Handle env = Utils::OpenHandle(*context); i::HandleScopeImplementer* impl = isolate->handle_scope_implementer(); - if (isolate->context() != nullptr && + if (!isolate->context().is_null() && isolate->context()->native_context() == env->native_context()) { context_ = Local(); } else { @@ -289,8 +306,10 @@ class CallDepthScope { escaped_ = true; auto handle_scope_implementer = isolate_->handle_scope_implementer(); handle_scope_implementer->DecrementCallDepth(); - bool call_depth_is_zero = handle_scope_implementer->CallDepthIsZero(); - isolate_->OptionalRescheduleException(call_depth_is_zero); + bool clear_exception = + handle_scope_implementer->CallDepthIsZero() && + isolate_->thread_local_top()->try_catch_handler() == nullptr; + isolate_->OptionalRescheduleException(clear_exception); } private: @@ -343,20 +362,19 @@ void i::V8::FatalProcessOutOfMemory(i::Isolate* isolate, const char* location, i::HeapStats heap_stats; if (isolate == nullptr) { - isolate = Isolate::Current(); + isolate = Isolate::TryGetCurrent(); } if (isolate == nullptr) { - // On a background thread -> we cannot retrieve memory information from the - // Isolate. Write easy-to-recognize values on the stack. + // If the Isolate is not available for the current thread we cannot retrieve + // memory information from the Isolate. Write easy-to-recognize values on + // the stack. memset(last_few_messages, 0x0BADC0DE, Heap::kTraceRingBufferSize + 1); memset(js_stacktrace, 0x0BADC0DE, Heap::kStacktraceBufferSize + 1); memset(&heap_stats, 0xBADC0DE, sizeof(heap_stats)); - // Note that the embedder's oom handler won't be called in this case. We - // just crash. - FATAL( - "API fatal error handler returned after process out of memory on the " - "background thread"); + // Note that the embedder's oom handler is also not available and therefore + // won't be called in this case. We just crash. + FATAL("Fatal process out of memory: %s", location); UNREACHABLE(); } @@ -387,6 +405,8 @@ void i::V8::FatalProcessOutOfMemory(i::Isolate* isolate, const char* location, heap_stats.map_space_capacity = &map_space_capacity; size_t lo_space_size; heap_stats.lo_space_size = &lo_space_size; + size_t code_lo_space_size; + heap_stats.code_lo_space_size = &code_lo_space_size; size_t global_handle_count; heap_stats.global_handle_count = &global_handle_count; size_t weak_global_handle_count; @@ -563,8 +583,8 @@ SnapshotCreator::SnapshotCreator(Isolate* isolate, SnapshotCreator::SnapshotCreator(const intptr_t* external_references, StartupData* existing_snapshot) - : SnapshotCreator(reinterpret_cast(new i::Isolate()), - external_references, existing_snapshot) {} + : SnapshotCreator(Isolate::Allocate(), external_references, + existing_snapshot) {} SnapshotCreator::~SnapshotCreator() { SnapshotCreatorData* data = SnapshotCreatorData::cast(data_); @@ -608,13 +628,13 @@ size_t SnapshotCreator::AddTemplate(Local