- 17 Jul, 2017 32 commits
-
-
Sathya Gunasekaran authored
This was previously used by our js builtins but they no longer exist. This has been exposed to API which means we can't remove it just yet. Moving to CPP for now to save binary size. Bug: v8:5343 Change-Id: I2a3e5a4169310b2ba13ce13f0386336e9733d71f Reviewed-on: https://chromium-review.googlesource.com/575024Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#46721}
-
Ulan Degenbaev authored
Now the concurrent marker skips the weak fields of AllocationSites. BUG=chromium:694255 Change-Id: If920b6a14fa12c3a90ab0d283e22988ccbd48c0e Reviewed-on: https://chromium-review.googlesource.com/574907 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#46720}
-
Benedikt Meurer authored
This reverts commit a72b2f88. Reason for revert: Breaks https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20debug/builds/7093 Original change's description: > [arm] Restrict grouping pushes before a TailCall to registers only > > We optimize parallel moves performed before a TailCall by grouping adjacent > pushes. This way, we may use a single instruction to push multiple registers at > once. However, we also have support for pushing immediates and stack slots for > which the benefit is questionnable therefore this patch removes support for > them. > > Concerning immediate pushes, it looks like a mistake since we do not have > support for this case in `AssembleMove` so this patch removes it. Furthermore, > if we add a test for this case, we see that a `push ip` instruction is > generated, effectively pushing whatever was in `ip` at the time instead of > pushing a constant. > > Concerning stack slot pushes, we generate a more or less equivalent sequence of > instructions. > > Finally, grouping floating point pushes is not used anywhere so this patch > removes support for this also. > > Bug: v8:6553 > Change-Id: I9b820d33361fc442dd813f66e1f96cda41009110 > Reviewed-on: https://chromium-review.googlesource.com/567191 > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Commit-Queue: Pierre Langlois <pierre.langlois@arm.com> > Cr-Commit-Position: refs/heads/master@{#46718} TBR=danno@chromium.org,jarin@chromium.org,pierre.langlois@arm.com,bmeurer@chromium.org Change-Id: Ib9db9e6e4f033aeea32741e04b1b884429acc800 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6553 Reviewed-on: https://chromium-review.googlesource.com/574908Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#46719}
-
Pierre Langlois authored
We optimize parallel moves performed before a TailCall by grouping adjacent pushes. This way, we may use a single instruction to push multiple registers at once. However, we also have support for pushing immediates and stack slots for which the benefit is questionnable therefore this patch removes support for them. Concerning immediate pushes, it looks like a mistake since we do not have support for this case in `AssembleMove` so this patch removes it. Furthermore, if we add a test for this case, we see that a `push ip` instruction is generated, effectively pushing whatever was in `ip` at the time instead of pushing a constant. Concerning stack slot pushes, we generate a more or less equivalent sequence of instructions. Finally, grouping floating point pushes is not used anywhere so this patch removes support for this also. Bug: v8:6553 Change-Id: I9b820d33361fc442dd813f66e1f96cda41009110 Reviewed-on: https://chromium-review.googlesource.com/567191Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Pierre Langlois <pierre.langlois@arm.com> Cr-Commit-Position: refs/heads/master@{#46718}
-
Michael Lippautz authored
Bug: chromium:738865 Change-Id: Ic30a3e1012771d2e37b0e10aa59ab348a40bac10 Reviewed-on: https://chromium-review.googlesource.com/574714Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#46717}
-
Ulan Degenbaev authored
Now the concurrent marker pushes these objects in the bailout worklist so that the main thread can perform wrapper tracing. BUG=chromium:694255 Change-Id: I64f194334458fbabf16a63a8ae570456cb5fee19 Reviewed-on: https://chromium-review.googlesource.com/574603 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#46716}
-
Michael Lippautz authored
Bug: chromium:738865 Change-Id: I4c8aa8c90ba401200222d95d6395c022fc023a71 Reviewed-on: https://chromium-review.googlesource.com/574535 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#46715}
-
Ross McIlroy authored
BUG=chromium:743622 Change-Id: Ic29a39d5976425eda2358c7e5ace0efa1b78a718 Reviewed-on: https://chromium-review.googlesource.com/574604Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46714}
-
Mircea Trofin authored
Added a flag, process_size, to collect the maximum memory size used by a test run. Bug: Change-Id: I5d659ff03bfcf7ab4a868aafbda3303ffcb9fa78 Reviewed-on: https://chromium-review.googlesource.com/542415 Commit-Queue: Mircea Trofin <mtrofin@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#46713}
-
Ben Noordhuis authored
Add a default clause to the switch statement in debug::GetBuiltin() and abort if it is reached. Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I8895497b64ccd3b8eb23d281b8bca4405a5c3959 Reviewed-on: https://chromium-review.googlesource.com/574172Reviewed-by: Jochen Eisinger <jochen@chromium.org> Commit-Queue: Ben Noordhuis <info@bnoordhuis.nl> Cr-Commit-Position: refs/heads/master@{#46712}
-
Andreas Haas authored
This is the ia32 implementation of the CL https://codereview.chromium.org/2763593002 Original message: [wasm][arm] Add an additional stack check for functions with big frames. Stack overflow checks are typically implemented as part of the TurboFan graph of a function. This means that the stack check code is executed after frame construction. When a frame is too big, though, there may not be enough space on the stack anymore to throw the stack overflow exception after frame construction. With this CL we do an additional stack check before frame construction for functions with big frames. As discussed offline with mstarzinger, I do this change currently only for WebAssembly. This CL contains only the changes for arm. I will do the other platforms in separate CLs. Bug:v8:6318 R=neis@chromium.org, titzer@chromium.org Change-Id: Ibeedc5c4c4571cffd3a9c58016ddc44b64e2bf02 Reviewed-on: https://chromium-review.googlesource.com/568305 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#46711}
-
Michael Starzinger authored
This makes sure Runtime_ArrayBufferNeuter fails gracefully on array buffers that are non-neuterable. Note that this runtime function is whitelisted on ClusterFuzz and otherwise only used for testing. R=cbruni@chromium.org BUG=chromium:743215,v8:6534 Change-Id: I5069e615468f8789bf4fd87bb1e093a18bfd0347 Reviewed-on: https://chromium-review.googlesource.com/574168Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46710}
-
Yang Guo authored
R=petermarshall@chromium.org Change-Id: If181ed625015105f8bbabf29a9db3cfcf090b80a Reviewed-on: https://chromium-review.googlesource.com/574235Reviewed-by: Peter Marshall <petermarshall@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#46709}
-
Michael Lippautz authored
Bug: chromium:738865 Change-Id: Icc3e292ded7f4097ef266d8db80f273a412a8b92 Reviewed-on: https://chromium-review.googlesource.com/565718 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#46708}
-
Ivica Bogosavljevic authored
InstructionSelector::VisitInt32Mul TEST=cctest/test-run-machops/RunInt32MulAndInt32AddP,mjsunit/asm/int32mod-constant Bug: Change-Id: Iaccfc0d0c981e7c7e2f8b06ff3812fe60d1f85d3 Reviewed-on: https://chromium-review.googlesource.com/574367Reviewed-by: Miran Karić <Miran.Karic@imgtec.com> Commit-Queue: Ivica Bogosavljevic <ivica.bogosavljevic@imgtec.com> Cr-Commit-Position: refs/heads/master@{#46707}
-
Daniel Clifford authored
Bug=chromium:740784 LOG=N Change-Id: I61fe1b07426d0b1e5131687c9ce99a8dbfa09781 Reviewed-on: https://chromium-review.googlesource.com/574175 Commit-Queue: Daniel Clifford <danno@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#46706}
-
Michael Starzinger authored
This removes a special case for {IfSuccess} control projections from the effect-control linearizer that is no longer needed now that such control projections only appear in pairs. R=jarin@chromium.org Change-Id: I4d872ad301d09e7424b249fb7c4eb70353a9d3ff Reviewed-on: https://chromium-review.googlesource.com/574228Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46705}
-
Clemens Hammacher authored
This replaces four heap allocations by one stack allocated value. R=mstarzinger@chromium.org Change-Id: I7d00968d7bddadb51d7c7b1f3bc5253e54c8a3f9 Reviewed-on: https://chromium-review.googlesource.com/574025 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46704}
-
Ulan Degenbaev authored
If the incremental marker discovers more marking work and the concurrent marking tasks have already exited, then new concurrent marking tasks are scheduled to help the main thread marker. BUG=chromium:694255 Change-Id: I559af62790e6034b23a412d3308ba8b6ae3d27c9 Reviewed-on: https://chromium-review.googlesource.com/574170Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#46703}
-
Leszek Swirski authored
This reverts commit a2fcdc7c. Reason for revert: Large regressions in RCS (https://chromeperf.appspot.com/group_report?bug_id=740126) Original change's description: > [runtime] Move profiler ticks from SFI to feedback vector > > Instead of counting profiler ticks on the shared function info (which is > shared between native contexts), count them on the feedback vector > (which is not). This allows us to continue pushing optimization > decisions off the SFI, onto the feedback vector. > > Note that a side-effect of this is that ICs don't have to walk the stack > to reset profiler ticks, as they can access the feedback vector directly > from their feedback nexus. > > Change-Id: I232ae9e759fca75cd89d393148a4ff42caa2646f > Reviewed-on: https://chromium-review.googlesource.com/544888 > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > Cr-Commit-Position: refs/heads/master@{#46411} TBR=rmcilroy@chromium.org,leszeks@chromium.org,ishell@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: Id587e4172e300c420f93c49744a2a0e66696edf8 Reviewed-on: https://chromium-review.googlesource.com/574227 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#46702}
-
Georgia Kouveli authored
Some of the benchmarks were pointing to the wrong test functions. Bug: Change-Id: I6f7850feec1da61bea7b8c1ac03c00d75400f458 Reviewed-on: https://chromium-review.googlesource.com/574023Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#46701}
-
jgruber authored
Bug: v8:6000 Change-Id: I2853d44d8bcf34b28630594cc9c2782046bd4b28 Reviewed-on: https://chromium-review.googlesource.com/573900Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#46700}
-
Martyn Capewell authored
Most of these functions have become unusued due to Crankshaft's removal, so delete them. Bug: Change-Id: If4724c78a0b5c7b6179b22eb4068acd95dfdd29e Reviewed-on: https://chromium-review.googlesource.com/571011Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Martyn Capewell <martyn.capewell@arm.com> Cr-Commit-Position: refs/heads/master@{#46699}
-
Clemens Hammacher authored
There are wasm tests which are supposed to fail, but they fail for the wrong reason (because blocks do not declare their type). This CL fixes this, and changes the error output to contain the expected and observed results for better debuggability. R=titzer@chromium.org Change-Id: Ibbd7883e43677a91f858575578586c9e9d1641d5 Reviewed-on: https://chromium-review.googlesource.com/571810Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#46698}
-
Michael Lippautz authored
Bug: chromium:738865 Change-Id: If710b60d33eea94bff7b621910006c2d941a7670 Reviewed-on: https://chromium-review.googlesource.com/571900Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#46697}
-
Jaroslav Sevcik authored
Change-Id: Ib233e9801d5deed1acde36620d033d19957319d0 Bug: v8:6604 Reviewed-on: https://chromium-review.googlesource.com/573781Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#46696}
-
Michael Achenbach authored
This is for infra-side: https://chromium-review.googlesource.com/c/573544 NOTRY=true Bug: chromium:726584 Change-Id: I0dbe8cf8e107ad13d284dd2347935a225261abe8 Reviewed-on: https://chromium-review.googlesource.com/573545 Commit-Queue: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#46695}
-
Michael Starzinger authored
This makes the runtime rely on the {HasBytecodeArray} predicate to determine whether code generated by TurboFan was build without any deoptimization support, as opposed to {asm_function}. R=rmcilroy@chromium.org BUG=v8:6589 Change-Id: Id124bed47a5fa02d31ff8fd3eee561b2df6c9226 Reviewed-on: https://chromium-review.googlesource.com/571786Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46694}
-
Yang Guo authored
Objects created during bootstrapping do not need a transition tree except for elements kind transitions. R=ishell@chromium.org Bug: v8:6596 Change-Id: I237b8b2792f201336e1c9731c815095dd06bc182 Reviewed-on: https://chromium-review.googlesource.com/571750Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#46693}
-
Jaroslav Sevcik authored
In many cases, this is performance neutral because we can fall off the JavaScript monomorphic fast path for the hash lookup. Once we store the hash code in known fixed position, this should get much faster. Change-Id: I3bb52ee6482fe2c35b7abe70c1d0c21935c6cc1d Reviewed-on: https://chromium-review.googlesource.com/566679 Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#46692}
-
Jaroslav Sevcik authored
Change-Id: Ie59254ff0790a2db70c1f620f287f8de6387ad23 Bug: v8:5717 Reviewed-on: https://chromium-review.googlesource.com/573543Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#46691}
-
agrieve authored
BUG=chromium:738469 Review-Url: https://codereview.chromium.org/2975133002 Cr-Commit-Position: refs/heads/master@{#46690}
-
- 15 Jul, 2017 1 commit
-
-
v8-autoroll authored
Rolling v8/build: https://chromium.googlesource.com/chromium/src/build/+log/9cb83ca..63efa35 Rolling v8/third_party/catapult: https://chromium.googlesource.com/external/github.com/catapult-project/catapult/+log/90038ee..af47a93 Rolling v8/tools/clang: https://chromium.googlesource.com/chromium/src/tools/clang/+log/f6f6b65..844603c TBR=machenbach@chromium.org,hablich@chromium.org Change-Id: I114ee4d225032558289521a6ec2ff5a25898d9df Reviewed-on: https://chromium-review.googlesource.com/572529Reviewed-by: v8 autoroll <v8-autoroll@chromium.org> Commit-Queue: v8 autoroll <v8-autoroll@chromium.org> Cr-Commit-Position: refs/heads/master@{#46689}
-
- 14 Jul, 2017 7 commits
-
-
Wez authored
Previous Fuchsia SDK versions provide an empty header file, for convenience, but this is no longer the case. Change-Id: Ica8d23cc38664b3ebe7093606da4c669d6043c73 Reviewed-on: https://chromium-review.googlesource.com/571763Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Wez <wez@chromium.org> Cr-Commit-Position: refs/heads/master@{#46688}
-
Alexey Kozyatinskiy authored
Goal of this CL: explicit return from non-async function has position after return expression as return position (will unblock [1]). BytecodeArrayBuilder has SetStatementPosition and SetExpressionPosition methods. If one of these methods is called then next generated bytecode will get passed position. It's general treatment for most cases. Unfortunately it doesn't work for Returns: - debugger requires source positions exactly on kReturn bytecode in stepping implementation, - BytecodeGenerator::BuildReturn and BytecodeGenerator::BuildAsyncReturn generates more then one bytecode and general solution will put return position on first generated bytecode, - it's not easy to split BuildReturn function into two parts to allow something like following in BytecodeGenerator::VisitReturnStatement since generated bytecodes are actually controlled by execution_control(). ..->BuildReturnPrologue(); ..->SetReturnPosition(stmt); ..->Return(); In this CL we pass ReturnStatement through ExecutionControl and use it for position when we emit return bytecode right here. So this CL only will improve return position for returns inside of non-async functions, I'll address async functions later. [1] https://chromium-review.googlesource.com/c/543161/ Change-Id: Iede512c120b00c209990bf50c20e7d23dc0d65db Reviewed-on: https://chromium-review.googlesource.com/560738 Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#46687}
-
erikchen authored
v8 now uses the same SDK as Chromium, even when built as a standalone project. The deployment target override has no effect. Bug: chromium:740693 Change-Id: I089f74d5ad1590ff7167564f83b0110620a92ef9 Reviewed-on: https://chromium-review.googlesource.com/565887Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Erik Chen <erikchen@chromium.org> Cr-Commit-Position: refs/heads/master@{#46686}
-
Wez authored
TBR: machenbach, hablich, kozyatinskiy Change-Id: Id5cbcc1260b69a68dded46651471bd1cfa57d3a3 Reviewed-on: https://chromium-review.googlesource.com/571114Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Wez <wez@chromium.org> Cr-Commit-Position: refs/heads/master@{#46685}
-
Ross McIlroy authored
Changes the ShouldUseFullCodegen to use the flags on the literal instead of the SharedFunctionInfo. Also moves the setting of the SFI flags based on the literal to be in the final stage of unoptimized compilation since they are no longer needed on the SFI during compilation. This is in preparation to enable shared function infos to be created after bytecode generation (to enable off-thread bytecode generation). BUG=v8:5203, v8:6409 Change-Id: I15754979a704123b56dad9e1dfd5c3bb468b85c7 Reviewed-on: https://chromium-review.googlesource.com/570249 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46684}
-
Caitlin Potter authored
SuspendFlags was originally used by the suspend operation to determine which field to record the bytecode offset of a suspended generator, and the value the generator was resumed with. For async generators, await operations would use a separate field, in order to preserve the previous yield input value. This was important to ensure `function.sent` continued to function correctly. As function.sent is being retired, this allows the removal of support for that. Given that this was the only real need for SuspendFlags in the first place (with other uses tacked on as a hack), this involves several other changes as well: - Modification of MacroAssembler AssertGeneratorObject. No longer accepts a SuspendFlags parameter to determine which type of check to perform. - Removal of `flags` operand from SuspendGenerator bytecode, and the GeneratorStore js-operator. - Removal of `flags` parameter from ResumeGeneratorTrampoline builtins. - Removal of Runtime functions, interpreter intrinsics and AccessBuilders associated with the [[await_input_or_debug_pos]] field in JSAsyncGeneratorObject, as this field no longer exists. - Addition of a new `Yield` AST node (subclass of Suspend) in order to prevent the need for the other SuspendFlag values. BUG=v8:5855 TBR=bmeurer@chromium.org Change-Id: Iff2881e4742497fe5b774915e988c3d9d8fbe487 Reviewed-on: https://chromium-review.googlesource.com/570485 Commit-Queue: Caitlin Potter <caitp@igalia.com> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#46683}
-
Ben L. Titzer authored
R=clemensh@chromium.org Bug: Change-Id: I0fb6bdba7462acd1a6f86a9a378238dcb466a9e1 Reviewed-on: https://chromium-review.googlesource.com/571012Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#46682}
-