From 3066c15c5313ba37afb518ef13d207c764a8ad2a Mon Sep 17 00:00:00 2001 From: fche Date: Thu, 26 Jan 2006 22:55:20 +0000 Subject: 2006-01-26 Frank Ch. Eigler 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. --- staptree.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'staptree.h') diff --git a/staptree.h b/staptree.h index fecd6aaf..cde87372 100644 --- a/staptree.h +++ b/staptree.h @@ -676,6 +676,8 @@ struct traversing_visitor: public visitor struct functioncall_traversing_visitor: public traversing_visitor { std::set 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); }; -- cgit