Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 63d5fd1

Browse files
committed
Inline fmgr_faddr() for speed.
1 parent 726c385 commit 63d5fd1

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

src/backend/utils/Gen_fmgrtab.sh.in

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#
99
#
1010
# IDENTIFICATION
11-
# $Header: /cvsroot/pgsql/src/backend/utils/Attic/Gen_fmgrtab.sh.in,v 1.6 1998/01/15 19:44:50 pgsql Exp $
11+
# $Header: /cvsroot/pgsql/src/backend/utils/Attic/Gen_fmgrtab.sh.in,v 1.7 1998/01/31 05:22:41 momjian Exp $
1212
#
1313
# NOTES
1414
# Passes any -D options on to cpp prior to generating the list
@@ -81,7 +81,7 @@ cat > $HFILE <<FuNkYfMgRsTuFf
8181
*
8282
* Copyright (c) 1994, Regents of the University of California
8383
*
84-
* $Id: Gen_fmgrtab.sh.in,v 1.6 1998/01/15 19:44:50 pgsql Exp $
84+
* $Id: Gen_fmgrtab.sh.in,v 1.7 1998/01/31 05:22:41 momjian Exp $
8585
*
8686
* NOTES
8787
* ******************************
@@ -123,7 +123,6 @@ typedef struct {
123123
*/
124124
extern char *fmgr_c(FmgrInfo *finfo, FmgrValues *values, bool *isNull);
125125
extern void fmgr_info(Oid procedureId, FmgrInfo *finfo);
126-
extern func_ptr fmgr_faddr(FmgrInfo *finfo);
127126
extern char *fmgr(Oid procedureId, ... );
128127
extern char *fmgr_ptr(FmgrInfo *finfo, ... );
129128
extern char *fmgr_array_args(Oid procedureId, int nargs,
@@ -135,20 +134,31 @@ extern char *fmgr_array_args(Oid procedureId, int nargs,
135134
extern func_ptr fmgr_dynamic(Oid procedureId, int *pronargs);
136135
extern void load_file(char *filename);
137136
138-
139137
/*
140138
* For performance reasons, we often want to simply jump through a
141139
* a function pointer (if it's valid, that is). These calls have
142140
* been macroized so we can run them through a routine that does
143141
* sanity-checking (and so we can track them down more easily when
144142
* we must).
145143
*/
144+
145+
#define fmgr_faddr(finfo) \
146+
( \
147+
fmgr_pl_finfo = (finfo), \
148+
(func_ptr)(finfo)->fn_addr \
149+
)
150+
146151
#ifdef TRACE_FMGR_PTR
147152
#define FMGR_PTR2(FINFO, ARG1, ARG2) \
148153
fmgr_ptr(FINFO, 2, ARG1, ARG2)
149154
#else
150155
#define FMGR_PTR2(FINFO, ARG1, ARG2) \
151-
(((FINFO)->fn_addr) ? (*(fmgr_faddr(FINFO)))(ARG1, ARG2) : fmgr((FINFO)->fn_oid, ARG1, ARG2))
156+
( \
157+
((FINFO)->fn_addr) ? \
158+
(*(fmgr_faddr(FINFO)))(ARG1, ARG2) \
159+
: \
160+
fmgr((FINFO)->fn_oid, ARG1, ARG2) \
161+
)
152162
#endif
153163
154164
/*
@@ -182,7 +192,7 @@ cat > $TABCFILE <<FuNkYfMgRtAbStUfF
182192
*
183193
*
184194
* IDENTIFICATION
185-
* $Header: /cvsroot/pgsql/src/backend/utils/Attic/Gen_fmgrtab.sh.in,v 1.6 1998/01/15 19:44:50 pgsql Exp $
195+
* $Header: /cvsroot/pgsql/src/backend/utils/Attic/Gen_fmgrtab.sh.in,v 1.7 1998/01/31 05:22:41 momjian Exp $
186196
*
187197
* NOTES
188198
*

src/backend/utils/fmgr/fmgr.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.11 1998/01/15 22:31:33 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.12 1998/01/31 05:22:43 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -33,7 +33,8 @@
3333
#include "commands/trigger.h"
3434

3535

36-
static FmgrInfo *fmgr_pl_finfo;
36+
/* We don't make this static so fmgr_faddr() macros can access it */
37+
FmgrInfo *fmgr_pl_finfo;
3738

3839
static char *
3940
fmgr_pl(char *arg0, ...)
@@ -248,13 +249,6 @@ fmgr_info(Oid procedureId, FmgrInfo *finfo)
248249
}
249250
}
250251

251-
func_ptr
252-
fmgr_faddr(FmgrInfo *finfo)
253-
{
254-
fmgr_pl_finfo = finfo;
255-
return finfo->fn_addr;
256-
}
257-
258252
/*
259253
* fmgr - return the value of a function call
260254
*

0 commit comments

Comments
 (0)