Convert MemoryContextSwitchTo() into an inline function when using GCC.
This commit is contained in:
parent
477a64d9c8
commit
a8593a3463
|
@ -14,7 +14,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* MemoryContextSwitchTo
|
||||||
* Returns the current context; installs the given context.
|
* 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
|
MemoryContext
|
||||||
MemoryContextSwitchTo(MemoryContext context)
|
MemoryContextSwitchTo(MemoryContext context)
|
||||||
{
|
{
|
||||||
|
@ -632,6 +638,8 @@ MemoryContextSwitchTo(MemoryContext context)
|
||||||
return old;
|
return old;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* ! __GNUC__ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MemoryContextStrdup
|
* MemoryContextStrdup
|
||||||
* Like strdup(), but allocate from the specified context
|
* Like strdup(), but allocate from the specified context
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* 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);
|
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);
|
extern MemoryContext MemoryContextSwitchTo(MemoryContext context);
|
||||||
|
|
||||||
|
#endif /* __GNUC__ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These are like standard strdup() except the copied string is
|
* These are like standard strdup() except the copied string is
|
||||||
* allocated in a context, not with malloc().
|
* allocated in a context, not with malloc().
|
||||||
|
|
Loading…
Reference in New Issue