[Lldb-commits] [lldb] r178175 - <rdar://problem/13327940>

Greg Clayton gclayton at apple.com
Wed Mar 27 13:12:15 PDT 2013


Author: gclayton
Date: Wed Mar 27 15:12:14 2013
New Revision: 178175

URL: http://llvm.org/viewvc/llvm-project?rev=178175&view=rev
Log:
<rdar://problem/13327940>

Enhance automated testing to include evaluating function calls.


Modified:
    lldb/trunk/tools/lldb-perf/common/clang/lldb_perf_clang.cpp

Modified: lldb/trunk/tools/lldb-perf/common/clang/lldb_perf_clang.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-perf/common/clang/lldb_perf_clang.cpp?rev=178175&r1=178174&r2=178175&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-perf/common/clang/lldb_perf_clang.cpp (original)
+++ lldb/trunk/tools/lldb-perf/common/clang/lldb_perf_clang.cpp Wed Mar 27 15:12:14 2013
@@ -20,6 +20,7 @@
 
 using namespace lldb_perf;
 
+#define NUM_EXPR_ITERATIONS 3
 class ClangTest : public TestCase
 {
 public:
@@ -37,9 +38,23 @@ public:
                                   m_target.BreakpointCreateByName("main");
                                   m_memory_change_break_main.Stop();
                               }, "time-set-break-main", "Elapsed time it takes to set a breakpoint at 'main' by name."),
-        m_memory_change_create_target(),
-        m_memory_change_break_main(),
-        m_memory_total(),
+        m_memory_change_create_target (),
+        m_memory_change_break_main (),
+        m_memory_total (),
+        m_time_launch_stop_main(),
+        m_time_total (),
+        m_expr_first_evaluate([this] (SBFrame frame) -> void
+                          {
+                              frame.EvaluateExpression("Diags.DiagArgumentsStr[0].size()").GetError();
+                          }, "time-expr", "Elapsed time it takes evaluate an expression for the first time."),
+        m_expr_frame_zero ([this] (SBFrame frame) -> void
+                       {
+                           frame.EvaluateExpression("Diags.DiagArgumentsStr[0].size()").GetError();
+                       }, "time-expr-frame-zero", "Elapsed time it takes evaluate an expression 3 times at frame zero."),
+        m_expr_frame_non_zero ([this] (SBFrame frame) -> void
+                           {
+                               frame.EvaluateExpression("Diags.DiagArgumentsStr[0].size()").GetError();
+                           }, "time-expr-frame-non-zero", "Elapsed time it takes evaluate an expression 3 times at a non-zero frame."),
         m_exe_path(),
         m_out_path(),
         m_launch_info (NULL),
@@ -73,6 +88,8 @@ public:
         {
             case 0:
                 {
+                    Xcode::RunCommand(m_debugger,"log enable -f /tmp/packets.txt gdb-remote packets",true);
+
                     m_memory_total.Start();
                     m_time_total.Start();
                     
@@ -82,7 +99,46 @@ public:
                     m_time_set_bp_main();
 
                     m_time_launch_stop_main.Start();
-                    const char *clang_argv[] = { "clang --version", NULL };
+                    const char *clang_argv[] = {
+                        "-cc1",
+                        "-triple", "x86_64-apple-macosx10.8.0",
+                        "-emit-obj",
+                        "-mrelax-all",
+                        "-disable-free",
+                        "-disable-llvm-verifier",
+                        "-main-file-name", "main.cpp",
+                        "-mrelocation-model", "pic",
+                        "-pic-level", "2",
+                        "-mdisable-fp-elim",
+                        "-masm-verbose",
+                        "-munwind-tables",
+                        "-target-cpu", "core2",
+                        "-target-linker-version", "132.10.1",
+                        "-v",
+                        "-g",
+                        "-resource-dir", "/Volumes/work/gclayton/Documents/src/lldb/tot/tools/lldb-perf/common/clang/llvm-build/build/Debug/bin/../lib/clang/3.3",
+                        "-O0",
+                        "-fdeprecated-macro",
+                        "-fdebug-compilation-dir", "/Volumes/work/gclayton/Documents/src/lldb/tot/tools/lldb-perf/common/clang/llvm-build/build/Debug/bin",
+                        "-ferror-limit", "19",
+                        "-fmessage-length", "298",
+                        "-stack-protector", "1",
+                        "-mstackrealign",
+                        "-fblocks",
+                        "-fobjc-runtime=macosx-10.8.0",
+                        "-fobjc-dispatch-method=mixed",
+                        "-fobjc-default-synthesize-properties",
+                        "-fencode-extended-block-signature",
+                        "-fcxx-exceptions",
+                        "-fexceptions",
+                        "-fdiagnostics-show-option",
+                        "-fcolor-diagnostics",
+                        "-backend-option",
+                        "-vectorize-loops",
+                        "-o", "/tmp/main.o",
+                        "-x", "c++",
+                        "/tmp/main.cpp",
+                        NULL };
                     SBLaunchInfo launch_info(clang_argv);
                     Launch (launch_info);
                 }
@@ -91,14 +147,34 @@ public:
                 puts("stop");
                 m_time_launch_stop_main.Stop();
                 m_time_total.Stop();
-//                next_action.StepOver(m_thread);
-//                break;
-//            case 2:
-//                next_action.StepOver(m_thread);
-//                break;
-//            case 3:
-//                next_action.StepOver(m_thread);
-//                break;
+            case 2:
+                {
+                    SBFrame frame (m_thread.GetFrameAtIndex(0));
+
+                    // Time the first expression evaluation
+                    m_expr_first_evaluate(frame);
+                    
+                    SBValue result;
+                    for (size_t i=0; i<NUM_EXPR_ITERATIONS; ++i)
+                    {
+                        m_expr_frame_zero(frame);
+                    }
+                    m_target.BreakpointCreateByName("DeclContext::lookup");
+                    next_action.Continue();
+                }
+                break;
+            case 3:
+                {
+                    SBFrame frame (m_thread.GetFrameAtIndex(21));
+                    SBValue result;
+                    for (size_t i=0; i<NUM_EXPR_ITERATIONS; ++i)
+                    {
+                        m_expr_frame_non_zero(frame);
+                    }
+                    m_target.BreakpointCreateByName("DeclContext::lookup");
+                    next_action.Continue();
+                }
+                break;
             default:
                 m_memory_total.Stop();
                 next_action.Kill();
@@ -121,6 +197,9 @@ public:
                           m_memory_change_break_main.GetDeltaValue().GetResult(NULL, NULL));
 
         m_time_create_target.WriteAverageValue(results);
+        m_expr_first_evaluate.WriteAverageValue(results);
+        m_expr_frame_zero.WriteAverageValue(results);
+        m_expr_frame_non_zero.WriteAverageValue(results);
         results_dict.Add ("memory-total-break-main",
                           "The total memory that the current process is using after setting the first breakpoint.",
                           m_memory_total.GetStopValue().GetResult(NULL, NULL));
@@ -188,6 +267,9 @@ private:
     MemoryGauge m_memory_total;
     TimeGauge m_time_launch_stop_main;
     TimeGauge m_time_total;
+    TimeMeasurement<std::function<void(SBFrame)>> m_expr_first_evaluate;
+    TimeMeasurement<std::function<void(SBFrame)>> m_expr_frame_zero;
+    TimeMeasurement<std::function<void(SBFrame)>> m_expr_frame_non_zero;
     std::string m_exe_path;
     std::string m_out_path;
     SBLaunchInfo m_launch_info;





More information about the lldb-commits mailing list