- 13 Oct, 2017 1 commit
-
-
Mathias Bynens authored
New code should use nullptr instead of NULL. This patch updates existing use of NULL to nullptr where applicable, making the code base more consistent. BUG=v8:6928,v8:6921 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng;master.tryserver.v8:v8_linux_noi18n_rel_ng Change-Id: I4687f5b96fcfd88b41fa970a2b937b4f6538777c Reviewed-on: https://chromium-review.googlesource.com/718338 Commit-Queue: Mathias Bynens <mathias@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#48557}
-
- 28 Sep, 2017 1 commit
-
-
Michael Starzinger authored
R=rmcilroy@chromium.org Change-Id: Id568afef0d6ac68170faa33ad9ab4bba97d40ce9 Reviewed-on: https://chromium-review.googlesource.com/690294 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#48202}
-
- 11 Aug, 2017 1 commit
-
-
Ross McIlroy authored
Deletes the now unused Full-codegen compiler. Also removes some macro assembler instructions which are no longer used. Note: there is still additional cleanup work to do after this lands (e.g., remove support for FCG frames support and FCG debugger support, etc.), but this will be done in followup CLs to keep this patch managable. BUG=v8:6409 Change-Id: I8d828fe7a64d29f2c1252d5fda968a630a2e9ef2 Reviewed-on: https://chromium-review.googlesource.com/584773 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#47307}
-
- 03 Aug, 2017 1 commit
-
-
Ross McIlroy authored
Don't hold a pointer to parse_info in compilation_info, and instead explicitly add the fields needed in compiation_info. The intention is to make ParseInfo only actually needed for parsing, and eventually make it possible to compile with only a CompileInfo. BUG=v8:5203 Change-Id: Iecd39245e44c218874401c3991eeaf3ceef2816f Reviewed-on: https://chromium-review.googlesource.com/595738Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#47119}
-
- 19 Jun, 2017 1 commit
-
-
Leszek Swirski authored
For interpreted functions, use the optimized code slot in the feedback vector to store an optimization marker (optimize/in optimization queue) rather than changing the JSFunction's code object. Then, adapt the self-healing mechanism to also dispatch based on this optimization marker. Similarly, replace SFI marking with optimization marker checks in CompileLazy. This allows JSFunctions to share optimization information (replacing shared function marking) without leaking this information across native contexts. Non I+TF functions (asm.js or --no-turbo) use a CheckOptimizationMarker shim which generalises the old CompileOptimized/InOptimizationQueue builtins and also checks the same optimization marker as CompileLazy and InterpreterEntryTrampoline. This is a reland of https://chromium-review.googlesource.com/c/509716 Change-Id: I02b790544596562373da4c9c9f6afde5fb3bcffe Reviewed-on: https://chromium-review.googlesource.com/535460Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#45997}
-
- 13 Jun, 2017 2 commits
-
-
Leszek Swirski authored
This reverts commit e39c9e02. Reason for revert: Breaks https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20debug/builds/15561 Original change's description: > [compiler] Drive optimizations with feedback vector > > For interpreted functions, use the optimized code slot in the feedback vector > to store an optimization marker (optimize/in optimization queue) rather than > changing the JSFunction's code object. Then, adapt the self-healing mechanism > to also dispatch based on this optimization marker. Similarly, replace SFI > marking with optimization marker checks in CompileLazy. > > This allows JSFunctions to share optimization information (replacing shared > function marking) without leaking this information across native contexts. Non > I+TF functions (asm.js or --no-turbo) use a CheckOptimizationMarker shim which > generalises the old CompileOptimized/InOptimizationQueue builtins and also > checks the same optimization marker as CompileLazy and > InterpreterEntryTrampoline. > > Change-Id: I6826bdde7ab9a919cdb6b69bc0ebc6174bcb91ae > Reviewed-on: https://chromium-review.googlesource.com/509716 > Commit-Queue: Leszek Swirski <leszeks@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#45901} TBR=rmcilroy@chromium.org,mstarzinger@chromium.org,leszeks@chromium.org No-Presubmit: true No-Tree-Checks: true No-Try: true Change-Id: Ib6c2b4d90fc5f659a6dcaf3fd30321507ca9cb94 Reviewed-on: https://chromium-review.googlesource.com/532916Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#45903}
-
Leszek Swirski authored
For interpreted functions, use the optimized code slot in the feedback vector to store an optimization marker (optimize/in optimization queue) rather than changing the JSFunction's code object. Then, adapt the self-healing mechanism to also dispatch based on this optimization marker. Similarly, replace SFI marking with optimization marker checks in CompileLazy. This allows JSFunctions to share optimization information (replacing shared function marking) without leaking this information across native contexts. Non I+TF functions (asm.js or --no-turbo) use a CheckOptimizationMarker shim which generalises the old CompileOptimized/InOptimizationQueue builtins and also checks the same optimization marker as CompileLazy and InterpreterEntryTrampoline. Change-Id: I6826bdde7ab9a919cdb6b69bc0ebc6174bcb91ae Reviewed-on: https://chromium-review.googlesource.com/509716 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#45901}
-
- 18 Apr, 2017 1 commit
-
-
Jochen Eisinger authored
BUG=none R=yangguo@chromium.org Change-Id: I683c10eae10f60fb7239f3714df0a12a9d19a43b Reviewed-on: https://chromium-review.googlesource.com/480071Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Jochen Eisinger <jochen@chromium.org> Cr-Commit-Position: refs/heads/master@{#44674}
-
- 23 Feb, 2017 2 commits
-
-
Ross McIlroy authored
This reverts commit 8307ab70. Reason for revert: Breaks TSAN Original change's description: > [Counters] Add HistorgramTimers for optimized compile. > > Will be used for UMA to track time spent optimizing code in the wild. > > Change-Id: Ibc01540552eac4cb9224f1cb6cc11a55aae5834d > Reviewed-on: https://chromium-review.googlesource.com/444345 > Reviewed-by: Michael Stanton <mvstanton@chromium.org> > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Cr-Commit-Position: refs/heads/master@{#43374} TBR=rmcilroy@chromium.org,mvstanton@chromium.org,machenbach@chromium.org,hablich@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: I1cfc2ee599b9ba0132e69c8a61b21ff32c74f68e Reviewed-on: https://chromium-review.googlesource.com/446360Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#43396}
-
Marja Hölttä authored
BUG=v8:5294 Change-Id: If45f25aae8de526027b7851cb4efe0ccf4a7c4b1 Reviewed-on: https://chromium-review.googlesource.com/444226 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#43388}
-
- 22 Feb, 2017 1 commit
-
-
Ross McIlroy authored
Will be used for UMA to track time spent optimizing code in the wild. Change-Id: Ibc01540552eac4cb9224f1cb6cc11a55aae5834d Reviewed-on: https://chromium-review.googlesource.com/444345Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#43374}
-
- 30 Jan, 2017 2 commits
-
-
jochen authored
R=mtrofin@chromium.org,verwaest@chromium.org BUG= Review-Url: https://codereview.chromium.org/2662883003 Cr-Commit-Position: refs/heads/master@{#42787}
-
jochen authored
We shouldn't block during GC for arbitrarily long intervals. BUG=chromium:686153,chromium:642532 R=verwaest@chromium.org,hpayer@chromium.org Review-Url: https://codereview.chromium.org/2658313002 Cr-Commit-Position: refs/heads/master@{#42761}
-
- 31 Aug, 2016 1 commit
-
-
marja authored
This way, many files which only need CompilationInfo but not compiler.h and its dependencies can include just compilation-info.h. BUG= Review-Url: https://codereview.chromium.org/2284313003 Cr-Commit-Position: refs/heads/master@{#39038}
-
- 22 Aug, 2016 1 commit
-
-
rmcilroy authored
Adds InterpreterCompilationJob as a sub-class of CompilationJob, to enable off-thread bytecode generation. Currently only used in Interpreter::MakeBytecode. As part of this change, CompilationJob is modified to make it less specific to optimized compilation, renaming the phases as follows: - CreateGraph -> PrepareJob - OptimizeGraph -> ExecuteJob - GenerateCode -> FinalizeJob RegisterWeakObjectsInOptimizedCode is also moved out of CompilationJob and instead becomes a static function on Compiler. BUG=v8:5203 Committed: https://crrev.com/1fb6a7e697e8bc5b4af51647553741f966e00cdc Committed: https://crrev.com/785990e9fc0dd9a9d963d25d0bed2909165e4ca9 Committed: https://crrev.com/d7c6195c4c5cdc080caa74dfe2ae9ecab69bea73 Review-Url: https://codereview.chromium.org/2240463002 Cr-Original-Original-Original-Commit-Position: refs/heads/master@{#38662} Cr-Original-Original-Commit-Position: refs/heads/master@{#38668} Cr-Original-Commit-Position: refs/heads/master@{#38725} Cr-Commit-Position: refs/heads/master@{#38778}
-
- 18 Aug, 2016 2 commits
-
-
rmcilroy authored
Revert of [Interpreter] Introduce InterpreterCompilationJob (patchset #9 id:180001 of https://codereview.chromium.org/2240463002/ ) Reason for revert: Revert again... Original issue's description: > [Interpreter] Introduce InterpreterCompilationJob > > Adds InterpreterCompilationJob as a sub-class of > CompilationJob, to enable off-thread bytecode > generation. Currently only used in > Interpreter::MakeBytecode. > > As part of this change, CompilationJob is modified > to make it less specific to optimized compilation, > renaming the phases as follows: > - CreateGraph -> PrepareJob > - OptimizeGraph -> ExecuteJob > - GenerateCode -> FinalizeJob > > RegisterWeakObjectsInOptimizedCode is also moved out > of CompilationJob and instead becomes a static function > on Compiler. > > BUG=v8:5203 > > Committed: https://crrev.com/1fb6a7e697e8bc5b4af51647553741f966e00cdc > Committed: https://crrev.com/785990e9fc0dd9a9d963d25d0bed2909165e4ca9 > Committed: https://crrev.com/d7c6195c4c5cdc080caa74dfe2ae9ecab69bea73 > Cr-Original-Original-Commit-Position: refs/heads/master@{#38662} > Cr-Original-Commit-Position: refs/heads/master@{#38668} > Cr-Commit-Position: refs/heads/master@{#38725} TBR=mstarzinger@chromium.org,jkummerow@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5203 Review-Url: https://codereview.chromium.org/2260583002 Cr-Commit-Position: refs/heads/master@{#38727}
-
rmcilroy authored
Adds InterpreterCompilationJob as a sub-class of CompilationJob, to enable off-thread bytecode generation. Currently only used in Interpreter::MakeBytecode. As part of this change, CompilationJob is modified to make it less specific to optimized compilation, renaming the phases as follows: - CreateGraph -> PrepareJob - OptimizeGraph -> ExecuteJob - GenerateCode -> FinalizeJob RegisterWeakObjectsInOptimizedCode is also moved out of CompilationJob and instead becomes a static function on Compiler. BUG=v8:5203 Committed: https://crrev.com/1fb6a7e697e8bc5b4af51647553741f966e00cdc Committed: https://crrev.com/785990e9fc0dd9a9d963d25d0bed2909165e4ca9 Review-Url: https://codereview.chromium.org/2240463002 Cr-Original-Original-Commit-Position: refs/heads/master@{#38662} Cr-Original-Commit-Position: refs/heads/master@{#38668} Cr-Commit-Position: refs/heads/master@{#38725}
-
- 16 Aug, 2016 4 commits
-
-
rmcilroy authored
Revert of [Interpreter] Introduce InterpreterCompilationJob (patchset #7 id:140001 of https://codereview.chromium.org/2240463002/ ) Reason for revert: Breaks Win64 bot Original issue's description: > [Interpreter] Introduce InterpreterCompilationJob > > Adds InterpreterCompilationJob as a sub-class of > CompilationJob, to enable off-thread bytecode > generation. Currently only used in > Interpreter::MakeBytecode. > > As part of this change, CompilationJob is modified > to make it less specific to optimized compilation, > renaming the phases as follows: > - CreateGraph -> PrepareJob > - OptimizeGraph -> ExecuteJob > - GenerateCode -> FinalizeJob > > RegisterWeakObjectsInOptimizedCode is also moved out > of CompilationJob and instead becomes a static function > on Compiler. > > BUG=v8:5203 > > Committed: https://crrev.com/1fb6a7e697e8bc5b4af51647553741f966e00cdc > Committed: https://crrev.com/785990e9fc0dd9a9d963d25d0bed2909165e4ca9 > Cr-Original-Commit-Position: refs/heads/master@{#38662} > Cr-Commit-Position: refs/heads/master@{#38668} TBR=mstarzinger@chromium.org,jkummerow@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5203 Review-Url: https://codereview.chromium.org/2251673003 Cr-Commit-Position: refs/heads/master@{#38669}
-
rmcilroy authored
Adds InterpreterCompilationJob as a sub-class of CompilationJob, to enable off-thread bytecode generation. Currently only used in Interpreter::MakeBytecode. As part of this change, CompilationJob is modified to make it less specific to optimized compilation, renaming the phases as follows: - CreateGraph -> PrepareJob - OptimizeGraph -> ExecuteJob - GenerateCode -> FinalizeJob RegisterWeakObjectsInOptimizedCode is also moved out of CompilationJob and instead becomes a static function on Compiler. BUG=v8:5203 Committed: https://crrev.com/1fb6a7e697e8bc5b4af51647553741f966e00cdc Review-Url: https://codereview.chromium.org/2240463002 Cr-Original-Commit-Position: refs/heads/master@{#38662} Cr-Commit-Position: refs/heads/master@{#38668}
-
rmcilroy authored
Revert of [Interpreter] Introduce InterpreterCompilationJob (patchset #7 id:140001 of https://codereview.chromium.org/2240463002/ ) Reason for revert: Failing on Win64 bot: https://build.chromium.org/p/client.v8/builders/V8%20Win64/builds/12061/steps/Check/logs/regress-635429 Original issue's description: > [Interpreter] Introduce InterpreterCompilationJob > > Adds InterpreterCompilationJob as a sub-class of > CompilationJob, to enable off-thread bytecode > generation. Currently only used in > Interpreter::MakeBytecode. > > As part of this change, CompilationJob is modified > to make it less specific to optimized compilation, > renaming the phases as follows: > - CreateGraph -> PrepareJob > - OptimizeGraph -> ExecuteJob > - GenerateCode -> FinalizeJob > > RegisterWeakObjectsInOptimizedCode is also moved out > of CompilationJob and instead becomes a static function > on Compiler. > > BUG=v8:5203 > > Committed: https://crrev.com/1fb6a7e697e8bc5b4af51647553741f966e00cdc > Cr-Commit-Position: refs/heads/master@{#38662} TBR=mstarzinger@chromium.org,jkummerow@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5203 Review-Url: https://codereview.chromium.org/2249153002 Cr-Commit-Position: refs/heads/master@{#38663}
-
rmcilroy authored
Adds InterpreterCompilationJob as a sub-class of CompilationJob, to enable off-thread bytecode generation. Currently only used in Interpreter::MakeBytecode. As part of this change, CompilationJob is modified to make it less specific to optimized compilation, renaming the phases as follows: - CreateGraph -> PrepareJob - OptimizeGraph -> ExecuteJob - GenerateCode -> FinalizeJob RegisterWeakObjectsInOptimizedCode is also moved out of CompilationJob and instead becomes a static function on Compiler. BUG=v8:5203 Review-Url: https://codereview.chromium.org/2240463002 Cr-Commit-Position: refs/heads/master@{#38662}
-
- 20 Jul, 2016 1 commit
-
-
jochen authored
BUG=v8:5215 R=marja@chromium.org Review-Url: https://codereview.chromium.org/2161033003 Cr-Commit-Position: refs/heads/master@{#37906}
-
- 07 Jul, 2016 1 commit
-
-
ulan authored
For motivation see the bug. BUG=625865 LOG=NO Review-Url: https://codereview.chromium.org/2121273002 Cr-Commit-Position: refs/heads/master@{#37581}
-
- 27 May, 2016 1 commit
-
-
mvstanton authored
We get less "pollution" of type feedback if we have one vector per native context, rather than one for the whole system. This CL moves the vector appropriately. BUG= Review-Url: https://codereview.chromium.org/1906823002 Cr-Commit-Position: refs/heads/master@{#36539}
-
- 02 May, 2016 1 commit
-
-
mstarzinger authored
This removes the CompilationInfoWithZone class, which was used to allocate a CompilationInfo on the C-heap. By now the CompilationJob is the single object being allocated on the C-heap and passed between the main thread and the compilation thread. Structs requiring destruction can be embedded within that CompilationJob. This simplifies involved lifetimes by coupling all lifetimes to one single object. R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1930773003 Cr-Commit-Position: refs/heads/master@{#35936}
-
- 27 Apr, 2016 3 commits
-
-
mstarzinger authored
The status FAILED and BAILED_OUT only distinguishes between whether an exception is pending or not. Such a distinction is obsolete by now as all callers check for pending exceptions directly. Also it is impossible for any concurrent part of the job to actually set a pending exception, hence even the assertion that the concurrent part does not return FAILED is obsolete. R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1926693003 Cr-Commit-Position: refs/heads/master@{#35834}
-
mstarzinger authored
R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1925743002 Cr-Commit-Position: refs/heads/master@{#35832}
-
bmeurer authored
Refactor the TurboFan pipeline to allow for concurrent recompilation in the same way that Crankshaft does it. For now we limit the concurrent phases to scheduling, instruction selection, register allocation and jump threading. R=mstarzinger@chromium.org, ahaas@chromium.org, jarin@chromium.org Review URL: https://codereview.chromium.org/1179393008 Cr-Commit-Position: refs/heads/master@{#35818}
-
- 20 Apr, 2016 1 commit
-
-
mstarzinger authored
This removes some obsolete conditions checking whether we are performing concurrent OSR compilation. This feature has been removed some time ago. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1901163003 Cr-Commit-Position: refs/heads/master@{#35646}
-
- 08 Mar, 2016 2 commits
-
-
mstarzinger authored
This changes the compiler API that finalizes a previously queued optimization job on the main thread, to not deal with code objects directly. This is in sync with the rest of the API now. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1773663003 Cr-Commit-Position: refs/heads/master@{#34577}
-
mstarzinger authored
R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1773593002 Cr-Commit-Position: refs/heads/master@{#34572}
-
- 18 Feb, 2016 1 commit
-
-
fmeawad authored
This CL adds a TRACE_EVENT where there is an isolated LOG, a HistogramTimer or a TimerEvent. Once we have a d8 tracing controller, all TimerEvents will be removed since they do not provide an added value over TRACE_EVENTs. HistogramTimers will remain, but their functionality will be limited to Histograms only. BUG=v8:4562 LOG=N Review URL: https://codereview.chromium.org/1707563002 Cr-Commit-Position: refs/heads/master@{#34099}
-
- 09 Feb, 2016 1 commit
-
-
mstarzinger authored
The function in question can already return an empty handle in the case of failures. This makes that contract explicit by using MaybeHandle like all other compiler API functions. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1590963002 Cr-Commit-Position: refs/heads/master@{#33839}
-
- 20 Oct, 2015 1 commit
-
-
jkummerow authored
Review URL: https://codereview.chromium.org/1405363003 Cr-Commit-Position: refs/heads/master@{#31410}
-
- 20 Aug, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1285183010 Cr-Commit-Position: refs/heads/master@{#30263}
-
- 24 Jul, 2015 1 commit
-
-
yangguo authored
R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/1248443003 Cr-Commit-Position: refs/heads/master@{#29840}
-
- 01 Jun, 2015 1 commit
-
-
erikcorry authored
When compiling on a laptop I like to concatenate the small test files. This makes a big difference to compile times. These changes make that easier. R=ulan@chromium.org BUG= Review URL: https://codereview.chromium.org/1163803002 Cr-Commit-Position: refs/heads/master@{#28742}
-
- 04 May, 2015 1 commit
-
-
alph authored
Tick event processor should not stay in a tight loop when there's nothing to do. It can go sleep until next sample event. LOG=N BUG=v8:3967 Review URL: https://codereview.chromium.org/1118533003 Cr-Commit-Position: refs/heads/master@{#28211}
-
- 20 Apr, 2015 1 commit
-
-
Ross McIlroy authored
R=jochen@chromium.org Review URL: https://codereview.chromium.org/1088993003 Cr-Commit-Position: refs/heads/master@{#27937}
-
- 14 Apr, 2015 1 commit
-
-
jochen authored
Original issue's description: > Remove support for thread-based recompilation > > BUG=v8:3608 > R=yangguo@chromium.org > LOG=y > > Committed: https://crrev.com/ed5db223a19dfe126af01 > Cr-Commit-Position: refs/heads/master@{#27619} BUG=v8:3608 R=yangguo@chromium.org LOG=y Review URL: https://codereview.chromium.org/1087763003 Cr-Commit-Position: refs/heads/master@{#27821}
-