• 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
..
arguments-inl.h Loading commit data...
arguments.h Loading commit data...
bigint-inl.h Loading commit data...
bigint.cc Loading commit data...
bigint.h Loading commit data...
code-inl.h Loading commit data...
code.h Loading commit data...
compilation-cache-inl.h Loading commit data...
compilation-cache.h Loading commit data...
debug-objects-inl.h Loading commit data...
debug-objects.cc Loading commit data...
debug-objects.h Loading commit data...
descriptor-array.h Loading commit data...
dictionary.h Loading commit data...
frame-array-inl.h Loading commit data...
frame-array.h Loading commit data...
hash-table-inl.h Loading commit data...
hash-table.h Loading commit data...
intl-objects.cc Loading commit data...
intl-objects.h Loading commit data...
js-array-inl.h Loading commit data...
js-array.h Loading commit data...
js-regexp-inl.h Loading commit data...
js-regexp.h Loading commit data...
literal-objects.cc Loading commit data...
literal-objects.h Loading commit data...
map-inl.h Loading commit data...
map.h Loading commit data...
module-inl.h Loading commit data...
module.cc Loading commit data...
module.h Loading commit data...
name-inl.h Loading commit data...
name.h Loading commit data...
object-macros-undef.h Loading commit data...
object-macros.h Loading commit data...
property-descriptor-object-inl.h Loading commit data...
property-descriptor-object.h Loading commit data...
regexp-match-info.h Loading commit data...
scope-info.cc Loading commit data...
scope-info.h Loading commit data...
script-inl.h Loading commit data...
script.h Loading commit data...
shared-function-info-inl.h Loading commit data...
shared-function-info.h Loading commit data...
string-inl.h Loading commit data...
string-table.h Loading commit data...
string.h Loading commit data...
template-objects.cc Loading commit data...
template-objects.h Loading commit data...