diff options
author | graydon <graydon> | 2005-11-24 05:55:52 +0000 |
---|---|---|
committer | graydon <graydon> | 2005-11-24 05:55:52 +0000 |
commit | 07c17d677a8080492b4a67b664f4cc9557f5dda3 (patch) | |
tree | ddff61760db8a9d3067f3e559ce36eca9e642811 /parse.cxx | |
parent | 5bb3c2a0266268e63d373de4df3fed2bb7d3be67 (diff) | |
download | systemtap-steved-07c17d677a8080492b4a67b664f4cc9557f5dda3.tar.gz systemtap-steved-07c17d677a8080492b4a67b664f4cc9557f5dda3.tar.xz systemtap-steved-07c17d677a8080492b4a67b664f4cc9557f5dda3.zip |
2005-11-23 Graydon Hoare <graydon@redhat.com>
* elaborate.h (get_symbol_within_expression): Make visible.
* elaborate.cxx (get_symbol_within_expression): Make non-static.
(stat_decl_collector): New struct.
(semantic_pass_stats): New semantic pass.
(semantic_pass): Call it.
(semantic_pass_symbols): Remove collection of statistic_decls from files.
(visit_stat_op): Only fail if inferred type is not pe_long.
* parse.cxx (parser::parse): Don't pass per-file statistic_decl
into parse_global.
(parser::parse_global): Don't parse global statistic_decls,
they're obsolete.
* parse.hh (parser::parse_global): Adjust signature to match.
* session.h (statistic_decl::operator==): New method.
* staptree.h (print_format::is_empty): New method.
(stapfile::stat_decls): Remove field.
* staptree.cxx (string_to_components): Fix bugs in format-string
parser.
* translate.cxx (var): Make private fields protected.
(var::init): Support HIST_NONE stats.
(aggvar): New struct.
(mapvar::is_parallel): New method.
(mapvar::call_prefix): Use it.
(mapvar::calculate_aggregate): New method.
(mapvar::fetch_existing_aggregate): New method.
(mapvar::get): Support pe_stats.
(mapvar::init): Use is_parallel(), and support HIST_NONE.
(itervar::itervar): Only fault on pe_unknown.
(itervar::start): Use mapvar::is_parallel and
mapvar::fetch_existing_aggregate.
(emit_map_type_instantiations): Include alloc.c before pmap-gen.c.
Include pmap-gen.c for pe_stats maps.
(c_unparser::gensym_aggregate): New method.
(c_unparser::visit_foreach_loop): Handle mapvar::is_parallel case.
(arrayindex_downcaster): New struct.
(expression_is_arrayindex): New function.
(c_tmpcounter::visit_stat_op): New method.
(c_unparser::visit_stat_op): Implement.
(c_unparser::visit_hist_op): Add commentary, still not implemented.
* testsuite/buildok/stat_{insert,extract}.stp: New tests.
* testsuite/semok/ten.stp: Correct for changes to global declarations.
* testsuite/semko/*.stp: Likewise.
Diffstat (limited to 'parse.cxx')
-rw-r--r-- | parse.cxx | 38 |
1 files changed, 2 insertions, 36 deletions
@@ -672,7 +672,7 @@ parser::parse () if (t->type == tok_identifier && t->content == "probe") parse_probe (f->probes, f->aliases); else if (t->type == tok_identifier && t->content == "global") - parse_global (f->globals, f->stat_decls); + parse_global (f->globals); else if (t->type == tok_identifier && t->content == "function") parse_functiondecl (f->functions); else if (t->type == tok_embedded) @@ -886,8 +886,7 @@ parser::parse_statement () void -parser::parse_global (vector <vardecl*>& globals, - std::map<std::string, statistic_decl> &stat_decls) +parser::parse_global (vector <vardecl*>& globals) { const token* t0 = next (); if (! (t0->type == tok_identifier && t0->content == "global")) @@ -899,33 +898,6 @@ parser::parse_global (vector <vardecl*>& globals, if (! (t->type == tok_identifier)) throw parse_error ("expected identifier"); - statistic_decl sd; - - if (t->content == "log_hist") - { - std::string tmp; - expect_op ("("); - t = expect_ident (tmp); - expect_op (","); - expect_number (sd.logarithmic_buckets); - expect_op (")"); - sd.type = statistic_decl::logarithmic; - } - else if (t->content == "linear_hist") - { - std::string tmp; - expect_op ("("); - t = expect_ident (tmp); - expect_op (","); - expect_number (sd.linear_low); - expect_op (","); - expect_number (sd.linear_high); - expect_op (","); - expect_number (sd.linear_step); - expect_op (")"); - sd.type = statistic_decl::linear; - } - for (unsigned i=0; i<globals.size(); i++) if (globals[i]->name == t->content) throw parse_error ("duplicate global name"); @@ -935,12 +907,6 @@ parser::parse_global (vector <vardecl*>& globals, d->tok = t; globals.push_back (d); - if (sd.type != statistic_decl::none) - { - d->type = pe_stats; - stat_decls[d->name] = sd; - } - t = peek (); if (t && t->type == tok_operator && t->content == ",") { |