-
Andreas Haas authored
There exists a hidden assumption in V8 that neither foreground nor background tasks own any memory. For asynchronous WebAssembly compilation this assumption was wrong, which causes crashes when V8 shut down before the compilation finished. With this CL I change the way asynchrous compilation happens. In the existing implementation each compilation stage provided its own task which could be spawned either in foreground or background. With this CL each stage only provides a state, and a generic CompileTask executes on that state. There exists exactly one state at a time. To have exactly one state at a time I combined the stages ExecuteCompilationUnits and FinishCompilationUnits to a single stage. In addition I removed the WaitForBackgroundTasks stage and added a CancelableTaskManager to the AsyncCompileJob instead to do the waiting. BUG=v8:6436 R=clemensh@chromium.org, mtrofin@chromium.org Change-Id: I2eb61f74235c65524ce720c474eaf99ae7472c81 Reviewed-on: https://chromium-review.googlesource.com/532993 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#45908}
adad7e6e