Turn of profiling by default, rename macro.
authorRobert Bradshaw <robertwb@math.washington.edu>
Fri, 25 Sep 2009 09:12:53 +0000 (02:12 -0700)
committerRobert Bradshaw <robertwb@math.washington.edu>
Fri, 25 Sep 2009 09:12:53 +0000 (02:12 -0700)
Cython/Compiler/Nodes.py
Cython/Compiler/Options.py
tests/bugs.txt
tests/run/profile_test.pyx

index 17e63c8965f9c4037aab584d1136c647b2282932..a1abe76a43bbc00153439826eb22acd807c9f30b 100644 (file)
@@ -1062,14 +1062,11 @@ class FuncDefNode(StatNode, BlockNode):
         is_getbuffer_slot = (self.entry.name == "__getbuffer__" and
                              self.entry.scope.is_c_class_scope)
         
-        if code.globalstate.directives['profile'] is None:
-            profile = 'inline' not in self.modifiers and not lenv.nogil
-        else:
-            profile = code.globalstate.directives['profile']
-            if profile and lenv.nogil:
-                error(self.pos, "Cannot profile nogil function.")
+        profile = code.globalstate.directives['profile']
         if profile:
-            code.globalstate.use_utility_code(trace_utility_code)
+            if lenv.nogil:
+                error(self.pos, "Cannot profile nogil function.")
+            code.globalstate.use_utility_code(profile_utility_code)
 
         # Generate C code for header and body of function
         code.enter_cfunc_scope()
@@ -5791,22 +5788,22 @@ proto="""
 # Note that cPython ignores PyTrace_EXCEPTION, 
 # but maybe some other profilers don't. 
 
-trace_utility_code = UtilityCode(proto="""
-#ifndef CYTHON_TRACING
-#define CYTHON_TRACING 1
+profile_utility_code = UtilityCode(proto="""
+#ifndef CYTHON_PROFILE
+#define CYTHON_PROFILE 1
 #endif
 
-#ifndef CYTHON_TRACING_REUSE_FRAME
-#define CYTHON_TRACING_REUSE_FRAME 0
+#ifndef CYTHON_PROFILE_REUSE_FRAME
+#define CYTHON_PROFILE_REUSE_FRAME 0
 #endif
 
-#if CYTHON_TRACING
+#if CYTHON_PROFILE
 
 #include "compile.h"
 #include "frameobject.h"
 #include "traceback.h"
 
-#if CYTHON_TRACING_REUSE_FRAME
+#if CYTHON_PROFILE_REUSE_FRAME
 #define CYTHON_FRAME_MODIFIER static
 #define CYTHON_FRAME_DEL
 #else
@@ -5846,7 +5843,7 @@ static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, c
 #define __Pyx_TraceCall(funcname, srcfile, firstlineno) 
 #define __Pyx_TraceException() 
 #define __Pyx_TraceReturn(result) 
-#endif /* CYTHON_TRACING */
+#endif /* CYTHON_PROFILE */
 """ 
 % {
     "FRAME": Naming.frame_cname,
@@ -5854,14 +5851,14 @@ static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, c
 },
 impl = """
 
-#if CYTHON_TRACING
+#if CYTHON_PROFILE
 
 static int __Pyx_TraceSetupAndCall(PyCodeObject** code,
                                    PyFrameObject** frame,
                                    const char *funcname,
                                    const char *srcfile,
                                    int firstlineno) {
-    if (*frame == NULL || !CYTHON_TRACING_REUSE_FRAME) {
+    if (*frame == NULL || !CYTHON_PROFILE_REUSE_FRAME) {
         if (*code == NULL) {
             *code = __Pyx_createFrameCodeObject(funcname, srcfile, firstlineno);
             if (*code == NULL) return 0;
@@ -5921,7 +5918,7 @@ bad:
     return py_code;
 }
 
-#endif /* CYTHON_TRACING */
+#endif /* CYTHON_PROFILE */
 """ % {
     'EMPTY_TUPLE' : Naming.empty_tuple,
     'EMPTY_BYTES' : Naming.empty_bytes,
index 60a2cab05c4a6da02c48ed550bad630993ec790e..869a26c3d8dce3eae9aae89cb54101b324a40964 100644 (file)
@@ -67,11 +67,11 @@ option_defaults = {
     'wraparound' : True,
     'c99_complex' : False, # Don't use macro wrappers for complex arith, not sure what to name this...
     'callspec' : "",
-    'profile': None,
+    'profile': False,
 }
 
 # Override types possibilities above, if needed
-option_types = { 'profile': bool }
+option_types = {}
 
 for key, val in option_defaults.items():
     if key not in option_types:
index 2d1b21b818529884f4e73a93a63846e345947c6d..e7c4b58608e83f6449ab222a25617ac669d62759 100644 (file)
@@ -13,4 +13,4 @@ bad_c_struct_T252
 missing_baseclass_in_predecl_T262
 
 # Not yet enabled
-profile_test
+profile_test
index db433a5e004fbdd5c88c73efa8f20f24962c4af8..f231b3e7631c4b936863f5000fd9a6c9a0e6d25d 100644 (file)
@@ -1,3 +1,5 @@
+# cython: profile = True
+
 __doc__ = u"""
     >>> import os, tempfile, cProfile as profile, pstats
     >>> statsfile = tempfile.mkstemp()[1]
@@ -9,9 +11,7 @@ __doc__ = u"""
     >>> short_stats['f_cdef']
     100
     >>> short_stats['f_inline']
-    Traceback (most recent call last):
-    ...
-    KeyError: 'f_inline'
+    100
     >>> short_stats['f_inline_prof']
     100
     >>> short_stats['f_noprof']