diff options
author | graydon <graydon> | 2005-10-20 22:11:33 +0000 |
---|---|---|
committer | graydon <graydon> | 2005-10-20 22:11:33 +0000 |
commit | 57b73400d06052b179335059c2f440350fd28c99 (patch) | |
tree | 1fe125be909fd23d7591f63f96dd66018400b1ac /staptree.h | |
parent | f6f492468e2dfec286e3611e3e38ad070c91ae9d (diff) | |
download | systemtap-steved-57b73400d06052b179335059c2f440350fd28c99.tar.gz systemtap-steved-57b73400d06052b179335059c2f440350fd28c99.tar.xz systemtap-steved-57b73400d06052b179335059c2f440350fd28c99.zip |
2005-10-20 Graydon Hoare <graydon@redhat.com>
PR 917 (incomplete)
* staptree.h (struct statistic_decl): New struct.
(stapfile::stat_decls): New member.
* parse.h, parse.cxx
(parser::expect_known): Fix typo.
(parser::expect_number): New method.
(parser::parse_global): Parse global statistic_decls.
* elaborate.h (systemtap_session::stat_decls): New member.
* elaborate.cxx (semantic_pass_symbols): Copy per-file stat_decls
to session-wide.
(typeresolution_info::visit_assignment): Detect some semantic stats
errors in type resolution pass.
* translate.cxx (var::sd): New private member.
(var::var): Initialize it.
(var::sdecl): New accessor.
(var::init): Handle stats values.
(mapvar::mapvar): Pass through statistic_decl to var ctor.
(mapvar::get): Test for long explicitly.
(mapvar::set): Likewise.
(mapvar::init): Handle stats values.
(c_unparser::emit_common_header): Remove typedef of stats_t,
include stat.c when necessary.
(mapvar::key_typename): Typo.
(c_unparser::emit_map_type_instantiations): Thinko: value_typename not key_typename.
(c_unparser::c_typename): Implementation typename is "Stat", not "stats_t".
(c_unparser::c_assign): Fix bad error message.
(c_unparser_assignment::c_assignop): Handle operator <<<.
(c_unparser::getvar): Feed session statistic_decl into var.
(c_unparser::getmap): Likewise.
(c_unparser::visit_assignment): Handle operator <<<.
(c_tmpcounter_assignment::visit_symbol): Derive type from rvalue when present.
(c_unparser_assignment::visit_symbol)
(c_tmpcounter_assignment::visit_arrayindex)
(c_unparser_assignment::load_map_indices): Likewise.
(c_unparser::visit_arrayindex): Likewise, and Prohibit statistic rvalues.
(c_unparser_assignment::visit_arrayindex): Handle operator <<<.
* testsuite/semko/twentyfour.stp:
* testsuite/semko/twentyfive.stp:
* testsuite/semko/twentysix.stp:
* testsuite/semko/twentyseven.stp:
* testsuite/semko/twentyeight.stp:
* testsuite/semko/twentynine.stp:
* testsuite/semko/thirty.stp:
* testsuite/semko/thirtyone.stp: New tests for prohibited statistic contexts.
* testsuite/buildok/twentytwo.stp: New test for legal statistic contexts.
Diffstat (limited to 'staptree.h')
-rw-r--r-- | staptree.h | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -9,6 +9,7 @@ #ifndef STAPTREE_H #define STAPTREE_H +#include <map> #include <stack> #include <string> #include <vector> @@ -35,7 +36,23 @@ struct semantic_error: public std::runtime_error runtime_error (msg), tok1 (t1), msg2 (m2), tok2 (t2) {} }; +// ------------------------------------------------------------------------ +struct statistic_decl +{ + statistic_decl() + : type(none), + logarithmic_buckets(0), + linear_low(0), linear_high(0), linear_step(0) + {} + enum { none, linear, logarithmic } type; + int64_t logarithmic_buckets; + int64_t linear_low; + int64_t linear_high; + int64_t linear_step; +}; + +// ------------------------------------------------------------------------ enum exp_type { @@ -392,6 +409,7 @@ struct stapfile std::vector<functiondecl*> functions; std::vector<vardecl*> globals; std::vector<embeddedcode*> embeds; + std::map<std::string, statistic_decl> stat_decls; bool privileged; stapfile (): privileged (false) {} void print (std::ostream& o) const; |