1. 23 Oct, 2018 1 commit
    • Clemens Hammacher's avatar
      [wasm] Do not store ModuleEnv · 9716f689
      Clemens Hammacher authored
      Instead, create it when needed and pass it down to the actual
      compilation.
      This saves memory by making the WasmCompilationUnit smaller and will
      eventually allow us to implement the trap handler fallback correctly by
      using an updated ModuleEnv in background compilation and tier up.
      
      R=mstarzinger@chromium.org
      
      Bug: v8:5277, v8:8343
      Change-Id: I0dc3a37fb88e54eb4822dc99d58ff024f4b2a367
      Reviewed-on: https://chromium-review.googlesource.com/c/1293953
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#56896}
      9716f689
  2. 05 Oct, 2018 1 commit
  3. 02 Oct, 2018 1 commit
  4. 21 Sep, 2018 1 commit
  5. 09 Aug, 2018 1 commit
    • Ben L. Titzer's avatar
      [wasm] Add WasmFeatures to enable/detect features · 6aa2a253
      Ben L. Titzer authored
      This CL introduces a set of configuration options implemented as
      a struct of booleans that together comprise the set of enabled
      or detected features. The configuration options replace command-line
      flags that were checked deep in the implementation. As such, it is
      necessary to plumb them through multiple levels of abstraction.
      
      R=ahaas@chromium.org
      CC=mstarzinger@chromium.org
      BUG=chromium:868844
      
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
      Change-Id: I1b82f5826e4fd263f68e8cafcd923bac5818a637
      Reviewed-on: https://chromium-review.googlesource.com/1163670Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55018}
      6aa2a253
  6. 26 Jul, 2018 1 commit
  7. 13 Jul, 2018 1 commit
    • Michael Starzinger's avatar
      [fuzzer] Switch code kind for multi-return fuzzer. · 44483870
      Michael Starzinger authored
      The code under test is handling of multi-return values in TurboFan and
      hence actually independent of WebAssembly. The only reason to generate
      WasmCode is in order to use the WebAseembly linkages. This changes the
      generated code to have {STUB} kind instead of {WASM_FUNCTION} kind to
      avoid having stack checks in the generated code which would require a
      proper WasmInstanceObject to be allocated.
      
      R=ahaas@chromium.org
      BUG=chromium:862508
      
      Change-Id: I4feb7bff1a42bbf59cfc5f249f2e0585ce7011ad
      Reviewed-on: https://chromium-review.googlesource.com/1136438Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#54436}
      44483870
  8. 06 Jul, 2018 1 commit
  9. 28 Jun, 2018 1 commit
  10. 19 Jun, 2018 1 commit
  11. 12 Jun, 2018 1 commit
  12. 07 May, 2018 1 commit
  13. 30 Apr, 2018 1 commit
  14. 27 Apr, 2018 1 commit
    • Clemens Hammacher's avatar
      [wasm] Split off wasm-linkage.h · 8466b71a
      Clemens Hammacher authored
      Linkage-related methods were declared in wasm-compiler.h and
      implemented in wasm-linkage.cc. This required all users of e.g. wasm
      call descriptors to include the whole wasm compiler header. Also, some
      wasm linkage information is independent of turbofan and also used
      outside of the compiler directory.
      
      This CL splits off wasm-linkage.h (with minimal includes) and puts it
      in src/wasm. This allows to use that information without including
      compiler headers (will clean up several uses in follow-up CLs).
      
      R=mstarzinger@chromium.org, titzer@chromium.org
      
      Bug: v8:7570
      Change-Id: Ifcae70b4ea7932cda30953b325c2b87c4176c598
      Reviewed-on: https://chromium-review.googlesource.com/1013701Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52849}
      8466b71a
  15. 24 Apr, 2018 1 commit
    • Kim-Anh Tran's avatar
      [wasm] Basic wasm tier-up · e47072c9
      Kim-Anh Tran authored
      Wasm tier-up first compiles the whole module using Liftoff, and then
      using Turbofan. The idea is to achieve fast start-up times by first
      running Liftoff-compiled code. In the meantime we finish compilation
      with Turbofan, and replace the Liftoff-compiled code as soon
      as Turbofan finished compilation, thus achieving high performance.
      Tier-up is enabled through the flag FLAG_wasm_tier_up.
      
      Bug: v8:6600
      Change-Id: I70552969c53d909a591666a1e7ce1ee1419b2f34
      Reviewed-on: https://chromium-review.googlesource.com/1010422
      Commit-Queue: Kim-Anh Tran <kimanh@google.com>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52759}
      e47072c9
  16. 16 Apr, 2018 1 commit
  17. 14 Apr, 2018 1 commit
    • Jakob Kummerow's avatar
      [ubsan] Change Address typedef to uintptr_t · 2459046c
      Jakob Kummerow authored
      The "Address" type is V8's general-purpose type for manipulating memory
      addresses. Per the C++ spec, pointer arithmetic and pointer comparisons
      are undefined behavior except within the same array; since we generally
      don't operate within a C++ array, our general-purpose type shouldn't be
      a pointer type.
      
      Bug: v8:3770
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: Ib96016c24a0f18bcdba916dabd83e3f24a1b5779
      Reviewed-on: https://chromium-review.googlesource.com/988657
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52601}
      2459046c
  18. 05 Apr, 2018 1 commit
    • jgruber's avatar
      Rename Code::instruction_{start,end,size} functions · 7b29fe43
      jgruber authored
      In order to clarify the difference between, e.g., InstructionStart and
      instruction_start, rename as follows:
      
      Code::instruction_start -> raw_instruction_start
      Code::instruction_end   -> raw_instruction_end
      Code::instruction_size  -> raw_instruction_size
      
      The difference between the camel-case and raw_* function families is
      in how they handle off-heap-trampoline Code objects. For example, when
      called on an off-heap-trampoline: raw_instruction_start returns the
      trampoline's entry point, while InstructionStart returns the off-heap
      code's entry point (located in the .text section of the binary).
      
      Some callsites were updated to call the camel-case function family as
      appropriate.
      
      Bug: v8:6666
      Change-Id: I4a572f47c2d161a853599d7c17879e263b0d1a87
      Reviewed-on: https://chromium-review.googlesource.com/997532
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52387}
      7b29fe43
  19. 04 Apr, 2018 1 commit
  20. 23 Mar, 2018 1 commit
  21. 21 Mar, 2018 1 commit
    • Andreas Haas's avatar
      [wasm] Make multi-return tests wasm-specific · ba5409a6
      Andreas Haas authored
      The multi-return tests and fuzzer used a custom call descriptor which
      was based on the default RegisterConfiguration. This meant that for the
      tests, all available registers could be used to pass parameters and to
      return values. This caused a problem, because in some cases we need a
      scratch register in the frame deconstruction.
      
      With this CL I change both the tests and the fuzzer to use the
      WebAssembly call descriptor. Thereby we only use 2 registers for
      returns, and one of the other registers can be used as scratch
      register.
      
      WebAssembly is the only use case at the moment which wants to return
      values not only through registers but also over the stack. Therefore
      I think it's acceptable to only test the WebAssembly usecase.
      
      R=mstarzinger@chromium.org
      
      Bug: chromium:813288
      Change-Id: I31bed757af5f3e8589d2b3dfb6f0112ddecd1a20
      Reviewed-on: https://chromium-review.googlesource.com/970656Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52099}
      ba5409a6
  22. 12 Feb, 2018 1 commit
  23. 05 Feb, 2018 1 commit
  24. 15 Jan, 2018 1 commit
    • Andreas Haas's avatar
      [fuzzer][arm64] Consider alignment in the multi-return fuzzer · 8491ca60
      Andreas Haas authored
      On arm64, the stack pointer has to be aligned all the time. This
      alignment was not considered in the creation of the CallDescriptor in
      the fuzzer and thereby caused a mismatch between the CallDescriptor and
      code generator. In other words, a callee put return values in a stack
      slot which was different than the stack slot where the caller expected
      the return value.
      
      With this CL we consider this alignment in the fuzzer.
      
      R=clemensh@chromium.org
      
      Change-Id: I8c78c24c682b7b8678c0d4d112bae99cf405b184
      Reviewed-on: https://chromium-review.googlesource.com/864682Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50574}
      8491ca60
  25. 12 Jan, 2018 1 commit