1. 14 Jun, 2016 2 commits
  2. 13 Jun, 2016 4 commits
  3. 06 Jun, 2016 1 commit
  4. 31 May, 2016 1 commit
    • mtrofin's avatar
      [wasm] separate snapshot-able stages · 3d25ad4d
      mtrofin authored
      This CLprepares the terrain for serialization/deserialization. It sets up
      the instantiation stages such that we have a point wereh we can split off
      obtaining the code from a snapshot, or snapshot. That point is after we
      compile and produce the code table, but before we attach the
      deoptimization info we use for stack tracing.
      
      Opportunistically, performed more cleanup to improve maintainability:
      - clarified sequential vs parallel compilation stages. FinishCompilation
      was somewhat ambiguous in that it performed a few responsibilities:
      compiling functions in the sequential case, and then populating the
      linker and code tables.
      - removed the "results" set, which is unnecessary. The linker simply
      shares the function_code vector, and so do the compilation stages.
      - populate the code table fixed array separately from compilation. This
      falls out of the decisions above.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2008043006
      Cr-Commit-Position: refs/heads/master@{#36618}
      3d25ad4d
  5. 30 May, 2016 1 commit
  6. 25 May, 2016 3 commits
  7. 24 May, 2016 2 commits
  8. 20 May, 2016 1 commit
  9. 19 May, 2016 2 commits
  10. 13 May, 2016 2 commits
  11. 12 May, 2016 2 commits
    • clemensh's avatar
      [wasm] Add UTF-8 validation · f0523e30
      clemensh authored
      Names passed for imports and exports are checked during decoding,
      leading to errors if they are no valid UTF-8. Function names are not
      checked during decode, but rather lead to undefined being returned at
      runtime if they are not UTF-8.
      
      We need to do these checks on the Wasm side, since the factory
      methods assume to get valid UTF-8 strings.
      
      R=titzer@chromium.org, yangguo@chromium.org
      
      Review-Url: https://codereview.chromium.org/1967023004
      Cr-Commit-Position: refs/heads/master@{#36208}
      f0523e30
    • ahaas's avatar
      [wasm] Implement parallel compilation. · 4aec7ba1
      ahaas authored
      With this CL it is possible to compile a wasm module with multiple
      threads in parallel. Parallel compilation works as follows:
      
      1)   The main thread allocates a compilation unit for each wasm function.
      2)   The main thread spawns WasmCompilationTasks which run on the
           background threads.
      3.a) The background threads and the main thread pick one compilation unit
           at a time and execute the parallel phase of the compilation unit.
           After finishing the execution of the parallel phase, the compilation
           unit is stored in a result queue.
      3.b) If the result queue contains a compilation unit, the main thread
           dequeues it and finishes its compilation.
      4)   After the execution of the parallel phase of all compilation units has
           started, the main thread waits for all WasmCompilationTasks to finish.
      5)   The main thread finalizes the compilation of the module.
      
      I'm going to add some additional tests before committing this CL.
      
      R=titzer@chromium.org, bmeurer@chromium.org, mlippautz@chromium.org, mstarzinger@chromium.org
      
      Committed: https://crrev.com/17215438659d8ff2d7d55f95226bf8a1477ccd79
      Cr-Commit-Position: refs/heads/master@{#36178}
      
      Review-Url: https://codereview.chromium.org/1961973002
      Cr-Commit-Position: refs/heads/master@{#36207}
      4aec7ba1
  12. 11 May, 2016 3 commits
    • ahaas's avatar
      Revert of [wasm] Implement parallel compilation. (patchset #6 id:100001 of... · be8c688a
      ahaas authored
      Revert of [wasm] Implement parallel compilation. (patchset #6 id:100001 of https://codereview.chromium.org/1961973002/ )
      
      Reason for revert:
      The ThreadSanitizer finds data races.
      
      Original issue's description:
      > [wasm] Implement parallel compilation.
      >
      > With this CL it is possible to compile a wasm module with multiple
      > threads in parallel. Parallel compilation works as follows:
      >
      > 1)   The main thread allocates a compilation unit for each wasm function.
      > 2)   The main thread spawns WasmCompilationTasks which run on the
      >      background threads.
      > 3.a) The background threads and the main thread pick one compilation unit
      >      at a time and execute the parallel phase of the compilation unit.
      >      After finishing the execution of the parallel phase, the compilation
      >      unit is stored in a result queue.
      > 3.b) If the result queue contains a compilation unit, the main thread
      >      dequeues it and finishes its compilation.
      > 4)   After the execution of the parallel phase of all compilation units has
      >      started, the main thread waits for all WasmCompilationTasks to finish.
      > 5)   The main thread finalizes the compilation of the module.
      >
      > I'm going to add some additional tests before committing this CL.
      >
      > R=titzer@chromium.org, bmeurer@chromium.org, mlippautz@chromium.org, mstarzinger@chromium.org
      >
      > Committed: https://crrev.com/17215438659d8ff2d7d55f95226bf8a1477ccd79
      > Cr-Commit-Position: refs/heads/master@{#36178}
      
      TBR=bmeurer@chromium.org,mlippautz@chromium.org,mstarzinger@chromium.org,titzer@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      
      Review-Url: https://codereview.chromium.org/1965243003
      Cr-Commit-Position: refs/heads/master@{#36182}
      be8c688a
    • ahaas's avatar
      [wasm] Implement parallel compilation. · 17215438
      ahaas authored
      With this CL it is possible to compile a wasm module with multiple
      threads in parallel. Parallel compilation works as follows:
      
      1)   The main thread allocates a compilation unit for each wasm function.
      2)   The main thread spawns WasmCompilationTasks which run on the
           background threads.
      3.a) The background threads and the main thread pick one compilation unit
           at a time and execute the parallel phase of the compilation unit.
           After finishing the execution of the parallel phase, the compilation
           unit is stored in a result queue.
      3.b) If the result queue contains a compilation unit, the main thread
           dequeues it and finishes its compilation.
      4)   After the execution of the parallel phase of all compilation units has
           started, the main thread waits for all WasmCompilationTasks to finish.
      5)   The main thread finalizes the compilation of the module.
      
      I'm going to add some additional tests before committing this CL.
      
      R=titzer@chromium.org, bmeurer@chromium.org, mlippautz@chromium.org, mstarzinger@chromium.org
      
      Review-Url: https://codereview.chromium.org/1961973002
      Cr-Commit-Position: refs/heads/master@{#36178}
      17215438
    • titzer's avatar
      [formatting] Remove all double blank lines in WASM code. · bf90d9a3
      titzer authored
      R=ahaas@chromium.org,mstarzinger@chromium.org
      BUG=
      
      Review-Url: https://codereview.chromium.org/1970543003
      Cr-Commit-Position: refs/heads/master@{#36174}
      bf90d9a3
  13. 04 May, 2016 1 commit
  14. 03 May, 2016 1 commit
    • ahaas's avatar
      [wasm] Split the wasm compilation into two phases for parallel compilation. · 18c380c3
      ahaas authored
      Graph construction, graph scheduling, instruction selection, and register
      allocation has been moved to ExecuteCompilation, which will eventually be
      executed on the background threads. Code generation remains in
      FinishCompilation because it has to be executed by the main thread.
      
      Additionally, WasmCompilationUnits are finished more eagerly in
      wasm-module.cc to save memory.
      
      R=titzer@chromium.org
      
      Review-Url: https://codereview.chromium.org/1942773002
      Cr-Commit-Position: refs/heads/master@{#35973}
      18c380c3
  15. 29 Apr, 2016 3 commits
  16. 28 Apr, 2016 1 commit
    • ahaas's avatar
      [wasm] Generated the framework in wasm-module for parallel compilation. · e51323de
      ahaas authored
      I introduced a new flag, --wasm-parallel-compilation, which turns on
      parallel compilation of wasm modules. If parallel compilation is turned
      on, then the compilation of wasm functions is split into three phases,
      initialization, execution, and finalization. The execution phase is the
      phase which is going to contain all the code that can be executed in
      parallel. At the moment the execution phase is still empty.
      
      R=titzer@chromium.org
      
      Review-Url: https://codereview.chromium.org/1928933002
      Cr-Commit-Position: refs/heads/master@{#35875}
      e51323de
  17. 26 Apr, 2016 1 commit
  18. 21 Apr, 2016 2 commits
  19. 14 Apr, 2016 1 commit
  20. 01 Apr, 2016 1 commit
  21. 17 Mar, 2016 1 commit
  22. 10 Mar, 2016 1 commit
  23. 09 Mar, 2016 2 commits
  24. 08 Mar, 2016 1 commit