1. 30 Nov, 2018 2 commits
  2. 28 Nov, 2018 1 commit
  3. 19 Nov, 2018 1 commit
    • Ben Smith's avatar
      [wasm] Decode bulk memory instructions · 50798d60
      Ben Smith authored
      These instructions aren't implemented yet in TF or in Liftoff, but they
      are properly decoded.
      
      The table instructions (i.e. `table.{init,drop,copy}`) are validated,
      since the table and element sections occur before the code section. The
      memory instructions (i.e. `memory.{init,drop,copy,fill}`) are not
      validated because the data section occurs after the code section, so it
      can't be verified in one pass (without throwing a validation error
      later).
      
      There is currently a discussion about whether to add a new section
      (similar to `func`) that predefines the number of expected data
      segments. If we add this, then we can validate in one pass. For now,
      we'll leave it unimplemented.
      
      Bug: v8:7747
      Change-Id: I839edf51721105a47a1fa8dd5e5e1bd855e72447
      Reviewed-on: https://chromium-review.googlesource.com/c/1339241
      Commit-Queue: Ben Smith <binji@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#57622}
      50798d60
  4. 29 Oct, 2018 1 commit
  5. 12 Oct, 2018 1 commit
  6. 11 Oct, 2018 1 commit
  7. 09 Oct, 2018 1 commit
    • Michael Starzinger's avatar
      [wasm] Add support for multiple catch blocks. · 2e007737
      Michael Starzinger authored
      This adds support for multiple catch blocks being attached to a single
      try block. The implemented semantics are that type checks are performed
      in order from top to bottom.
      
      Note that multiple catch blocks of the same type are not prohibited and
      will be accepted, making the second such block essentially unreachable.
      The current proposal neither explicitly allows nor prohibits it.
      
      R=clemensh@chromium.org
      TEST=mjsunit/wasm/exceptions
      BUG=v8:8091
      
      Change-Id: I31e7a07a7cffdd909a58342e00f05e52ed1a3182
      Reviewed-on: https://chromium-review.googlesource.com/c/1270591Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#56478}
      2e007737
  8. 08 Oct, 2018 1 commit
  9. 30 Aug, 2018 1 commit
    • Michael Starzinger's avatar
      [wasm] Add support for 'except_ref' value type. · f19a7068
      Michael Starzinger authored
      This adds experimental support for an 'except_ref' value type for caught
      exceptions as per the exception handling proposal. In the current for it
      is only allowed to have such types in the stack or in a local, support
      for having it as part of any signature was left out.
      
      The default value for a local of type 'except_ref' is the 'ref_null'
      value for now. Since this value cannot escape a wasm function, the
      concrete value is not actually observable.
      
      R=ahaas@chromium.org
      TEST=unittests/LocalDeclDecoderTest.ExceptRef,mjsunit/wasm/exceptions
      BUG=v8:8091
      
      Change-Id: I7bd65274327a833262f8749cbe0e24e737f6e0c1
      Reviewed-on: https://chromium-review.googlesource.com/1196510Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55526}
      f19a7068
  10. 29 Aug, 2018 1 commit
  11. 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
  12. 12 Jul, 2018 1 commit
  13. 10 Jul, 2018 1 commit
  14. 25 May, 2018 1 commit
  15. 03 May, 2018 1 commit
  16. 25 Apr, 2018 1 commit
    • Ben Smith's avatar
      [wasm] Implement importing mutable globals · 9166affb
      Ben Smith authored
      The WasmInstanceObject stores two new arrays:
      
      - imported_mutable_globals_buffers_: a FixedArray of all the imported
        globals' array buffers.
      - imported_mutable_globals: a calloc'd array of Addresses pointing to
        the mutable global in its array buffer.
      
      When accessing the global, the generated code looks up the address in
      imported_mutable_globals to find where to load/store.
      
      Bug: v8:7625
      Change-Id: I60844c21a788fce28f346455f10f2283d1c152e9
      Reviewed-on: https://chromium-review.googlesource.com/1020602
      Commit-Queue: Ben Smith <binji@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52794}
      9166affb
  17. 24 Apr, 2018 1 commit
  18. 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
  19. 23 Mar, 2018 1 commit
  20. 13 Mar, 2018 1 commit
    • Stephan Herhut's avatar
      [wasm] Parse function names on demand · 49a1a9a4
      Stephan Herhut authored
      Function names are optional in wasm and might not be present for most
      functions. Instead of storing an empty name with each function, this
      change loads names, if present, on first access of the name.
      
      This also fixes an inconsistency with streaming compilation. Under
      streaming compilation, functions are compiled before parsing the name
      section. Hence, they always received an empty name. With this change,
      assignment of names is typically deferred until the whole module was
      parsed.
      
      Bug: chromium:820291
      Change-Id: I86d76aa40b7c45897d152725547795c8b6b9b9ba
      Reviewed-on: https://chromium-review.googlesource.com/955647
      Commit-Queue: Stephan Herhut <herhut@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51909}
      49a1a9a4
  21. 25 Jan, 2018 1 commit
  22. 19 Dec, 2017 3 commits
  23. 02 Dec, 2017 1 commit
    • Mathias Bynens's avatar
      Normalize casing of hexadecimal digits · 822be9b2
      Mathias Bynens authored
      This patch normalizes the casing of hexadecimal digits in escape
      sequences of the form `\xNN` and integer literals of the form
      `0xNNNN`.
      
      Previously, the V8 code base used an inconsistent mixture of uppercase
      and lowercase.
      
      Google’s C++ style guide uses uppercase in its examples:
      https://google.github.io/styleguide/cppguide.html#Non-ASCII_Characters
      
      Moreover, uppercase letters more clearly stand out from the lowercase
      `x` (or `u`) characters at the start, as well as lowercase letters
      elsewhere in strings.
      
      BUG=v8:7109
      TBR=marja@chromium.org,titzer@chromium.org,mtrofin@chromium.org,mstarzinger@chromium.org,rossberg@chromium.org,yangguo@chromium.org,mlippautz@chromium.org
      NOPRESUBMIT=true
      
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I790e21c25d96ad5d95c8229724eb45d2aa9e22d6
      Reviewed-on: https://chromium-review.googlesource.com/804294
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49810}
      822be9b2
  24. 24 Oct, 2017 1 commit
  25. 18 Oct, 2017 1 commit
  26. 16 Oct, 2017 1 commit
  27. 11 Oct, 2017 3 commits
  28. 28 Sep, 2017 1 commit
  29. 25 Sep, 2017 1 commit
    • Karl Schimpf's avatar
      Add capability of throwing values in WASM · 49106e48
      Karl Schimpf authored
      This is a second attempt at landing CL 644866 which was reverted by
      CL 667019.
      
      Extends the current implementation of WASM exceptions to be able to
      throw exceptions with values (not just tags).
      
      A JS typed (uint_16) array is used to hold the thrown values. This
      allows all WASM types to be stored (i32, i64, f32, and f64) as well as
      be inspected in JS.
      
      The previous CL was reverted because the WASM compiler made calls to
      run time functions with tagged objects, which must not be done. To fix
      this, all run time calls use the thread-level isolate to hold the
      exception being processed.
      
      Bug: v8:6577
      Change-Id: I4b1ef7e2847b71a2fab8e9934a0531057db9de63
      Reviewed-on: https://chromium-review.googlesource.com/677056
      Commit-Queue: Karl Schimpf <kschimpf@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarEric Holk <eholk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48148}
      49106e48
  30. 21 Sep, 2017 1 commit
    • Clemens Hammacher's avatar
      [wasm] Remove redundant validation · 008d7b2a
      Clemens Hammacher authored
      And add some tests for (seemingly) previously uncovered cases.
      The additional check for unreachable code is not needed any more, since
      polymorphic stack values get assigned a specific type on their first
      use or validation anyway. Hence the first entry in the br_table will
      assign specific types to all polymorphic stack values, and type checking
      will fail if later entries do not match.
      
      R=rossberg@chromium.org
      CC=titzer@chromium.org
      
      Change-Id: I1d0f91f927a2aa5186f874112e91ebffa1f1b3a7
      Reviewed-on: https://chromium-review.googlesource.com/675405Reviewed-by: 's avatarAndreas Rossberg <rossberg@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48109}
      008d7b2a
  31. 15 Sep, 2017 1 commit
  32. 13 Sep, 2017 1 commit
  33. 11 Sep, 2017 1 commit
  34. 01 Sep, 2017 1 commit
  35. 30 Aug, 2017 1 commit