From 63d5fd177a426b5038d7289cf728ca7e891e2ea7 Mon Sep 17 00:00:00 2001 From: Bruce Momjian <bruce@momjian.us> Date: Sat, 31 Jan 1998 05:22:43 +0000 Subject: [PATCH] Inline fmgr_faddr() for speed. --- src/backend/utils/Gen_fmgrtab.sh.in | 22 ++++++++++++++++------ 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 * -- GitLab