Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4f1f5a7

Browse files
committed
Remove fls(), use pg_leftmost_one_pos32() instead.
Commit4f658dc provided the traditional BSD fls() function insrc/port/fls.c so it could be used in several places. Later we added abunch of similar facilities in pg_bitutils.h, based on compilerbuiltins that map to hardware instructions. It's a bit confusing tohave both 1-based and 0-based variants of this operation in use indifferent parts of the tree, and neither is blessed by a standard.Let's drop fls.c and the configure probe, and reuse the newer code.Reviewed-by: David Rowley <dgrowleyml@gmail.com>Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>Discussion:https://postgr.es/m/CA%2BhUKG%2B7dSX1XF8yFGmYk-%3D48dbjH2kmzZj16XvhbrWP-9BzRg%40mail.gmail.com
1 parent3225399 commit4f1f5a7

File tree

11 files changed

+19
-92
lines changed

11 files changed

+19
-92
lines changed

‎configure

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16771,19 +16771,6 @@ esac
1677116771

1677216772
fi
1677316773

16774-
ac_fn_c_check_func "$LINENO" "fls" "ac_cv_func_fls"
16775-
if test "x$ac_cv_func_fls" = xyes; then :
16776-
$as_echo "#define HAVE_FLS 1" >>confdefs.h
16777-
16778-
else
16779-
case " $LIBOBJS " in
16780-
*" fls.$ac_objext "* ) ;;
16781-
*) LIBOBJS="$LIBOBJS fls.$ac_objext"
16782-
;;
16783-
esac
16784-
16785-
fi
16786-
1678716774
ac_fn_c_check_func "$LINENO" "getopt" "ac_cv_func_getopt"
1678816775
if test "x$ac_cv_func_getopt" = xyes; then :
1678916776
$as_echo "#define HAVE_GETOPT 1" >>confdefs.h

‎configure.ac

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1911,7 +1911,6 @@ fi
19111911
AC_REPLACE_FUNCS(m4_normalize([
19121912
dlopen
19131913
explicit_bzero
1914-
fls
19151914
getopt
19161915
getpeereid
19171916
getrusage

‎src/backend/access/hash/hashutil.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ _hash_get_oldblock_from_newbucket(Relation rel, Bucket new_bucket)
436436
* started. Masking the most significant bit of new bucket would give us
437437
* old bucket.
438438
*/
439-
mask= (((uint32)1) <<(fls(new_bucket)-1))-1;
439+
mask= (((uint32)1) <<pg_leftmost_one_pos32(new_bucket))-1;
440440
old_bucket=new_bucket&mask;
441441

442442
metabuf=_hash_getbuf(rel,HASH_METAPAGE,HASH_READ,LH_META_PAGE);

‎src/backend/optimizer/path/allpaths.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
#include"parser/parsetree.h"
4848
#include"partitioning/partbounds.h"
4949
#include"partitioning/partprune.h"
50+
#include"port/pg_bitutils.h"
5051
#include"rewrite/rewriteManip.h"
5152
#include"utils/lsyscache.h"
5253

@@ -1491,7 +1492,7 @@ add_paths_to_append_rel(PlannerInfo *root, RelOptInfo *rel,
14911492
if (enable_parallel_append)
14921493
{
14931494
parallel_workers=Max(parallel_workers,
1494-
fls(list_length(live_childrels)));
1495+
pg_leftmost_one_pos32(list_length(live_childrels))+1);
14951496
parallel_workers=Min(parallel_workers,
14961497
max_parallel_workers_per_gather);
14971498
}
@@ -1542,7 +1543,7 @@ add_paths_to_append_rel(PlannerInfo *root, RelOptInfo *rel,
15421543
* the planned number of parallel workers.
15431544
*/
15441545
parallel_workers=Max(parallel_workers,
1545-
fls(list_length(live_childrels)));
1546+
pg_leftmost_one_pos32(list_length(live_childrels))+1);
15461547
parallel_workers=Min(parallel_workers,
15471548
max_parallel_workers_per_gather);
15481549
Assert(parallel_workers>0);

‎src/backend/optimizer/prep/prepunion.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,7 @@ generate_union_paths(SetOperationStmt *op, PlannerInfo *root,
675675
if (enable_parallel_append)
676676
{
677677
parallel_workers=Max(parallel_workers,
678-
fls(list_length(partial_pathlist)));
678+
pg_leftmost_one_pos32(list_length(partial_pathlist))+1);
679679
parallel_workers=Min(parallel_workers,
680680
max_parallel_workers_per_gather);
681681
}

‎src/backend/utils/mmgr/dsa.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
#include"postgres.h"
5252

5353
#include"port/atomics.h"
54+
#include"port/pg_bitutils.h"
5455
#include"storage/dsm.h"
5556
#include"storage/ipc.h"
5657
#include"storage/lwlock.h"
@@ -137,7 +138,18 @@ typedef size_t dsa_segment_index;
137138
* free pages?There is no point in looking in segments in lower bins; they
138139
* definitely can't service a request for n free pages.
139140
*/
140-
#definecontiguous_pages_to_segment_bin(n) Min(fls(n), DSA_NUM_SEGMENT_BINS - 1)
141+
staticinlinesize_t
142+
contiguous_pages_to_segment_bin(size_tn)
143+
{
144+
size_tbin;
145+
146+
if (n==0)
147+
bin=0;
148+
else
149+
bin=pg_leftmost_one_pos_size_t(n)+1;
150+
151+
returnMin(bin,DSA_NUM_SEGMENT_BINS-1);
152+
}
141153

142154
/* Macros for access to locks. */
143155
#defineDSA_AREA_LOCK(area) (&area->control->lock)

‎src/include/pg_config.h.in

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,6 @@
191191
/* Define to 1 if you have the `fdatasync' function. */
192192
#undef HAVE_FDATASYNC
193193

194-
/* Define to 1 if you have the `fls' function. */
195-
#undef HAVE_FLS
196-
197194
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
198195
#undef HAVE_FSEEKO
199196

‎src/include/port.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -366,10 +366,6 @@ extern intgettimeofday(struct timeval *tp, struct timezone *tzp);
366366
#definepgoff_t off_t
367367
#endif
368368

369-
#ifndefHAVE_FLS
370-
externintfls(intmask);
371-
#endif
372-
373369
#ifndefHAVE_GETPEEREID
374370
/* On Windows, Perl might have incompatible definitions of uid_t and gid_t. */
375371
#ifndefPLPERL_HAVE_UID_GID

‎src/port/fls.c

Lines changed: 0 additions & 64 deletions
This file was deleted.

‎src/tools/msvc/Mkvcbuild.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ sub mkvcbuild
9999
$solution = CreateSolution($vsVersion,$config);
100100

101101
our@pgportfiles =qw(
102-
chklocale.c explicit_bzero.cfls.cfdatasync.c
102+
chklocale.c explicit_bzero.c fdatasync.c
103103
getpeereid.c getrusage.c inet_aton.c
104104
getaddrinfo.c gettimeofday.c inet_net_ntop.c kill.c open.c
105105
snprintf.c strlcat.c strlcpy.c dirmod.c noblock.c path.c

‎src/tools/msvc/Solution.pm

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,6 @@ sub GenerateFiles
258258
HAVE_EXECINFO_H=>undef,
259259
HAVE_EXPLICIT_BZERO=>undef,
260260
HAVE_FDATASYNC=> 1,
261-
HAVE_FLS=>undef,
262261
HAVE_FSEEKO=> 1,
263262
HAVE_FUNCNAME__FUNC=>undef,
264263
HAVE_FUNCNAME__FUNCTION=> 1,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp