diff --git a/CHANGELOG.md b/CHANGELOG.md index be628de737e216..e64990646631f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,168 @@ # Node.js ChangeLog +## 2015-11-17, Version 5.1.0 (Stable), @Fishrock123 + +### Notable changes + +* **buffer**: The `noAssert` option for many buffer functions will now silently drop invalid write values rather than crashing (P.S.V.R) [#3767](https://github.com/nodejs/node/pull/3767). + - This makes the behavior match what the docs suggest. +* **child_process**: `child.send()` now properly returns a boolean like the docs suggest (Rich Trott) [#3577](https://github.com/nodejs/node/pull/3577). +* **doc**: All of the API docs have been re-ordered so as to read in alphabetical order (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662). +* **http_parser**: update http-parser to 2.6.0 from 2.5.0 (James M Snell) [#3569](https://github.com/nodejs/node/pull/3569). + - Now supports the following HTTP methods: `LINK`, `UNLINK`, `BIND`, `REBIND`, `UNBIND`. + - Also added ACL and IPv6 Zone ID support. +* **npm**: upgrade npm to 3.3.12 from v3.3.6 (Rebecca Turner) [#3685](https://github.com/nodejs/node/pull/3685). + - See the release notes for [v3.3.7](https://github.com/npm/npm/releases/tag/v3.3.7), [v3.3.8](https://github.com/npm/npm/releases/tag/v3.3.8), [v3.3.9](https://github.com/npm/npm/releases/tag/v3.3.9), [v3.3.10](https://github.com/npm/npm/releases/tag/v3.3.10), [v3.3.11](https://github.com/npm/npm/releases/tag/v3.3.11), and [v3.3.12](https://github.com/npm/npm/releases/tag/v3.3.12) for more details. +* **repl**: The REPL no longer crashes if the [persistent history](https://nodejs.org/api/repl.html#repl_persistent_history) file cannot be opened (Evan Lucas) [#3630](https://github.com/nodejs/node/pull/3630). +* **tls**: The default `sessionIdContext` now uses SHA1 in FIPS mode rather than MD5 (Stefan Budeanu) [#3755](https://github.com/nodejs/node/pull/3755). +* **v8**: Added some more useful post-mortem data (Fedor Indutny) [#3779](https://github.com/nodejs/node/pull/3779). + +### Known issues + +* Surrogate pair in REPL can freeze terminal. [#690](https://github.com/nodejs/node/issues/690) +* Calling `dns.setServers()` while a DNS query is in progress can cause the process to crash on a failed assertion. [#894](https://github.com/nodejs/node/issues/894) +* `url.resolve` may transfer the auth portion of the url when resolving between two full hosts, see [#1435](https://github.com/nodejs/node/issues/1435). +* Unicode characters in filesystem paths are not handled consistently across platforms or Node.js APIs. See [#2088](https://github.com/nodejs/node/issues/2088), [#3401](https://github.com/nodejs/node/issues/3401) and [#3519](https://github.com/nodejs/node/issues/3519). + +### Commits + +* [[`b663d2bbb5`](https://github.com/nodejs/node/commit/b663d2bbb5)] - **async_wrap**: call callback in destructor (Trevor Norris) [#3461](https://github.com/nodejs/node/pull/3461) +* [[`eccbec99ea`](https://github.com/nodejs/node/commit/eccbec99ea)] - **async_wrap**: new instances get uid (Trevor Norris) [#3461](https://github.com/nodejs/node/pull/3461) +* [[`5d34c81a5c`](https://github.com/nodejs/node/commit/5d34c81a5c)] - **async_wrap**: allow some hooks to be optional (Trevor Norris) [#3461](https://github.com/nodejs/node/pull/3461) +* [[`7bff0138e2`](https://github.com/nodejs/node/commit/7bff0138e2)] - **buffer**: let WriteFloatGeneric silently drop values (P.S.V.R) [#3767](https://github.com/nodejs/node/pull/3767) +* [[`56673693cd`](https://github.com/nodejs/node/commit/56673693cd)] - **buffer**: neuter external `nullptr` buffers (Fedor Indutny) [#3624](https://github.com/nodejs/node/pull/3624) +* [[`2d0ca0293a`](https://github.com/nodejs/node/commit/2d0ca0293a)] - **build**: fix configuring with prebuilt libraries (Markus Tzoe) [#3135](https://github.com/nodejs/node/pull/3135) +* [[`2a69b6820f`](https://github.com/nodejs/node/commit/2a69b6820f)] - **build**: fix --with-intl=system-icu for x-compile (Steven R. Loomis) [#3808](https://github.com/nodejs/node/pull/3808) +* [[`8f5a2550a7`](https://github.com/nodejs/node/commit/8f5a2550a7)] - **build**: omit -gline-tables-only for --enable-asan (Ben Noordhuis) [#3680](https://github.com/nodejs/node/pull/3680) +* [[`84bb74547d`](https://github.com/nodejs/node/commit/84bb74547d)] - **child_process**: add safety checks on stdio access (cjihrig) [#3799](https://github.com/nodejs/node/pull/3799) +* [[`e888471a11`](https://github.com/nodejs/node/commit/e888471a11)] - **child_process**: don't fork bomb ourselves from -e (Ben Noordhuis) [#3575](https://github.com/nodejs/node/pull/3575) +* [[`47f3735e88`](https://github.com/nodejs/node/commit/47f3735e88)] - **cluster**: send suicide message on disconnect (cjihrig) [#3720](https://github.com/nodejs/node/pull/3720) +* [[`d64a56cba5`](https://github.com/nodejs/node/commit/d64a56cba5)] - **cluster**: remove handles when disconnecting worker (Ben Noordhuis) [#3677](https://github.com/nodejs/node/pull/3677) +* [[`5ed30da5a0`](https://github.com/nodejs/node/commit/5ed30da5a0)] - **console**: use 'label' argument for time and timeEnd (Roman Reiss) [#3590](https://github.com/nodejs/node/pull/3590) +* [[`7a290abea6`](https://github.com/nodejs/node/commit/7a290abea6)] - **crypto**: DSA parameter validation in FIPS mode (Stefan Budeanu) [#3756](https://github.com/nodejs/node/pull/3756) +* [[`2c9fb147be`](https://github.com/nodejs/node/commit/2c9fb147be)] - **crypto**: Improve error checking and reporting (Stefan Budeanu) [#3753](https://github.com/nodejs/node/pull/3753) +* [[`66dccaf0cd`](https://github.com/nodejs/node/commit/66dccaf0cd)] - **debugger**: also exit when the repl emits 'exit' (Felix Böhm) [#2369](https://github.com/nodejs/node/pull/2369) +* [[`fd0253be4d`](https://github.com/nodejs/node/commit/fd0253be4d)] - **deps**: backport bc2e393 from v8 upstream (evan.lucas) [#3792](https://github.com/nodejs/node/pull/3792) +* [[`59077acc3d`](https://github.com/nodejs/node/commit/59077acc3d)] - **deps**: cherry-pick 68e89fb from v8's upstream (Fedor Indutny) [#3779](https://github.com/nodejs/node/pull/3779) +* [[`9ef81ff5d3`](https://github.com/nodejs/node/commit/9ef81ff5d3)] - **deps**: update V8 to 4.6.85.31 (Michaël Zasso) [#3698](https://github.com/nodejs/node/pull/3698) +* [[`b48dbf9fce`](https://github.com/nodejs/node/commit/b48dbf9fce)] - **deps**: upgrade npm to 3.3.12 (Rebecca Turner) [#3685](https://github.com/nodejs/node/pull/3685) +* [[`7caeb14e11`](https://github.com/nodejs/node/commit/7caeb14e11)] - **(SEMVER-MINOR)** **deps**: update http-parser to 2.6.0 (James M Snell) [#3569](https://github.com/nodejs/node/pull/3569) +* [[`08e0de59fa`](https://github.com/nodejs/node/commit/08e0de59fa)] - **deps**: upgrade npm to 3.3.10 (Rebecca Turner) [#3599](https://github.com/nodejs/node/pull/3599) +* [[`ac9e4ffe8e`](https://github.com/nodejs/node/commit/ac9e4ffe8e)] - **dns**: prevent undefined values in results (Junliang Yan) [#3696](https://github.com/nodejs/node/pull/3696) +* [[`ea67d870f4`](https://github.com/nodejs/node/commit/ea67d870f4)] - **doc**: document release types in readme (Rod Vagg) [#3482](https://github.com/nodejs/node/pull/3482) +* [[`60d3daa65c`](https://github.com/nodejs/node/commit/60d3daa65c)] - **doc**: replace head of readme with updated text (Rod Vagg) [#3482](https://github.com/nodejs/node/pull/3482) +* [[`df1fdba2ae`](https://github.com/nodejs/node/commit/df1fdba2ae)] - **doc**: sort repl alphabetically (Tristian Flanagan) [#3859](https://github.com/nodejs/node/pull/3859) +* [[`7ecd5422c8`](https://github.com/nodejs/node/commit/7ecd5422c8)] - **doc**: address use of profanity in code of conduct (James M Snell) [#3827](https://github.com/nodejs/node/pull/3827) +* [[`c2393d1f2a`](https://github.com/nodejs/node/commit/c2393d1f2a)] - **doc**: consistent reference-style links (Bryan English) [#3845](https://github.com/nodejs/node/pull/3845) +* [[`96f53c6b02`](https://github.com/nodejs/node/commit/96f53c6b02)] - **doc**: add link to \[customizing util.inspect colors\]. (Jesse McCarthy) [#3749](https://github.com/nodejs/node/pull/3749) +* [[`132297d3f6`](https://github.com/nodejs/node/commit/132297d3f6)] - **doc**: Updated streams simplified constructor API (Tom Gallacher) [#3602](https://github.com/nodejs/node/pull/3602) +* [[`d137f0fd28`](https://github.com/nodejs/node/commit/d137f0fd28)] - **doc**: add warning about Windows process groups (Roman Klauke) [#3681](https://github.com/nodejs/node/pull/3681) +* [[`45ff31cf94`](https://github.com/nodejs/node/commit/45ff31cf94)] - **doc**: added what buf.copy returns (Manuel B) [#3555](https://github.com/nodejs/node/pull/3555) +* [[`5d1faa28cb`](https://github.com/nodejs/node/commit/5d1faa28cb)] - **doc**: reword message.headers to indicate they are not read-only (Tristian Flanagan) [#3814](https://github.com/nodejs/node/pull/3814) +* [[`25c3807051`](https://github.com/nodejs/node/commit/25c3807051)] - **doc**: clarify duplicate header handling (Bryan English) [#3810](https://github.com/nodejs/node/pull/3810) +* [[`ae2d1ee302`](https://github.com/nodejs/node/commit/ae2d1ee302)] - **doc**: repl: add defineComand and displayPrompt (Bryan English) [#3765](https://github.com/nodejs/node/pull/3765) +* [[`09e524d013`](https://github.com/nodejs/node/commit/09e524d013)] - **doc**: sort tls alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`7e60b81c81`](https://github.com/nodejs/node/commit/7e60b81c81)] - **doc**: sort stream alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`cd931a8a13`](https://github.com/nodejs/node/commit/cd931a8a13)] - **doc**: sort net alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`cfa8198af8`](https://github.com/nodejs/node/commit/cfa8198af8)] - **doc**: sort process alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`e1a512607a`](https://github.com/nodejs/node/commit/e1a512607a)] - **doc**: sort zlib alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`0996b97240`](https://github.com/nodejs/node/commit/0996b97240)] - **doc**: sort util alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`df07072b66`](https://github.com/nodejs/node/commit/df07072b66)] - **doc**: sort https alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`6e9d01c7d8`](https://github.com/nodejs/node/commit/6e9d01c7d8)] - **doc**: sort http alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`18da02fa0f`](https://github.com/nodejs/node/commit/18da02fa0f)] - **doc**: sort modules alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`29054ffc0c`](https://github.com/nodejs/node/commit/29054ffc0c)] - **doc**: sort readline alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`389ead37ef`](https://github.com/nodejs/node/commit/389ead37ef)] - **doc**: sort repl alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`d383d624de`](https://github.com/nodejs/node/commit/d383d624de)] - **doc**: sort string_decoder alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`0d2262887c`](https://github.com/nodejs/node/commit/0d2262887c)] - **doc**: sort timers alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`14b5a95d03`](https://github.com/nodejs/node/commit/14b5a95d03)] - **doc**: sort tty alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`d4dda77e4a`](https://github.com/nodejs/node/commit/d4dda77e4a)] - **doc**: sort url alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`39b8259bd5`](https://github.com/nodejs/node/commit/39b8259bd5)] - **doc**: sort vm alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`d357b3090e`](https://github.com/nodejs/node/commit/d357b3090e)] - **doc**: sort querystring alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`1f56abaa98`](https://github.com/nodejs/node/commit/1f56abaa98)] - **doc**: sort punycode alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`bc63667456`](https://github.com/nodejs/node/commit/bc63667456)] - **doc**: sort path alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`22961e011c`](https://github.com/nodejs/node/commit/22961e011c)] - **doc**: sort os alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`4ba18489d3`](https://github.com/nodejs/node/commit/4ba18489d3)] - **doc**: sort globals alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`c3f5ea704f`](https://github.com/nodejs/node/commit/c3f5ea704f)] - **doc**: sort fs alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`ce3ac8dd1e`](https://github.com/nodejs/node/commit/ce3ac8dd1e)] - **doc**: sort events alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`63a78749b8`](https://github.com/nodejs/node/commit/63a78749b8)] - **doc**: sort errors alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`488326da8d`](https://github.com/nodejs/node/commit/488326da8d)] - **doc**: sort dgram alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`e1c357e881`](https://github.com/nodejs/node/commit/e1c357e881)] - **doc**: sort crypto alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`4118fd5794`](https://github.com/nodejs/node/commit/4118fd5794)] - **doc**: sort dns alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`3e046acc50`](https://github.com/nodejs/node/commit/3e046acc50)] - **doc**: sort console alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`05f1af7124`](https://github.com/nodejs/node/commit/05f1af7124)] - **doc**: sort cluster alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`5c30e5dada`](https://github.com/nodejs/node/commit/5c30e5dada)] - **doc**: sort child_process alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`fb6a09cd0e`](https://github.com/nodejs/node/commit/fb6a09cd0e)] - **doc**: sort buffer alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`c7c05d8f02`](https://github.com/nodejs/node/commit/c7c05d8f02)] - **doc**: sort assert alphabetically (Tristian Flanagan) [#3662](https://github.com/nodejs/node/pull/3662) +* [[`f2c2e53321`](https://github.com/nodejs/node/commit/f2c2e53321)] - **doc**: add note to util.isBuffer (Evan Lucas) [#3790](https://github.com/nodejs/node/pull/3790) +* [[`35fb9f91eb`](https://github.com/nodejs/node/commit/35fb9f91eb)] - **doc**: Describe FIPSDIR environment variable (Stefan Budeanu) [#3752](https://github.com/nodejs/node/pull/3752) +* [[`da911f158b`](https://github.com/nodejs/node/commit/da911f158b)] - **doc**: update lts description in the collaborator guide (James M Snell) [#3668](https://github.com/nodejs/node/pull/3668) +* [[`597f8751d1`](https://github.com/nodejs/node/commit/597f8751d1)] - **doc**: add note on tls connection meta data methods (Tyler Henkel) [#3746](https://github.com/nodejs/node/pull/3746) +* [[`a32d9e31dc`](https://github.com/nodejs/node/commit/a32d9e31dc)] - **doc**: add romankl to collaborators (Roman Klauke) [#3725](https://github.com/nodejs/node/pull/3725) +* [[`e5b9109d12`](https://github.com/nodejs/node/commit/e5b9109d12)] - **doc**: add thealphanerd to collaborators (Myles Borins) [#3723](https://github.com/nodejs/node/pull/3723) +* [[`a05a0b47e3`](https://github.com/nodejs/node/commit/a05a0b47e3)] - **doc**: add saghul as a collaborator (Saúl Ibarra Corretgé) [#3724](https://github.com/nodejs/node/pull/3724) +* [[`b14d9c5f16`](https://github.com/nodejs/node/commit/b14d9c5f16)] - **doc**: add method links in events.markdown (Alejandro Oviedo) [#3187](https://github.com/nodejs/node/pull/3187) +* [[`44f779b112`](https://github.com/nodejs/node/commit/44f779b112)] - **doc**: add caveats of algs and key size in crypto (Shigeki Ohtsu) [#3479](https://github.com/nodejs/node/pull/3479) +* [[`a0db5fb355`](https://github.com/nodejs/node/commit/a0db5fb355)] - **doc**: stdout/stderr can block when directed to file (Ben Noordhuis) [#3170](https://github.com/nodejs/node/pull/3170) +* [[`409f29972e`](https://github.com/nodejs/node/commit/409f29972e)] - **doc**: rename iojs-* groups to nodejs-* (Steven R. Loomis) [#3634](https://github.com/nodejs/node/pull/3634) +* [[`801866280e`](https://github.com/nodejs/node/commit/801866280e)] - **doc**: fix wrong date and known issue in changelog.md (James M Snell) [#3650](https://github.com/nodejs/node/pull/3650) +* [[`325c4c7af5`](https://github.com/nodejs/node/commit/325c4c7af5)] - **doc**: fix function param order in assert doc (David Woods) [#3533](https://github.com/nodejs/node/pull/3533) +* [[`045e04e531`](https://github.com/nodejs/node/commit/045e04e531)] - **doc**: typo fix in readme.md (Sam P Gallagher-Bishop) [#3649](https://github.com/nodejs/node/pull/3649) +* [[`7fd8f1371e`](https://github.com/nodejs/node/commit/7fd8f1371e)] - **doc**: add note about timeout delay > TIMEOUT_MAX (Guilherme Souza) [#3512](https://github.com/nodejs/node/pull/3512) +* [[`7d0b589644`](https://github.com/nodejs/node/commit/7d0b589644)] - **doc**: fix crypto spkac function descriptions (Jason Gerfen) [#3614](https://github.com/nodejs/node/pull/3614) +* [[`efa19bdcb5`](https://github.com/nodejs/node/commit/efa19bdcb5)] - **doc**: add final full stop in CONTRIBUTING.md (Emily Aviva Kapor-Mater) [#3576](https://github.com/nodejs/node/pull/3576) +* [[`90723afe32`](https://github.com/nodejs/node/commit/90723afe32)] - **doc**: made code spans more visible in the API docs (phijohns) [#3573](https://github.com/nodejs/node/pull/3573) +* [[`530bb9144f`](https://github.com/nodejs/node/commit/530bb9144f)] - **docs**: improve discoverability of Code of Conduct (Ashley Williams) [#3774](https://github.com/nodejs/node/pull/3774) +* [[`73e40f0327`](https://github.com/nodejs/node/commit/73e40f0327)] - **docs**: fs - change links to buffer encoding to Buffer class anchor (fansworld-claudio) [#2796](https://github.com/nodejs/node/pull/2796) +* [[`7a84fa6c60`](https://github.com/nodejs/node/commit/7a84fa6c60)] - **docs**: fs - remove encoding list and link to buffer (fansworld-claudio) [#2796](https://github.com/nodejs/node/pull/2796) +* [[`2aa6a6d998`](https://github.com/nodejs/node/commit/2aa6a6d998)] - **fs**: return null error on readFile() success (Zheng Chaoping) [#3740](https://github.com/nodejs/node/pull/3740) +* [[`c96400c572`](https://github.com/nodejs/node/commit/c96400c572)] - **gitignore**: don't ignore 'debug' in deps/npm (Rebecca Turner) [#3599](https://github.com/nodejs/node/pull/3599) +* [[`a7f28a098e`](https://github.com/nodejs/node/commit/a7f28a098e)] - **http**: remove unneeded cb check from setTimeout() (Ashok Suthar) [#3631](https://github.com/nodejs/node/pull/3631) +* [[`d2b5dcb2de`](https://github.com/nodejs/node/commit/d2b5dcb2de)] - **lib**: return boolean from child.send() (Rich Trott) [#3577](https://github.com/nodejs/node/pull/3577) +* [[`5c54fa0095`](https://github.com/nodejs/node/commit/5c54fa0095)] - **module**: cache regular expressions (Evan Lucas) [#3869](https://github.com/nodejs/node/pull/3869) +* [[`89285db128`](https://github.com/nodejs/node/commit/89285db128)] - **module**: remove unnecessary JSON.stringify (Andres Suarez) [#3578](https://github.com/nodejs/node/pull/3578) +* [[`fd3f0d8e6e`](https://github.com/nodejs/node/commit/fd3f0d8e6e)] - **querystring**: Parse multiple separator characters (Yosuke Furukawa) [#3807](https://github.com/nodejs/node/pull/3807) +* [[`75dbafc3f8`](https://github.com/nodejs/node/commit/75dbafc3f8)] - **repl**: To exit, press ^C again or type .exit. (Hemanth.HM) [#3368](https://github.com/nodejs/node/pull/3368) +* [[`5073da0481`](https://github.com/nodejs/node/commit/5073da0481)] - **repl**: don't crash if cannot open history file (Evan Lucas) [#3630](https://github.com/nodejs/node/pull/3630) +* [[`59cd28114d`](https://github.com/nodejs/node/commit/59cd28114d)] - **src**: Add missing va_end before return (Ömer Fadıl Usta) [#3565](https://github.com/nodejs/node/pull/3565) +* [[`02e012e984`](https://github.com/nodejs/node/commit/02e012e984)] - **src**: force line buffering for stderr (Rich Trott) [#3701](https://github.com/nodejs/node/pull/3701) +* [[`2498e29344`](https://github.com/nodejs/node/commit/2498e29344)] - **src**: Revert "nix stdin _readableState.reading" (Roman Reiss) [#3490](https://github.com/nodejs/node/pull/3490) +* [[`65cd03cda6`](https://github.com/nodejs/node/commit/65cd03cda6)] - **src**: wrap source before doing syntax check (Evan Lucas) [#3587](https://github.com/nodejs/node/pull/3587) +* [[`d72bb1e96a`](https://github.com/nodejs/node/commit/d72bb1e96a)] - ***Revert*** "**src**: fix stuck debugger process" (Ben Noordhuis) [#3585](https://github.com/nodejs/node/pull/3585) +* [[`047abbd6eb`](https://github.com/nodejs/node/commit/047abbd6eb)] - **test**: move test-specific function out of common (Rich Trott) [#3871](https://github.com/nodejs/node/pull/3871) +* [[`19a36ff355`](https://github.com/nodejs/node/commit/19a36ff355)] - **test**: fix flaky SmartOS test (Rich Trott) [#3830](https://github.com/nodejs/node/pull/3830) +* [[`4bb27baf8d`](https://github.com/nodejs/node/commit/4bb27baf8d)] - **test**: skip test if FreeBSD jail will break it (Rich Trott) [#3839](https://github.com/nodejs/node/pull/3839) +* [[`1c1e70864b`](https://github.com/nodejs/node/commit/1c1e70864b)] - **test**: fix path to module for repl test on Windows (Michael Cornacchia) [#3608](https://github.com/nodejs/node/pull/3608) +* [[`413ca53107`](https://github.com/nodejs/node/commit/413ca53107)] - **test**: increase crypto strength for FIPS standard (Stefan Budeanu) [#3758](https://github.com/nodejs/node/pull/3758) +* [[`2ec5e17d16`](https://github.com/nodejs/node/commit/2ec5e17d16)] - **test**: add test-zlib-flush-drain (Myles Borins) [#3534](https://github.com/nodejs/node/pull/3534) +* [[`de707f0876`](https://github.com/nodejs/node/commit/de707f0876)] - **test**: add hasFipsCrypto to test/common.js (Stefan Budeanu) [#3756](https://github.com/nodejs/node/pull/3756) +* [[`828b786e48`](https://github.com/nodejs/node/commit/828b786e48)] - **test**: add test for invalid DSA key size (Stefan Budeanu) [#3756](https://github.com/nodejs/node/pull/3756) +* [[`252e810059`](https://github.com/nodejs/node/commit/252e810059)] - **test**: Fix test-cluster-worker-exit.js for AIX (Imran Iqbal) [#3666](https://github.com/nodejs/node/pull/3666) +* [[`91248b1094`](https://github.com/nodejs/node/commit/91248b1094)] - **test**: run pipeline flood test in parallel (Rich Trott) [#3811](https://github.com/nodejs/node/pull/3811) +* [[`583f58e5d6`](https://github.com/nodejs/node/commit/583f58e5d6)] - **test**: stronger crypto in test fixtures (Stefan Budeanu) [#3759](https://github.com/nodejs/node/pull/3759) +* [[`2e67db3104`](https://github.com/nodejs/node/commit/2e67db3104)] - **test**: refactor test-http-pipeline-flood (Rich Trott) [#3636](https://github.com/nodejs/node/pull/3636) +* [[`1ab59ab9b3`](https://github.com/nodejs/node/commit/1ab59ab9b3)] - **test**: fix flaky test test-http-pipeline-flood (Devin Nakamura) [#3636](https://github.com/nodejs/node/pull/3636) +* [[`1c8a7c6351`](https://github.com/nodejs/node/commit/1c8a7c6351)] - **test**: enhance fs-watch-recursive test (Sakthipriyan Vairamani) [#2599](https://github.com/nodejs/node/pull/2599) +* [[`81997840f2`](https://github.com/nodejs/node/commit/81997840f2)] - **test**: fix test-module-loading-error for musl (Hugues Malphettes) [#3657](https://github.com/nodejs/node/pull/3657) +* [[`9cdceac782`](https://github.com/nodejs/node/commit/9cdceac782)] - **test**: use really invalid hostname (Sakthipriyan Vairamani) [#3711](https://github.com/nodejs/node/pull/3711) +* [[`f3594e77b2`](https://github.com/nodejs/node/commit/f3594e77b2)] - **test**: fix test-net-persistent-keepalive for AIX (Imran Iqbal) [#3646](https://github.com/nodejs/node/pull/3646) +* [[`81522480f1`](https://github.com/nodejs/node/commit/81522480f1)] - **test**: more regression tests for minDHSize option (Ben Noordhuis) [#3629](https://github.com/nodejs/node/pull/3629) +* [[`935b97769e`](https://github.com/nodejs/node/commit/935b97769e)] - **test**: add regression test for 512 bits DH key (Ben Noordhuis) [#3629](https://github.com/nodejs/node/pull/3629) +* [[`e302c33bb0`](https://github.com/nodejs/node/commit/e302c33bb0)] - **test**: mark http-pipeline-flood flaky (Rich Trott) [#3616](https://github.com/nodejs/node/pull/3616) +* [[`5977963bce`](https://github.com/nodejs/node/commit/5977963bce)] - **test**: remove flaky designation from ls-no-sslv3 (Rich Trott) [#3620](https://github.com/nodejs/node/pull/3620) +* [[`1e98d90db8`](https://github.com/nodejs/node/commit/1e98d90db8)] - **test**: add regression test for --debug-brk -e 0 (Ben Noordhuis) [#3585](https://github.com/nodejs/node/pull/3585) +* [[`2f16be2b70`](https://github.com/nodejs/node/commit/2f16be2b70)] - **tls**: Use SHA1 for sessionIdContext in FIPS mode (Stefan Budeanu) [#3755](https://github.com/nodejs/node/pull/3755) +* [[`05f0549b50`](https://github.com/nodejs/node/commit/05f0549b50)] - **tls**: copy client CAs and cert store on CertCb (Fedor Indutny) [#3537](https://github.com/nodejs/node/pull/3537) +* [[`bea35424a2`](https://github.com/nodejs/node/commit/bea35424a2)] - **tools**: add tap output to cpplint (Johan Bergström) [#3448](https://github.com/nodejs/node/pull/3448) +* [[`d036b35349`](https://github.com/nodejs/node/commit/d036b35349)] - **tools**: enforce `throw new Error()` with lint rule (Rich Trott) [#3714](https://github.com/nodejs/node/pull/3714) +* [[`38bb0d864e`](https://github.com/nodejs/node/commit/38bb0d864e)] - **tools**: Use `throw new Error()` consistently (Rich Trott) [#3714](https://github.com/nodejs/node/pull/3714) +* [[`e40d28283a`](https://github.com/nodejs/node/commit/e40d28283a)] - **tools**: update npm test tooling for 3.3.10+ (Rebecca Turner) [#3599](https://github.com/nodejs/node/pull/3599) +* [[`cbd358ce33`](https://github.com/nodejs/node/commit/cbd358ce33)] - **tools**: fix gyp to work on MacOSX without XCode (Shigeki Ohtsu) [iojs/io.js#1325](https://github.com/iojs/io.js/pull/1325) +* [[`3137e46cb8`](https://github.com/nodejs/node/commit/3137e46cb8)] - **tools**: update gyp to b3cef02 (Imran Iqbal) [#3487](https://github.com/nodejs/node/pull/3487) +* [[`d61cb90ee3`](https://github.com/nodejs/node/commit/d61cb90ee3)] - **util**: use Object.create(null) for dictionary object (Minwoo Jung) [#3831](https://github.com/nodejs/node/pull/3831) +* [[`9a45c21e6c`](https://github.com/nodejs/node/commit/9a45c21e6c)] - **util**: use regexp instead of str.replace().join() (qinjia) [#3689](https://github.com/nodejs/node/pull/3689) +* [[`33ffc62670`](https://github.com/nodejs/node/commit/33ffc62670)] - **zlib**: only apply drain listener if given callback (Craig Cavalier) [#3534](https://github.com/nodejs/node/pull/3534) +* [[`d70deabf90`](https://github.com/nodejs/node/commit/d70deabf90)] - **zlib**: pass kind to recursive calls to flush (Myles Borins) [#3534](https://github.com/nodejs/node/pull/3534) + ## 2015-11-03, Version 4.2.2 'Argon' (LTS), @jasnell ### Notable changes diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000000..015c2b9d692f9c --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,38 @@ +## Code of Conduct + +This Code of Conduct is adapted from [Rust's wonderful +CoC](http://www.rust-lang.org/conduct.html). + +* We are committed to providing a friendly, safe and welcoming + environment for all, regardless of gender, sexual orientation, + disability, ethnicity, religion, or similar personal characteristic. +* Please avoid using overtly sexual nicknames or other nicknames that + might detract from a friendly, safe and welcoming environment for + all. +* Please be kind and courteous. There's no need to be mean or rude. +* Respect that some individuals and cultures consider the casual use of + profanity offensive and off-putting. +* Respect that people have differences of opinion and that every + design or implementation choice carries a trade-off and numerous + costs. There is seldom a right answer. +* Please keep unstructured critique to a minimum. If you have solid + ideas you want to experiment with, make a fork and see how it works. +* We will exclude you from interaction if you insult, demean or harass + anyone. That is not welcome behavior. We interpret the term + "harassment" as including the definition in the [Citizen Code of + Conduct](http://citizencodeofconduct.org/); if you have any lack of + clarity about what might be included in that concept, please read + their definition. In particular, we don't tolerate behavior that + excludes people in socially marginalized groups. +* Private harassment is also unacceptable. No matter who you are, if + you feel you have been or are being harassed or made uncomfortable + by a community member, please contact one of the channel ops or any + of the TSC members immediately with a capture (log, photo, email) of + the harassment if possible. Whether you're a regular contributor or + a newcomer, we care about making this community a safe place for you + and we've got your back. +* Likewise any spamming, trolling, flaming, baiting or other + attention-stealing behavior is not welcome. +* Avoid the use of personal pronouns in code comments or + documentation. There is no need to address persons when explaining + code (e.g. "When the developer"). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8da5d14f8ad63d..e78100bc810c77 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,11 @@ # Contributing to Node.js +## Code of Conduct + +The Code of Conduct explains the *bare minimum* behavior +expectations the Node Foundation requires of its contributors. +[Please read it before participating.](./CODE_OF_CONDUCT.md) + ## Issue Contributions When opening new issues or commenting on existing issues on this repository @@ -181,41 +187,3 @@ By making a contribution to this project, I certify that: different license), as indicated in the file; or * (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. - - -## Code of Conduct - -This Code of Conduct is adapted from [Rust's wonderful -CoC](http://www.rust-lang.org/conduct.html). - -* We are committed to providing a friendly, safe and welcoming - environment for all, regardless of gender, sexual orientation, - disability, ethnicity, religion, or similar personal characteristic. -* Please avoid using overtly sexual nicknames or other nicknames that - might detract from a friendly, safe and welcoming environment for - all. -* Please be kind and courteous. There's no need to be mean or rude. -* Respect that people have differences of opinion and that every - design or implementation choice carries a trade-off and numerous - costs. There is seldom a right answer. -* Please keep unstructured critique to a minimum. If you have solid - ideas you want to experiment with, make a fork and see how it works. -* We will exclude you from interaction if you insult, demean or harass - anyone. That is not welcome behavior. We interpret the term - "harassment" as including the definition in the [Citizen Code of - Conduct](http://citizencodeofconduct.org/); if you have any lack of - clarity about what might be included in that concept, please read - their definition. In particular, we don't tolerate behavior that - excludes people in socially marginalized groups. -* Private harassment is also unacceptable. No matter who you are, if - you feel you have been or are being harassed or made uncomfortable - by a community member, please contact one of the channel ops or any - of the TC members immediately with a capture (log, photo, email) of - the harassment if possible. Whether you're a regular contributor or - a newcomer, we care about making this community a safe place for you - and we've got your back. -* Likewise any spamming, trolling, flaming, baiting or other - attention-stealing behavior is not welcome. -* Avoid the use of personal pronouns in code comments or - documentation. There is no need to address persons when explaining - code (e.g. "When the developer"). diff --git a/README.md b/README.md index 5870524ba0503c..fc7e2abf8b8bfd 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,56 @@ - Node.js -===== +======= [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/nodejs/node?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -This repository began as a GitHub fork of -[joyent/node](https://github.com/joyent/node). - -Node.js contributions, releases, and contributorship are under an -[open governance model](./GOVERNANCE.md). -We intend to land, with increasing regularity, releases which are -compatible with the npm ecosystem that has been built to date for -Node.js. +The Node.js project is supported by the +[Node.js Foundation](https://nodejs.org/en/foundation/). Contributions, +policies and releases are managed under an +[open governance model](./GOVERNANCE.md). We are also bound by a +[Code of Conduct](./CODE_OF_CONDUCT.md). + +If you need help using or installing Node.js, please use the +[nodejs/help](https://github.com/nodejs/help) issue tracker. + +## Release Types + +The Node.js project maintains multiple types of releases: + +* **Stable**: Released from active development branches of this repository, + versioned by [SemVer](http://semver.org/) and signed by a member of the + [Release Team](#release-team). + Code for Stable releases is organized in this repository by major version + number, For example: [v4.x](https://github.com/nodejs/node/tree/v4.x). + The major version number of Stable releases will increment every 6 months + allowing for breaking changes to be introduced. This happens in April and + October every year. Stable release lines beginning in October each year have + a maximum support life of 8 months. Stable release lines beginning in April + each year will convert to LTS (see below) after 6 months and receive further + support for 30 months. +* **LTS**: Releases that receive Long-term Support, with a focus on stability + and security. Every second Stable release line (major version) will become an + LTS line and receive 18 months of _Active LTS_ support and a further 12 + months of _Maintenance_. LTS release lines are given alphabetically + ordered codenames, begining with v4 Argon. LTS releases are less frequent + and will attempt to maintain consistent major and minor version numbers, + only incrementing patch version numbers. There are no breaking changes or + feature additions, except in some special circumstances. More information + can be found in the [LTS README](https://github.com/nodejs/LTS/). +* **Nightly**: Versions of code in this repository on the current Stable + branch, automatically built every 24-hours where changes exist. Use with + caution. ## Download Binaries, installers, and source tarballs are available at . -**Releases** are available at , listed under -their version string. The symlink -will point to the latest release directory. +**Stable** and **LTS** releases are available at +, listed under their version strings. +The [latest](https://nodejs.org/download/release/latest/) directory is an +alias for the latest Stable release. The latest LTS release from an LTS +line is available in the form: latest-lts-_codename_. For example: + **Nightly** builds are available at , listed under their version @@ -28,11 +58,12 @@ string which includes their date (in UTC time) and the commit SHA at the HEAD of the release. **API documentation** is available in each release and nightly -directory under _docs_. points to the latest version. +directory under _docs_. points to the API +documentation of the latest stable version. ### Verifying Binaries -Release and nightly download directories all contain a *SHASUM256.txt* +Stable, LTS and Nightly download directories all contain a *SHASUM256.txt* file that lists the SHA checksums for each file available for download. To check that a downloaded file matches the checksum, run it through `sha256sum` with a command such as: @@ -44,9 +75,9 @@ $ grep node-vx.y.z.tar.gz SHASUMS256.txt | sha256sum -c - _(Where "node-vx.y.z.tar.gz" is the name of the file you have downloaded)_ -Additionally, releases (not nightlies) have GPG signed copies of -SHASUM256.txt files available as SHASUM256.txt.asc. You can use `gpg` -to verify that the file has not been tampered with. +Additionally, Stable and LTS releases (not Nightlies) have GPG signed +copies of SHASUM256.txt files available as SHASUM256.txt.asc. You can use +`gpg` to verify that the file has not been tampered with. To verify a SHASUM256.txt.asc, you will first need to import all of the GPG keys of individuals authorized to create releases. They are @@ -226,6 +257,9 @@ Windows: $ pkg-config --modversion icu-i18n && ./configure --with-intl=system-icu ``` +If you are cross compiling, your `pkg-config` must be able to supply a path +that works for both your host and target environments. + #### Build with a specific ICU: You can find other ICU releases at @@ -295,7 +329,9 @@ Instructions: Appendix A in the [security policy] (http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140sp/140sp1747.pdf). The only exception is that `./config no-asm` can be - used in place of `./config` ) + used in place of `./config`, and the FIPSDIR environment variable + may be used to specify a non-standard install folder for the + validated module, as per User Guide sections 4.2.1, 4.2.2, and 4.2.3. 6. Get into Node.js checkout folder 7. `./configure --openssl-fips=/path/to/openssl-fips/installdir` For example on ubuntu 12 the installation directory was @@ -305,6 +341,7 @@ Instructions: ## Resources for Newcomers +* [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md) * [CONTRIBUTING.md](./CONTRIBUTING.md) * [GOVERNANCE.md](./GOVERNANCE.md) * IRC: @@ -316,7 +353,7 @@ Instructions: All security bugs in node.js are taken seriously and should be reported by emailing security@nodejs.org. This will be delivered to a subset of the project team who handle security issues. Please don't disclose security bugs -public until they have been handled by the security team. +publicly until they have been handled by the security team. Your email will be acknowledged within 24 hours, and you’ll receive a more detailed response to your email within 48 hours indicating the next steps in diff --git a/configure b/configure index 2e4cc087c14aee..51673e3fa96a0e 100755 --- a/configure +++ b/configure @@ -86,6 +86,14 @@ parser.add_option("--fully-static", help="Generate an executable without external dynamic libraries. This " "will not work on OSX when using default compilation environment") +parser.add_option("--enable-vtune-profiling", + action="store_true", + dest="enable_vtune_profiling", + help="Enable profiling support for Intel Vtune profiler to profile" + "JavaScript code executed in nodejs. This feature is only available " + "for ia32, x32 or x64 platform.") + + parser.add_option("--link-module", action="append", dest="linked_module", @@ -679,6 +687,15 @@ def configure_node(o): o['variables']['node_core_target_name'] = 'node_base' o['variables']['node_target_type'] = 'static_library' + if target_arch in ('x86', 'x64', 'ia32', 'x32'): + o['variables']['node_enable_v8_vtunejit'] = b(options.enable_vtune_profiling) + elif options.enable_vtune_profiling: + raise Exception( + 'vtune profiler for JavaScript is only supported on x86, x32 or x64 ' + 'platform.') + else: + o['variables']['node_enable_v8_vtunejit'] = 'false' + if flavor in ('solaris', 'mac', 'linux', 'freebsd'): use_dtrace = not options.without_dtrace # Don't enable by default on linux and freebsd @@ -753,11 +770,15 @@ def configure_library(lib, output): if pkg_cflags: output['include_dirs'] += ( filter(None, map(str.strip, pkg_cflags.split('-I')))) + elif options.__dict__[shared_lib + '_includes']: + output['include_dirs'] += [options.__dict__[shared_lib + '_includes']] # libpath needs to be provided ahead libraries if pkg_libpath: - output['libraries'] += ( - filter(None, map(str.strip, pkg_cflags.split('-L')))) + output['libraries'] += [pkg_libpath] + elif options.__dict__[shared_lib + '_libpath']: + output['libraries'] += [ + '-L%s' % options.__dict__[shared_lib + '_libpath']] default_libs = getattr(options, shared_lib + '_libname') default_libs = map('-l{0}'.format, default_libs.split(',')) @@ -773,7 +794,7 @@ def configure_v8(o): o['variables']['v8_no_strict_aliasing'] = 1 # Work around compiler bugs. o['variables']['v8_optimized_debug'] = 0 # Compile with -O0 in debug builds. o['variables']['v8_random_seed'] = 0 # Use a random seed for hash tables. - o['variables']['v8_use_snapshot'] = 0 if options.without_snapshot else 1 + o['variables']['v8_use_snapshot'] = 'false' if options.without_snapshot else 'true' def configure_openssl(o): o['variables']['node_use_openssl'] = b(not options.without_ssl) diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index cc5606e8547162..337a5531e8a444 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -80,6 +80,7 @@ shell_g /tools/jsfunfuzz.zip /tools/oom_dump/oom_dump /tools/oom_dump/oom_dump.o +/tools/swarming_client /tools/visual_studio/Debug /tools/visual_studio/Release /v8.log.ll diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 72c23bcc83e0b7..9dfb07328e0c6d 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -49,6 +49,7 @@ Christopher A. Taylor Daniel Andersson Daniel James Douglas Crosher +Dusan Milosavljevic Erich Ocean Fedor Indutny Felix Geisendörfer @@ -67,6 +68,7 @@ Johan Bergström Jonathan Liu JunHo Seo Kang-Hao (Kenny) Lu +Karl Skomski Luis Reis Luke Zarko Maciej Małecki @@ -90,9 +92,11 @@ Rene Rebe Robert Mustacchi Robert Nagy Ryan Dahl +Sakthipriyan Vairamani (thefourtheye) Sandro Santilli Sanjoy Das Seo Sanghyeon +Stefan Penner Tobias Burnus Victor Costan Vlad Burlik diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index fae41a7361336f..9dfdaa3cdaa393 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -5,11 +5,14 @@ import("//build/config/android/config.gni") import("//build/config/arm.gni") import("//build/config/mips.gni") +import("//build/config/sanitizers/sanitizers.gni") # Because standalone V8 builds are not supported, assume this is part of a # Chromium build. import("//build/module_args/v8.gni") +import("snapshot_toolchain.gni") + # TODO(jochen): These will need to be user-settable to support standalone V8 # builds. v8_deprecation_warnings = false @@ -22,26 +25,16 @@ v8_interpreted_regexp = false v8_object_print = false v8_postmortem_support = false v8_use_snapshot = true -v8_target_arch = target_cpu v8_random_seed = "314159265" v8_toolset_for_d8 = "host" -# The snapshot needs to be compiled for the host, but compiled with -# a toolchain that matches the bit-width of the target. -# -# TODO(GYP): For now we only support 32-bit little-endian target builds from an -# x64 Linux host. Eventually we need to support all of the host/target -# configurations v8 runs on. -if (host_cpu == "x64" && host_os == "linux") { - if (target_cpu == "arm" || target_cpu == "mipsel" || target_cpu == "x86") { - snapshot_toolchain = "//build/toolchain/linux:clang_x86" - } else if (target_cpu == "x64") { - snapshot_toolchain = "//build/toolchain/linux:clang_x64" - } else { - assert(false, "Need environment for this arch") - } +if (is_msan) { + # Running the V8-generated code on an ARM simulator is a powerful hack that + # allows the tool to see the memory accesses from JITted code. Without this + # flag, JS code causes false positive reports from MSan. + v8_target_arch = "arm64" } else { - snapshot_toolchain = default_toolchain + v8_target_arch = target_cpu } ############################################################################### @@ -312,7 +305,6 @@ action("js2c_experimental") { "src/harmony-regexp.js", "src/harmony-reflect.js", "src/harmony-spread.js", - "src/harmony-object.js", "src/harmony-object-observe.js", "src/harmony-sharedarraybuffer.js", "src/harmony-simd.js" @@ -367,6 +359,36 @@ action("js2c_extras") { } } +action("js2c_experimental_extras") { + visibility = [ ":*" ] # Only targets in this file can depend on this. + + script = "tools/js2c.py" + + # The script depends on this other script, this rule causes a rebuild if it + # changes. + inputs = [ "tools/jsmin.py" ] + + sources = v8_experimental_extra_library_files + + outputs = [ + "$target_gen_dir/experimental-extras-libraries.cc", + ] + + args = [ + rebase_path("$target_gen_dir/experimental-extras-libraries.cc", + root_build_dir), + "EXPERIMENTAL_EXTRAS", + ] + rebase_path(sources, root_build_dir) + + if (v8_use_external_startup_data) { + outputs += [ "$target_gen_dir/libraries_experimental_extras.bin" ] + args += [ + "--startup_blob", + rebase_path("$target_gen_dir/libraries_experimental_extras.bin", root_build_dir), + ] + } +} + action("d8_js2c") { visibility = [ ":*" ] # Only targets in this file can depend on this. @@ -394,6 +416,7 @@ if (v8_use_external_startup_data) { ":js2c_code_stubs", ":js2c_experimental", ":js2c_extras", + ":js2c_experimental_extras", ] sources = [ @@ -401,6 +424,7 @@ if (v8_use_external_startup_data) { "$target_gen_dir/libraries_code_stub.bin", "$target_gen_dir/libraries_experimental.bin", "$target_gen_dir/libraries_extras.bin", + "$target_gen_dir/libraries_experimental_extras.bin", ] outputs = [ @@ -456,6 +480,7 @@ action("run_mksnapshot") { "--log-snapshot-positions", "--logfile", rebase_path("$target_gen_dir/snapshot.log", root_build_dir), + "--startup_src", rebase_path("$target_gen_dir/snapshot.cc", root_build_dir), ] @@ -487,6 +512,7 @@ source_set("v8_nosnapshot") { ":js2c_code_stubs", ":js2c_experimental", ":js2c_extras", + ":js2c_experimental_extras", ":v8_base", ] @@ -495,6 +521,7 @@ source_set("v8_nosnapshot") { "$target_gen_dir/code-stub-libraries.cc", "$target_gen_dir/experimental-libraries.cc", "$target_gen_dir/extras-libraries.cc", + "$target_gen_dir/experimental-extras-libraries.cc", "src/snapshot/snapshot-empty.cc", ] @@ -520,6 +547,7 @@ source_set("v8_snapshot") { ":js2c_code_stubs", ":js2c_experimental", ":js2c_extras", + ":js2c_experimental_extras", ":v8_base", ] public_deps = [ @@ -533,6 +561,7 @@ source_set("v8_snapshot") { "$target_gen_dir/code-stub-libraries.cc", "$target_gen_dir/experimental-libraries.cc", "$target_gen_dir/extras-libraries.cc", + "$target_gen_dir/experimental-extras-libraries.cc", "$target_gen_dir/snapshot.cc", ] @@ -554,6 +583,7 @@ if (v8_use_external_startup_data) { ":js2c_code_stubs", ":js2c_experimental", ":js2c_extras", + ":js2c_experimental_extras", ":v8_base", ] public_deps = [ @@ -594,8 +624,6 @@ source_set("v8_base") { "src/allocation.h", "src/allocation-site-scopes.cc", "src/allocation-site-scopes.h", - "src/allocation-tracker.cc", - "src/allocation-tracker.h", "src/api.cc", "src/api.h", "src/api-natives.cc", @@ -606,6 +634,8 @@ source_set("v8_base") { "src/assembler.h", "src/assert-scope.h", "src/assert-scope.cc", + "src/ast-expression-visitor.cc", + "src/ast-expression-visitor.h", "src/ast-literal-reindexer.cc", "src/ast-literal-reindexer.h", "src/ast-numbering.cc", @@ -614,6 +644,7 @@ source_set("v8_base") { "src/ast-value-factory.h", "src/ast.cc", "src/ast.h", + "src/atomic-utils.h", "src/background-parsing-task.cc", "src/background-parsing-task.h", "src/bailout-reason.cc", @@ -638,14 +669,11 @@ source_set("v8_base") { "src/char-predicates-inl.h", "src/char-predicates.h", "src/checks.h", - "src/circular-queue-inl.h", - "src/circular-queue.h", "src/code-factory.cc", "src/code-factory.h", "src/code-stubs.cc", "src/code-stubs.h", "src/code-stubs-hydrogen.cc", - "src/code.h", "src/codegen.cc", "src/codegen.h", "src/compilation-cache.cc", @@ -664,6 +692,8 @@ source_set("v8_base") { "src/compiler/ast-loop-assignment-analyzer.h", "src/compiler/basic-block-instrumentor.cc", "src/compiler/basic-block-instrumentor.h", + "src/compiler/bytecode-graph-builder.cc", + "src/compiler/bytecode-graph-builder.h", "src/compiler/change-lowering.cc", "src/compiler/change-lowering.h", "src/compiler/c-linkage.cc", @@ -743,6 +773,8 @@ source_set("v8_base") { "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/liveness-analyzer.cc", "src/compiler/liveness-analyzer.h", "src/compiler/load-elimination.cc", @@ -781,8 +813,6 @@ source_set("v8_base") { "src/compiler/pipeline.h", "src/compiler/pipeline-statistics.cc", "src/compiler/pipeline-statistics.h", - "src/compiler/preprocess-live-ranges.cc", - "src/compiler/preprocess-live-ranges.h", "src/compiler/raw-machine-assembler.cc", "src/compiler/raw-machine-assembler.h", "src/compiler/register-allocator.cc", @@ -822,6 +852,7 @@ source_set("v8_base") { "src/compiler.h", "src/context-measure.cc", "src/context-measure.h", + "src/contexts-inl.h", "src/contexts.cc", "src/contexts.h", "src/conversions-inl.h", @@ -829,9 +860,6 @@ source_set("v8_base") { "src/conversions.h", "src/counters.cc", "src/counters.h", - "src/cpu-profiler-inl.h", - "src/cpu-profiler.cc", - "src/cpu-profiler.h", "src/date.cc", "src/date.h", "src/dateparser-inl.h", @@ -904,11 +932,8 @@ source_set("v8_base") { "src/handles.cc", "src/handles.h", "src/hashmap.h", - "src/heap-profiler.cc", - "src/heap-profiler.h", - "src/heap-snapshot-generator-inl.h", - "src/heap-snapshot-generator.cc", - "src/heap-snapshot-generator.h", + "src/heap/array-buffer-tracker.cc", + "src/heap/array-buffer-tracker.h", "src/heap/gc-idle-time-handler.cc", "src/heap/gc-idle-time-handler.h", "src/heap/gc-tracer.cc", @@ -916,8 +941,8 @@ source_set("v8_base") { "src/heap/heap-inl.h", "src/heap/heap.cc", "src/heap/heap.h", - "src/heap/identity-map.cc", - "src/heap/identity-map.h", + "src/heap/incremental-marking-job.cc", + "src/heap/incremental-marking-job.h", "src/heap/incremental-marking.cc", "src/heap/incremental-marking.h", "src/heap/mark-compact-inl.h", @@ -925,9 +950,18 @@ source_set("v8_base") { "src/heap/mark-compact.h", "src/heap/memory-reducer.cc", "src/heap/memory-reducer.h", + "src/heap/object-stats.cc", + "src/heap/object-stats.h", "src/heap/objects-visiting-inl.h", "src/heap/objects-visiting.cc", "src/heap/objects-visiting.h", + "src/heap/scavenge-job.h", + "src/heap/scavenge-job.cc", + "src/heap/scavenger-inl.h", + "src/heap/scavenger.cc", + "src/heap/scavenger.h", + "src/heap/slots-buffer.cc", + "src/heap/slots-buffer.h", "src/heap/spaces-inl.h", "src/heap/spaces.cc", "src/heap/spaces.h", @@ -1005,16 +1039,21 @@ source_set("v8_base") { "src/ic/ic-compiler.h", "src/ic/stub-cache.cc", "src/ic/stub-cache.h", + "src/identity-map.cc", + "src/identity-map.h", "src/interface-descriptors.cc", "src/interface-descriptors.h", "src/interpreter/bytecodes.cc", "src/interpreter/bytecodes.h", "src/interpreter/bytecode-array-builder.cc", "src/interpreter/bytecode-array-builder.h", + "src/interpreter/bytecode-array-iterator.cc", + "src/interpreter/bytecode-array-iterator.h", "src/interpreter/bytecode-generator.cc", "src/interpreter/bytecode-generator.h", "src/interpreter/interpreter.cc", "src/interpreter/interpreter.h", + "src/isolate-inl.h", "src/isolate.cc", "src/isolate.h", "src/json-parser.h", @@ -1066,9 +1105,25 @@ source_set("v8_base") { "src/preparser.h", "src/prettyprinter.cc", "src/prettyprinter.h", - "src/profile-generator-inl.h", - "src/profile-generator.cc", - "src/profile-generator.h", + "src/profiler/allocation-tracker.cc", + "src/profiler/allocation-tracker.h", + "src/profiler/circular-queue-inl.h", + "src/profiler/circular-queue.h", + "src/profiler/cpu-profiler-inl.h", + "src/profiler/cpu-profiler.cc", + "src/profiler/cpu-profiler.h", + "src/profiler/heap-profiler.cc", + "src/profiler/heap-profiler.h", + "src/profiler/heap-snapshot-generator-inl.h", + "src/profiler/heap-snapshot-generator.cc", + "src/profiler/heap-snapshot-generator.h", + "src/profiler/profile-generator-inl.h", + "src/profiler/profile-generator.cc", + "src/profiler/profile-generator.h", + "src/profiler/sampler.cc", + "src/profiler/sampler.h", + "src/profiler/unbound-queue-inl.h", + "src/profiler/unbound-queue.h", "src/property-details.h", "src/property.cc", "src/property.h", @@ -1105,6 +1160,7 @@ source_set("v8_base") { "src/runtime/runtime-generator.cc", "src/runtime/runtime-i18n.cc", "src/runtime/runtime-internal.cc", + "src/runtime/runtime-interpreter.cc", "src/runtime/runtime-json.cc", "src/runtime/runtime-literals.cc", "src/runtime/runtime-liveedit.cc", @@ -1112,6 +1168,7 @@ source_set("v8_base") { "src/runtime/runtime-numbers.cc", "src/runtime/runtime-object.cc", "src/runtime/runtime-observe.cc", + "src/runtime/runtime-operators.cc", "src/runtime/runtime-proxy.cc", "src/runtime/runtime-regexp.cc", "src/runtime/runtime-scopes.cc", @@ -1126,8 +1183,6 @@ source_set("v8_base") { "src/runtime/runtime.h", "src/safepoint-table.cc", "src/safepoint-table.h", - "src/sampler.cc", - "src/sampler.h", "src/scanner-character-streams.cc", "src/scanner-character-streams.h", "src/scanner.cc", @@ -1173,13 +1228,17 @@ source_set("v8_base") { "src/types-inl.h", "src/types.cc", "src/types.h", + "src/typing-asm.cc", + "src/typing-asm.h", + "src/typing-reset.cc", + "src/typing-reset.h", "src/typing.cc", "src/typing.h", - "src/unbound-queue-inl.h", - "src/unbound-queue.h", "src/unicode-inl.h", "src/unicode.cc", "src/unicode.h", + "src/unicode-cache-inl.h", + "src/unicode-cache.h", "src/unicode-decoder.cc", "src/unicode-decoder.h", "src/unique.h", @@ -1196,6 +1255,7 @@ source_set("v8_base") { "src/version.h", "src/vm-state-inl.h", "src/vm-state.h", + "src/zone-type-cache.h", "src/zone.cc", "src/zone.h", "src/zone-allocator.h", @@ -1335,6 +1395,9 @@ source_set("v8_base") { "src/arm64/decoder-arm64.cc", "src/arm64/decoder-arm64.h", "src/arm64/decoder-arm64-inl.h", + "src/arm64/delayed-masm-arm64.cc", + "src/arm64/delayed-masm-arm64.h", + "src/arm64/delayed-masm-arm64-inl.h", "src/arm64/deoptimizer-arm64.cc", "src/arm64/disasm-arm64.cc", "src/arm64/disasm-arm64.h", @@ -1462,7 +1525,7 @@ source_set("v8_base") { ] if (!is_debug) { - configs -= [ "//build/config/compiler:optimize" ] + configs -= [ "//build/config/compiler:default_optimization" ] configs += [ "//build/config/compiler:optimize_max" ] } @@ -1561,7 +1624,7 @@ source_set("v8_libbase") { ] if (!is_debug) { - configs -= [ "//build/config/compiler:optimize" ] + configs -= [ "//build/config/compiler:default_optimization" ] configs += [ "//build/config/compiler:optimize_max" ] } @@ -1628,7 +1691,7 @@ source_set("v8_libplatform") { ] if (!is_debug) { - configs -= [ "//build/config/compiler:optimize" ] + configs -= [ "//build/config/compiler:default_optimization" ] configs += [ "//build/config/compiler:optimize_max" ] } @@ -1670,35 +1733,25 @@ if (current_toolchain == snapshot_toolchain) { # Public targets # +if (v8_use_snapshot && v8_use_external_startup_data) { + snapshot_target = ":v8_external_snapshot" +} else if (v8_use_snapshot) { + snapshot_target = ":v8_snapshot" +} else { + assert(!v8_use_external_startup_data) + snapshot_target = ":v8_nosnapshot" +} + if (is_component_build) { component("v8") { sources = [ "src/v8dll-main.cc", ] - if (v8_use_snapshot && v8_use_external_startup_data) { - deps = [ - ":v8_base", - ] - public_deps = [ - ":v8_external_snapshot", - ] - } else if (v8_use_snapshot) { - deps = [ - ":v8_base", - ] - # v8_snapshot should be public so downstream targets can declare the - # snapshot file as their input. - public_deps = [ - ":v8_snapshot", - ] - } else { - assert(!v8_use_external_startup_data) - deps = [ - ":v8_base", - ":v8_nosnapshot", - ] - } + public_deps = [ + ":v8_base", + snapshot_target, + ] configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] @@ -1717,31 +1770,16 @@ if (is_component_build) { } } else { group("v8") { - if (v8_use_snapshot && v8_use_external_startup_data) { - deps = [ - ":v8_base", - ":v8_external_snapshot", - ] - } else if (v8_use_snapshot) { - deps = [ - ":v8_base", - ] - public_deps = [ - ":v8_snapshot", - ] - } else { - assert(!v8_use_external_startup_data) - deps = [ - ":v8_base", - ":v8_nosnapshot", - ] - } - + public_deps = [ + ":v8_base", + snapshot_target, + ] public_configs = [ ":external_config" ] } } if ((current_toolchain == host_toolchain && v8_toolset_for_d8 == "host") || + (current_toolchain == snapshot_toolchain && v8_toolset_for_d8 == "host") || (current_toolchain != host_toolchain && v8_toolset_for_d8 == "target")) { executable("d8") { sources = [ diff --git a/deps/v8/ChangeLog b/deps/v8/ChangeLog index 0dff96acc769d6..3c6e5d8850b754 100644 --- a/deps/v8/ChangeLog +++ b/deps/v8/ChangeLog @@ -1,1210 +1,7 @@ -2015-08-19: Version 4.6.85 +2015-05-17: Sentinel - Performance and stability improvements on all platforms. - - -2015-08-19: Version 4.6.84 - - Performance and stability improvements on all platforms. - - -2015-08-19: Version 4.6.83 - - Performance and stability improvements on all platforms. - - -2015-08-18: Version 4.6.82 - - Performance and stability improvements on all platforms. - - -2015-08-18: Version 4.6.81 - - Performance and stability improvements on all platforms. - - -2015-08-18: Version 4.6.80 - - Filter out slot buffer slots, that point to SMIs in dead objects - (Chromium issues 454297, 519577). - - Performance and stability improvements on all platforms. - - -2015-08-17: Version 4.6.79 - - Performance and stability improvements on all platforms. - - -2015-08-17: Version 4.6.78 - - Put V8 extras into the snapshot. - - Performance and stability improvements on all platforms. - - -2015-08-15: Version 4.6.77 - - Performance and stability improvements on all platforms. - - -2015-08-14: Version 4.6.76 - - Performance and stability improvements on all platforms. - - -2015-08-14: Version 4.6.75 - - Performance and stability improvements on all platforms. - - -2015-08-14: Version 4.6.74 - - Performance and stability improvements on all platforms. - - -2015-08-13: Version 4.6.73 - - Performance and stability improvements on all platforms. - - -2015-08-13: Version 4.6.72 - - Stage sloppy classes (issue 3305). - - Performance and stability improvements on all platforms. - - -2015-08-13: Version 4.6.71 - - Performance and stability improvements on all platforms. - - -2015-08-12: Version 4.6.70 - - Performance and stability improvements on all platforms. - - -2015-08-12: Version 4.6.69 - - Stage --harmony-array-includes (issue 3575). - - Performance and stability improvements on all platforms. - - -2015-08-12: Version 4.6.68 - - Use a new lexical context for sloppy-mode eval (issue 4288). - - Add includes method to typed arrays (issue 3575). - - Performance and stability improvements on all platforms. - - -2015-08-11: Version 4.6.67 - - Performance and stability improvements on all platforms. - - -2015-08-11: Version 4.6.66 - - Performance and stability improvements on all platforms. - - -2015-08-11: Version 4.6.65 - - Performance and stability improvements on all platforms. - - -2015-08-10: Version 4.6.64 - - Disable --global-var-shortcuts (Chromium issue 517778). - - Performance and stability improvements on all platforms. - - -2015-08-10: Version 4.6.63 - - Performance and stability improvements on all platforms. - - -2015-08-09: Version 4.6.62 - - Performance and stability improvements on all platforms. - - -2015-08-08: Version 4.6.61 - - Performance and stability improvements on all platforms. - - -2015-08-08: Version 4.6.60 - - [IC] Make SeededNumberDictionary::UpdateMaxNumberKey prototype aware - (issue 4335). - - Performance and stability improvements on all platforms. - - -2015-08-08: Version 4.6.59 - - Performance and stability improvements on all platforms. - - -2015-08-07: Version 4.6.58 - - Performance and stability improvements on all platforms. - - -2015-08-07: Version 4.6.57 - - Rename "extras exports" to "extras binding" (Chromium issue 507133). - - Performance and stability improvements on all platforms. - - -2015-08-07: Version 4.6.56 - - Performance and stability improvements on all platforms. - - -2015-08-06: Version 4.6.55 - - Fix off-by-one in Array.concat's max index check (Chromium issue - 516592). - - Performance and stability improvements on all platforms. - - -2015-08-06: Version 4.6.54 - - Performance and stability improvements on all platforms. - - -2015-08-06: Version 4.6.53 - - Performance and stability improvements on all platforms. - - -2015-08-05: Version 4.6.52 - - Ship --harmony-new-target (issue 3887). - - Performance and stability improvements on all platforms. - - -2015-08-04: Version 4.6.51 - - Performance and stability improvements on all platforms. - - -2015-08-04: Version 4.6.50 - - Performance and stability improvements on all platforms. - - -2015-08-03: Version 4.6.49 - - SIMD.js Add the other SIMD Phase 1 types (issue 4124). - - Performance and stability improvements on all platforms. - - -2015-08-03: Version 4.6.48 - - Performance and stability improvements on all platforms. - - -2015-08-03: Version 4.6.47 - - Performance and stability improvements on all platforms. - - -2015-08-01: Version 4.6.46 - - Performance and stability improvements on all platforms. - - -2015-08-01: Version 4.6.45 - - Performance and stability improvements on all platforms. - - -2015-08-01: Version 4.6.44 - - Performance and stability improvements on all platforms. - - -2015-07-31: Version 4.6.43 - - Performance and stability improvements on all platforms. - - -2015-07-31: Version 4.6.42 - - Performance and stability improvements on all platforms. - - -2015-07-31: Version 4.6.41 - - Performance and stability improvements on all platforms. - - -2015-07-30: Version 4.6.40 - - Pass the kGCCallbackFlagForced flag when invoking - Heap::CollectAllGarbage from AdjustAmountOfExternalAllocatedMemory - (Chromium issue 511294). - - Performance and stability improvements on all platforms. - - -2015-07-30: Version 4.6.39 - - Performance and stability improvements on all platforms. - - -2015-07-30: Version 4.6.38 - - Performance and stability improvements on all platforms. - - -2015-07-29: Version 4.6.37 - - Performance and stability improvements on all platforms. - - -2015-07-28: Version 4.6.36 - - Fix prototype registration upon SlowToFast migration (Chromium issue - 513602). - - Bugfix: Incorrect type feedback vector structure on recompile (Chromium - issue 514526). - - Reland of "Remove ExternalArray, derived types, and element kinds" - (issue 3996). - - Performance and stability improvements on all platforms. - - -2015-07-28: Version 4.6.35 - - Performance and stability improvements on all platforms. - - -2015-07-28: Version 4.6.34 - - Remove ExternalArray, derived types, and element kinds (issue 3996). - - Make V8 compile with MSVS 2015 (issue 4326). - - Performance and stability improvements on all platforms. - - -2015-07-27: Version 4.6.33 - - Performance and stability improvements on all platforms. - - -2015-07-26: Version 4.6.32 - - Performance and stability improvements on all platforms. - - -2015-07-25: Version 4.6.31 - - Performance and stability improvements on all platforms. - - -2015-07-25: Version 4.6.30 - - Make dates default to the local timezone if none specified (issue 4242, - Chromium issue 391730). - - Performance and stability improvements on all platforms. - - -2015-07-24: Version 4.6.29 - - Performance and stability improvements on all platforms. - - -2015-07-24: Version 4.6.28 - - Performance and stability improvements on all platforms. - - -2015-07-23: Version 4.6.27 - - Fix check for a date with a 24th hour (Chromium issue 174609). - - Performance and stability improvements on all platforms. - - -2015-07-23: Version 4.6.26 - - Performance and stability improvements on all platforms. - - -2015-07-22: Version 4.6.25 - - Performance and stability improvements on all platforms. - - -2015-07-22: Version 4.6.24 - - Performance and stability improvements on all platforms. - - -2015-07-22: Version 4.6.23 - - Performance and stability improvements on all platforms. - - -2015-07-21: Version 4.6.22 - - Performance and stability improvements on all platforms. - - -2015-07-21: Version 4.6.21 - - Performance and stability improvements on all platforms. - - -2015-07-21: Version 4.6.20 - - Don't run the second pass of the pending phantom callbacks if the heap - has been torn down (Chromium issue 511204). - - Debugger: prepare code for debugging on a per-function basis (issue - 4132). - - Performance and stability improvements on all platforms. - - -2015-07-20: Version 4.6.19 - - Performance and stability improvements on all platforms. - - -2015-07-20: Version 4.6.18 - - Performance and stability improvements on all platforms. - - -2015-07-19: Version 4.6.17 - - Performance and stability improvements on all platforms. - - -2015-07-18: Version 4.6.16 - - Performance and stability improvements on all platforms. - - -2015-07-18: Version 4.6.15 - - Make NumberFormat use the ICU currency data, fix bug in NumberFormat - (Chromium issues 304722, 435465, 473104). - - Properly fix enumerate / Object.keys wrt access checked objects - (Chromium issue 509936). - - Fix object enumeration wrt access checked objects (Chromium issue - 509936). - - Fix DefineOwnProperty for data properties wrt failed access checks - (Chromium issue 509936). - - Fix GetOwnPropertyNames on access-checked objects (Chromium issue - 509936). - - Fix getPrototypeOf for access checked objects (Chromium issue 509936). - - Delete APIs deprecated since last release. - - Performance and stability improvements on all platforms. - - -2015-07-17: Version 4.6.14 - - Array.prototype.reverse should call [[HasProperty]] on elements before - [[Get]] (issue 4223). - - In RegExp, lastIndex is read with ToLength, not ToInteger (issue 4244). - - Stage --harmony-new-target (issue 3887). - - Re-ship harmony spread calls and spread arrays (issue 3018). - - Expose SIMD.Float32x4 type to Javascript. This CL exposes the - constructor function, defines type related information, and implements - value type semantics. It also refactors test/mjsunit/samevalue.js to - test SameValue and SameValueZero (issue 4124). - - Performance and stability improvements on all platforms. - - -2015-07-17: Version 4.6.13 - - Performance and stability improvements on all platforms. - - -2015-07-16: Version 4.6.12 - - Performance and stability improvements on all platforms. - - -2015-07-16: Version 4.6.11 - - Performance and stability improvements on all platforms. - - -2015-07-16: Version 4.6.10 - - Expose SIMD.Float32x4 type to Javascript. This CL exposes the - constructor function, defines type related information, and implements - value type semantics. It also refactors test/mjsunit/samevalue.js to - test SameValue and SameValueZero (issue 4124). - - Fix runtime-atomics for Win 10 SDK and remove volatile (Chromium issues - 440500, 491424). - - Performance and stability improvements on all platforms. - - -2015-07-15: Version 4.6.9 - - Let the second pass phantom callbacks run in a separate task on the - foreground thread. - - Performance and stability improvements on all platforms. - - -2015-07-15: Version 4.6.8 - - Optimize String.prototype.includes (issue 3807). - - Unship spread calls and spread arrays (issue 4298). - - Performance and stability improvements on all platforms. - - -2015-07-15: Version 4.6.7 - - Performance and stability improvements on all platforms. - - -2015-07-14: Version 4.6.6 - - Performance and stability improvements on all platforms. - - -2015-07-14: Version 4.6.5 - - Performance and stability improvements on all platforms. - - -2015-07-14: Version 4.6.4 - - MIPS64: Fix BlockTrampolinePoolFor() to emit trampoline before blocking, - if needed (issue 4294). - - Add convenience method for converting v8::PersistentBase to v8::Local. - - Performance and stability improvements on all platforms. - - -2015-07-13: Version 4.6.3 - - MIPS: Fix BlockTrampolinePoolFor() to emit trampoline before blocking, - if needed (issue 4294). - - Performance and stability improvements on all platforms. - - -2015-07-13: Version 4.6.2 - - [arm] CheckConstPool between TurboFan instructions (issue 4292). - - Fix keyed access of primitive objects in the runtime. For now it uses a - pretty slow path for accessing strings by wrapping it into a new - temporary wrapper (issues 3088, 4042). - - Performance and stability improvements on all platforms. - - -2015-07-12: Version 4.6.1 - - Performance and stability improvements on all platforms. - - -2015-07-09: Version 4.5.107 - - [arm] Don't call branch_offset within CheckConstPool (issue 4292). - - [arm] Fix missing CheckBuffer for branches (issue 4292). - - Performance and stability improvements on all platforms. - - -2015-07-09: Version 4.5.106 - - Performance and stability improvements on all platforms. - - -2015-07-09: Version 4.5.105 - - Guard @@isConcatSpreadable behind a flag (Chromium issue 507553). - - Performance and stability improvements on all platforms. - - -2015-07-08: Version 4.5.104 - - [x64] Fix handling of Smi constants in LSubI and LBitI (Chromium issue - 478612). - - Performance and stability improvements on all platforms. - - -2015-07-08: Version 4.5.103 - - Performance and stability improvements on all platforms. - - -2015-07-08: Version 4.5.102 - - Performance and stability improvements on all platforms. - - -2015-07-07: Version 4.5.101 - - Move compatible receiver check from CompileHandler to UpdateCaches - (Chromium issue 505374). - - Performance and stability improvements on all platforms. - - -2015-07-07: Version 4.5.100 - - Performance and stability improvements on all platforms. - - -2015-07-07: Version 4.5.99 - - unicode-decoder: fix out-of-band write in utf16 (issue 4274). - - Performance and stability improvements on all platforms. - - -2015-07-06: Version 4.5.98 - - Performance and stability improvements on all platforms. - - -2015-07-04: Version 4.5.97 - - Performance and stability improvements on all platforms. - - -2015-07-03: Version 4.5.96 - - Performance and stability improvements on all platforms. - - -2015-07-03: Version 4.5.95 - - Performance and stability improvements on all platforms. - - -2015-07-02: Version 4.5.94 - - Performance and stability improvements on all platforms. - - -2015-07-02: Version 4.5.93 - - Include Harmony Array/TypedArray methods unconditionally (Chromium issue - 504629). - - Performance and stability improvements on all platforms. - - -2015-07-02: Version 4.5.92 - - Performance and stability improvements on all platforms. - - -2015-07-01: Version 4.5.91 - - Performance and stability improvements on all platforms. - - -2015-07-01: Version 4.5.90 - - Performance and stability improvements on all platforms. - - -2015-07-01: Version 4.5.89 - - Performance and stability improvements on all platforms. - - -2015-06-30: Version 4.5.88 - - Performance and stability improvements on all platforms. - - -2015-06-30: Version 4.5.87 - - Performance and stability improvements on all platforms. - - -2015-06-30: Version 4.5.86 - - Ensure mjsunit tests use dashes not underscores in flags directives - (Chromium issue 505228). - - Performance and stability improvements on all platforms. - - -2015-06-29: Version 4.5.85 - - Fix flag convention in handle count tests and comment (Chromium issue - 505228). - - Performance and stability improvements on all platforms. - - -2015-06-29: Version 4.5.84 - - Performance and stability improvements on all platforms. - - -2015-06-27: Version 4.5.83 - - Performance and stability improvements on all platforms. - - -2015-06-26: Version 4.5.82 - - Performance and stability improvements on all platforms. - - -2015-06-26: Version 4.5.81 - - Remove obsolete options in ScriptCompiler::CompileOptions (Chromium - issue 399580). - - Performance and stability improvements on all platforms. - - -2015-06-25: Version 4.5.80 - - Performance and stability improvements on all platforms. - - -2015-06-25: Version 4.5.79 - - Performance and stability improvements on all platforms. - - -2015-06-25: Version 4.5.78 - - Serializer: clear next link in weak cells (Chromium issue 503552). - - Performance and stability improvements on all platforms. - - -2015-06-24: Version 4.5.77 - - Performance and stability improvements on all platforms. - - -2015-06-24: Version 4.5.76 - - Performance and stability improvements on all platforms. - - -2015-06-24: Version 4.5.75 - - Date() should not depend on Date.prototype.toString (issue 4225). - - Performance and stability improvements on all platforms. - - -2015-06-23: Version 4.5.74 - - Expose Map/Set methods through the API (issue 3340). - - [turbofan] NaN is never truish (issue 4207). - - Performance and stability improvements on all platforms. - - -2015-06-23: Version 4.5.73 - - Re-ship Harmony Array/TypedArray methods (issue 3578). - - Performance and stability improvements on all platforms. - - -2015-06-23: Version 4.5.72 - - Performance and stability improvements on all platforms. - - -2015-06-23: Version 4.5.71 - - Performance and stability improvements on all platforms. - - -2015-06-20: Version 4.5.70 - - Ship Harmony Array/TypedArray methods (issue 3578). - - Performance and stability improvements on all platforms. - - -2015-06-20: Version 4.5.69 - - Ship arrow functions (issue 2700). - - Performance and stability improvements on all platforms. - - -2015-06-19: Version 4.5.68 - - Performance and stability improvements on all platforms. - - -2015-06-19: Version 4.5.67 - - Performance and stability improvements on all platforms. - - -2015-06-19: Version 4.5.66 - - Ship arrow functions (issue 2700). - - Performance and stability improvements on all platforms. - - -2015-06-18: Version 4.5.65 - - Performance and stability improvements on all platforms. - - -2015-06-18: Version 4.5.64 - - Performance and stability improvements on all platforms. - - -2015-06-18: Version 4.5.63 - - Performance and stability improvements on all platforms. - - -2015-06-17: Version 4.5.62 - - Hydrogen object literals: always initialize in-object properties - (Chromium issue 500497). - - Performance and stability improvements on all platforms. - - -2015-06-17: Version 4.5.61 - - Add %TypedArray% to proto chain (issue 4085). - - Performance and stability improvements on all platforms. - - -2015-06-17: Version 4.5.60 - - Performance and stability improvements on all platforms. - - -2015-06-17: Version 4.5.59 - - [crankshaft] Fix wrong bailout points in for-in loop body (Chromium - issue 500435). - - Performance and stability improvements on all platforms. - - -2015-06-16: Version 4.5.58 - - Performance and stability improvements on all platforms. - - -2015-06-16: Version 4.5.57 - - Inline code generation for %_IsTypedArray (issue 4085). - - Allow TypedArrays to be initialized with iterables (issue 4090). - - Performance and stability improvements on all platforms. - - -2015-06-15: Version 4.5.56 - - Performance and stability improvements on all platforms. - - -2015-06-15: Version 4.5.55 - - Performance and stability improvements on all platforms. - - -2015-06-14: Version 4.5.54 - - Performance and stability improvements on all platforms. - - -2015-06-13: Version 4.5.53 - - Performance and stability improvements on all platforms. - - -2015-06-12: Version 4.5.52 - - Map::TryUpdate() must be in sync with Map::Update() (issue 4173). - - Add ToObject call in Array.prototype.sort (issue 4125). - - In Array.of and Array.from, fall back to DefineOwnProperty (issue 4168). - - Performance and stability improvements on all platforms. - - -2015-06-12: Version 4.5.51 - - Performance and stability improvements on all platforms. - - -2015-06-11: Version 4.5.50 - - Performance and stability improvements on all platforms. - - -2015-06-11: Version 4.5.49 - - Performance and stability improvements on all platforms. - - -2015-06-11: Version 4.5.48 - - Support rest parameters in arrow functions (issue 2700). - - Performance and stability improvements on all platforms. - - -2015-06-10: Version 4.5.47 - - Implement %TypedArray%.prototype.slice (issue 3578). - - Performance and stability improvements on all platforms. - - -2015-06-09: Version 4.5.46 - - Stage ES6 arrow functions (issue 2700). - - Performance and stability improvements on all platforms. - - -2015-06-09: Version 4.5.45 - - Performance and stability improvements on all platforms. - - -2015-06-09: Version 4.5.44 - - Performance and stability improvements on all platforms. - - -2015-06-08: Version 4.5.43 - - [for-in] Make ForInNext and ForInFilter deal properly with exceptions - (Chromium issue 496331). - - Performance and stability improvements on all platforms. - - -2015-06-08: Version 4.5.42 - - Performance and stability improvements on all platforms. - - -2015-06-06: Version 4.5.41 - - Performance and stability improvements on all platforms. - - -2015-06-05: Version 4.5.40 - - Performance and stability improvements on all platforms. - - -2015-06-05: Version 4.5.39 - - Stage ES6 Array and TypedArray methods (issue 3578). - - Performance and stability improvements on all platforms. - - -2015-06-05: Version 4.5.38 - - Implement %TypedArray%.prototype.{reduce,reduceRight} (issue 3578). - - Add support for Embedded Constant Pools for PPC and Arm (Chromium issue - 478811). - - Performance and stability improvements on all platforms. - - -2015-06-04: Version 4.5.37 - - Performance and stability improvements on all platforms. - - -2015-06-04: Version 4.5.36 - - Performance and stability improvements on all platforms. - - -2015-06-04: Version 4.5.35 - - Flatten the Arrays returned and consumed by the v8::Map API (Chromium - issue 478263). - - Performance and stability improvements on all platforms. - - -2015-06-03: Version 4.5.34 - - Also allocate small typed arrays on heap when initialized from an array- - like (issue 3996). - - Implement %TypedArray%.prototype.{reduce,reduceRight} (issue 3578). - - Performance and stability improvements on all platforms. - - -2015-06-03: Version 4.5.33 - - Add support for Embedded Constant Pools for PPC and Arm (Chromium issue - 478811). - - Implement %TypedArray%.prototype.{toString,toLocaleString,join} (issue - 3578). - - Performance and stability improvements on all platforms. - - -2015-06-03: Version 4.5.32 - - Performance and stability improvements on all platforms. - - -2015-06-02: Version 4.5.31 - - Performance and stability improvements on all platforms. - - -2015-06-02: Version 4.5.30 - - Performance and stability improvements on all platforms. - - -2015-06-01: Version 4.5.29 - - Reland "Re-enable on-heap typed array allocation" (issue 3996). - - Performance and stability improvements on all platforms. - - -2015-06-01: Version 4.5.28 - - Re-enable on-heap typed array allocation (issue 3996). - - Also expose DefineOwnProperty (Chromium issue 475206). - - Performance and stability improvements on all platforms. - - -2015-06-01: Version 4.5.27 - - Performance and stability improvements on all platforms. - - -2015-05-31: Version 4.5.26 - - Performance and stability improvements on all platforms. - - -2015-05-30: Version 4.5.25 - - Performance and stability improvements on all platforms. - - -2015-05-29: Version 4.5.24 - - Debugger: consider try-finally scopes not catching wrt debug events - (Chromium issue 492522). - - Performance and stability improvements on all platforms. - - -2015-05-29: Version 4.5.23 - - Performance and stability improvements on all platforms. - - -2015-05-29: Version 4.5.22 - - Do not eagerly convert exception to string when creating a message - object (Chromium issue 490680). - - Performance and stability improvements on all platforms. - - -2015-05-28: Version 4.5.21 - - Performance and stability improvements on all platforms. - - -2015-05-28: Version 4.5.20 - - Introduce v8::Object::CreateDataProperty (Chromium issue 475206). - - Performance and stability improvements on all platforms. - - -2015-05-27: Version 4.5.19 - - Performance and stability improvements on all platforms. - - -2015-05-27: Version 4.5.18 - - Add {Map,Set}::FromArray to the API (issue 3340). - - Add {Map,Set}::AsArray to the API (issue 3340). - - Add basic API support for Map & Set (issue 3340). - - Performance and stability improvements on all platforms. - - -2015-05-26: Version 4.5.17 - - Correctly hook up materialized receiver into the evaluation context - chain (Chromium issue 491943). - - Implement bookmarks for ExternalStreamingStream (Chromium issue 470930). - - Performance and stability improvements on all platforms. - - -2015-05-26: Version 4.5.16 - - Performance and stability improvements on all platforms. - - -2015-05-26: Version 4.5.15 - - Performance and stability improvements on all platforms. - - -2015-05-23: Version 4.5.14 - - Performance and stability improvements on all platforms. - - -2015-05-22: Version 4.5.13 - - Remove v8::Private. - - Performance and stability improvements on all platforms. - - -2015-05-22: Version 4.5.12 - - Performance and stability improvements on all platforms. - - -2015-05-22: Version 4.5.11 - - Performance and stability improvements on all platforms. - - -2015-05-21: Version 4.5.10 - - Re-land %TypedArray%.prototype.{map,filter,some} (issue 3578). - - Performance and stability improvements on all platforms. - - -2015-05-21: Version 4.5.9 - - Performance and stability improvements on all platforms. - - -2015-05-20: Version 4.5.8 - - Performance and stability improvements on all platforms. - - -2015-05-20: Version 4.5.7 - - Implement %TypedArray%.{lastI,i}ndexOf (issue 3578). - - Implement %TypedArray%.prototype.sort (issue 3578). - - Implement %TypedArray%.reverse (issue 3578). - - Implement %TypedArray%.prototype.{map,filter,some,reduce,reduceRight} - (issue 3578). - - Fix has_pending_exception logic in API's Array::CloneElementAt (issue - 4103). - - Adding api to get last gc object statistics for chrome://tracing - (Chromium issue 476013). - - Fix harmless HGraph verification failure after hoisting inlined bounds - checks (Chromium issue 487608). - - Performance and stability improvements on all platforms. - - -2015-05-20: Version 4.5.6 - - Add TypedArray.from method (issue 3578). - - Performance and stability improvements on all platforms. - - -2015-05-19: Version 4.5.5 - - ARM64: Propagate notification about aborted compilation from - RegExpEngine to MacroAssembler (Chromium issue 489290). - - Performance and stability improvements on all platforms. - - -2015-05-18: Version 4.5.4 - - Performance and stability improvements on all platforms. - - -2015-05-18: Version 4.5.3 - - Performance and stability improvements on all platforms. + The ChangeLog file is no longer maintained on bleeding_edge. This + sentinel should stay on top of this list. 2015-05-17: Version 4.5.2 diff --git a/deps/v8/DEPS b/deps/v8/DEPS index c8c7de080c80d8..85d14c75fd3f5f 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -8,23 +8,25 @@ vars = { deps = { "v8/build/gyp": - Var("git_url") + "/external/gyp.git" + "@" + "6ee91ad8659871916f9aa840d42e1513befdf638", + Var("git_url") + "/external/gyp.git" + "@" + "01528c7244837168a1c80f06ff60fa5a9793c824", "v8/third_party/icu": - Var("git_url") + "/chromium/deps/icu.git" + "@" + "89dcdec16381883782b9cc9cff38e00f047a0f46", + Var("git_url") + "/chromium/deps/icu.git" + "@" + "423fc7e1107fb08ccf007c4aeb76dcab8b2747c1", "v8/buildtools": - Var("git_url") + "/chromium/buildtools.git" + "@" + "565d04e8741429fb1b4f26d102f2c6c3b849edeb", + Var("git_url") + "/chromium/buildtools.git" + "@" + "e7111440c07a883b82ffbbe6d26c744dfc6c9673", + "v8/tools/swarming_client": + Var('git_url') + '/external/swarming.client.git' + '@' + "6e5d2b21f0ac98396cd736097a985346feed1328", "v8/testing/gtest": Var("git_url") + "/external/googletest.git" + "@" + "9855a87157778d39b95eccfb201a9dc90f6d61c6", "v8/testing/gmock": Var("git_url") + "/external/googlemock.git" + "@" + "0421b6f358139f02e102c9c332ce19a33faf75be", "v8/tools/clang": - Var("git_url") + "/chromium/src/tools/clang.git" + "@" + "5b12e334ec0e571a8e1f68d028dc5427b58c17ec", + Var("git_url") + "/chromium/src/tools/clang.git" + "@" + "0150e39a3112dbc7e4c7a3ab25276b8d7781f3b6", } deps_os = { "android": { "v8/third_party/android_tools": - Var("git_url") + "/android_tools.git" + "@" + "9e9b6169a098bc19986e44fbbf65e4c29031e4bd", + Var("git_url") + "/android_tools.git" + "@" + "4238a28593b7e6178c95431f91ca8c24e45fa7eb", }, "win": { "v8/third_party/cygwin": @@ -102,6 +104,13 @@ hooks = [ 'v8/third_party/binutils/download.py', ], }, + { + # Pull gold plugin if needed or requested via GYP_DEFINES. + # Note: This must run before the clang update. + 'name': 'gold_plugin', + 'pattern': '.', + 'action': ['python', 'v8/build/download_gold_plugin.py'], + }, { # Pull clang if needed or requested via GYP_DEFINES. # Note: On Win, this should run after win_toolchain, as it may use it. diff --git a/deps/v8/Makefile b/deps/v8/Makefile index baa3b52ca67eb0..28c1af2e07f498 100644 --- a/deps/v8/Makefile +++ b/deps/v8/Makefile @@ -143,6 +143,10 @@ endif ifeq ($(deprecationwarnings), on) GYPFLAGS += -Dv8_deprecation_warnings=1 endif +# vectorstores=on +ifeq ($(vectorstores), on) + GYPFLAGS += -Dv8_vector_stores=1 +endif # imminentdeprecationwarnings=on ifeq ($(imminentdeprecationwarnings), on) GYPFLAGS += -Dv8_imminent_deprecation_warnings=1 @@ -240,7 +244,7 @@ endif # Architectures and modes to be compiled. Consider these to be internal # variables, don't override them (use the targets instead). -ARCHES = ia32 x64 x32 arm arm64 mips mipsel mips64el x87 ppc ppc64 +ARCHES = ia32 x64 x32 arm arm64 mips mipsel mips64 mips64el x87 ppc ppc64 DEFAULT_ARCHES = ia32 x64 arm MODES = release debug optdebug DEFAULT_MODES = release debug diff --git a/deps/v8/PRESUBMIT.py b/deps/v8/PRESUBMIT.py index 1bcd9922c56aed..ab9bba88455906 100644 --- a/deps/v8/PRESUBMIT.py +++ b/deps/v8/PRESUBMIT.py @@ -67,7 +67,6 @@ def _V8PresubmitChecks(input_api, output_api): input_api.PresubmitLocalPath(), 'tools')) from presubmit import CppLintProcessor from presubmit import SourceProcessor - from presubmit import CheckRuntimeVsNativesNameClashes from presubmit import CheckExternalReferenceRegistration from presubmit import CheckAuthorizedAuthor @@ -78,9 +77,6 @@ def _V8PresubmitChecks(input_api, output_api): results.append(output_api.PresubmitError( "Copyright header, trailing whitespaces and two empty lines " \ "between declarations check failed")) - if not CheckRuntimeVsNativesNameClashes(input_api.PresubmitLocalPath()): - results.append(output_api.PresubmitError( - "Runtime/natives name clash check failed")) if not CheckExternalReferenceRegistration(input_api.PresubmitLocalPath()): results.append(output_api.PresubmitError( "External references registration check failed")) @@ -237,7 +233,6 @@ def _SkipTreeCheck(input_api, output_api): """Check the env var whether we want to skip tree check. Only skip if include/v8-version.h has been updated.""" src_version = 'include/v8-version.h' - FilterFile = lambda file: file.LocalPath() == src_version if not input_api.AffectedSourceFiles( lambda file: file.LocalPath() == src_version): return False diff --git a/deps/v8/README.md b/deps/v8/README.md index 5cd4b5811a4b47..804df5edb47ed6 100644 --- a/deps/v8/README.md +++ b/deps/v8/README.md @@ -31,3 +31,10 @@ configuration in `.git/config`: fetch = +refs/branch-heads/*:refs/remotes/branch-heads/* fetch = +refs/tags/*:refs/tags/* + + +Contributing +============= + +Please follow the instructions mentioned on the +[V8 wiki](https://code.google.com/p/v8-wiki/wiki/Contributing). diff --git a/deps/v8/build/download_gold_plugin.py b/deps/v8/build/download_gold_plugin.py index 7a0c21b8d70773..b8131fd449d7e2 100755 --- a/deps/v8/build/download_gold_plugin.py +++ b/deps/v8/build/download_gold_plugin.py @@ -8,11 +8,20 @@ import json import os +import re +import platform import shutil import subprocess import sys import zipfile +# Bail out on windows and cygwin. +if "win" in platform.system().lower(): + # Python 2.7.6 hangs at the second path.insert command on windows. Works + # with python 2.7.8. + print "Gold plugin download not supported on windows." + sys.exit(0) + SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) CHROME_SRC = os.path.abspath(os.path.join(SCRIPT_DIR, os.pardir)) sys.path.insert(0, os.path.join(CHROME_SRC, 'tools')) @@ -30,7 +39,28 @@ CLANG_BUCKET = 'gs://chromium-browser-clang/Linux_x64' +GOLD_PLUGIN_PATH = os.path.join(LLVM_BUILD_PATH, 'lib', 'LLVMgold.so') + +sys.path.insert(0, os.path.join(CHROME_SRC, 'tools', 'clang', 'scripts')) + +import update + def main(): + if not re.search(r'cfi_vptr=1', os.environ.get('GYP_DEFINES', '')): + # Bailout if this is not a cfi build. + print 'Skipping gold plugin download for non-cfi build.' + return 0 + if (os.path.exists(GOLD_PLUGIN_PATH) and + update.ReadStampFile().strip() == update.PACKAGE_VERSION): + # Bailout if clang is up-to-date. This requires the script to be run before + # the clang update step! I.e. afterwards clang would always be up-to-date. + print 'Skipping gold plugin download. File present and clang up to date.' + return 0 + + # Make sure this works on empty checkouts (i.e. clang not downloaded yet). + if not os.path.exists(LLVM_BUILD_PATH): + os.makedirs(LLVM_BUILD_PATH) + targz_name = 'llvmgold-%s.tgz' % CLANG_REVISION remote_path = '%s/%s' % (CLANG_BUCKET, targz_name) diff --git a/deps/v8/build/features.gypi b/deps/v8/build/features.gypi index 21e55740aef352..741ba75eb6dc87 100644 --- a/deps/v8/build/features.gypi +++ b/deps/v8/build/features.gypi @@ -67,6 +67,9 @@ # Set to 1 to enable building with wasm prototype. 'v8_wasm%': 0, + + # Enable/disable JavaScript API accessors. + 'v8_js_accessors%': 0, }, 'target_defaults': { 'conditions': [ @@ -109,6 +112,9 @@ ['v8_wasm!=0', { 'defines': ['V8_WASM',], }], + ['v8_js_accessors!=0', { + 'defines': ['V8_JS_ACCESSORS'], + }], ], # conditions 'configurations': { 'DebugBaseCommon': { diff --git a/deps/v8/build/isolate.gypi b/deps/v8/build/isolate.gypi new file mode 100644 index 00000000000000..9e2a3bfee398de --- /dev/null +++ b/deps/v8/build/isolate.gypi @@ -0,0 +1,74 @@ +# Copyright 2015 the V8 project authors. All rights reserved. +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# This file is meant to be included into a target to provide a rule +# to "build" .isolate files into a .isolated file. +# +# To use this, create a gyp target with the following form: +# 'conditions': [ +# ['test_isolation_mode != "noop"', { +# 'targets': [ +# { +# 'target_name': 'foo_test_run', +# 'type': 'none', +# 'dependencies': [ +# 'foo_test', +# ], +# 'includes': [ +# '../build/isolate.gypi', +# ], +# 'sources': [ +# 'foo_test.isolate', +# ], +# }, +# ], +# }], +# ], +# +# Note: foo_test.isolate is included and a source file. It is an inherent +# property of the .isolate format. This permits to define GYP variables but is +# a stricter format than GYP so isolate.py can read it. +# +# The generated .isolated file will be: +# <(PRODUCT_DIR)/foo_test.isolated +# +# See http://dev.chromium.org/developers/testing/isolated-testing/for-swes +# for more information. + +{ + 'rules': [ + { + 'rule_name': 'isolate', + 'extension': 'isolate', + 'inputs': [ + # Files that are known to be involved in this step. + '<(DEPTH)/tools/swarming_client/isolate.py', + '<(DEPTH)/tools/swarming_client/run_isolated.py', + ], + 'outputs': [ + '<(PRODUCT_DIR)/<(RULE_INPUT_ROOT).isolated', + ], + 'action': [ + 'python', + '<(DEPTH)/tools/swarming_client/isolate.py', + '<(test_isolation_mode)', + '--isolated', '<(PRODUCT_DIR)/<(RULE_INPUT_ROOT).isolated', + '--isolate', '<(RULE_INPUT_PATH)', + + # Variables should use the -V FOO=<(FOO) form so frequent values, + # like '0' or '1', aren't stripped out by GYP. Run 'isolate.py help' + # for more details. + + # Path variables are used to replace file paths when loading a .isolate + # file + '--path-variable', 'DEPTH', '<(DEPTH)', + '--path-variable', 'PRODUCT_DIR', '<(PRODUCT_DIR)', + + '--config-variable', 'OS=<(OS)', + '--config-variable', 'v8_use_external_startup_data=<(v8_use_external_startup_data)', + ], + }, + ], +} diff --git a/deps/v8/build/standalone.gypi b/deps/v8/build/standalone.gypi index bf06bfa20fee0d..7250579d27c123 100644 --- a/deps/v8/build/standalone.gypi +++ b/deps/v8/build/standalone.gypi @@ -95,6 +95,8 @@ 'cfi_vptr%': 0, 'cfi_diag%': 0, + 'cfi_blacklist%': '<(base_dir)/tools/cfi/blacklist.txt', + # goma settings. # 1 to use goma. # If no gomadir is set, it uses the default gomadir. @@ -122,6 +124,14 @@ }, { 'linux_use_bundled_gold%': 0, }], + + # TODO(machenbach): Remove the conditions as more configurations are + # supported. + ['OS=="linux"', { + 'test_isolation_mode%': 'check', + }, { + 'test_isolation_mode%': 'noop', + }], ], }, 'base_dir%': '<(base_dir)', @@ -143,9 +153,12 @@ 'use_lto%': '<(use_lto)', 'cfi_vptr%': '<(cfi_vptr)', 'cfi_diag%': '<(cfi_diag)', + 'cfi_blacklist%': '<(cfi_blacklist)', + 'test_isolation_mode%': '<(test_isolation_mode)', - # Add a simple extra solely for the purpose of the cctests + # Add a simple extras solely for the purpose of the cctests 'v8_extra_library_files': ['../test/cctest/test-extra.js'], + 'v8_experimental_extra_library_files': ['../test/cctest/test-experimental-extra.js'], # .gyp files or targets should set v8_code to 1 if they build V8 specific # code, as opposed to external code. This variable is used to control such @@ -399,8 +412,25 @@ # things when their commandline changes). Nothing should ever read this # define. 'defines': ['CR_CLANG_REVISION= +``` +The simulator will start the debugger after executing n instructions. + +``` +$ out/arm.debug/d8 --stop_at +``` + +The simulator will stop at the given JavaScript function. + +Also you can directly generate 'stop' instructions in the ARM code. Stops are generated with + +``` +Assembler::stop(const char* msg, Condition cond, int32_t code) +``` + +When the Simulator hits a stop, it will print msg and start the debugger. + + +### Debugging commands. + +**Usual commands:** + +Enter `help` in the debugger prompt to get details on available commands. These include usual gdb-like commands, such as stepi, cont, disasm, etc. If the Simulator is run under gdb, the “gdb” debugger command will give control to gdb. You can then use cont from gdb to go back to the debugger. + + +**Debugger specific commands:** + +Here's a list of the ARM debugger specific commands, along with examples. +The JavaScript file “func.js” used below contains: + +``` +function test() { + print(“In function test.”); +} +test(); +``` + + * **printobject** `<`register`>` (alias po), will describe an object held in a register. + +``` +$ out/arm.debug/d8 func.js --stop_at test + +Simulator hit stop-at + 0xb544d6a8 e92d4902 stmdb sp!, {r1, r8, fp, lr} +sim> print r0 +r0: 0xb547ec15 -1253577707 +sim> printobject r0 +r0: +0xb547ec15: [Function] + - map = 0x0xb540ff01 + - initial_map = + - shared_info = 0xb547eb2d + - name = #test + - context = 0xb60083f1 + - code = 0xb544d681 + #arguments: 0xb545a15d (callback) + #length: 0xb545a14d (callback) + #name: 0xb545a155 (callback) + #prototype: 0xb545a145 (callback) + #caller: 0xb545a165 (callback) +``` + + * **break** `<`address`>`, will insert a breakpoint at the specified address. + + * **del**, will delete the current breakpoint. + +You can have only one such breakpoint. This is useful if you want to insert a breakpoint at runtime. +``` +$ out/arm.debug/d8 func.js --stop_at test + +Simulator hit stop-at + 0xb53a1ee8 e92d4902 stmdb sp!, {r1, r8, fp, lr} +sim> disasm 5 + 0xb53a1ee8 e92d4902 stmdb sp!, {r1, r8, fp, lr} + 0xb53a1eec e28db008 add fp, sp, #8 + 0xb53a1ef0 e59a200c ldr r2, [r10, #+12] + 0xb53a1ef4 e28fe004 add lr, pc, #4 + 0xb53a1ef8 e15d0002 cmp sp, r2 +sim> break 0xb53a1ef8 +sim> cont + 0xb53a1ef8 e15d0002 cmp sp, r2 +sim> disasm 5 + 0xb53a1ef8 e15d0002 cmp sp, r2 + 0xb53a1efc 359ff034 ldrcc pc, [pc, #+52] + 0xb53a1f00 e5980017 ldr r0, [r8, #+23] + 0xb53a1f04 e59f1030 ldr r1, [pc, #+48] + 0xb53a1f08 e52d0004 str r0, [sp, #-4]! +sim> break 0xb53a1f08 +setting breakpoint failed +sim> del +sim> break 0xb53a1f08 +sim> cont + 0xb53a1f08 e52d0004 str r0, [sp, #-4]! +sim> del +sim> cont +In function test. +``` + + * Generated `stop` instuctions, will work as breakpoints with a few additional features. + +The first argument is a help message, the second is the condition, and the third is the stop code. If a code is specified, and is less than 256, the stop is said to be “watched”, and can be disabled/enabled; a counter also keeps track of how many times the Simulator hits this code. + +If we are working on this v8 C++ code, which is reached when running our JavaScript file. + +``` +__ stop("My stop.", al, 123); +__ mov(r0, r0); +__ mov(r0, r0); +__ mov(r0, r0); +__ mov(r0, r0); +__ mov(r0, r0); +__ stop("My second stop.", al, 0x1); +__ mov(r1, r1); +__ mov(r1, r1); +__ mov(r1, r1); +__ mov(r1, r1); +__ mov(r1, r1); +``` + +Here's a sample debugging session: + +We hit the first stop. + +``` +Simulator hit My stop. + 0xb53559e8 e1a00000 mov r0, r0 +``` + +We can see the following stop using disasm. The address of the message string is inlined in the code after the svc stop instruction. + +``` +sim> disasm + 0xb53559e8 e1a00000 mov r0, r0 + 0xb53559ec e1a00000 mov r0, r0 + 0xb53559f0 e1a00000 mov r0, r0 + 0xb53559f4 e1a00000 mov r0, r0 + 0xb53559f8 e1a00000 mov r0, r0 + 0xb53559fc ef800001 stop 1 - 0x1 + 0xb5355a00 08338a97 stop message: My second stop + 0xb5355a04 e1a00000 mov r1, r1 + 0xb5355a08 e1a00000 mov r1, r1 + 0xb5355a0c e1a00000 mov r1, r1 +``` + +Information can be printed for all (watched) stops which were hit at least once. + +``` +sim> stop info all +Stop information: +stop 123 - 0x7b: Enabled, counter = 1, My stop. +sim> cont +Simulator hit My second stop + 0xb5355a04 e1a00000 mov r1, r1 +sim> stop info all +Stop information: +stop 1 - 0x1: Enabled, counter = 1, My second stop +stop 123 - 0x7b: Enabled, counter = 1, My stop. +``` + +Stops can be disabled or enabled. (Only available for watched stops.) + +``` +sim> stop disable 1 +sim> cont +Simulator hit My stop. + 0xb5356808 e1a00000 mov r0, r0 +sim> cont +Simulator hit My stop. + 0xb5356c28 e1a00000 mov r0, r0 +sim> stop info all +Stop information: +stop 1 - 0x1: Disabled, counter = 2, My second stop +stop 123 - 0x7b: Enabled, counter = 3, My stop. +sim> stop enable 1 +sim> cont +Simulator hit My second stop + 0xb5356c44 e1a00000 mov r1, r1 +sim> stop disable all +sim> con +In function test. +``` \ No newline at end of file diff --git a/deps/v8/docs/becoming_v8_committer.md b/deps/v8/docs/becoming_v8_committer.md new file mode 100644 index 00000000000000..16e8491b06f1f9 --- /dev/null +++ b/deps/v8/docs/becoming_v8_committer.md @@ -0,0 +1,38 @@ +## What is a committer? + +Technically, a committer is someone who has write access to the V8 SVN repository. A committer can submit his or her own patches or patches from others. + +This privilege is granted with some expectation of responsibility: committers are people who care about the V8 project and want to help meet its goals. A committer is not just someone who can make changes, but someone who has demonstrated his or her ability to collaborate with the team, get the most knowledgeable people to review code, contribute high-quality code, and follow through to fix issues (in code or tests). + +A committer is a contributor to the V8 projects' success and a citizen helping the projects succeed. See V8CommittersResponsibility. + +## How do I become a committer? + +In a nutshell, contribute 20 non-trivial patches and get at least three different people to review them (you'll need three people to support you). Then ask someone to nominate you. You're demonstrating your: + + * commitment to the project (20 good patches requires a lot of your valuable time), + * ability to collaborate with the team, + * understanding of how the team works (policies, processes for testing and code review, etc), + * understanding of the projects' code base and coding style, and + * ability to write good code (last but certainly not least) + +A current committer nominates you by sending email to v8-committers@googlegroups.com containing: + + * your first and last name + * your Google Code email address + * an explanation of why you should be a committer, + * embedded list of links to revisions (about top 10) containing your patches + +Two other committers need to second your nomination. If no one objects in 5 working days (U.S.), you're a committer. If anyone objects or wants more information, the committers discuss and usually come to a consensus (within the 5 working days). If issues cannot be resolved, there's a vote among current committers. + +Once you get approval from the existing committers, we'll send you instructions for write access to SVN or Git. You'll also be added to v8-committers@googlegroups.com. + +In the worst case, this can drag out for two weeks. Keep writing patches! Even in the rare cases where a nomination fails, the objection is usually something easy to address like "more patches" or "not enough people are familiar with this person's work." + +## Maintaining committer status + +You don't really need to do much to maintain committer status: just keep being awesome and helping the V8 project! + +In the unhappy event that a committer continues to disregard good citizenship (or actively disrupts the project), we may need to revoke that person's status. The process is the same as for nominating a new committer: someone suggests the revocation with a good reason, two people second the motion, and a vote may be called if consensus cannot be reached. I hope that's simple enough, and that we never have to test it in practice. + +(Source: inspired by http://dev.chromium.org/getting-involved/become-a-committer ) \ No newline at end of file diff --git a/deps/v8/docs/building_with_gyp.md b/deps/v8/docs/building_with_gyp.md new file mode 100644 index 00000000000000..0183fd2de519f2 --- /dev/null +++ b/deps/v8/docs/building_with_gyp.md @@ -0,0 +1,260 @@ +**Build issues? File a bug at code.google.com/p/v8/issues or ask for help on v8-users@googlegroups.com.** + +# Building V8 + +V8 is built with the help of [GYP](http://code.google.com/p/gyp/). GYP is a meta build system of sorts, as it generates build files for a number of other build systems. How you build therefore depends on what "back-end" build system and compiler you're using. +The instructions below assume that you already have a [checkout of V8](using_git.md) but haven't yet installed the build dependencies. + +If you intend to develop on V8, i.e., send patches and work with changelists, you will need to install the dependencies as described [here](using_git.md). + + +## Prerequisite: Installing GYP + +First, you need GYP itself. GYP is fetched together with the other dependencies by running: + +``` +gclient sync +``` + +## Building + +### GCC + make + +Requires GNU make 3.81 or later. Should work with any GCC >= 4.8 or any recent clang (3.5 highly recommended). + +#### Build instructions + + +The top-level Makefile defines a number of targets for each target architecture (`ia32`, `x64`, `arm`, `arm64`) and mode (`debug`, `optdebug`, or `release`). So your basic command for building is: +``` +make ia32.release +``` + +or analogously for the other architectures and modes. You can build both debug and release binaries with just one command: +``` +make ia32 +``` + +To automatically build in release mode for the host architecture: +``` +make native +``` + +You can also can build all architectures in a given mode at once: +``` +make release +``` + +Or everything: +``` +make +``` + +#### Optional parameters + + * `-j` specifies the number of parallel build processes. Set it (roughly) to the number of CPU cores your machine has. The GYP/make based V8 build also supports distcc, so you can compile with `-j100` or so, provided you have enough machines around. + + * `OUTDIR=foo` specifies where the compiled binaries go. It defaults to `./out/`. In this directory, a subdirectory will be created for each architecture and mode. You will find the d8 shell's binary in `foo/ia32.release/d8`, for example. + + * `library=shared` or `component=shared_library` (the two are completely equivalent) builds V8 as a shared library (`libv8.so`). + + * `soname_version=1.2.3` is only relevant for shared library builds and configures the SONAME of the library. Both the SONAME and the filename of the library will be `libv8.so.1.2.3` if you specify this. Due to a peculiarity in GYP, if you specify a custom SONAME, the library's path will no longer be encoded in the binaries, so you'll have to run d8 as follows: +``` +LD_LIBRARY_PATH=out/ia32.release/lib.target out/ia32.release/d8 +``` + + * `console=readline` enables readline support for the d8 shell. You need readline development headers for this (`libreadline-dev` on Ubuntu). + + * `disassembler=on` enables the disassembler for release mode binaries (it's always enabled for debug binaries). This is useful if you want to inspect generated machine code. + + * `snapshot=off` disables building with a heap snapshot. Compiling will be a little faster, but V8’s start up will be slightly slower. + + * `gdbjit=on` enables GDB JIT support. + + * `liveobjectlist=on` enables the Live Object List feature. + + * `vfp3=off` is only relevant for ARM builds with snapshot and disables the use of VFP3 instructions in the snapshot. + + * `debuggersupport=off` disables the javascript debugger. + + * `werror=no` omits the -Werror flag. This is especially useful for not officially supported C++ compilers (e.g. newer versions of the GCC) so that compile warnings are ignored. + + * `strictaliasing=off` passes the -fno-strict-aliasing flag to GCC. This may help to work around build failures on officially unsupported platforms and/or GCC versions. + + * `regexp=interpreted` chooses the interpreted mode of the irregexp regular expression engine instead of the native code mode. + + * `hardfp=on` creates "hardfp" binaries on ARM. + +### Ninja + +To build d8: +``` +export GYP_GENERATORS=ninja +build/gyp_v8 +ninja -C out/Debug d8 +``` + +Specify `out/Release` for a release build. I recommend setting up an alias so that you don't need to type out that build directory path. + +If you want to build all targets, use `ninja -C out/Debug all`. It's faster to build only the target you're working on, like `d8` or `unittests`. + +Note: You need to set `v8_target_arch` if you want a non-native build, i.e. either +``` +export GYP_DEFINES="v8_target_arch=arm" +build/gyp_v8 ... +``` +or +``` +build/gyp_v8 -Dv8_target_arch=arm ... +``` + + +#### Using goma (Googlers only) + +To use goma you need to set the `use_goma` gyp define, either by passing it to `gyp_v8`, i.e. +``` +build/gyp_v8 -Duse_goma=1 +``` +or by setting the environment variable `$GYP_DEFINES` appropriately: +``` +export GYP_DEFINES="use_goma=1" +``` +Note: You may need to also set `gomadir` to point to the directory where you installed goma, if it's not in the default location. + +If you are using goma, you'll also want to bump the job limit, i.e. +``` +ninja -j 100 -C out/Debug d8 +``` + + +### Cross-compiling + +Similar to building with Clang, you can also use a cross-compiler. Just export your toolchain (`CXX`/`LINK` environment variables should be enough) and compile. For example: +``` +export CXX=/path/to/cross-compile-g++ +export LINK=/path/to/cross-compile-g++ +make arm.release +``` + + +### Xcode + +From the root of your V8 checkout, run either of: +``` +build/gyp_v8 -Dtarget_arch=ia32 +build/gyp_v8 -Dtarget_arch=x64 +``` + +This will generate Xcode project files in `build/` that you can then either open with Xcode or compile directly from the command line: +``` +xcodebuild -project build/all.xcodeproj -configuration Release +xcodebuild -project build/all.xcodeproj +``` + +Note: If you have configured your `GYP_GENERATORS` environment variable, either unset it, or set it to `xcode` for this to work. + + +#### Custom build settings + +You can export the `GYP_DEFINES` environment variable in your shell to configure custom build options. The syntax is `GYP_DEFINES="-Dvariable1=value1 -Dvariable2=value2"` and so on for as many variables as you wish. Possibly interesting options include: + * `-Dcomponent=shared_library` (see `library=shared` in the [GCC + make](#Optional_parameters.md) section above) + * `-Dconsole=readline` (see `console=readline`) + * `-Dv8_enable_disassembler=1` (see `disassembler=on`) + * `-Dv8_use_snapshot='false'` (see `snapshot=off`) + * `-Dv8_enable_gdbjit=1` (see `gdbjit=on`) + * `-Dv8_use_liveobjectlist=true` (see `liveobjectlist=on`) + + +### Visual Studio + +You need Visual Studio 2013, older versions might still work at the moment, but this will probably change soon because we intend to use C++11 features. + +#### Prerequisites + +After you created [checkout of V8](using_git.md), all dependencies will be already installed. + +If you are getting errors during build mentioning that 'python' could not be found, add the 'python.exe' to PATH. + +If you have Visual Studio 2013 and 2015 installed side-by-side and set the environment variable GYP\_MSVS\_VERSION to '2013'. In that case the right project files are going to be created. + +#### Building + * If you use the command prompt: + 1. Generate project files: +``` +python build\gyp_v8 +``` +> > > Specify the path to `python.exe` if you don't have it in your PATH. +> > > Append `-Dtarget_arch=x64` if you want to build 64bit binaries. If you switch between ia32 and x64 targets, you may have to manually delete the generated .vcproj/.sln files before regenerating them. +> > > Example: +``` +third_party/python_26/python.exe build\gyp_v8 -Dtarget_arch=x64 +``` + 1. Build: +> > > Either open `build\All.sln` in Visual Studio, or compile on the command line as follows (adapt the path as necessary, or simply put `devenv.com` in your PATH): +``` +"c:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.com" /build Release build\All.sln +``` +> > > Replace `Release` with `Debug` to build in Debug mode. +> > > The built binaries will be in build\Release\ or build\Debug\. + + * If you use cygwin, the workflow is the same, but the syntax is slightly different: + 1. Generate project files: +``` +build/gyp_v8 +``` +> > > This will spit out a bunch of warnings about missing input files, but it seems to be OK to ignore them. (If you have time to figure this out, we'd happily accept a patch that makes the warnings go away!) + 1. Build: +``` +/cygdrive/c/Program\ Files\ (x86)/Microsoft\ Visual\ Studio\ 9.0/Common7/IDE/devenv.com /build Release build/all.sln +``` + + +#### Custom build settings + +See the "custom build settings" section for [Xcode](#Xcode) above. + + +#### Running tests + +You can abuse the test driver's --buildbot flag to make it find the executables where MSVC puts them: +``` +python tools/run-tests.py --buildbot --outdir build --arch ia32 --mode Release +``` + + +### MinGW + +Building on MinGW is not officially supported, but it is possible. You even have two options: + +#### Option 1: With Cygwin Installed + +Requirements: + * MinGW + * Cygwin, including Python + * Python from www.python.org _(yes, you need two Python installations!)_ + +Building: + 1. Open a MinGW shell + 1. `export PATH=$PATH:/c/cygwin/bin` _(or wherever you installed Cygwin)_ + 1. `make ia32.release -j8` + +Running tests: + 1. Open a MinGW shell + 1. `export PATH=/c/Python27:$PATH` _(or wherever you installed Python)_ + 1. `make ia32.release.check -j8` + +#### Option 2: Without Cygwin, just MinGW + +Requirements: + * MinGW + * Python from www.python.org + +Building and testing: + 1. Open a MinGW shell + 1. `tools/mingw-generate-makefiles.sh` _(re-run this any time a `*`.gyp`*` file changed, such as after updating your checkout)_ + 1. `make ia32.release` _(unfortunately -jX doesn't seem to work here)_ + 1. `make ia32.release.check -j8` + + +# Final Note +If you have problems or questions, please file bugs at code.google.com/p/v8/issues or send mail to v8-users@googlegroups.com. Comments on this page are likely to go unnoticed and unanswered. \ No newline at end of file diff --git a/deps/v8/docs/contributing.md b/deps/v8/docs/contributing.md new file mode 100644 index 00000000000000..aa8e6659762d38 --- /dev/null +++ b/deps/v8/docs/contributing.md @@ -0,0 +1,32 @@ +Here you will find information that you'll need to be able to contribute to V8. Be sure to read the whole thing before sending us a contribution, including the small print at the end. + +## Before you contribute + +Before you start working on a larger contribution V8 you should get in touch with us first through the V8 [contributor mailing list](http://groups.google.com/group/v8-dev) so we can help out and possibly guide you; coordinating up front makes it much easier to avoid frustration later on. + +## Getting the code + +See [UsingGit](using_git.md). + +## Submitting code + +The source code of V8 follows the [Google C++ Style Guide](http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml) so you should familiarize yourself with those guidelines. Before submitting code you must pass all our [tests](http://code.google.com/p/v8-wiki/wiki/Testing), and have to successfully run the presubmit checks: + +> `tools/presubmit.py` + +The presubmit script uses a linter from Google, `cpplint.py`. External contributors can get this from [here](http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py) and place it in their path. + +All submissions, including submissions by project members, require review. We use the same code-review tools and process as the chromium project. In order to submit a patch, you need to get the [depot\_tools](http://dev.chromium.org/developers/how-tos/install-depot-tools) and follow these instructions on [requesting a review](http://dev.chromium.org/developers/contributing-code) (using your V8 workspace instead of a chromium workspace). + +### Look out for breakage or regressions + +Before submitting your code please check the [buildbot console](http://build.chromium.org/p/client.v8/console) to see that the columns are mostly green before checking in your changes. Otherwise you will not know if your changes break the build or not. When your change is committed watch the [buildbot console](http://build.chromium.org/p/client.v8/console) until the bots turn green after your change. + + +## The small print + +Before we can use your code you have to sign the [Google Individual Contributor License Agreement](http://code.google.com/legal/individual-cla-v1.0.html), which you can do online. This is mainly because you own the copyright to your changes, even after your contribution becomes part of our codebase, so we need your permission to use and distribute your code. We also need to be sure of various other things, for instance that you'll tell us if you know that your code infringes on other people's patents. You don't have to do this until after you've submitted your code for review and a member has approved it, but you will have to do it before we can put your code into our codebase. + +Contributions made by corporations are covered by a different agreement than the one above, the [Software Grant and Corporate Contributor License Agreement](http://code.google.com/legal/corporate-cla-v1.0.html). + +Sign them online [here](https://cla.developers.google.com/) \ No newline at end of file diff --git a/deps/v8/docs/cross_compiling_for_arm.md b/deps/v8/docs/cross_compiling_for_arm.md new file mode 100644 index 00000000000000..30a7196b4a9c7c --- /dev/null +++ b/deps/v8/docs/cross_compiling_for_arm.md @@ -0,0 +1,151 @@ +

