]> granicus.if.org Git - postgresql/commitdiff
Convert MemoryContextSwitchTo() into an inline function when using GCC.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 18 Feb 2005 21:52:34 +0000 (21:52 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 18 Feb 2005 21:52:34 +0000 (21:52 +0000)
src/backend/utils/mmgr/mcxt.c
src/include/utils/palloc.h

index 6ead279fa16fde12401e05be6878a87b2e3c6813..c5a2311bc5e53395dbef371607b87f06ee1db0f1 100644 (file)
@@ -14,7 +14,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/mmgr/mcxt.c,v 1.53 2004/12/31 22:02:48 pgsql Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/mmgr/mcxt.c,v 1.54 2005/02/18 21:52:33 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -619,7 +619,13 @@ repalloc(void *pointer, Size size)
 /*
  * MemoryContextSwitchTo
  *             Returns the current context; installs the given context.
+ *
+ * This is inlined when using GCC.
+ *
+ * TODO: investigate supporting inlining for some non-GCC compilers.
  */
+#ifndef __GNUC__
+
 MemoryContext
 MemoryContextSwitchTo(MemoryContext context)
 {
@@ -632,6 +638,8 @@ MemoryContextSwitchTo(MemoryContext context)
        return old;
 }
 
+#endif   /* ! __GNUC__ */
+
 /*
  * MemoryContextStrdup
  *             Like strdup(), but allocate from the specified context
index c73ebb02b03fdf456e597bc15ecabb5088937435..f1bbfa2cdacdee8aca0b14b6dc6972b4bdab7492 100644 (file)
@@ -21,7 +21,7 @@
  * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/utils/palloc.h,v 1.32 2004/12/31 22:03:46 pgsql Exp $
+ * $PostgreSQL: pgsql/src/include/utils/palloc.h,v 1.33 2005/02/18 21:52:34 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -70,8 +70,26 @@ extern void pfree(void *pointer);
 
 extern void *repalloc(void *pointer, Size size);
 
+/*
+ * MemoryContextSwitchTo can't be a macro in standard C compilers.
+ * But we can make it an inline function when using GCC.
+ */
+#ifdef __GNUC__
+
+static __inline__ MemoryContext
+MemoryContextSwitchTo(MemoryContext context)
+{
+       MemoryContext old = CurrentMemoryContext;
+       CurrentMemoryContext = context;
+       return old;
+}
+
+#else
+
 extern MemoryContext MemoryContextSwitchTo(MemoryContext context);
 
+#endif   /* __GNUC__ */
+
 /*
  * These are like standard strdup() except the copied string is
  * allocated in a context, not with malloc().