diff options
author | graydon <graydon> | 2005-11-29 01:06:47 +0000 |
---|---|---|
committer | graydon <graydon> | 2005-11-29 01:06:47 +0000 |
commit | a46369128cb3df3d729a0f6f8f300d99f4c3cff6 (patch) | |
tree | 460b8e6b28d101eb1c5fd27c7e577193b2c13122 /parse.cxx | |
parent | a432e18a24569804c82f14b36ae7d8dfcc245da7 (diff) | |
download | systemtap-steved-a46369128cb3df3d729a0f6f8f300d99f4c3cff6.tar.gz systemtap-steved-a46369128cb3df3d729a0f6f8f300d99f4c3cff6.tar.xz systemtap-steved-a46369128cb3df3d729a0f6f8f300d99f4c3cff6.zip |
[ChangeLog]
2005-11-28 Graydon Hoare <graydon@redhat.com>
* translate.cxx (var::assert_hist_compatible): New method.
(var::hist): New method.
(c_unparser::load_aggregate): New method.
(hist_op_downcaster): Remove, it was a mistake.
(expression_is_hist_op): Likewise.
(c_tmpcounter::visit_print_format): Implement print(@hist(...)).
(c_unparser::visit_print_format): Likewise.
* staptree.h (struct print_format): Add optional hist_op* member.
* staptree.cxx (traversing_visitor::visit_functioncall): Visit
hist_op if present in print_format.
(deep_copy_visitor::visit_print_format): Likewise.
* parse.cxx (parse_symbol): Special case to consume print(@hist(...)).
* elaborate.cxx (typeresolution_info::visit_arrayindex): Fix type inference bug.
(typeresolution_info::visit_foreach_loop): Likewise.
* testsuite/buildok/print_histograms.stp: New test.
[runtime/ChangeLog]
2005-11-28 Graydon Hoare <graydon@redhat.com>
* stat-common.c (_stp_stat_print_histogram): Various formatting
corrections and aesthetic tweaks.
(__stp_stat_add): Correction to linear bucket underflow cases.
Diffstat (limited to 'parse.cxx')
-rw-r--r-- | parse.cxx | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -1988,6 +1988,19 @@ parser::parse_symbol () fmt->args.push_back(e); } } + else if (name == "print" && + (peek_kw("@hist_linear") || + peek_kw("@hist_log"))) + { + // We have a special case where we recognize + // print(@hist_foo(bar)) as a magic print-the-histogram + // construct. This is sort of gross but it avoids + // promoting histogram references to typeful + // expressions. + fmt->hist = NULL; + t = parse_hist_op_or_bare_name(fmt->hist, name); + assert(fmt->hist); + } else { // If we are not printing with a format string, we permit |