- 22 Jan, 2019 27 commits
-
-
Peter Marshall authored
Some includes in log.h were only needed by log.cc so move them there. Some were not needed at all, so remove them completely. Drive-by cleanup FunctionEvent(), which was never called without args for the last parameters which had default values. Change-Id: Id8b0c634c4d39d3c278ab3d932ed7af4142fd9c9 Reviewed-on: https://chromium-review.googlesource.com/c/1425914Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#59003}
-
Ulan Degenbaev authored
The main fix is to ensure that the recently allocated object is marked black in StressMarkingObserver::Step. Otherwise, the concurrent marker can observe an uninitialized white object in the old generation. This patch also removes the --black-allocation flag. Bug: v8:8676 Change-Id: Iba8f00330eabc4847eaef2cd3dfb2884d62a48b4 Reviewed-on: https://chromium-review.googlesource.com/c/1425915 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#59002}
-
Ross McIlroy authored
This is a reland of f5729f1c TBR=ulan@chromium.org Original change's description: > [GC] Ensure JSFunctions with flushed bytecode are flushed during GC. > > When bytecode is flushed from a SFI, the JSFunctions still retain their > FeedbackVector's and point to the interpreter entry trampoline. They are > reset if re-executed, however if not they could hold onto the feedback > vector indefinetly. This CL adds a pass the GC to detect JSFunctions that > need to be reset, and performs the reset at the end of GC. > > BUG=v8:8395 > > Change-Id: I3de8655aff9ff80f912b4fd51dee43eb98cfd519 > Reviewed-on: https://chromium-review.googlesource.com/c/1393292 > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58775} Bug: v8:8395 Change-Id: If9580b25ba32e4065e20d86cb8ed22a3280d59e9 Reviewed-on: https://chromium-review.googlesource.com/c/1424860Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#59001}
-
Maya Lekova authored
The test was originally testing the max string length limit, but due to refactoring of Array.join started consuming too much memory, resulting in OOMs on TSAN builds. The new implementation still checks for the limit, while reducing the memory consumption drastically. R=jarin@chromium.org Bug: v8:8504, chromium:336820 Change-Id: I4db9001541103d5908149e623ce4a4beee551e6c Reviewed-on: https://chromium-review.googlesource.com/c/1426839Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#59000}
-
Simon Zünd authored
This CL enables the pre-processing step of copying from the prototype chain for JSArrays. Previously, this was done for everything BUT JSArrays. This brings Array#sort more in line with other engines in the case of undefined behavior. R=jgruber@chromium.org Bug: v8:8666 Change-Id: I832d470dc02111b64dc4919e84e7e3e47c8fdd47 Reviewed-on: https://chromium-review.googlesource.com/c/1426119 Commit-Queue: Simon Zünd <szuend@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Mathias Bynens <mathias@chromium.org> Cr-Commit-Position: refs/heads/master@{#58999}
-
Stephan Herhut authored
In wasm code, we sometimes see the pattern <some 64 bit expression> i32.wrap/i64 i32.load where we generate an instruction to extend the 32 bit offset into a zero extended 64 bit value for the actual load. However, the preceeding truncate already yields a zero extended 32 bit value, so the extra instruction is not needed. Even more, it might get in the way of munching more computation into the final load. This change adds information about the zero extending behavior to the existing optimization that avoids the zero extension. Bug: chromium:853685 Change-Id: Iab9179379923ecb88651df6091b3d9408341cf4c Reviewed-on: https://chromium-review.googlesource.com/c/1421839Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Stephan Herhut <herhut@chromium.org> Cr-Commit-Position: refs/heads/master@{#58998}
-
Clemens Hammacher authored
{Isolate::per_isolate_thread_data_key()} is not even defined, and {Isolate::isolate_key()} is unused. R=mstarzinger@chromium.org Bug: v8:8562 Change-Id: I490989510865903c702158e33621c9990052c2a8 Reviewed-on: https://chromium-review.googlesource.com/c/1425907Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58997}
-
Ross McIlroy authored
The decision as to whether to optimize an IIFE as oneshot depends on whether it's outer scope is the script scope. During lazy compile, we might have discarded scopes which don't need a context between the IIFE and the script scope, which means we might treat an IIFE as oneshot, even though initial eager compile treated it as non-oneshot. Both bytecode flushing and lazy source positions rely on us generating the same bytecode during lazy compile as eager compile, so we move the decision into the parser where it happens once and is then stored in the SFI for any future lazy compiles. BUG=v8:8395,v8:8510 Change-Id: I88f1e74ad95d47a2636c393ceb1318d7d610055d Reviewed-on: https://chromium-review.googlesource.com/c/1421841Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#58996}
-
Michael Starzinger authored
This adds missing cases for exception handling opcodes to the stack effect helper {WasmDecoder::StackEffect}. It is a first step towards adding exception handling support to the {WasmInterpreter}. R=clemensh@chromium.org BUG=v8:8091 Change-Id: Idacf440a894e5c71a180502c1d2f10fa15c8f5fa Reviewed-on: https://chromium-review.googlesource.com/c/1425911 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58995}
-
Sergiy Belozorov authored
Rolling v8/build: https://chromium.googlesource.com/chromium/src/build/+log/402bc6d..4b7e3ce Rolling v8/third_party/googletest/src: https://chromium.googlesource.com/external/github.com/google/googletest/+log/879ac09..9518a57 This also ports: https://crrev.com/c/1410527 TBR=machenbach@chromium.org,hablich@chromium.org,sergiyb@chromium.org Bug: chromium:922379 Change-Id: I3982ace35bb762e7f5c85ba9468739aedd3bcd78 Reviewed-on: https://chromium-review.googlesource.com/c/1424659Reviewed-by: Sergiy Belozorov <sergiyb@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Commit-Queue: Sergiy Belozorov <sergiyb@chromium.org> Cr-Commit-Position: refs/heads/master@{#58994}
-
Michael Lippautz authored
Reworking and adding a node type would require also adding parallelization support for minor mc. Since this is unused and not benchmarked right now, just remove it. Bug: chromium:923361 Change-Id: Iaf67a743d76d2b37ffff9961b510bfd8a1bd15ff Reviewed-on: https://chromium-review.googlesource.com/c/1425900 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#58993}
-
Michael Lippautz authored
This reverts commit 5043ab26. Tbr: ulan@chromium.org Bug: chromium:923361 Change-Id: I3a2cf2c29fe4dc424def8dc086856ed3301f2fc2 Reviewed-on: https://chromium-review.googlesource.com/c/1425904Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#58992}
-
Toon Verwaest authored
Change-Id: I907ace62da903dd57cb86b608c0f96ac49623976 Reviewed-on: https://chromium-review.googlesource.com/c/1426130 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#58991}
-
Toon Verwaest authored
Change-Id: I2abd9ef9591a5e65dcb3fd0231c8d7467296b576 Reviewed-on: https://chromium-review.googlesource.com/c/1426127Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#58990}
-
Sigurd Schneider authored
This saves about 80,000 LoC after preprocessor expansion. Bug: v8:8562 Change-Id: I67b20edb73b801ddcc2937b84468241e3076535f Reviewed-on: https://chromium-review.googlesource.com/c/1425906Reviewed-by: Peter Marshall <petermarshall@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#58989}
-
peterwmwong authored
This is part of an effort to improve the performance of TA#subarray. Bug: v8:7161 Change-Id: I6f4b0f01e498d48e0fce11fbf7dcd7a0ad1ae748 Reviewed-on: https://chromium-review.googlesource.com/c/1425002 Commit-Queue: Peter Wong <peter.wm.wong@gmail.com> Reviewed-by: Peter Marshall <petermarshall@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#58988}
-
Tobias Tebbi authored
Now that https://bugs.llvm.org/show_bug.cgi?id=40118 has been fixed and rolled into V8, we can remove the workarounds for this Clang bug. This also effectively reverts https://chromium-review.googlesource.com/c/v8/v8/+/1280222 Bug: chromium:893437 Change-Id: Ia0d6d8ebdafafbc380b1b7a7809ef16effe50d71 Reviewed-on: https://chromium-review.googlesource.com/c/1425519Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#58987}
-
Tobias Tebbi authored
Change-Id: I0517ac0c9b8d83809fa51a2828f91211c97f6ffc Reviewed-on: https://chromium-review.googlesource.com/c/1424956Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#58986}
-
Michael Lippautz authored
This reverts commit 2b77aaf4. Reason for revert: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux64%20-%20cfi/18836 Original change's description: > [global-handles] Restructure GC post processing > > Bug: chromium:923361 > Change-Id: I97a0314b6d5af543e0574f27892c73637739844d > Reviewed-on: https://chromium-review.googlesource.com/c/1426124 > Commit-Queue: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58984} TBR=ulan@chromium.org,mlippautz@chromium.org Change-Id: I8220c60573cf7f4a1ced99bcd18628933c45f41e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:923361 Reviewed-on: https://chromium-review.googlesource.com/c/1425901Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#58985}
-
Michael Lippautz authored
Bug: chromium:923361 Change-Id: I97a0314b6d5af543e0574f27892c73637739844d Reviewed-on: https://chromium-review.googlesource.com/c/1426124 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#58984}
-
Dan Elphick authored
This prevents the bytecode generator generating loads that look for extensions in the global context, which can never succeed and means that lazy and eager bytecode compilation will match. Bug: v8:8510 Change-Id: I51dca62b5d1ee34f8dea82260cf27295ddf427d9 Reviewed-on: https://chromium-review.googlesource.com/c/1425520Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#58983}
-
Ulan Degenbaev authored
Currently the memory reducer is activated only after the first mark- compact GC, which triggered after the old generation reaches 8 MB. That threshold is too large for mobile. This patch adds a heuristic to activate the memory reducer if the old generation expands by more than 1 MB after the bootstrap. Change-Id: Ic38bc6e2fe8887677f764246c45e38d237e49a94 Reviewed-on: https://chromium-review.googlesource.com/c/1425898Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#58982}
-
Peter Marshall authored
Everything was including log.h through heap-inl.h, so remove that include by moving the one user into heap.cc, and then fix all the include errors. This reduces the log.h include ball from ~550 to ~100. Change-Id: I6d09bc2f365b48645fcfdc695a68ea12539a745d Reviewed-on: https://chromium-review.googlesource.com/c/1424198 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#58981}
-
Daniel Clifford authored
This reverts commit d11a0648. Reason for revert: <INSERT REASONING HERE> Original change's description: > [torque] Implement safe initialization of classes through hidden structs > > Initialization of classes now happens atomically at the end of the > class constructor only once all of the values for the class' fields > have been fully computed. This makes Torque constructors completely > GC safe, e.g. hardened against allocations or exceptions in > constructors. > > As part of this change, make the 'this' parameter for method calls > explicit rather than implicit. > > Drive by: add validation to check for duplicate field declarations > > Bug: v8:7793 > Change-Id: I8b5e85980d6a103ef9fc3262b76f6514f36ebf88 > Reviewed-on: https://chromium-review.googlesource.com/c/1411252 > Commit-Queue: Daniel Clifford <danno@chromium.org> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58979} TBR=danno@chromium.org,tebbi@chromium.org Change-Id: Id6c46c175f53c5a77db1e6ca242586fba34cd02e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7793 Reviewed-on: https://chromium-review.googlesource.com/c/1426121Reviewed-by: Daniel Clifford <danno@chromium.org> Commit-Queue: Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#58980}
-
Daniel Clifford authored
Initialization of classes now happens atomically at the end of the class constructor only once all of the values for the class' fields have been fully computed. This makes Torque constructors completely GC safe, e.g. hardened against allocations or exceptions in constructors. As part of this change, make the 'this' parameter for method calls explicit rather than implicit. Drive by: add validation to check for duplicate field declarations Bug: v8:7793 Change-Id: I8b5e85980d6a103ef9fc3262b76f6514f36ebf88 Reviewed-on: https://chromium-review.googlesource.com/c/1411252 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#58979}
-
Georg Neis authored
This includes generalizing the notion of hints to allow for unallocated functions, represented by a pair of SFI and FeedbackVector. Bug: v8:7790 Change-Id: I7887665e1981b2039ecd626b82aebd5b5b64263c Reviewed-on: https://chromium-review.googlesource.com/c/1424946 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#58978}
-
Georg Neis authored
When inlining based on CreateClosure, we don't have a JSFunction but only the SharedFunctionInfo and FeedbackVector. Bug: v8:7790 Change-Id: I7a3cf50710273c7175e43e969d2364cff11c3d93 Reviewed-on: https://chromium-review.googlesource.com/c/1421357Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#58977}
-
- 21 Jan, 2019 13 commits
-
-
Mathias Bynens authored
BUG=v8:8523 Change-Id: Id913493bcf0d43da8f4f7cd33921e24d4d94b901 Reviewed-on: https://chromium-review.googlesource.com/c/1425521 Commit-Queue: Mathias Bynens <mathias@chromium.org> Reviewed-by: Caitlin Potter <caitp@igalia.com> Cr-Commit-Position: refs/heads/master@{#58976}
-
Michael Lippautz authored
Bug: chromium:923361 Change-Id: I520b2778b8a2fe3fcd52570f3a91758bc949f374 Reviewed-on: https://chromium-review.googlesource.com/c/1425897 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#58975}
-
Ulan Degenbaev authored
Change-Id: I428149f7e9b462bf75187ae0e10115a663579e43 Reviewed-on: https://chromium-review.googlesource.com/c/1425522Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#58974}
-
Camillo Bruni authored
Drive-by-fix: - improve PreparseData::Print Bug: chromium:923705 Change-Id: I0b0b9baf1c2cc68dccd987007081e0d5c0969c4a Reviewed-on: https://chromium-review.googlesource.com/c/1425201 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#58973}
-
Camillo Bruni authored
Many values stored in the preparse data for the skippable functions fit in one byte most of the time. The varint encoding uses a single continue bit per byte to tell whether there is a following byte. Change-Id: Ia0a622ba42a338fc91eea1e0c1a72d2582d9f867 Reviewed-on: https://chromium-review.googlesource.com/c/1400842 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#58972}
-
Tobias Tebbi authored
TBR: szuend@chromium.org Change-Id: Ifef721eecab79dbcfb306dd241b3476fc1b6ec56 Reviewed-on: https://chromium-review.googlesource.com/c/1424952Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#58971}
-
Clemens Hammacher authored
This current fails, since {mmap} fails with EINVAL for empty mappings. The destructor already has special handling for a {nullptr} mapping, so we can just use {nullptr} for empty files. We get a similar error on windows, and can fix it the same way. On order to make presubmit checks happy, we have to skip copyright checking and checking for terminating newlines for empty files. R=mlippautz@chromium.org Change-Id: I2b73da7ff6df72d8bdd40df1fff6422e0a46881e Reviewed-on: https://chromium-review.googlesource.com/c/1424861Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58970}
-
Michael Starzinger authored
This removes the unused "argument count" field from the safepoint table as the field was unused by now and always contained the value zero. Also note that associating a callee's argument count with the call-site is not compatible with tail-call support. When tail-calling a function with a different number of arguments, the information associated with the call-site becomes stale. The number of arguments is a property of the callee, not of the call-site in the caller. For this reason the field in question is not usable to support reference types in function arguments (at least when tail-calls are also supported). R=ahaas@chromium.org Change-Id: If667d729267f2dd2642b755c54235cc08ca9b141 Reviewed-on: https://chromium-review.googlesource.com/c/1402548Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#58969}
-
Toon Verwaest authored
Walk the VariableMap instead of the ast. Change-Id: I03ee9145230bcbfe04c5e31dc8d8b3a98a00a4be Reviewed-on: https://chromium-review.googlesource.com/c/1424865 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#58968}
-
Maya Lekova authored
This CL adds handling for Construct bytecode to the serializer for backgorund compilation, similar to the hanling of Call* bytecodes. Design doc: https://docs.google.com/document/d/1vCQYhtFPqXafSMweSnGD8l0TKEIB6cPV5UGMHJtpy8k/edit?ts=5bf7d341 Bug: v8:7790 Change-Id: If518ba44fff18c1b30fdf5c764bdb9e77886af78 Reviewed-on: https://chromium-review.googlesource.com/c/1424947 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#58967}
-
Clemens Hammacher authored
The purpose of the {WireBytesStorage} (typically held in a shared_ptr itself) is to keep the actual wire bytes alive. Thus implement it this way for the {NativeModuleWireBytesStorage}. R=mstarzinger@chromium.org Bug: v8:8689 Change-Id: I8f171b4fa8b80b517badb1b1d3228503a32830dd Reviewed-on: https://chromium-review.googlesource.com/c/1421362 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#58966}
-
Toon Verwaest authored
Change-Id: Id9955037b2de03d151e038f57f922429d85f06b3 Reviewed-on: https://chromium-review.googlesource.com/c/1425197 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#58965}
-
Ross McIlroy authored
BUG=chromium:919394 Change-Id: I99d0b557f8d52c87c4422cd971a43211e5d5e849 Reviewed-on: https://chromium-review.googlesource.com/c/1425198Reviewed-by: Dan Elphick <delphick@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#58964}
-