]> granicus.if.org Git - postgresql/commitdiff
Inline fmgr_faddr() for speed.
authorBruce Momjian <bruce@momjian.us>
Sat, 31 Jan 1998 05:22:43 +0000 (05:22 +0000)
committerBruce Momjian <bruce@momjian.us>
Sat, 31 Jan 1998 05:22:43 +0000 (05:22 +0000)
src/backend/utils/Gen_fmgrtab.sh.in
src/backend/utils/fmgr/fmgr.c

index 3e04b2d890ff221b219aff5c9f9f955b967a1ecc..41d480ed670ee567d910a6bdb132391da53f3362 100644 (file)
@@ -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
  *
index 08302c341709f22cfdff0c6159146a7d16251ac2..27762a554ebc09a9935170b140fa2ac21ed8b8a6 100644 (file)
@@ -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
  *