From 148f987f1bbc4a8fe23012a56bf89bb9fc69beb9 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 24 Mar 2009 15:15:10 -0400 Subject: accelerate pass-3 symbol/unwind generation * translate.cxx (emit_symbol_data): Abort dwfl_getmodules loop as soon as we run out of modules we're looking for. --- translate.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'translate.cxx') diff --git a/translate.cxx b/translate.cxx index 40bb82c2..798d52fe 100644 --- a/translate.cxx +++ b/translate.cxx @@ -4826,7 +4826,7 @@ emit_symbol_data (systemtap_session& s) if (pending_interrupts) return; off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0); } - while (off > 0); + while (off > 0 && !ctx.undone_unwindsym_modules.empty()); dwfl_assert("dwfl_getmodules", off == 0); } dwfl_end(dwfl); @@ -4864,7 +4864,7 @@ emit_symbol_data (systemtap_session& s) if (pending_interrupts) return; off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0); } - while (off > 0); + while (off > 0 && !ctx.undone_unwindsym_modules.empty()); dwfl_assert("dwfl_getmodules", off == 0); } dwfl_end(dwfl); -- cgit From 5d6b014268ca47386ef92525b8669429dec6e49c Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 24 Mar 2009 16:41:31 -0400 Subject: further accelerate pass-3 symbol/unwind process, skip one more iteration --- translate.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'translate.cxx') diff --git a/translate.cxx b/translate.cxx index 798d52fe..55b266bf 100644 --- a/translate.cxx +++ b/translate.cxx @@ -4824,9 +4824,10 @@ emit_symbol_data (systemtap_session& s) do { if (pending_interrupts) return; + if (ctx.undone_unwindsym_modules.empty()) return; off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0); } - while (off > 0 && !ctx.undone_unwindsym_modules.empty()); + while (off > 0); dwfl_assert("dwfl_getmodules", off == 0); } dwfl_end(dwfl); @@ -4862,9 +4863,10 @@ emit_symbol_data (systemtap_session& s) do { if (pending_interrupts) return; + if (ctx.undone_unwindsym_modules.empty()) return; off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0); } - while (off > 0 && !ctx.undone_unwindsym_modules.empty()); + while (off > 0); dwfl_assert("dwfl_getmodules", off == 0); } dwfl_end(dwfl); -- cgit From c87193cfb18258abbad947d009e6ca0bd2d5e0cf Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 24 Mar 2009 19:14:57 -0400 Subject: brown paper bag fix for commit 5d6b0142 return != break --- translate.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'translate.cxx') diff --git a/translate.cxx b/translate.cxx index 55b266bf..0b81d9bb 100644 --- a/translate.cxx +++ b/translate.cxx @@ -4824,7 +4824,7 @@ emit_symbol_data (systemtap_session& s) do { if (pending_interrupts) return; - if (ctx.undone_unwindsym_modules.empty()) return; + if (ctx.undone_unwindsym_modules.empty()) break; off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0); } while (off > 0); @@ -4863,7 +4863,7 @@ emit_symbol_data (systemtap_session& s) do { if (pending_interrupts) return; - if (ctx.undone_unwindsym_modules.empty()) return; + if (ctx.undone_unwindsym_modules.empty()) break; off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0); } while (off > 0); -- cgit