Building V8 with SCons is no longer supported. See BuildingWithGYP.

+ +--- + + +# Using Sourcery G++ Lite + +The Sourcery G++ Lite cross compiler suite is a free version of Sourcery G++ from [CodeSourcery](http://www.codesourcery.com). There is a page for the [GNU Toolchain for ARM Processors](http://www.codesourcery.com/sgpp/lite/arm). Determine the version you need for your host/target combination. + +The following instructions uses [2009q1-203 for ARM GNU/Linux](http://www.codesourcery.com/sgpp/lite/arm/portal/release858), and if using a different version please change the URLs and `TOOL_PREFIX` below accordingly. + +## Installing on host and target + +The simplest way of setting this up is to install the full Sourcery G++ Lite package on both the host and target at the same location. This will ensure that all the libraries required are available on both sides. If you want to use the default libraries on the host there is no need the install anything on the target. + +The following script will install in `/opt/codesourcery`: + +``` +#!/bin/sh + +sudo mkdir /opt/codesourcery +cd /opt/codesourcery +sudo chown $USERNAME . +chmod g+ws . +umask 2 +wget http://www.codesourcery.com/sgpp/lite/arm/portal/package4571/public/arm-none-linux-gnueabi/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 +tar -xvf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 +``` + + +## Building using scons without snapshot + +The simplest way to build is without snapshot, as that does no involve using the simulator to generate the snapshot. The following script will build the sample shell without snapshot for ARM v7. + +``` +#!/bin/sh + +export TOOL_PREFIX=/opt/codesourcery/arm-2009q1/bin/arm-none-linux-gnueabi +export CXX=$TOOL_PREFIX-g++ +export AR=$TOOL_PREFIX-ar +export RANLIB=$TOOL_PREFIX-ranlib +export CC=$TOOL_PREFIX-gcc +export LD=$TOOL_PREFIX-ld + +export CCFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=vfp" +export ARM_TARGET_LIB=/opt/codesourcery/arm-2009q1/arm-none-linux-gnueabi/libc + +scons wordsize=32 snapshot=off arch=arm sample=shell +``` + +If the processor is not Cortex A8 or does not have VFP enabled the `-mtune=cortex-a8` and `-mfpu=vfp` part of `CCFLAGS` needs to be changed accordingly. By default the V8 SCons build adds `-mfloat-abi=softfp`. + +If using the default libraries on the target just leave out the setting of `ARM_TARGET_LIB` and if the target libraies are in a different location ARM\_TARGET\_LIB` needs to be adjusted accordingly. + +The default for Sourcery G++ Lite is ARM v5te with software floating point emulation, so if testing building for ARM v5te the setting of `CCFLAGS` and `ARM_TARGET_LIB` should be changed to: + +``` +CCFLAGS="" +ARM_TARGET_LIB=/opt/codesourcery/arm-2009q1/arm-none-linux-gnueabi/libc + +scons armeabi=soft ... +``` + +Relying on defaults in the tool chain might lead to surprises, so for ARM v5te with software floating point emulation the following is more explicit: + +``` +CCFLAGS="-march=armv5te" +ARM_TARGET_LIB=/opt/codesourcery/arm-2009q1/arm-none-linux-gnueabi/libc + +scons armeabi=soft ... +``` + +If the target has an VFP unit use the following: + +``` +CCFLAGS="-mfpu=vfpv3" +ARM_TARGET_LIB=/opt/codesourcery/arm-2009q1/arm-none-linux-gnueabi/libc +``` + +To allow G++ to use Thumb2 instructions and the VFP unit when compiling the C/C++ code use: + +``` +CCFLAGS="-mthumb -mfpu=vfpv3" +ARM_TARGET_LIB=/opt/codesourcery/arm-2009q1/arm-none-linux-gnueabi/libc/thumb2 +``` + +_Note:_ V8 will not use Thumb2 instructions in its generated code it always uses the full ARM instruction set. + +For other ARM versions please check the Sourcery G++ Lite documentation. + +As mentioned above the default for Sourcery G++ Lite used here is ARM v5te with software floating point emulation. However beware that this default might change between versions and that there is no unique defaults for ARM tool chains in general, so always passing `-march` and possibly `-mfpu` is recommended. Passing `-mfloat-abi` is not required as this is controlled by the SCons option `armeabi`. + +## Building using scons with snapshot + +When building with snapshot the simulator is used to build the snapshot on the host and then building for the target with that snapshot. The following script will accomplish that (using both Thumb2 and VFP instructions): + +``` +#!/bin/sh + +V8DIR=.. + +cd host + +scons -Y$V8DIR simulator=arm snapshot=on +mv obj/release/snapshot.cc $V8DIR/src/snapshot.cc + +cd .. + +export TOOL_PREFIX=/opt/codesourcery/arm-2010.09-103/bin/arm-none-linux-gnueabi +export CXX=$TOOL_PREFIX-g++ +export AR=$TOOL_PREFIX-ar +export RANLIB=$TOOL_PREFIX-ranlib +export CC=$TOOL_PREFIX-gcc +export LD=$TOOL_PREFIX-ld + +export CCFLAGS="-mthumb -march=armv7-a -mfpu=vfpv3" +export ARM_TARGET_LIB=/opt/codesourcery/arm-2010.09-103/arm-none-linux-gnueabi/libc/thumb2 + +cd target + +scons -Y$V8DIR wordsize=32 snapshot=nobuild arch=armsample=shell +rm $V8DIR/src/snapshot.cc + +cd .. +``` + +This script required the two subdirectories `host` and `target`. V8 is first build for the host with the ARM simulator which supports running ARM code on the host. This is used to build a snapshot file which is then used for the actual cross compilation of V8. + +## Building for target which supports unaligned access + +The default when building V8 for an ARM target (either cross compiling or compiling on an ARM machine) is to disable unaligned memory access. However in some situations (most noticeably handling of regular expressions) performance will be better if unaligned memory access is used on processors which supports it. To enable unaligned memory access set `unalignedaccesses` to `on` when building: + +``` +scons unalignedaccesses=on ... +``` + +When running in the simulator the default is to enable unaligned memory access, so to test in the simulator with unaligned memory access disabled set `unalignedaccesses` to `off` when building: + +``` +scons unalignedaccesses=off simulator=arm ... +``` + +## Using V8 with hardfp calling convention + +By default V8 uses the softfp calling convention when calling C functions from generated code. However it is possible to use hardfp as well. To enable this set `armeabi` to `hardfp` when building: + +``` +scons armeabi=hardfp ... +``` + +Passing `armeabi=hardfp` to SCons will automatically set the compiler flag `-mfloat-abi=hardfp`. If using snapshots remember to pass `armeabi=hardfp` when building V8 on the host for generating the snapshot as well. \ No newline at end of file diff --git a/deps/v8/docs/d8_on_android.md b/deps/v8/docs/d8_on_android.md new file mode 100644 index 00000000000000..eda641934593ff --- /dev/null +++ b/deps/v8/docs/d8_on_android.md @@ -0,0 +1,101 @@ +# Prerequisites + * a Linux/Mac workstation + * v8 r12178 (on Google Code) or later + * an Android emulator or device with matching USB cable + * make sure [building with GYP](http://code.google.com/p/v8-wiki/wiki/BuildingWithGYP) works + + +# Get the code + + * Use the instructions from https://code.google.com/p/v8-wiki/wiki/UsingGit to get the code + * Once you need to add the android dependencies: +``` +v8$ echo "target_os = ['android']" >> ../.gclient && gclient sync --nohooks +``` + * The sync will take a while the first time as it downloads the Android NDK to v8/third\_party + * If you want to use a different NDK, you need to set the gyp variable android\_ndk\_root + + +# Get the Android SDK + * tested version: `r15` + * download the SDK from http://developer.android.com/sdk/index.html + * extract it + * install the "Platform tools" using the SDK manager that you can start by running `tools/android` + * now you have a `platform_tools/adb` binary which will be used later; put it in your `PATH` or remember where it is + + +# Set up your device + * Enable USB debugging (Gingerbread: Settings > Applications > Development > USB debugging; Ice Cream Sandwich: Settings > Developer Options > USB debugging) + * connect your device to your workstation + * make sure `adb devices` shows it; you may have to edit `udev` rules to give yourself proper permissions + * run `adb shell` to get an ssh-like shell on the device. In that shell, do: +``` +cd /data/local/tmp +mkdir v8 +cd v8 +``` + + +# Push stuff onto the device + * make sure your device is connected + * from your workstation's shell: +``` +adb push /file/you/want/to/push /data/local/tmp/v8/ +``` + + +# Compile V8 for Android +Currently two architectures (`android_arm` and `android_ia32`) are supported, each in `debug` or `release` mode. The following steps work equally well for both ARM and ia32, on either the emulator or real devices. + * compile: +``` +make android_arm.release -j16 +``` + * push the resulting binary to the device: +``` +adb push out/android_arm.release/d8 /data/local/tmp/v8/d8 +``` + * the most comfortable way to run it is from your workstation's shell as a one-off command (rather than starting an interactive shell session on the device), that way you can use pipes or whatever to process the output as necessary: +``` +adb shell /data/local/tmp/v8/d8 +``` + * warning: when you cancel such an "adb shell whatever" command using Ctrl+C, the process on the phone will sometimes keep running. + * Alternatively, use the `.check` suffix to automatically push test binaries and test cases onto the device and run them. +``` +make android_arm.release.check +``` + + +# Profile + * compile a binary, push it to the device, keep a copy of it on the host +``` +make android_arm.release -j16 +adb push out/android_arm.release/d8 /data/local/tmp/v8/d8-version.under.test +cp out/android_arm.release/d8 ./d8-version.under.test +``` + * get a profiling log and copy it to the host: +``` +adb shell /data/local/tmp/v8/d8-version.under.test benchmark.js --prof +adb pull /data/local/tmp/v8/v8.log ./ +``` + * open `v8.log` in your favorite editor and edit the first line to match the full path of the `d8-version.under.test` binary on your workstation (instead of the `/data/local/tmp/v8/` path it had on the device) + * run the tick processor with the host's `d8` and an appropriate `nm` binary: +``` +cp out/ia32.release/d8 ./d8 # only required once +tools/linux-tick-processor --nm=$ANDROID_NDK_ROOT/toolchain/bin/arm-linux-androideabi-nm +``` + +# Compile SpiderMonkey for Lollipop +``` +cd firefox/js/src +autoconf2.13 +./configure \ + --target=arm-linux-androideabi \ + --with-android-ndk=$ANDROID_NDK_ROOT \ + --with-android-version=21 \ + --without-intl-api \ + --disable-tests \ + --enable-android-libstdcxx \ + --enable-pie +make +adb push -p js/src/shell/js /data/local/tmp/js +``` \ No newline at end of file diff --git a/deps/v8/docs/debugger_protocol.md b/deps/v8/docs/debugger_protocol.md new file mode 100644 index 00000000000000..2cc618fbd4cbfb --- /dev/null +++ b/deps/v8/docs/debugger_protocol.md @@ -0,0 +1,934 @@ +# Introduction + +V8 has support for debugging the JavaScript code running in it. There are two API's for this a function based API using JavaScript objects and a message based API using a JSON based protocol. The function based API can be used by an in-process debugger agent, whereas the message based API can be used out of process as well. +**> The message based API is no longer maintained. Please ask in v8-users@googlegroups.com if you want to attach a debugger to the run-time.** + +The debugger protocol is based on [JSON](http://www.json.org/)). Each protocol packet is defined in terms of JSON and is transmitted as a string value. All packets have two basic elements `seq` and `type`. + +``` +{ "seq" : , + "type" : , + ... +} +``` + +The element `seq` holds the sequence number of the packet. And element type is the type of the packet. The type is a string value with one of the following values `"request"`, `"response"` or `"event"`. + +A `"request"` packet has the following structure: + +``` +{ "seq" : , + "type" : "request", + "command" : + "arguments" : ... +} +``` + +A `"response"` packet has the following structure. If `success` is true `body` will contain the response data. If `success` is false `message` will contain an error message. + +``` +{ "seq" : , + "type" : "response", + "request_seq" : , + "command" : + "body" : ... + "running" : + "success" : + "message" : +} +``` + +An `"event"` packet has the following structure: + +``` +{ "seq" : , + "type" : "event", + "event" : + body : ... +} +``` + +# Request/response pairs + +## Request `continue` + +The request `continue` is a request from the debugger to start the VM running again. As part of the `continue` request the debugger can specify if it wants the VM to perform a single step action. + +``` +{ "seq" : , + "type" : "request", + "command" : "continue", + "arguments" : { "stepaction" : <"in", "next" or "out">, + "stepcount" : + } +} +``` + +In the response the property `running` will always be true as the VM will be running after executing the `continue` command. If a single step action is requested the VM will respond with a `break` event after running the step. + +``` +{ "seq" : , + "type" : "response", + "request_seq" : , + "command" : "continue", + "running" : true + "success" : true +} +``` + + +Here are a couple of examples. + +``` +{"seq":117,"type":"request","command":"continue"} +{"seq":118,"type":"request","command":"continue","arguments":{"stepaction":"out"}} +{"seq":119,"type":"request","command":"continue","arguments":{"stepaction":"next","stepcount":5}} +``` + +## Request `evaluate` + +The request `evaluate` is used to evaluate an expression. The body of the result is as described in response object serialization below. + +``` +{ "seq" : , + "type" : "request", + "command" : "evaluate", + "arguments" : { "expression" : , + "frame" : , + "global" : , + "disable_break" : , + "additional_context" : [ + { "name" : , "handle" : }, + { "name" : , "handle" : }, + ... + ] + } +} +``` + +Optional argument `additional_context` specifies handles that will be visible from the expression under corresponding names (see example below). + +Response: + +``` +{ "seq" : , + "type" : "response", + "request_seq" : , + "command" : "evaluate", + "body" : ... + "running" : + "success" : true +} +``` + +Here are a couple of examples. + +``` +{"seq":117,"type":"request","command":"evaluate","arguments":{"expression":"1+2"}} +{"seq":118,"type":"request","command":"evaluate","arguments":{"expression":"a()","frame":3,"disable_break":false}} +{"seq":119,"type":"request","command":"evaluate","arguments":{"expression":"[o.a,o.b,o.c]","global":true,"disable_break":true}} +{"seq":120,"type":"request","command":"evaluate","arguments":{"expression":"obj.toString()", "additional_context": [{ "name":"obj","handle":25 }] }} +``` + +## Request `lookup` + +The request `lookup` is used to lookup objects based on their handle. The individual array elements of the body of the result is as described in response object serialization below. + +``` +{ "seq" : , + "type" : "request", + "command" : "lookup", + "arguments" : { "handles" : , + "includeSource" : , + } +} +``` + +Response: + +``` +{ "seq" : , + "type" : "response", + "request_seq" : , + "command" : "lookup", + "body" : + "running" : + "success" : true +} +``` + +Here are a couple of examples. + +``` +{"seq":117,"type":"request","command":"lookup","arguments":{"handles":"[1]"}} +{"seq":118,"type":"request","command":"lookup","arguments":{"handles":"[7,12]"}} +``` + +## Request `backtrace` + +The request `backtrace` returns a backtrace (or stacktrace) from the current execution state. When issuing a request a range of frames can be supplied. The top frame is frame number 0. If no frame range is supplied data for 10 frames will be returned. + +``` +{ "seq" : , + "type" : "request", + "command" : "backtrace", + "arguments" : { "fromFrame" : + "toFrame" : + "bottom" : + } +} +``` + +The response contains the frame data together with the actual frames returned and the toalt frame count. + +``` +{ "seq" : , + "type" : "response", + "request_seq" : , + "command" : "backtrace", + "body" : { "fromFrame" : + "toFrame" : + "totalFrames" : + "frames" : + } + "running" : + "success" : true +} +``` + +If there are no stack frames the result body only contains `totalFrames` with a value of `0`. When an exception event is generated due to compilation failures it is possible that there are no stack frames. + +Here are a couple of examples. + +``` +{"seq":117,"type":"request","command":"backtrace"} +{"seq":118,"type":"request","command":"backtrace","arguments":{"toFrame":2}} +{"seq":119,"type":"request","command":"backtrace","arguments":{"fromFrame":0,"toFrame":9}} +``` + +## Request `frame` + +The request frame selects a new selected frame and returns information for that. If no frame number is specified the selected frame is returned. + +``` +{ "seq" : , + "type" : "request", + "command" : "frame", + "arguments" : { "number" : + } +} +``` + +Response: + +``` +{ "seq" : , + "type" : "response", + "request_seq" : , + "command" : "frame", + "body" : { "index" : , + "receiver" : , + "func" : , + "script" :