diff options
author | fche <fche> | 2006-01-26 22:55:20 +0000 |
---|---|---|
committer | fche <fche> | 2006-01-26 22:55:20 +0000 |
commit | 3066c15c5313ba37afb518ef13d207c764a8ad2a (patch) | |
tree | 1fdbc217129e2f46ca4a977f9685bf2a0c27b726 /staptree.h | |
parent | 65bf1df7d18eae25ae865b5179395a339cc9d283 (diff) | |
download | systemtap-steved-3066c15c5313ba37afb518ef13d207c764a8ad2a.tar.gz systemtap-steved-3066c15c5313ba37afb518ef13d207c764a8ad2a.tar.xz systemtap-steved-3066c15c5313ba37afb518ef13d207c764a8ad2a.zip |
2006-01-26 Frank Ch. Eigler <fche@elastic.org>
PR 2060: lock elevation, mop-up
* staptree.cxx (functioncall_traversing_visitor): Store a
current_function pointer during traversal.
(visit_embeddedcode): Use it to handle $target-synthesized functions.
(varuse_collecting_visitor::visit_assignment): Correct l-lr typo.
(visit_foreach_loop): Note added write on sorted foreach.
(visit_delete_statement): Note as read+write.
* staptree.h: Corresponding changes.
* elaborate.cxx (dead_assignment_remover::visit_expr_statement):
Correct stmt token after possible expression rewriting.
* tapsets.cxx (visit_target_symbol): Create naming convention
to recognize $target-synthesized functions.
* translate.cxx (emit_locks, emit_unlocks): New functions to
emit lock/unlock sequences at the outermost level of a probe.
(emit_probe): Call them.
(varlock_*): #if-0 out the lock code generation. Later, these
classes should be removed.
(translate_pass): Emit read_trylock() kludge macro for old kernels.
Diffstat (limited to 'staptree.h')
-rw-r--r-- | staptree.h | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -676,6 +676,8 @@ struct traversing_visitor: public visitor struct functioncall_traversing_visitor: public traversing_visitor { std::set<functiondecl*> traversed; + functiondecl* current_function; + functioncall_traversing_visitor(): current_function(0) {} void visit_functioncall (functioncall* e); }; @@ -696,12 +698,14 @@ struct varuse_collecting_visitor: public functioncall_traversing_visitor current_lvalue(0), current_lrvalue(0) {} void visit_embeddedcode (embeddedcode *s); + void visit_delete_statement (delete_statement *s); void visit_print_format (print_format *e); void visit_assignment (assignment *e); void visit_arrayindex (arrayindex *e); void visit_symbol (symbol *e); void visit_pre_crement (pre_crement *e); void visit_post_crement (post_crement *e); + void visit_foreach_loop (foreach_loop *s); }; |