1. 27 Jun, 2022 1 commit
  2. 21 Jun, 2022 1 commit
  3. 04 Jan, 2022 1 commit
    • Manos Koukoutos's avatar
      [wasm] Unify treatment of expressions in elem. segments · e9440c45
      Manos Koukoutos authored
      We unify the implementation of element segment expression entries with
      other initializer expressions: we represent them with a {WireBytesRef}
      and decode them with {InitExprInterface}. Except for reducing code
      duplication, this also fixes a bug where {global.get} entries in element
      segments could reference invalid globals.
      
      Changes:
      - Change {WasmElemSegment::Entry} to a union of a {WireBytesRef}
        initializer expression and a {uint32_t} function index.
      - In module-decoder, change parsing of expression entries to use
        {consume_init_expr}. Add type checking to
        {consume_element_func_index}, to complement type checking happening in
        {consume_init_expr}.
      - In module-instantiate.cc:
        - Move instantiation of indirect tables before loading of element
          segments. This way, when we call {UpdateDispatchTables} in
          {SetTableEntry}, the indirect table for the current table will also
          be updated.
        - Consolidate table entry instantiation into {SetTableEntry}, which
          handles lazily instantiated functions, or dispatches to
          {WasmTableObject::Set}.
        - Rename {InitializeIndirectFunctionTables} to
          {InitializeNonDefaultableTables}.
        - Change {InitializeNonDefaultableTables} and {LoadElemSegmentImpl}
          to use {EvaluateInitExpression}.
      - Add a test to exclude mutable/non-imported globals from the element
        section.
      - Update tests as needed.
      - Update .js module emission in wasm-fuzzer-common.
      
      Change-Id: I29c541bbca8531e8d0312ed95869c8e78a5a0c57
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3364082Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#78476}
      e9440c45
  4. 01 Jun, 2021 1 commit
  5. 05 May, 2021 1 commit
    • Manos Koukoutos's avatar
      [wasm] Complete element segment features for reftypes/typed-funcref · 37579df7
      Manos Koukoutos authored
      Main changes:
      - Allow global.get in elements segments with expressions-as-elements.
      - Allow element segments with types other than funcref.
      
      Detailed changes:
      - Move WasmInitExpr to its own file. Add stream opearator << support.
      - Simplify type of PrintCollection.
      - Make WasmElemSegment use an array of WasmInitExpr's over the previous
        ad-hoc implementation. Move null_index to WasmModuleBuilder.
      - Refactor consume_element_segment_header. Make it return a
        WasmElemSegment.
      - Refactor consume_element_expr. Make it return a WasmInitExpr.
      - Refactor DecodeElementSection. Make it invoke
        consume_element_segment_header, then populate its element array.
      - Update module-instantiate.cc to handle global.get elements.
      - Fix bug in wasm-objects.cc where the wrong type index was passed into
        module()->has_signature()
      - Adapt and add tests.
      
      Change-Id: I5abfbe424dbb750ee2dca59f91c451ffcb79f95f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2857959
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74374}
      37579df7