1. 14 Oct, 2020 21 commits
  2. 13 Oct, 2020 19 commits
    • Ng Zhi An's avatar
      Implement Min and Max using std::min and std::max · c90ff8bd
      Ng Zhi An authored
      The existing implementation gives different results for certain floating
      points values from std::min and std::max. This patch makes it the same,
      so it is less surprising.
      
      Took a quick look at some usages for Min and Max, they are all integral
      types, so this wouldn't change any behavior.
      
      Min and Max has been in the code base right from the initial import,
      and I'm not sure why we needed it, since it should simply be
      std::min/std::max. With C++14, std::min and std::max are constexpr,
      so this change is also fine.
      
      Change-Id: If8ec53bedff3ef336aa21b082f1a16ce716b8f87
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2464146Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70494}
      c90ff8bd
    • Ng Zhi An's avatar
      [wasm-simd] Merge extract lane ops into pinsr{b,w,d,q} · 99e252ba
      Ng Zhi An authored
      The only one that doesn't use a pinsr* is f32x4, which uses insertps, so
      that is kept as it is.
      
      Bug: v8:10933
      Change-Id: I7442668812c674d4242949e13ef595978290bc8d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2458787Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70493}
      99e252ba
    • Igor Sheludko's avatar
      Reland^2 "[csa] Fix semantics of PopAndReturn" · d2ab873d
      Igor Sheludko authored
      This is a reland of 3593ee83
      
      The MSAN doesn't seem to be considering initializing stores via inline
      assembly as such (in a new cctest helper GetStackPointer()), so this
      reland attempt fixes the issue and ensures that the MSAN bot is happy.
      
      Original change's description:
      > Reland "[csa] Fix semantics of PopAndReturn"
      >
      > This is a reland of 5e5eaf79
      >
      > This CL fixes the "function returns address of local variable" issue
      > which GCC was complaining about by using inline assembly instead of
      > address of a local for getting stack pointer approximation.
      >
      > Original change's description:
      > > [csa] Fix semantics of PopAndReturn
      > >
      > > This CL prohibits using PopAndReturn from the builtins that
      > > have calling convention with arguments on the stack.
      > >
      > > This CL also updates the PopAndReturn tests so that even off-by-one
      > > errors in the number of poped arguments are caught which was not the
      > > case before.
      > >
      > > Motivation:
      > >
      > > PopAndReturn is supposed to be using ONLY in CSA/Torque builtins for
      > > dropping ALL JS arguments that are currently located on the stack.
      > > Disallowing PopAndReturn in builtins with stack arguments simplifies
      > > semantics of this instruction because in case of presence of declared
      > > stack parameters it's impossible to distinguish the following cases:
      > > 1) stack parameter is included in JS arguments (and therefore it will
      > >    be dropped as a part of 'pop' number of arguments),
      > > 2) stack parameter is NOT included in JS arguments (and therefore it
      > >    should be dropped in ADDITION to the 'pop' number of arguments).
      > >
      > > This issue wasn't noticed before because builtins with stack parameters
      > > relied on adapter frames machinery to ensure that the expected
      > > parameters are present on the stack, but on the same time the adapter
      > > frame tearing down code was effectively recovering the stack pointer
      > > potentially broken by the CSA builtin.
      > >
      > > Once we get rid of the arguments adapter frames keeping stack pointer
      > > in a valid state becomes crucial.
      > >
      > > Bug: v8:5269, v8:10201
      > > Change-Id: Id3ea9730bb0d41d17999c73136c4dfada374a822
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2460819
      > > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#70454}
      >
      > Tbr: tebbi@chromium.org
      > Bug: v8:5269
      > Bug: v8:10201
      > Change-Id: Ic1a05fcc4efd2068538bff28189545cfd2617d9b
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2465839
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Victor Gomes <victorgomes@chromium.org>
      > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#70483}
      
      Tbr: tebbi@chromium.org
      Cq-Include-Trybots: luci.v8.try:v8_linux64_msan_rel_ng
      Bug: v8:5269
      Bug: v8:10201
      Change-Id: Ib09af2d1260bb42ac26aabface14e6b83b3efec4
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2467847
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarVictor Gomes <victorgomes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70492}
      d2ab873d
    • Santiago Aboy Solanes's avatar
      [unwinder] Update tests that starting unwinding from JSEntry frame · 6094c2e4
      Santiago Aboy Solanes authored
      As a drive-by, enable tests that are safe for Arm32/64 to run.
      
      Bug: v8:10833
      Change-Id: I8fed5651399852f9ce8ba7d5acdb7ed27ca28e89
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2467841Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70491}
      6094c2e4
    • Seth Brenith's avatar
      [torque] Generate verifiers for any indexed field · 4d4f716b
      Seth Brenith authored
      This change updates verifier generation to:
      - Fix a bug I introduced in https://crrev.com/c/2047399 that caused
        values within struct-typed fields to not get verified
      - Support indexed fields with start offsets that are not known at
        compile time
      - Support indexed fields with complex length expressions
      
      Bug: v8:7793
      Change-Id: I5ae8803fce59abae0989fcb094bd9692cd88e38e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2461456
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70490}
      4d4f716b
    • Dominik Inführ's avatar
      [heap] Add histogram for time-to-collection · a2d44ad7
      Dominik Inführ authored
      Add histogram for time-to-collection. As a drive-by change also
      move CollectionBarrier into its own class and rename V8.TimeToSafepoint
      to V8.StopTheWorld such that the histogram name and the trace file entry
      now have the same name.
      
      Bug: v8:10315
      Change-Id: I86e2a9592d10316d04bc8cab37ff548067aadf78
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2465840Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70489}
      a2d44ad7
    • Santiago Aboy Solanes's avatar
      [compiler] Disable concurrent read optimization for Strings · 567c3a1c
      Santiago Aboy Solanes authored
      GetOwnElementFromHeap uses LookupIterator which requires heap
      allocation. Therefore, we cannot call it from the background thread
      with concurrent access.
      
      Bug: v8:7790, v8:11012
      Change-Id: I29733db69a8935c7b7585c776ab1a2d7f1265e95
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2465841
      Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70488}
      567c3a1c
    • Victor Gomes's avatar
      [wasm] Fix expected arity in ImportWasmJSFunctionIntoTable · d73c32b9
      Victor Gomes authored
      Change-Id: If9ab58bf671567f7a035a03b3e4e772ba302b522
      Bug: v8:10201
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2467843
      Commit-Queue: Victor Gomes <victorgomes@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70487}
      d73c32b9
    • Michael Achenbach's avatar
      Whitespace change after clusterfuzz archive loss · 4c39f1de
      Michael Achenbach authored
      Bug: chromium:1137528
      Change-Id: If49ed0b92c0f2b64cf7d6c30529a3647dda4e84d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2467849Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70486}
      4c39f1de
    • Clemens Backes's avatar
      Revert "Reland "[csa] Fix semantics of PopAndReturn"" · c40b2b7e
      Clemens Backes authored
      This reverts commit 3593ee83.
      
      Reason for revert: MSan issues: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/34798
      
      Original change's description:
      > Reland "[csa] Fix semantics of PopAndReturn"
      >
      > This is a reland of 5e5eaf79
      >
      > This CL fixes the "function returns address of local variable" issue
      > which GCC was complaining about by using inline assembly instead of
      > address of a local for getting stack pointer approximation.
      >
      > Original change's description:
      > > [csa] Fix semantics of PopAndReturn
      > >
      > > This CL prohibits using PopAndReturn from the builtins that
      > > have calling convention with arguments on the stack.
      > >
      > > This CL also updates the PopAndReturn tests so that even off-by-one
      > > errors in the number of poped arguments are caught which was not the
      > > case before.
      > >
      > > Motivation:
      > >
      > > PopAndReturn is supposed to be using ONLY in CSA/Torque builtins for
      > > dropping ALL JS arguments that are currently located on the stack.
      > > Disallowing PopAndReturn in builtins with stack arguments simplifies
      > > semantics of this instruction because in case of presence of declared
      > > stack parameters it's impossible to distinguish the following cases:
      > > 1) stack parameter is included in JS arguments (and therefore it will
      > >    be dropped as a part of 'pop' number of arguments),
      > > 2) stack parameter is NOT included in JS arguments (and therefore it
      > >    should be dropped in ADDITION to the 'pop' number of arguments).
      > >
      > > This issue wasn't noticed before because builtins with stack parameters
      > > relied on adapter frames machinery to ensure that the expected
      > > parameters are present on the stack, but on the same time the adapter
      > > frame tearing down code was effectively recovering the stack pointer
      > > potentially broken by the CSA builtin.
      > >
      > > Once we get rid of the arguments adapter frames keeping stack pointer
      > > in a valid state becomes crucial.
      > >
      > > Bug: v8:5269, v8:10201
      > > Change-Id: Id3ea9730bb0d41d17999c73136c4dfada374a822
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2460819
      > > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#70454}
      >
      > Tbr: tebbi@chromium.org
      > Bug: v8:5269
      > Bug: v8:10201
      > Change-Id: Ic1a05fcc4efd2068538bff28189545cfd2617d9b
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2465839
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Victor Gomes <victorgomes@chromium.org>
      > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#70483}
      
      TBR=tebbi@chromium.org,ishell@chromium.org,victorgomes@chromium.org
      
      Change-Id: Icbd71d744a519a58e49feb917109228631b9d9a3
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:5269
      Bug: v8:10201
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2467846Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70485}
      c40b2b7e
    • Milad Fa's avatar
      s390: [wasm-simd] Remove some I64x2 instructions not in proposal · 5f6124f9
      Milad Fa authored
      Port 2c38a477
      
      Original Commit Message:
      
          These instructions are not in the proposal, and will be unlikely to be
          requested (poor performance, insufficient use cases). As we get more
          instruction suggestions, these are sitting around on useful opcodes and
          we have to play musical chairs every time we prototype a new
          instruction.
      
      R=zhin@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
      BUG=
      LOG=N
      
      Change-Id: Ia926a4b01ed6bc9b362adce68b9301e3fc86d942
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2466625Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Fa <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/master@{#70484}
      5f6124f9
    • Igor Sheludko's avatar
      Reland "[csa] Fix semantics of PopAndReturn" · 3593ee83
      Igor Sheludko authored
      This is a reland of 5e5eaf79
      
      This CL fixes the "function returns address of local variable" issue
      which GCC was complaining about by using inline assembly instead of
      address of a local for getting stack pointer approximation.
      
      Original change's description:
      > [csa] Fix semantics of PopAndReturn
      >
      > This CL prohibits using PopAndReturn from the builtins that
      > have calling convention with arguments on the stack.
      >
      > This CL also updates the PopAndReturn tests so that even off-by-one
      > errors in the number of poped arguments are caught which was not the
      > case before.
      >
      > Motivation:
      >
      > PopAndReturn is supposed to be using ONLY in CSA/Torque builtins for
      > dropping ALL JS arguments that are currently located on the stack.
      > Disallowing PopAndReturn in builtins with stack arguments simplifies
      > semantics of this instruction because in case of presence of declared
      > stack parameters it's impossible to distinguish the following cases:
      > 1) stack parameter is included in JS arguments (and therefore it will
      >    be dropped as a part of 'pop' number of arguments),
      > 2) stack parameter is NOT included in JS arguments (and therefore it
      >    should be dropped in ADDITION to the 'pop' number of arguments).
      >
      > This issue wasn't noticed before because builtins with stack parameters
      > relied on adapter frames machinery to ensure that the expected
      > parameters are present on the stack, but on the same time the adapter
      > frame tearing down code was effectively recovering the stack pointer
      > potentially broken by the CSA builtin.
      >
      > Once we get rid of the arguments adapter frames keeping stack pointer
      > in a valid state becomes crucial.
      >
      > Bug: v8:5269, v8:10201
      > Change-Id: Id3ea9730bb0d41d17999c73136c4dfada374a822
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2460819
      > Commit-Queue: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#70454}
      
      Tbr: tebbi@chromium.org
      Bug: v8:5269
      Bug: v8:10201
      Change-Id: Ic1a05fcc4efd2068538bff28189545cfd2617d9b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2465839Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarVictor Gomes <victorgomes@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70483}
      3593ee83
    • Daniel Bevenius's avatar
      [test] Suppress subobject-linkage warnings · 3705048d
      Daniel Bevenius authored
      Currently there are a number of -Wsubobject-linkage warnings when
      compiling with gcc (formatted to fit 72 character lines):
      
      In file included from
      ...
      from ../../testing/gtest/include/gtest/gtest.h:10,
      from ../../testing/gtest-support.h:8,
      from ../../test/unittests/test-utils.h:20,
      from ../../test/unittests/compiler/backend/
        instruction-selector-unittest.h:15,
      from ../../test/unittests/compiler/x64/
        instruction-selector-x64-unittest.cc:9:
      ../../third_party/googletest/src/googletest/include/gtest/internal/
      gtest-param-util.h:
      In instantiation of ‘class
      testing::internal::ParameterizedTestFactory<v8::internal::compiler::
      InstructionSelectorChangeInt32ToInt64Test_ \
      ChangeInt32ToInt64WithLoad_Test>’:
      ../../third_party/googletest/src/googletest/include/gtest/internal/
      gtest-param-util.h:439:12:   required from
      ‘testing::internal::TestFactoryBase*
      testing::internal::TestMetaFactory<TestSuite>::CreateTestFactory(
        testing::internal::TestMetaFactory<TestSuite>::ParamType)
      [with
      TestSuite = v8::internal::compiler::
      InstructionSelectorChangeInt32ToInt64Test_ \
      ChangeInt32ToInt64WithLoad_Test;
      testing::internal::TestMetaFactory<TestSuite>::ParamType =
        v8::internal::compiler::{anonymous}::LoadWithToInt64Extension]’
      ../../third_party/googletest/src/googletest/include/gtest/internal/
        gtest-param-util.h:438:20:   required from here
      ../../third_party/googletest/src/googletest/include/gtest/internal/
        gtest-param-util.h:394:7: warning:
      ‘testing::internal::ParameterizedTestFactory<
      v8::internal::compiler::
      InstructionSelectorChangeInt32ToInt64Test_ \
      ChangeInt32ToInt64WithLoad_Test >’ has a field
      ‘testing::internal::ParameterizedTestFactory<
      v8::internal::compiler::
      InstructionSelectorChangeInt32ToInt64Test_ \
      ChangeInt32ToInt64WithLoad_Test>::parameter_’ whose type uses the
      anonymous namespace [-Wsubobject-linkage]
        394 | class ParameterizedTestFactory : public TestFactoryBase {
            |       ^~~~~~~~~~~~~~~~~~~~~~~~
      
      This commit moves the parameterized tests in question into the
      anonymous namespace to avoid the warnings.
      
      Change-Id: I9c4a8bd9f4e225ed14ab64f5433d5f5c102e01a1
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2418723Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70482}
      3705048d
    • Javad Amiri's avatar
      [heap] Add three new THP API calls · cda15c49
      Javad Amiri authored
      Bug: v8:9533
      Change-Id: I87d653147896530a4b5115b126d652f626dd4665
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2463005Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70481}
      cda15c49
    • Clemens Backes's avatar
      [wasm] Add missing checks for growing the stack · 9d7be16c
      Clemens Backes authored
      Whenever more then one value is pushed to the stack, we need to execute
      a check for growing the stack first (since https://crrev.com/c/2431525).
      This CL adds two missing checks.
      
      R=thibaudm@chromium.org
      
      Bug: chromium:1137582
      Change-Id: I9755502dfdb77c03d1dde3e83fb7d33b9b99e499
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2467796
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70480}
      9d7be16c
    • Maya Lekova's avatar
      [turbofan] Add docs and tests for fast calls with fallback · cf84dd04
      Maya Lekova authored
      Bug: chromium:1052746
      Change-Id: I6c1f888ed9a7f27d43872e24f8d8cf353a103f1a
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2461740
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70479}
      cf84dd04
    • Thibaud Michaud's avatar
      [wasm] Fix Liftoff stack check inspection · a0f4b396
      Thibaud Michaud authored
      The call to "GetSpilledRegistersForInspection" was invalidated by the
      call to "GetUnusedRegister" a few lines below.
      
      R=clemensb@chromium.org
      
      Bug: v8:10957
      Change-Id: I1e0110d9b28ca23a2a8b9ff4b4c39143bfbe5510
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2466118
      Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70478}
      a0f4b396
    • Clemens Backes's avatar
      [wasm][memory64] Prepare memory tracing for i64 addresses · 97e72bbf
      Clemens Backes authored
      The index to be traced can be a full (platform-dependent) pointer sized
      integer now. This CL prepares memory tracing for that.
      As a drive-by, the "address" field is renamed to "offset", or
      "effective_offset", depending on the situation.
      
      R=manoskouk@chromium.org
      
      Bug: v8:10949
      Change-Id: I1fabfdb57835f041e1310a4eb4024d6254c08752
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2465825Reviewed-by: 's avatarManos Koukoutos <manoskouk@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70477}
      97e72bbf
    • Andreas Haas's avatar
      [wasm] Rename flag to --experimental-liftoff-extern-ref · bc4a94d3
      Andreas Haas authored
      Rename the flag --liftoff-extern-ref to
      --experimental-liftoff-extern-ref to keep the fuzzer from using it.
      The implementation is not complete yet, and the next steps may take a
      bit.
      
      R=clemensb@chromium.org
      
      Bug: chromium:1137601
      Change-Id: I74f1ed8faba44e42f63790d87f4a538dd59ac852
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2465838Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70476}
      bc4a94d3