From 35bef4fd1da1a34515582ef8cf88162301e5f73a Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 29 Apr 2011 19:23:39 +0000 Subject: [PATCH] 2011-04-26 Andrew Gontarek * valprint.c (val_print_array_elements): Fixed poor performance of printing very large arrays with repeat_count_threshold set to unlimited. New comment. --- gdb/ChangeLog | 6 ++++++ gdb/valprint.c | 22 ++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 37cf2cff8f4..323d6d50c1c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2011-04-26 Andrew Gontarek + + * valprint.c (val_print_array_elements): Fixed poor performance + of printing very large arrays with repeat_count_threshold set + to unlimited. New comment. + 2011-04-29 Tom Tromey * mi/mi-parse.c (mi_parse): Remove incorrect sizeof. diff --git a/gdb/valprint.c b/gdb/valprint.c index 286ef9e74cd..9bf19f4b469 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -1247,15 +1247,21 @@ val_print_array_elements (struct type *type, rep1 = i + 1; reps = 1; - while (rep1 < len - && value_available_contents_eq (val, - embedded_offset + i * eltlen, - val, - embedded_offset + rep1 * eltlen, - eltlen)) + /* Only check for reps if repeat_count_threshold is not set to + UINT_MAX (unlimited). */ + if (options->repeat_count_threshold < UINT_MAX) { - ++reps; - ++rep1; + while (rep1 < len + && value_available_contents_eq (val, + embedded_offset + i * eltlen, + val, + (embedded_offset + + rep1 * eltlen), + eltlen)) + { + ++reps; + ++rep1; + } } if (reps > options->repeat_count_threshold) -- 2.30.2