1. 10 Aug, 2020 7 commits
  2. 07 Aug, 2020 6 commits
  3. 06 Aug, 2020 16 commits
    • Georg Neis's avatar
      [turbofan] Fix a test · 4b84b33a
      Georg Neis authored
      The test relies on certain maps not dying but didn't ensure that.
      
      Bug: v8:10783
      Change-Id: I708f7fc027ee0bf5656be9bb4f29130f5b924597
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2340912Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Auto-Submit: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69282}
      4b84b33a
    • Santiago Aboy Solanes's avatar
      [heap] Remove DeferredHandles instrumentation · d855a6aa
      Santiago Aboy Solanes authored
      Now that we are using PersistentHandles, we don't need it anymore.
      
      Bug: v8:7790
      Change-Id: Id0b9d555191c00fb08dc2bb9099746076c5ad1b7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332161
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69278}
      d855a6aa
    • Thibaud Michaud's avatar
      [wasm][debug] Fix frame inspection at stack checks · ce45f687
      Thibaud Michaud authored
      Spill registers before stack checks so that we can inspect them, similar
      to traps.
      
      OSR during a stack check is still unsupported and will be fixed in a
      follow-up CL.
      
      R=clemensb@chromium.org
      
      Bug: v8:10235
      Change-Id: I22c2da6b3f79b30c3838c568f9680204afc85d36
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339467
      Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69277}
      ce45f687
    • Clemens Backes's avatar
      [wasm] Ensure that only TurboFan code is serialized · 60ee70bb
      Clemens Backes authored
      We have the implicit assumption that Liftoff code will never be
      serialized, and we start relying on that when implementing new features
      (debugging, dynamic tiering).
      
      This CL makes the serializer fail if the module contains any Liftoff
      code. Existing tests are changed to ensure that we fully tiered up
      before serializing a module (similar to the logic in Chromium).
      The "wasm-clone-module" test needs to serialize the module before
      enabling the debugger.
      
      Note that chrome currently only serializes a module after it fully
      tiered up, so that should be fine. If other embedders need the ability
      to serialize a module in an arbitrary state, we will have to fix this
      later. With this CL we will be on the safe side though and (gracefully)
      fail serialization instead of accidentally serializing Liftoff code.
      
      R=ahaas@chromium.org
      
      Bug: v8:10777
      Change-Id: I1245e5f7fda3447a544c1e3525e1239cde759174
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336799
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69276}
      60ee70bb
    • Marja Hölttä's avatar
      Reland "[Atomics.waitAsync] Fix removing multiple nodes when Isolate deinits" · d8221df3
      Marja Hölttä authored
      This is a reland of 28ead054
      
      The failure is a test that is sensitive to adding a function
      in a FunctionTemplate in d8: https://bugs.chromium.org/p/v8/issues/detail?id=10783
      
      Original change's description:
      > [Atomics.waitAsync] Fix removing multiple nodes when Isolate deinits
      >
      > RemoveNode already nullifies the next_ pointer of FutexWaitListNode,
      > and DeleteAsyncNode was trying to retrieve it.
      >
      > Bug: v8:10239
      > Change-Id: I595885de87f433d263eeacfc825a689efd467f5e
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332812
      > Commit-Queue: Marja Hölttä <marja@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Shu-yu Guo <syg@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#69259}
      
      Bug: v8:10239
      Tbr: leszeks@chromium.org
      Change-Id: Icec590354886433a0b41c8f9b7af7101b54b7690
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339469Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69275}
      d8221df3
    • Maya Lekova's avatar
      [turbofan] Add tests for uint64 for fast API calls · 4eb15059
      Maya Lekova authored
      TBR=cbruni@chromium.org
      
      Bug: chromium:1052746
      Change-Id: Ib61b06bcc4cd7cf9cfa741899322739e807605b0
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339619
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Auto-Submit: Maya Lekova <mslekova@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69274}
      4eb15059
    • Marja Hölttä's avatar
      [compiler] Mark a test which is sensitive to unrelated conditions as [PASS, FAIL] · c813817d
      Marja Hölttä authored
      Bug: v8:10783
      No-Try: true
      Change-Id: I605813842af639158909bce13e162869b3cfc6db
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339621
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69273}
      c813817d
    • Leszek Swirski's avatar
      Revert "[Atomics.waitAsync] Fix removing multiple nodes when Isolate deinits" · 93c10b26
      Leszek Swirski authored
      This reverts commit 28ead054.
      
      Reason for revert: mjsunit/compiler/serializer-transition-propagation
      failure seems to bisect to this (despite looking unrelated):
      https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/32532
      
      Original change's description:
      > [Atomics.waitAsync] Fix removing multiple nodes when Isolate deinits
      > 
      > RemoveNode already nullifies the next_ pointer of FutexWaitListNode,
      > and DeleteAsyncNode was trying to retrieve it.
      > 
      > Bug: v8:10239
      > Change-Id: I595885de87f433d263eeacfc825a689efd467f5e
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332812
      > Commit-Queue: Marja Hölttä <marja@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Shu-yu Guo <syg@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#69259}
      
      TBR=ulan@chromium.org,marja@chromium.org,syg@chromium.org
      
      Change-Id: I5db179aec5a04f59770903b17d059a7150c7efbd
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:10239
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339466Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69271}
      93c10b26
    • Leszek Swirski's avatar
      [runtime] Move string table off-heap · 1546be9c
      Leszek Swirski authored
      Changes the isolate's string table into an off-heap structure. This
      allows the string table to be resized without allocating on the V8 heap,
      and potentially triggering a GC. This allows existing strings to be
      inserted into the string table without requiring allocation.
      
      This has two important benefits:
      
        1) It allows the deserializer to insert strings directly into the
           string table, rather than having to defer string insertion until
           deserialization completes.
      
        2) It simplifies the concurrent string table lookup to allow resizing
           the table inside the write lock, therefore eliminating the race
           where two concurrent lookups could both resize the table.
      
      The off-heap string table has the following properties:
      
        1) The general hashmap behaviour matches the HashTable, i.e. open
           addressing, power-of-two sized, quadratic probing. This could, of
           course, now be changed.
      
        2) The empty and deleted sentinels are changed to Smi 0 and 1,
           respectively, to make those comparisons a bit cheaper and not
           require roots access.
      
        3) When the HashTable is resized, the old elements array is kept
           alive in a linked list of previous arrays, so that concurrent
           lookups don't lose the data they're accessing. This linked list
           is cleared by the GC, as then we know that all threads are in
           a safepoint.
      
        4) The GC treats the hash table entries as weak roots, and only walks
           them for non-live reference clearing and for evacuation.
      
        5) Since there is no longer a FixedArray to serialize for the startup
           snapshot, there is now a custom serialization of the string table,
           and the string table root is considered unserializable during weak
           root iteration. As a bonus, the custom serialization is more
           efficient, as it skips non-string entries.
      
      As a drive-by, rename LookupStringExists_NoAllocate to
      TryStringToIndexOrLookupExisting, to make it clearer that it returns
      a non-string for the case when the string is an array index. As another
      drive-by, extract StringSet into a separate header.
      
      Bug: v8:10729
      Change-Id: I9c990fb2d74d1fe222920408670974a70e969bca
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339104
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69270}
      1546be9c
    • Omer Katz's avatar
      cppgc: Establish marking invariants · e072615c
      Omer Katz authored
      This is a revival of https://chromium-review.googlesource.com/c/v8/v8/+/2228332
      
      The CL establishes the following:
      *) Objects are marked before being pushed to the worklists.
      *) Live bytes are always accounted after tracing an object (i.e. move
         from Gray to Black below).
      *) Previously not fully constructed objects are traced immediately
         instead of pushed to the marking worklist.
      
      This establishes the following invariants for all marking worklists:
      1) White = !object.is_marked() && !worklist.contains(object)
      2) Gray = object.is_marked() && worklist.contains(object)
      3) Black = object.is_marked() && !worklist.contains(object)
      
      Bug: chromium:1056170
      Change-Id: I821573b3fbc057e6ffb836154271ff986ecb4d2b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336797Reviewed-by: 's avatarAnton Bikineev <bikineev@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Omer Katz <omerkatz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69268}
      e072615c
    • Andreas Haas's avatar
      [wasm] Check size of tables dynamically · 47434265
      Andreas Haas authored
      We used to check the size of tables at compile time, and threw a
      CompilationError if a given size exceeded the implementation-defined
      limit. However, the spec defines that an error should only be thrown
      when the implementation-defined limit is reached, which is either at
      instantiation time of during runtime at a table.grow.
      
      With this CL the V8 implementation becomes spec compliant in this
      regard.
      
      R=jkummerow@chromium.org
      
      Bug: v8:10556
      Change-Id: I7d0e688b385a65e4060a569e5ab1dec68947ceea
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2326331
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69267}
      47434265
    • Tobias Tebbi's avatar
      Reland "[torque] typed context slot access" · 6647f292
      Tobias Tebbi authored
      This is a reland of 408e7240
      Change: Allow CSA load elimination accross code comments
      
      Original change's description:
      > [torque] typed context slot access
      >
      > This introduces a new type Slot<ContextType, SlotType> that is used
      > for enum values used to access context slots.
      > Together with new types for the various custom contexts used in
      > Torque, this results in fairly type-safe access to context slots,
      > including the NativeContext's slots.
      >
      > Drive-by changes:
      > - Introduce a new header file to specify headers needed for
      >   generated CSA headers, to reduce the amount of includes specified
      >   in implementation-visitor.cc
      > - Port AllocateSyntheticFunctionContext to Torque.
      >
      > Bug: v8:7793
      > Change-Id: I509a128916ca408eeeb636a9bcc376b2cc868532
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2335064
      > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Seth Brenith <seth.brenith@microsoft.com>
      > Cr-Commit-Position: refs/heads/master@{#69249}
      
      Bug: v8:7793
      Change-Id: I1fe100d8d62e8220524eddb8ecc4faa85219748d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339462Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69264}
      6647f292
    • Clemens Backes's avatar
      [wasm] Remove ExecutionTier::kInterpreter · 0c918bd8
      Clemens Backes authored
      The interpreter is not an execution tier in production any more. It's
      only used in tests.
      Thus, remove {ExecutionTier::kInterpreter} and instead add a
      {TestExecutionTier} that still has {kInterpreter}.
      
      If needed (in {TestingModuleBuilder::execution_tier()}), we translate
      back from {TestExecutionTier} to {ExecutionTier} (for {kLiftoff} and
      {kTurboFan} only).
      
      The {TraceMemoryOperation} method, which is shared between interpreter
      and production code, now receives a {base::Optional<ExecutionTier>}, and
      we will just pass en empty optional if called from the interpreter.
      
      R=thibaudm@chromium.org
      
      Bug: v8:10389
      Change-Id: Ibe133b91e8dca6d6edbfaee5ffa0d7fe72ed6d64
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2335186Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69260}
      0c918bd8
    • Marja Hölttä's avatar
      [Atomics.waitAsync] Fix removing multiple nodes when Isolate deinits · 28ead054
      Marja Hölttä authored
      RemoveNode already nullifies the next_ pointer of FutexWaitListNode,
      and DeleteAsyncNode was trying to retrieve it.
      
      Bug: v8:10239
      Change-Id: I595885de87f433d263eeacfc825a689efd467f5e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332812
      Commit-Queue: Marja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarShu-yu Guo <syg@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69259}
      28ead054
    • Anna Henningsen's avatar
      [api] Fix empty Maybe crash in GetRealNamedPropertyAttributes · e06ace6b
      Anna Henningsen authored
      `Object::GetRealNamedPropertyAttributes()` can crash if an empty
      `Maybe` is returned by `JSReceiver::GetPropertyAttributes()` because
      it was not checking for that. Fix that.
      
      Refs: https://github.com/nodejs/node/issues/34606
      Change-Id: Ic83f904ba7134786bcd8f786eb2ce98adb4fea1e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2335057
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69258}
      e06ace6b
    • Jakob Gruber's avatar
      Revert "[torque] typed context slot access" · a55a2447
      Jakob Gruber authored
      This reverts commit 408e7240.
      
      Reason for revert: debug builds fail
      
      is_component_build = true
      is_debug = true
      use_goma = true
      v8_enable_backtrace = true
      v8_enable_debugging_features = true
      v8_enable_fast_mksnapshot = true
      v8_enable_slow_dchecks = true
      v8_enable_snapshot_code_comments = true
      v8_enable_verify_csa = true
      v8_optimized_debug = false
      v8_use_multi_snapshots = false
      
      # Fatal error in ../../src/compiler/backend/instruction-selector.cc, line 3088
      # Expected Turbofan static assert to hold, but got non-true input:
        static_assert(nativeContext == LoadNativeContext(context)) at src/builtins/promise-resolve.tq:45:5
      
      
      Original change's description:
      > [torque] typed context slot access
      > 
      > This introduces a new type Slot<ContextType, SlotType> that is used
      > for enum values used to access context slots.
      > Together with new types for the various custom contexts used in
      > Torque, this results in fairly type-safe access to context slots,
      > including the NativeContext's slots.
      > 
      > Drive-by changes:
      > - Introduce a new header file to specify headers needed for
      >   generated CSA headers, to reduce the amount of includes specified
      >   in implementation-visitor.cc
      > - Port AllocateSyntheticFunctionContext to Torque.
      > 
      > Bug: v8:7793
      > Change-Id: I509a128916ca408eeeb636a9bcc376b2cc868532
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2335064
      > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Seth Brenith <seth.brenith@microsoft.com>
      > Cr-Commit-Position: refs/heads/master@{#69249}
      
      TBR=tebbi@chromium.org,seth.brenith@microsoft.com
      
      Change-Id: I90c014022a808449aca4a9b9b3c3b8e036beb28e
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7793
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2340903Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69256}
      a55a2447
  4. 05 Aug, 2020 10 commits
    • Tobias Tebbi's avatar
      [torque][csa] fix word8 phi MachineRepresentation · f08bd2ce
      Tobias Tebbi authored
      Make sure that Torque/CSA generated phi's get kRepWord32 instead
      of kRepWord8 or kRepWord16, since that's how we handle small
      integer values in Turbofan.
      
      Bug: v8:7793
      Change-Id: I992b43287552b6117e90fbd0e11576470bc91509
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339096
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69253}
      f08bd2ce
    • Jakob Gruber's avatar
      [nci] Check the isolate cache from within compiler.cc · 82fc74c9
      Jakob Gruber authored
      Just like the optimized code cache, the compiler should check the
      isolate cache for NCI code objects and return them if they exist.
      
      Drive-by: Skip additional tests to fix the nci_as_highest_tier test
      variant. These are related to interactions with deoptimization, which
      NCI code doesn't fully support yet.
      
      Bug: v8:8888
      Change-Id: I6253811f96993796cfc38fff0da7ffb4f1a5eb24
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339095
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69251}
      82fc74c9
    • Manos Koukoutos's avatar
      [wasm-gc] Allow reference types to function signatures · a61aaed9
      Manos Koukoutos authored
      Changes:
      - Remove restriction that function types cannot be used as ref types.
      - Introduce WasmModule::has_type().
      - Remove deferred signature checks in module-decoder. Instead, check if
        type indices are out of bounds in consume_value_type (was bugged
        before).
      - Remove obsolete GetCanonicalRttIndex.
      - Refine type of ref.func.
      - Statically check immediate type against table type for call_indirect.
      - Dynamic check for call_indirect should only happen when for funcref
        (currently the only function supertype).
      - Allocate a different map per function signature (with Map::Copy).
      - Introduce function type equivalence and (trivial) subtyping.
      - Add a few elementary tests.
      
      Bug: v8:7748
      Change-Id: If57d0bfd856c9eb3784191f3de423f53dfd26ef1
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2335190
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69250}
      a61aaed9
    • Tobias Tebbi's avatar
      [torque] typed context slot access · 408e7240
      Tobias Tebbi authored
      This introduces a new type Slot<ContextType, SlotType> that is used
      for enum values used to access context slots.
      Together with new types for the various custom contexts used in
      Torque, this results in fairly type-safe access to context slots,
      including the NativeContext's slots.
      
      Drive-by changes:
      - Introduce a new header file to specify headers needed for
        generated CSA headers, to reduce the amount of includes specified
        in implementation-visitor.cc
      - Port AllocateSyntheticFunctionContext to Torque.
      
      Bug: v8:7793
      Change-Id: I509a128916ca408eeeb636a9bcc376b2cc868532
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2335064
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarSeth Brenith <seth.brenith@microsoft.com>
      Cr-Commit-Position: refs/heads/master@{#69249}
      408e7240
    • Clemens Backes's avatar
      [wasm] Remove "CloneWasmModule" runtime function · ab76be3f
      Clemens Backes authored
      This function was only used in a single test, and it tests a scenario
      which cannot happen any more with the module cache: Having two copies of
      the same NativeModule in an isolate.
      
      Hence remove the respective runtime function and the test.
      
      R=ahaas@chromium.org
      
      Change-Id: Id7cdffbdf1bdf95a7eb31fdeb7d75b8e326bb90e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339100Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69246}
      ab76be3f
    • Dominik Inführ's avatar
      [heap] Remove PagedSpace::SizeOfObjects · ab8368df
      Dominik Inführ authored
      PagedSpace::SizeOfObjects() then returns exactly the same value as
      PagedSpace::Size(). SizeOfObjects() used to deduct the current LAB,
      however this is now more difficult with local heaps. Accessing the
      main thread LAB from concurrent threads causes a data race. Also
      LocalHeaps have their own LAB, which should be deducted as well to be
      uniform with the main thread. However this would be tricky and expensive.
      The simpler solution is to do not deduct the main thread LAB anymore.
      
      Bug: v8:10315
      Change-Id: I3c47e1a65caca9395737251aa694b295e78c7fb5
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336090
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69245}
      ab8368df
    • Jakob Gruber's avatar
      [nci] Replace CompilationTarget with a new Code::Kind value · c51041f4
      Jakob Gruber authored
      With the new Turbofan variants (NCI and Turboprop), we need a way to
      distinguish between them both during and after compilation. We
      initially introduced CompilationTarget to track the variant during
      compilation, but decided to reuse the code kind as the canonical spot to
      store this information instead.
      
      Why? Because it is an established mechanism, already available in most
      of the necessary spots (inside the pipeline, on Code objects, in
      profiling traces).
      
      This CL removes CompilationTarget and adds a new
      NATIVE_CONTEXT_INDEPENDENT kind, plus helper functions to determine
      various things about a given code kind (e.g.: does this code kind
      deopt?).
      
      As a (very large) drive-by, refactor both Code::Kind and
      AbstractCode::Kind into a new CodeKind enum class.
      
      Bug: v8:8888
      Change-Id: Ie858b9a53311b0731630be35cf5cd108dee95b39
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336793
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69244}
      c51041f4
    • Dominik Inführ's avatar
      [handles] Make DetachPersistent insert into ordered_blocks_ · c365959f
      Dominik Inführ authored
      DetachPersistent() sets up PersistentHandles, but didn't properly set
      up ordered_blocks_. So PersistentHandles::Contains failed for handles
      that were detached from the main thread into PersistentHandles.
      
      Bug: v8:10315
      Change-Id: I5374ad64743cd519a9c5e92900c1fa401c4d93ab
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336801Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69243}
      c365959f
    • Maya Lekova's avatar
      [turbofan] Add tests for int64 in fast API calls · ce4a5f4c
      Maya Lekova authored
      Bug: chromium:1052746
      Change-Id: I5c60625b25279866816a2f928e84d728b3f04d51
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332157Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69240}
      ce4a5f4c
    • Clemens Backes's avatar
      [wasm] Switch compilation to Jobs API · 0c837e83
      Clemens Backes authored
      Use the new jobs API for WebAssembly compilation. This avoids having to
      schedule as many background tasks as there are worker threads. Instead
      the one job specifies the maximum concurrency, which changes dynamically
      as new compile jobs become available.
      This also avoids the artificial deadline we used to ensure that other
      tasks get some share of the CPU resources if needed.
      
      Even though this CL moves actual wasm function completely over to the
      Jobs API, other similar tasks (like wrapper compilation) are still using
      the Task API and need to be ported in a follow-up CL.
      Also, we are still using the same priority for baseline compilation and
      tier up. We should split this in a follow-up CL to have two jobs with
      different priorities. This will also allow us to only block on baseline
      compilation where we currently block on both.
      
      R=ahaas@chromium.org
      CC=gab@chromium.org
      
      Bug: chromium:1101340
      Change-Id: I5656697753346e5fdb15d578425cdb949ac6e364
      Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel_ng
      Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_isolates_rel_ng
      Cq-Include-Trybots: luci.chromium.try:linux-rel
      Cq-Include-Trybots: luci.v8.try:v8_linux_blink_rel
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2280100
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69239}
      0c837e83
  5. 04 Aug, 2020 1 commit