{
char* provider = get_java_string(env, _provider);
char* name = get_java_string(env, _name);
- STAP_PROBE2(hotspot, method__no__arguments, provider, name);
+ STAP_PROBE2(hotspot, method__0, provider, name);
}
arg1 = determine_java_type(env, _arg1, arg1);
if(arg1.type == OTHER || arg1.type == NONE)
arg1.vartype.c = get_java_string(env, _arg1); // we need to create some type of check for strings
- STAP_PROBE3(hotspot, method__one__argument, arg1.vartype.d, provider, name);
+ STAP_PROBE3(hotspot, method__1, arg1.vartype.d, provider, name);
}
/*
arg1.vartype.c = get_java_string(env, _arg1); // we need to create some type of check for strings
if(arg2.type == OTHER || arg2.type == NONE)
arg2.vartype.c = get_java_string(env, _arg2);
- STAP_PROBE4(hotspot, method__two__arguments, arg1.vartype.d, arg2.vartype.d, provider, name);
+ STAP_PROBE4(hotspot, method__2, arg1.vartype.d, arg2.vartype.d, provider, name);
}
arg2.vartype.c = get_java_string(env, _arg2);
if(arg3.type == OTHER || arg3.type == NONE)
arg3.vartype.c = get_java_string(env, _arg3);
- STAP_PROBE5(hotspot, method__three__arguments, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, provider, name);
+ STAP_PROBE5(hotspot, method__3, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, provider, name);
}
/*
arg3.vartype.c = get_java_string(env, _arg3);
if(arg4.type == OTHER || arg4.type == NONE)
arg4.vartype.c = get_java_string(env, _arg4);
- STAP_PROBE6(hotspot, method__four__arguments, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, provider, name);
+ STAP_PROBE6(hotspot, method__4, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, provider, name);
}
arg4.vartype.c = get_java_string(env, _arg4);
if(arg5.type == OTHER || arg5.type == NONE)
arg5.vartype.c = get_java_string(env, _arg5);
- STAP_PROBE7(hotspot, method__five__arguments, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, arg5.vartype.d, provider, name);
+ STAP_PROBE7(hotspot, method__5, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, arg5.vartype.d, provider, name);
}
/*
arg5.vartype.c = get_java_string(env, _arg5);
if(arg6.type == OTHER || arg6.type == NONE)
arg6.vartype.c = get_java_string(env, _arg6);
- STAP_PROBE8(hotspot, method__six__arguments, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, arg5.vartype.d, arg6.vartype.d, provider, name);
+ STAP_PROBE8(hotspot, method__6, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, arg5.vartype.d, arg6.vartype.d, provider, name);
}
/*
arg6.vartype.c = get_java_string(env, _arg6);
if(arg7.type == OTHER || arg7.type == NONE)
arg7.vartype.c = get_java_string(env, _arg7);
- STAP_PROBE9(hotspot, method__seven__arguments, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, arg5.vartype.d, arg6.vartype.d, arg7.vartype.d, provider, name);
+ STAP_PROBE9(hotspot, method__7, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, arg5.vartype.d, arg6.vartype.d, arg7.vartype.d, provider, name);
}
/*
arg7.vartype.c = get_java_string(env, _arg7);
if(arg8.type == OTHER || arg8.type == NONE)
arg8.vartype.c = get_java_string(env, _arg8);
- STAP_PROBE10(hotspot, method__eight__arguments, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, arg5.vartype.d, arg6.vartype.d, arg7.vartype.d, arg8.vartype.d, provider, name);
+ STAP_PROBE10(hotspot, method__8, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, arg5.vartype.d, arg6.vartype.d, arg7.vartype.d, arg8.vartype.d, provider, name);
}
/*
arg8.vartype.c = get_java_string(env, _arg8);
if(arg9.type == OTHER || arg9.type == NONE)
arg9.vartype.c = get_java_string(env, _arg9);
- STAP_PROBE11(hotspot, method__nine__arguments, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, arg5.vartype.d, arg6.vartype.d, arg7.vartype.d, arg8.vartype.d, arg9.vartype.d, provider, name);
+ STAP_PROBE11(hotspot, method__9, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, arg5.vartype.d, arg6.vartype.d, arg7.vartype.d, arg8.vartype.d, arg9.vartype.d, provider, name);
}
arg9.vartype.c = get_java_string(env, _arg9);
if(arg10.type == OTHER || arg10.type == NONE)
arg10.vartype.c = get_java_string(env, _arg10);
- STAP_PROBE12(hotspot, method__ten__arguments, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, arg5.vartype.d, arg6.vartype.d, arg7.vartype.d, arg8.vartype.d, arg9.vartype.d, arg10.vartype.d, provider, name);
+ STAP_PROBE12(hotspot, method__10, arg1.vartype.d, arg2.vartype.d, arg3.vartype.d, arg4.vartype.d, arg5.vartype.d, arg6.vartype.d, arg7.vartype.d, arg8.vartype.d, arg9.vartype.d, arg10.vartype.d, provider, name);
}
std::string& value);
void bminstall (systemtap_session & sess,
std::string java_proc);
+ std::string mark_param(int i);
};
}
}
+std::string
+java_builder::mark_param(int i)
+{
+ switch (i)
+ {
+ case 0:
+ return "method__0";
+ case 1:
+ return "method__1";
+ case 2:
+ return "method__2";
+ case 3:
+ return "method__3";
+ case 4:
+ return "method__4";
+ case 5:
+ return "method__5";
+ case 6:
+ return "method__6";
+ case 7:
+ return "method__7";
+ case 8:
+ return "method__8";
+ case 9:
+ return "method__9";
+ case 10:
+ return "method__10";
+ default:
+ return "*";
+ }
+}
+
void
java_builder::build (systemtap_session & sess,
probe * base,
* redefine functor values with new literal_string("foo")
*/
//XXX can this be moved into its own function, or after root->bind'ing takes place
- probe_point* new_loc = new probe_point (*loc);
- vector<probe_point::component*> java_marker;
- java_marker.push_back( new probe_point::component
- (TOK_PROCESS, new literal_string (HAVE_HELPER)));
- java_marker.push_back( new probe_point::component
- (TOK_MARK, new literal_string ("*")));
- probe_point * derived_loc = new probe_point (*new_loc);
-
- block *b = new block;
- b->tok = base->body->tok;
-
- // first half of argument
- target_symbol *cc = new target_symbol;
- cc->tok = b->tok;
- cc->name = "$provider";
-
- functioncall *ccus = new functioncall;
- ccus->function = "user_string";
- ccus->type = pe_string;
- ccus->tok = b->tok;
- ccus->args.push_back(cc);
+
+ probe_point* new_loc = new probe_point (*loc);
+ vector<probe_point::component*> java_marker;
+ java_marker.push_back( new probe_point::component
+ (TOK_PROCESS, new literal_string (HAVE_HELPER)));
+ java_marker.push_back( new probe_point::component
+ // (TOK_MARK, new literal_string ("*")));
+ (TOK_MARK, new literal_string (mark_param(method_params_count))));
+ probe_point * derived_loc = new probe_point (*new_loc);
+
+ block *b = new block;
+ b->tok = base->body->tok;
+
+ // first half of argument
+ target_symbol *cc = new target_symbol;
+ cc->tok = b->tok;
+ cc->name = "$provider";
+
+ functioncall *ccus = new functioncall;
+ ccus->function = "user_string";
+ ccus->type = pe_string;
+ ccus->tok = b->tok;
+ ccus->args.push_back(cc);
- // second half of argument
- target_symbol *mc = new target_symbol;
- mc->tok = b->tok;
- mc->name = "$name";
-
- functioncall *mcus = new functioncall;
- mcus->function = "user_string";
- mcus->type = pe_string;
- mcus->tok = b->tok;
- mcus->args.push_back(mc);
+ // second half of argument
+ target_symbol *mc = new target_symbol;
+ mc->tok = b->tok;
+ mc->name = "$name";
+
+ functioncall *mcus = new functioncall;
+ mcus->function = "user_string";
+ mcus->type = pe_string;
+ mcus->tok = b->tok;
+ mcus->args.push_back(mc);
- //build if statement
- if_statement *ifs = new if_statement;
- ifs->thenblock = new next_statement;
- ifs->elseblock = NULL;
- ifs->tok = b->tok;
- ifs->thenblock->tok = b->tok;
-
- //class comparison
- comparison *ce = new comparison;
- ce->op = "!=";
- ce->tok = b->tok;
- ce->left = ccus;
- ce->right = new literal_string(class_str_val);
- ce->right->tok = b->tok;
- ifs->condition = ce;
- b->statements.push_back(ifs);
-
- //method comparision
- comparison *me = new comparison;
- me->op = "!=";
- me->tok = b->tok;
- me->left = mcus;
- me->right = new literal_string(method_str_val);
- me->right->tok = b->tok;
-
- logical_or_expr *le = new logical_or_expr;
- le->op = "||";
- le->tok = b->tok;
- le->left = ce;
- le->right = me;
- ifs->condition = le;
- b->statements.push_back(ifs);
-
- b->statements.push_back(base->body);
- base->body = b;
-
- derived_loc->components = java_marker;
- probe *new_mark_probe = base->create_alias (derived_loc, new_loc);
- derive_probes (sess, new_mark_probe, finished_results);
+ //build if statement
+ if_statement *ifs = new if_statement;
+ ifs->thenblock = new next_statement;
+ ifs->elseblock = NULL;
+ ifs->tok = b->tok;
+ ifs->thenblock->tok = b->tok;
+
+ //class comparison
+ comparison *ce = new comparison;
+ ce->op = "!=";
+ ce->tok = b->tok;
+ ce->left = ccus;
+ ce->right = new literal_string(class_str_val);
+ ce->right->tok = b->tok;
+ ifs->condition = ce;
+ b->statements.push_back(ifs);
+
+ //method comparision
+ comparison *me = new comparison;
+ me->op = "!=";
+ me->tok = b->tok;
+ me->left = mcus;
+ me->right = new literal_string(method_str_val);
+ me->right->tok = b->tok;
+
+ logical_or_expr *le = new logical_or_expr;
+ le->op = "||";
+ le->tok = b->tok;
+ le->left = ce;
+ le->right = me;
+ ifs->condition = le;
+ b->statements.push_back(ifs);
+
+ b->statements.push_back(base->body);
+ base->body = b;
+
+ derived_loc->components = java_marker;
+ probe *new_mark_probe = base->create_alias (derived_loc, new_loc);
+ derive_probes (sess, new_mark_probe, finished_results);
#else
cerr << _("Cannot probe java method, configure --with-helper=") << endl;