• 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
Name
Last commit
Last update
..
OWNERS Loading commit data...
array-buffer-tracker-inl.h Loading commit data...
array-buffer-tracker.cc Loading commit data...
array-buffer-tracker.h Loading commit data...
barrier.h Loading commit data...
code-stats.cc Loading commit data...
code-stats.h Loading commit data...
concurrent-marking.cc Loading commit data...
concurrent-marking.h Loading commit data...
embedder-tracing.cc Loading commit data...
embedder-tracing.h Loading commit data...
gc-idle-time-handler.cc Loading commit data...
gc-idle-time-handler.h Loading commit data...
gc-tracer.cc Loading commit data...
gc-tracer.h Loading commit data...
heap-inl.h Loading commit data...
heap.cc Loading commit data...
heap.h Loading commit data...
incremental-marking-inl.h Loading commit data...
incremental-marking-job.cc Loading commit data...
incremental-marking-job.h Loading commit data...
incremental-marking.cc Loading commit data...
incremental-marking.h Loading commit data...
invalidated-slots-inl.h Loading commit data...
invalidated-slots.cc Loading commit data...
invalidated-slots.h Loading commit data...
item-parallel-job.h Loading commit data...
local-allocator.h Loading commit data...
mark-compact-inl.h Loading commit data...
mark-compact.cc Loading commit data...
mark-compact.h Loading commit data...
marking.cc Loading commit data...
marking.h Loading commit data...
memory-reducer.cc Loading commit data...
memory-reducer.h Loading commit data...
object-stats.cc Loading commit data...
object-stats.h Loading commit data...
objects-visiting-inl.h Loading commit data...
objects-visiting.cc Loading commit data...
objects-visiting.h Loading commit data...
remembered-set.h Loading commit data...
scavenge-job.cc Loading commit data...
scavenge-job.h Loading commit data...
scavenger-inl.h Loading commit data...
scavenger.cc Loading commit data...
scavenger.h Loading commit data...
setup-heap-internal.cc Loading commit data...
slot-set.h Loading commit data...
spaces-inl.h Loading commit data...
spaces.cc Loading commit data...
spaces.h Loading commit data...
store-buffer.cc Loading commit data...
store-buffer.h Loading commit data...
worklist.h Loading commit data...