1. 12 Jul, 2018 1 commit
  2. 06 Jun, 2018 1 commit
  3. 22 May, 2018 1 commit
  4. 06 Mar, 2018 1 commit
  5. 02 Mar, 2018 1 commit
  6. 01 Mar, 2018 1 commit
    • Clemens Hammacher's avatar
      Fix is_trivially_copyable check for MSVC and older stdlibc++ · 9dd6f0d0
      Clemens Hammacher authored
      MSVC 2015 and 2017 implement std::is_trivially_copyable, but not
      correctly. Hence, reimplement it using more low-level primitives.
      
      For stdlibc++ versions below 5.0, we already have a workaround for the
      missing support of std::is_trivially_copyable, but this is an unsound
      approximation, because it is ignoring move constructor, move assignment
      and copy assignment. Therefore, do not use this approximation for
      asserting trivial copyability of a type.
      
      Finally, add unittests for the new is_trivially_copyable
      implementations.
      
      R=mstarzinger@chromium.org
      CC=loorongjie@gmail.com
      
      Change-Id: I9ee56a65882e8c94b72c9a2d484edd27963a5d89
      Reviewed-on: https://chromium-review.googlesource.com/941521Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51651}
      9dd6f0d0
  7. 28 Feb, 2018 1 commit
    • Nico Weber's avatar
      Make v8 build with -Wmicrosoft-cast under clang-cl. · 58b386c4
      Nico Weber authored
      gcc and clang (and the standard) don't allow implicit conversion of
      function pointers to object pointers. MSVC does allow that, and since
      system headers require this to work, clang-cl allows it too -- but
      it emits a -Wmicrosoft-cast warning (which we currently suppress in
      the Chromium build, but which we want to enable.)
      
      As a side effect, when printing a function pointer to a stream, MSVC
      (and clang-cl) will pick the operator<<(void*) overload, while gcc
      and clang will pick operator<<(bool) since the best allowed conversion
      they find is from function pointer to bool.
      
      To prevent the clang-cl warning, we need to make sure that we never
      directly print a function pointer to a stream. In v8, this requires
      two changes:
      
      1. Give PrintCheckOperand() an explicit specialization for function
         pointers and explicitly cast to void* there.  This ports
         https://codereview.chromium.org/2515283002/ to V8, and also fixes a
         bug on non-Windows where DCHECK() of function pointers would print
         "(1 vs 1)" instead of the function's addresses.
         (The bug remains with member function pointers,
         where it's not clear what to print instead of the 1.)
      
      2. has_output_operator<T> must not use operator<< on its argument
         in an evaluated context if T is a function pointer.  This patch
         modifies has_output_operator<> to use an unevaluated context instead,
         which is simpler than the current approach (and matches what Chromium's
         base does), but changes behavior    in minor (boring) ways
         (see template-utils-unittest.cc), since operator<<() is now
         called with a temporary and only operator<<() implementations callable
         with a temporary are considered.
         A more complicated but behavior-preserving alternative would be to
         add an explicit specialization for function pointers. You can see
         this variant in patch set 1 on gerrit.
      
      Bug: chromium:550065
      Change-Id: Idc2854d6c258b7fc0b959604006d8952a79eca3d
      Reviewed-on: https://chromium-review.googlesource.com/940004
      Commit-Queue: Nico Weber <thakis@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51636}
      58b386c4
  8. 02 Feb, 2018 1 commit
    • Gabriel Charette's avatar
      Bring Time(Delta)::Min/Max() and related helpers to V8. · db73d446
      Gabriel Charette authored
      Copied as-is modulo compile tweaks from Chromium's base.
      
      Copied tests highlighting existing overflow issues with V8's impl...
      
      TimeDelta::Max() will initially be used in V8 to flag events that
      never triggered in a TimedHistogram.
      
      Also constexpr'ed a few things while I was in there, it's harmless
      at worst and helps a little at best.
      Ideally would constexpr all the Time*::From*() methods like in
      Chromium but that has inlining implications and I don't know the
      impact that could have on V8.
      
      Bug: chromium:807606
      Change-Id: If5aa92759d985be070e12af4dd20f0159169048b
      Reviewed-on: https://chromium-review.googlesource.com/899342Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Commit-Queue: Gabriel Charette <gab@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51073}
      db73d446
  9. 01 Feb, 2018 1 commit
    • Gabriel Charette's avatar
      Make TimeTicks::Now() high-resolution whenever possible with low-latency. · 954146a5
      Gabriel Charette authored
      It was already always high-resolution on POSIX but was never high
      resolution on Windows. Windows does support low latency high-resolution
      timers for the majority of our user base.
      
      TimeTicks::HighResolutionNow() was only explicitly requested in testing
      frameworks. As such I left the call in place but made it DCHECK that
      it's running on a Windows machine on which high-resolution clocks are
      used. This confirms that none of our test fleet has regressed with this
      change (the previous HighResolutionNow() used to be slightly more
      aggressive and also do it in a few configurations where we now fallback
      to low-resolution now).
      
      This implementation was copied as-is (modulo minor v8 API
      compatibility tweaks). These implementations were the same in the
      past but had diverged when, sadly, the same bug was fixed separately
      years apart, in Chromium and V8:
      chromium: https://codereview.chromium.org/1284053004 + https://codereview.chromium.org/2393953003
      v8: https://codereview.chromium.org/1304873011
      
      This is a prerequisite to add metrics around parallel task execution
      (low-resolution clocks are useless at that level, but we also don't want
      to incur high-latency clocks on machines that can't afford it cheaply).
      
      Bug: chromium:807606
      Change-Id: Id18e7be895d8431ebd0e565a1bdf358fe7838489
      Reviewed-on: https://chromium-review.googlesource.com/897485Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Commit-Queue: Gabriel Charette <gab@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51027}
      954146a5
  10. 15 Dec, 2017 1 commit
    • Bill Budge's avatar
      [Memory] Create memory management API in v8::internal. · a449f09f
      Bill Budge authored
      - Creates a memory management API in v8::internal, which corresponds
        to the existing one in base::OS.
      - Implements the new API in terms of the old one.
      - Changes all usage of the base::OS API to the one in v8::internal. This
        includes all tests, except platform and OS tests.
      - Makes OS:: methods private.
      - Moves all LSAN calls into the v8::internal functions.
      
      Bug: chromium:756050
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Iaa3f022e3e12fdebf937f3c76b6c6455014beb8a
      Reviewed-on: https://chromium-review.googlesource.com/794856
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Reviewed-by: 's avatarEric Holk <eholk@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50139}
      a449f09f
  11. 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
  12. 01 Dec, 2017 1 commit
  13. 17 Nov, 2017 2 commits
  14. 16 Nov, 2017 1 commit
    • Bill Budge's avatar
      [Memory] Add base::OS::SetPermissions method. · 0df1471a
      Bill Budge authored
      - Adds SetPermissions method which returns bool result.
      - Eliminates Guard, SetReadAndWritable, SetReadAndExecutable, and
        SetReadWriteAndExecutable methods.
      - Adds some Fuchsia memory allocation implementation.
      - Some minor fixes in usage of OS::AllocatePageSize and
        OS::CommitPageSize.
      - Adds DCHECKs for sanitizing parameters to OS::Allocate/Free.
      
      Bug: chromium:756050
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I966ec6f029dd0371d70eca20bae197d87956f8b5
      Reviewed-on: https://chromium-review.googlesource.com/760657
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49430}
      0df1471a
  15. 14 Nov, 2017 1 commit
    • Bill Budge's avatar
      Reland "[Memory] Use OS::Allocate for all OS memory allocations." · adc52af5
      Bill Budge authored
      This is a reland of 4899bcb6
      This is a reland of b73ee334
      
      Original change's description:
      > [Memory] Use OS::Allocate for all OS memory allocations.
      >
      > - Eliminates OS::ReserveRegion and OS::ReserveAlignedRegion.
      > - Changes OS::Allocate to take alignment parameter, reorders parameters
      >   to match page_allocator.
      > - Since the size of memory allocation can be deduced, don't return the
      >   amount of memory allocated.
      > - Changes reservation of aligned address space. Before we would reserve
      >   (size + alignment) rounded up to page size. This is too much, because
      >   maximum misalignment is (alignment - page_size).
      > - On Windows and Cygwin, we release an oversize allocation and
      >   immediately retry at the aligned address in the allocation. If we
      >   lose the address due to a race, we just retry.
      > - Clean up all the calls to OS::Allocate in codegen and tests by adding
      >   helper AllocateSystemPage function (allocation.h) and
      >   AllocateAssemblerBuffer (cctest.h).
      > - Changes 'assm' to 'masm' in some targets for consistency when using
      >   a macro-assembler.
      >
      > - Eliminates OS::ReleaseRegion, replacing with calls to OS::Free.
      > - Adds bool return value to OS::Free.
      > - Cleans up types of flags, protection on Windows and Cygwin.
      
      > Bug: chromium:756050
      > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      > Change-Id: I306dbe042cc867670fdc935abca29db074b0da71
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: Iad3c025334e8f8d7d647be99a36a11ee449c9087
      Reviewed-on: https://chromium-review.googlesource.com/767014
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49363}
      adc52af5
  16. 13 Nov, 2017 1 commit
  17. 11 Nov, 2017 1 commit
  18. 09 Nov, 2017 1 commit
    • Bill Budge's avatar
      Reland "[Memory] Use OS::Allocate for all OS memory allocations." · 4899bcb6
      Bill Budge authored
      This is a reland of 7e78506f
      Original change's description:
      > [Memory] Use OS::Allocate for all OS memory allocations.
      > 
      > - Eliminates OS::ReserveRegion and OS::ReserveAlignedRegion.
      > - Changes OS::Allocate to take alignment parameter, reorders parameters
      >   to match page_allocator.
      > - Since the size of memory allocation can be deduced, don't return the
      >   amount of memory allocated.
      > - Changes reservation of aligned address space. Before we would reserve
      >   (size + alignment) rounded up to page size. This is too much, because
      >   maximum misalignment is (alignment - page_size).
      > - On Windows and Cygwin, we release an oversize allocation and
      >   immediately retry at the aligned address in the allocation. If we
      >   lose the address due to a race, we just retry.
      > - Clean up all the calls to OS::Allocate in codegen and tests by adding
      >   helper AllocateSystemPage function (allocation.h) and
      >   AllocateAssemblerBuffer (cctest.h).
      > - Changes 'assm' to 'masm' in some targets for consistency when using
      >   a macro-assembler.
      > 
      > Bug: chromium:756050
      > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      > Change-Id: I306dbe042cc867670fdc935abca29db074b0da71
      > Reviewed-on: https://chromium-review.googlesource.com/749848
      > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Reviewed-by: Hannes Payer <hpayer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#49235}
      
      Bug: chromium:756050
      Change-Id: I333f7a6aea0bcb608d01cafb43e94893a4625b15
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/758509Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49273}
      4899bcb6
  19. 08 Nov, 2017 2 commits
    • Bill Budge's avatar
      Revert "[Memory] Use OS::Allocate for all OS memory allocations." · 1ea3fd2e
      Bill Budge authored
      This reverts commit 7e78506f.
      
      Reason for revert: Broke Android build on Arm64.
      
      Original change's description:
      > [Memory] Use OS::Allocate for all OS memory allocations.
      > 
      > - Eliminates OS::ReserveRegion and OS::ReserveAlignedRegion.
      > - Changes OS::Allocate to take alignment parameter, reorders parameters
      >   to match page_allocator.
      > - Since the size of memory allocation can be deduced, don't return the
      >   amount of memory allocated.
      > - Changes reservation of aligned address space. Before we would reserve
      >   (size + alignment) rounded up to page size. This is too much, because
      >   maximum misalignment is (alignment - page_size).
      > - On Windows and Cygwin, we release an oversize allocation and
      >   immediately retry at the aligned address in the allocation. If we
      >   lose the address due to a race, we just retry.
      > - Clean up all the calls to OS::Allocate in codegen and tests by adding
      >   helper AllocateSystemPage function (allocation.h) and
      >   AllocateAssemblerBuffer (cctest.h).
      > - Changes 'assm' to 'masm' in some targets for consistency when using
      >   a macro-assembler.
      > 
      > Bug: chromium:756050
      > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      > Change-Id: I306dbe042cc867670fdc935abca29db074b0da71
      > Reviewed-on: https://chromium-review.googlesource.com/749848
      > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Reviewed-by: Hannes Payer <hpayer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#49235}
      
      TBR=bbudge@chromium.org,hpayer@chromium.org,mlippautz@chromium.org
      
      Change-Id: Ic09de4d63c19746a62e804b1f889817ffaebc330
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:756050
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/758625Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49242}
      1ea3fd2e
    • Bill Budge's avatar
      [Memory] Use OS::Allocate for all OS memory allocations. · 7e78506f
      Bill Budge authored
      - Eliminates OS::ReserveRegion and OS::ReserveAlignedRegion.
      - Changes OS::Allocate to take alignment parameter, reorders parameters
        to match page_allocator.
      - Since the size of memory allocation can be deduced, don't return the
        amount of memory allocated.
      - Changes reservation of aligned address space. Before we would reserve
        (size + alignment) rounded up to page size. This is too much, because
        maximum misalignment is (alignment - page_size).
      - On Windows and Cygwin, we release an oversize allocation and
        immediately retry at the aligned address in the allocation. If we
        lose the address due to a race, we just retry.
      - Clean up all the calls to OS::Allocate in codegen and tests by adding
        helper AllocateSystemPage function (allocation.h) and
        AllocateAssemblerBuffer (cctest.h).
      - Changes 'assm' to 'masm' in some targets for consistency when using
        a macro-assembler.
      
      Bug: chromium:756050
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I306dbe042cc867670fdc935abca29db074b0da71
      Reviewed-on: https://chromium-review.googlesource.com/749848
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49235}
      7e78506f
  20. 07 Nov, 2017 3 commits
  21. 06 Nov, 2017 1 commit
    • Clemens Hammacher's avatar
      Reland "[bits] Consolidate Count{Leading,Trailing}Zeros" · 27ffc624
      Clemens Hammacher authored
      This is a reland of 7d231e57, fixed to
      avoid instantiating CountLeadingZeros for bits==0.
      
      Original change's description:
      > [bits] Consolidate Count{Leading,Trailing}Zeros
      > 
      > Instead of having one method for 32 bit integers and one for 64 bit,
      > plus a templatized version to choose from those two, just implement one
      > version which handles unsigned integers of any size. Also, make them
      > constexpr.
      > The Count{Leading,Trailing}Zeros{32,64} methods are kept for now in
      > order to keep the amount of code changes small. Also, sometimes it
      > improves readability by stating exactly the size of the argument,
      > especially for leading zeros (where zero-extending would add more
      > leading zeros).
      > 
      > CountLeadingZeros now uses a binary search inspired implementation
      > as proposed in Hacker's Delight. It's more than 20% faster on x64 if
      > the builtins are disabled.
      > CountTrailingZeros falls back to CountPopulation instead of counting in
      > a naive loop. This is ~50% faster.
      > 
      > R=mstarzinger@chromium.org
      > 
      > Change-Id: I1d8bf1d7295b930724163248150444bd17fbb34e
      > Reviewed-on: https://chromium-review.googlesource.com/741231
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#49106}
      
      Change-Id: Icdff2510ec66d1c96a1912cef29d77d8550994ee
      Reviewed-on: https://chromium-review.googlesource.com/753903Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49138}
      27ffc624
  22. 04 Nov, 2017 1 commit
    • Michael Achenbach's avatar
      Revert "[bits] Consolidate Count{Leading,Trailing}Zeros" · 1a1968fe
      Michael Achenbach authored
      This reverts commit 7d231e57.
      
      Reason for revert: Breaks revert for win-clang:
      https://build.chromium.org/p/tryserver.chromium.win/builders/win_clang/builds/342755
      
      Original change's description:
      > [bits] Consolidate Count{Leading,Trailing}Zeros
      > 
      > Instead of having one method for 32 bit integers and one for 64 bit,
      > plus a templatized version to choose from those two, just implement one
      > version which handles unsigned integers of any size. Also, make them
      > constexpr.
      > The Count{Leading,Trailing}Zeros{32,64} methods are kept for now in
      > order to keep the amount of code changes small. Also, sometimes it
      > improves readability by stating exactly the size of the argument,
      > especially for leading zeros (where zero-extending would add more
      > leading zeros).
      > 
      > CountLeadingZeros now uses a binary search inspired implementation
      > as proposed in Hacker's Delight. It's more than 20% faster on x64 if
      > the builtins are disabled.
      > CountTrailingZeros falls back to CountPopulation instead of counting in
      > a naive loop. This is ~50% faster.
      > 
      > R=​mstarzinger@chromium.org
      > 
      > Change-Id: I1d8bf1d7295b930724163248150444bd17fbb34e
      > Reviewed-on: https://chromium-review.googlesource.com/741231
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#49106}
      
      TBR=mstarzinger@chromium.org,clemensh@chromium.org
      
      Change-Id: Iceeb35bf9c7539a1013c9bdbc47118008611bef2
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/753463Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49123}
      1a1968fe
  23. 03 Nov, 2017 1 commit
    • Clemens Hammacher's avatar
      [bits] Consolidate Count{Leading,Trailing}Zeros · 7d231e57
      Clemens Hammacher authored
      Instead of having one method for 32 bit integers and one for 64 bit,
      plus a templatized version to choose from those two, just implement one
      version which handles unsigned integers of any size. Also, make them
      constexpr.
      The Count{Leading,Trailing}Zeros{32,64} methods are kept for now in
      order to keep the amount of code changes small. Also, sometimes it
      improves readability by stating exactly the size of the argument,
      especially for leading zeros (where zero-extending would add more
      leading zeros).
      
      CountLeadingZeros now uses a binary search inspired implementation
      as proposed in Hacker's Delight. It's more than 20% faster on x64 if
      the builtins are disabled.
      CountTrailingZeros falls back to CountPopulation instead of counting in
      a naive loop. This is ~50% faster.
      
      R=mstarzinger@chromium.org
      
      Change-Id: I1d8bf1d7295b930724163248150444bd17fbb34e
      Reviewed-on: https://chromium-review.googlesource.com/741231Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49106}
      7d231e57
  24. 24 Oct, 2017 1 commit
    • Clemens Hammacher's avatar
      Allow constexpr RegList construction from Registers · fd306a06
      Clemens Hammacher authored
      Before, the standard way to create a RegList was either:
      RegList list = (1 << 0) | (1 << 1) | ...
      or
      RegList list = rax.bit() | rdx.bit() | ...
      
      The first way allows to make the RegList constexpr, but needs comments
      to document which registers you are referring to, and it has no checks
      that all bits you set on the RegList actually belong to valid registers.
      The second one uses the symbolic names, hence is much more readable and
      makes it harder to construct invalid RegLists. It's not constexpr
      though, since the {bit()} method on the register types is not constexpr.
      
      This CL adds a constexpr accessor to get the code and bit of a
      constexpr Register, and adds a helper method to create a constexpr
      RegList like this:
      constexpr RegList list = Register::ListOf<rax, rdx, rdi>();
      
      This new method is used in a number of places to test its
      applicability. Other uses of the old pattern remain and can be cleaned
      up later.
      
      R=tebbi@chromium.org
      
      Change-Id: Ie7b1d6342dc5f316dcfedd0363b3540ad5e7f413
      Reviewed-on: https://chromium-review.googlesource.com/728026
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48887}
      fd306a06
  25. 18 Oct, 2017 1 commit
  26. 28 Sep, 2017 1 commit
  27. 21 Sep, 2017 1 commit
    • Clemens Hammacher's avatar
      [base] Allow comparing enums in (D)CHECKs · 3a063911
      Clemens Hammacher authored
      In the current implementation, compilation would fail because
      operator<< is not defined for enum classes. For others, the compiler
      finds more than one operator<<, so it fails because it's ambiguous.
      
      This CL fixes this by printing the integer value for enums, uses the
      operator<< for all values that support it, and prints "<unprintable>"
      otherwise.
      
      Also, lots of unit tests.
      
      R=ishell@chromium.org
      
      Bug: v8:6837
      Change-Id: I895ed226672aa07213f9605e094b87af186ec2e4
      Reviewed-on: https://chromium-review.googlesource.com/671016
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#48110}
      3a063911
  28. 15 Sep, 2017 1 commit
  29. 16 Aug, 2017 1 commit
  30. 11 Aug, 2017 2 commits
  31. 07 Aug, 2017 1 commit
    • Clemens Hammacher's avatar
      Move helper struct from logging.h to template-utils.h · 84dc3679
      Clemens Hammacher authored
      I want to reuse the PassType helper in another CL, thus move it from
      logging.h to template-utils.h, and rename it to pass_value_or_ref to
      match other helpers there.
      Also, add a boolean template parameter to declare whether array
      dimensions should be removed. The default is to do so, which helps to
      reduce the number of template instantiations by always passing arrays
      as pointers.
      
      Also, fix the usages in logging.h to actually use that helper when
      instantiating other template functions. This will reduce the number of
      instantiations.
      
      And finally, we now have unit tests for the template utils, to document
      what we expect, and test that this works on all architectures.
      
      R=ishell@chromium.org, tebbi@chromium.org
      
      Change-Id: I1ef5d2a489a5cfc7601c5ab13748674e3aa86cd6
      Reviewed-on: https://chromium-review.googlesource.com/594247
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#47191}
      84dc3679
  32. 02 Aug, 2017 1 commit
  33. 27 Jul, 2017 1 commit
  34. 25 Jul, 2017 1 commit
  35. 13 Jul, 2017 1 commit