diff --git a/Lib/test/output/test_profile b/Lib/test/output/test_profile
index b46bb6a..baa2509 100644
--- a/Lib/test/output/test_profile
+++ b/Lib/test/output/test_profile
@@ -4,9 +4,9 @@
    Ordered by: standard name
 
    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
-       12    0.000    0.000    0.012    0.001 :0(hasattr)
-        8    0.000    0.000    0.000    0.000 :0(range)
-        1    0.000    0.000    0.000    0.000 :0(setprofile)
+       12    0.000    0.000    0.012    0.001 :0(<built-in function hasattr>)
+        8    0.000    0.000    0.000    0.000 :0(<built-in function range>)
+        1    0.000    0.000    0.000    0.000 :0(<built-in function setprofile>)
         1    0.000    0.000    1.000    1.000 <string>:1(?)
         0    0.000             0.000          profile:0(profiler)
         1    0.000    0.000    1.000    1.000 profile:0(testfunc())
diff --git a/Python/ceval.c b/Python/ceval.c
index 6f6fef6..b320f61 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3438,47 +3438,33 @@
 			     nargs);
 }
 
-#ifdef WITH_C_PROF
-#define BEGIN_C_TRACE \
-if (tstate->use_tracing) { \
+#define C_TRACE(call) \
+if (tstate->use_tracing && tstate->c_profilefunc) { \
+	if (call_trace(tstate->c_profilefunc, \
+		tstate->c_profileobj, \
+		tstate->frame, PyTrace_C_CALL, \
+		func)) \
+		{ return NULL; } \
+	call; \
 	if (tstate->c_profilefunc != NULL) { \
-		PyObject *func_name = \
-			PyString_FromString (((PyCFunctionObject *) \
-						func)->m_ml->ml_name); \
-		are_tracing = 1; \
-		if (call_trace(tstate->c_profilefunc, \
-			tstate->c_profileobj, \
-			tstate->frame, PyTrace_C_CALL, \
-			func_name)) \
-			{ return NULL; } \
-		Py_DECREF (func_name); \
+		if (x == NULL) { \
+			if (call_trace (tstate->c_profilefunc, \
+				tstate->c_profileobj, \
+				tstate->frame, PyTrace_C_EXCEPTION, \
+				func)) \
+				{ return NULL; } \
+		} else { \
+			if (call_trace(tstate->c_profilefunc, \
+				tstate->c_profileobj, \
+				tstate->frame, PyTrace_C_RETURN, \
+				func)) \
+				{ return NULL; } \
 		} \
+	} \
+} else { \
+	call; \
 	}
 
-#define END_C_TRACE \
-	if (tstate->use_tracing && are_tracing) { \
-		if (tstate->c_profilefunc != NULL) { \
-			if (x == NULL) { \
-				if (call_trace (tstate->c_profilefunc, \
-					tstate->c_profileobj, \
-					tstate->frame, PyTrace_C_EXCEPTION, \
-					NULL)) \
-					{ return NULL; } \
-			} else { \
-				if (call_trace(tstate->c_profilefunc, \
-					tstate->c_profileobj, \
-					tstate->frame, PyTrace_C_RETURN, \
-					NULL))	\
-					{ return NULL; } \
-			} \
-		} \
-	}
-#else
-#define BEGIN_C_TRACE
-#define END_C_TRACE
-#endif
-
-
 static PyObject *
 call_function(PyObject ***pp_stack, int oparg
 #ifdef WITH_TSC
@@ -3493,30 +3479,22 @@
 	PyObject *func = *pfunc;
 	PyObject *x, *w;
 
-#ifdef WITH_C_PROF
-	int     are_tracing = 0;
-	PyThreadState *tstate = PyThreadState_GET();
-#endif
-
 	/* Always dispatch PyCFunction first, because these are
 	   presumed to be the most frequent callable object.
 	*/
 	if (PyCFunction_Check(func) && nk == 0) {
 		int flags = PyCFunction_GET_FLAGS(func);
 		PCALL(PCALL_CFUNCTION);
+		PyThreadState *tstate = PyThreadState_GET();
 		if (flags & (METH_NOARGS | METH_O)) {
 			PyCFunction meth = PyCFunction_GET_FUNCTION(func);
 			PyObject *self = PyCFunction_GET_SELF(func);
 			if (flags & METH_NOARGS && na == 0) {
- 				BEGIN_C_TRACE
-				x = (*meth)(self, NULL);
-				END_C_TRACE
+				C_TRACE(x=(*meth)(self,NULL));
 			}
 			else if (flags & METH_O && na == 1) {
 				PyObject *arg = EXT_POP(*pp_stack);
-				BEGIN_C_TRACE
-				x = (*meth)(self, arg);
-				END_C_TRACE
+				C_TRACE(x=(*meth)(self,arg));
 				Py_DECREF(arg);
 			}
 			else {
@@ -3527,15 +3505,13 @@
 		else {
 			PyObject *callargs;
 			callargs = load_args(pp_stack, na);
-			BEGIN_C_TRACE
 #ifdef WITH_TSC
 			rdtscll(*pintr0);
 #endif
-			x = PyCFunction_Call(func, callargs, NULL);
+			C_TRACE(x=PyCFunction_Call(func,callargs,NULL));
 #ifdef WITH_TSC
 			rdtscll(*pintr1);
 #endif
-			END_C_TRACE
 			Py_XDECREF(callargs);
 		}
 	} else {
diff --git a/configure b/configure
index 0c0c443..31e6541 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 1.458 .
+# From configure.in Revision: 1.459 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.59 for python 2.4.
 #
@@ -869,7 +869,6 @@
                           deprecated; use --with(out)-threads
   --with-pth              use GNU pth threading libraries
   --with(out)-doc-strings disable/enable documentation strings
-  --with-c-profiling      Enable profiling of builtins and C extension functions
   --with(out)-tsc         enable/disable timestamp counter profile
   --with(out)-pymalloc    disable/enable specialized mallocs
   --with-wctype-functions use wctype.h functions
@@ -13030,31 +13029,6 @@
 echo "$as_me:$LINENO: result: $with_doc_strings" >&5
 echo "${ECHO_T}$with_doc_strings" >&6
 
-# Check for C call profiling support
-echo "$as_me:$LINENO: checking for --with-c-profiling" >&5
-echo $ECHO_N "checking for --with-c-profiling... $ECHO_C" >&6
-
-# Check whether --with-c-profiling or --without-c-profiling was given.
-if test "${with_c_profiling+set}" = set; then
-  withval="$with_c_profiling"
-
-if test "$withval" != no
-then
-
-cat >>confdefs.h <<\_ACEOF
-#define WITH_C_PROF 1
-_ACEOF
-
-    echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi;
-
 # Check for Python-specific malloc support
 echo "$as_me:$LINENO: checking for --with-tsc" >&5
 echo $ECHO_N "checking for --with-tsc... $ECHO_C" >&6
diff --git a/configure.in b/configure.in
index c766eb1..7e13874 100644
--- a/configure.in
+++ b/configure.in
@@ -1946,19 +1946,6 @@
 fi
 AC_MSG_RESULT($with_doc_strings)
 
-# Check for C call profiling support
-AC_MSG_CHECKING(for --with-c-profiling)
-AC_ARG_WITH(c-profiling,
-[  --with-c-profiling      Enable profiling of builtins and C extension functions], [
-if test "$withval" != no
-then
-  AC_DEFINE(WITH_C_PROF, 1,
-    [Define to enable profile hooks for C extension functions and builtins])
-    AC_MSG_RESULT(yes)
-else AC_MSG_RESULT(no)
-fi],
-[AC_MSG_RESULT(no)])
-
 # Check for Python-specific malloc support
 AC_MSG_CHECKING(for --with-tsc)
 AC_ARG_WITH(tsc,
diff --git a/pyconfig.h.in b/pyconfig.h.in
index e939c01..8cb0cff 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -759,9 +759,6 @@
 /* Define if WINDOW in curses.h offers a field _flags. */
 #undef WINDOW_HAS_FLAGS
 
-/* Define to enable profile hooks for C extension functions and builtins */
-#undef WITH_C_PROF
-
 /* Define if you want documentation strings in extension modules */
 #undef WITH_DOC_STRINGS
 
