diff options
author | Bruce Momjian <bruce@momjian.us> | 1998-01-31 05:22:43 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 1998-01-31 05:22:43 +0000 |
commit | 63d5fd177a426b5038d7289cf728ca7e891e2ea7 (patch) | |
tree | 0fe6e781e8d96d3b81f1a886e8102e9b4629f744 /src | |
parent | 726c3854cb133b7121c86347cefeb017c1f85226 (diff) | |
download | postgresql-63d5fd177a426b5038d7289cf728ca7e891e2ea7.tar.gz postgresql-63d5fd177a426b5038d7289cf728ca7e891e2ea7.zip |
Inline fmgr_faddr() for speed.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/Gen_fmgrtab.sh.in | 22 | ||||
-rw-r--r-- | src/backend/utils/fmgr/fmgr.c | 12 |
2 files changed, 19 insertions, 15 deletions
diff --git a/src/backend/utils/Gen_fmgrtab.sh.in b/src/backend/utils/Gen_fmgrtab.sh.in index 3e04b2d890f..41d480ed670 100644 --- a/src/backend/utils/Gen_fmgrtab.sh.in +++ b/src/backend/utils/Gen_fmgrtab.sh.in @@ -8,7 +8,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/backend/utils/Attic/Gen_fmgrtab.sh.in,v 1.6 1998/01/15 19:44:50 pgsql Exp $ +# $Header: /cvsroot/pgsql/src/backend/utils/Attic/Gen_fmgrtab.sh.in,v 1.7 1998/01/31 05:22:41 momjian Exp $ # # NOTES # Passes any -D options on to cpp prior to generating the list @@ -81,7 +81,7 @@ cat > $HFILE <<FuNkYfMgRsTuFf * * Copyright (c) 1994, Regents of the University of California * - * $Id: Gen_fmgrtab.sh.in,v 1.6 1998/01/15 19:44:50 pgsql Exp $ + * $Id: Gen_fmgrtab.sh.in,v 1.7 1998/01/31 05:22:41 momjian Exp $ * * NOTES * ****************************** @@ -123,7 +123,6 @@ typedef struct { */ extern char *fmgr_c(FmgrInfo *finfo, FmgrValues *values, bool *isNull); extern void fmgr_info(Oid procedureId, FmgrInfo *finfo); -extern func_ptr fmgr_faddr(FmgrInfo *finfo); extern char *fmgr(Oid procedureId, ... ); extern char *fmgr_ptr(FmgrInfo *finfo, ... ); extern char *fmgr_array_args(Oid procedureId, int nargs, @@ -135,7 +134,6 @@ extern char *fmgr_array_args(Oid procedureId, int nargs, extern func_ptr fmgr_dynamic(Oid procedureId, int *pronargs); extern void load_file(char *filename); - /* * For performance reasons, we often want to simply jump through a * a function pointer (if it's valid, that is). These calls have @@ -143,12 +141,24 @@ extern void load_file(char *filename); * sanity-checking (and so we can track them down more easily when * we must). */ + +#define fmgr_faddr(finfo) \ +( \ + fmgr_pl_finfo = (finfo), \ + (func_ptr)(finfo)->fn_addr \ +) + #ifdef TRACE_FMGR_PTR #define FMGR_PTR2(FINFO, ARG1, ARG2) \ fmgr_ptr(FINFO, 2, ARG1, ARG2) #else #define FMGR_PTR2(FINFO, ARG1, ARG2) \ - (((FINFO)->fn_addr) ? (*(fmgr_faddr(FINFO)))(ARG1, ARG2) : fmgr((FINFO)->fn_oid, ARG1, ARG2)) +( \ + ((FINFO)->fn_addr) ? \ + (*(fmgr_faddr(FINFO)))(ARG1, ARG2) \ + : \ + fmgr((FINFO)->fn_oid, ARG1, ARG2) \ +) #endif /* @@ -182,7 +192,7 @@ cat > $TABCFILE <<FuNkYfMgRtAbStUfF * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/Attic/Gen_fmgrtab.sh.in,v 1.6 1998/01/15 19:44:50 pgsql Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/Attic/Gen_fmgrtab.sh.in,v 1.7 1998/01/31 05:22:41 momjian Exp $ * * NOTES * diff --git a/src/backend/utils/fmgr/fmgr.c b/src/backend/utils/fmgr/fmgr.c index 08302c34170..27762a554eb 100644 --- a/src/backend/utils/fmgr/fmgr.c +++ b/src/backend/utils/fmgr/fmgr.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.11 1998/01/15 22:31:33 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.12 1998/01/31 05:22:43 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -33,7 +33,8 @@ #include "commands/trigger.h" -static FmgrInfo *fmgr_pl_finfo; +/* We don't make this static so fmgr_faddr() macros can access it */ +FmgrInfo *fmgr_pl_finfo; static char * fmgr_pl(char *arg0, ...) @@ -248,13 +249,6 @@ fmgr_info(Oid procedureId, FmgrInfo *finfo) } } -func_ptr -fmgr_faddr(FmgrInfo *finfo) -{ - fmgr_pl_finfo = finfo; - return finfo->fn_addr; -} - /* * fmgr - return the value of a function call * |