perf/scripts: Remove unnecessary PyTuple resizes
Tom Zanussi [Mon, 22 Feb 2010 07:12:59 +0000 (01:12 -0600)]
If we know the size of a tuple in advance, there's no need to resize
it - start out with the known size in the first place.

Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Keiichi KII <k-keiichi@bx.jp.nec.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
LKML-Reference: <1266822779.6426.4.camel@tropicana>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>

tools/perf/util/scripting-engines/trace-event-python.c

index d402f64..33a414b 100644 (file)
@@ -68,7 +68,7 @@ static void define_value(enum print_arg_type field_type,
        if (field_type == PRINT_SYMBOL)
                handler_name = "define_symbolic_value";
 
-       t = PyTuple_New(MAX_FIELDS);
+       t = PyTuple_New(4);
        if (!t)
                Py_FatalError("couldn't create Python tuple");
 
@@ -79,9 +79,6 @@ static void define_value(enum print_arg_type field_type,
        PyTuple_SetItem(t, n++, PyInt_FromLong(value));
        PyTuple_SetItem(t, n++, PyString_FromString(field_str));
 
-       if (_PyTuple_Resize(&t, n) == -1)
-               Py_FatalError("error resizing Python tuple");
-
        handler = PyDict_GetItemString(main_dict, handler_name);
        if (handler && PyCallable_Check(handler)) {
                retval = PyObject_CallObject(handler, t);
@@ -116,7 +113,10 @@ static void define_field(enum print_arg_type field_type,
        if (field_type == PRINT_SYMBOL)
                handler_name = "define_symbolic_field";
 
-       t = PyTuple_New(MAX_FIELDS);
+       if (field_type == PRINT_FLAGS)
+               t = PyTuple_New(3);
+       else
+               t = PyTuple_New(2);
        if (!t)
                Py_FatalError("couldn't create Python tuple");
 
@@ -125,9 +125,6 @@ static void define_field(enum print_arg_type field_type,
        if (field_type == PRINT_FLAGS)
                PyTuple_SetItem(t, n++, PyString_FromString(delim));
 
-       if (_PyTuple_Resize(&t, n) == -1)
-               Py_FatalError("error resizing Python tuple");
-
        handler = PyDict_GetItemString(main_dict, handler_name);
        if (handler && PyCallable_Check(handler)) {
                retval = PyObject_CallObject(handler, t);