]> sourceware.org Git - systemtap.git/commitdiff
Optimize the specific mark("X") probe actually specified
authorLukas Berk <lberk@redhat.com>
Fri, 5 Apr 2013 15:50:46 +0000 (11:50 -0400)
committerLukas Berk <lberk@redhat.com>
Wed, 1 May 2013 15:11:27 +0000 (11:11 -0400)
*java/HelperSDT.c: alter mark names to be more simple/predictable
*tapset-method.cxx: add function call to determine which mark name
    to return

java/HelperSDT.c
tapset-method.cxx

index 7e064250958470a5596b4a7f04d100f1912df322..fb25b3977442e3e177949f8219ebd672d4d02ad7 100644 (file)
@@ -150,7 +150,7 @@ JNIEXPORT void JNICALL Java_HelperSDT_METHOD_1STAP_1PROBE0
 {
   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);
 
 }
 
@@ -168,7 +168,7 @@ JNIEXPORT void JNICALL Java_HelperSDT_METHOD_1STAP_1PROBE1
   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);
 }
 
 /*
@@ -189,7 +189,7 @@ JNIEXPORT void JNICALL Java_HelperSDT_METHOD_1STAP_1PROBE2
     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);
 
 }
 
@@ -215,7 +215,7 @@ JNIEXPORT void JNICALL Java_HelperSDT_METHOD_1STAP_1PROBE3
     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);
 }
 
 /*
@@ -244,7 +244,7 @@ JNIEXPORT void JNICALL Java_HelperSDT_METHOD_1STAP_1PROBE4
     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);
 
 }
 
@@ -278,7 +278,7 @@ JNIEXPORT void JNICALL Java_HelperSDT_METHOD_1STAP_1PROBE5
     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);
 
 }
 /*
@@ -315,7 +315,7 @@ JNIEXPORT void JNICALL Java_HelperSDT_METHOD_1STAP_1PROBE6
     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);
 }
 
 /*
@@ -356,7 +356,7 @@ JNIEXPORT void JNICALL Java_HelperSDT_METHOD_1STAP_1PROBE7
     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);
 }
 
 /*
@@ -401,7 +401,7 @@ JNIEXPORT void JNICALL Java_HelperSDT_METHOD_1STAP_1PROBE8
     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);
 
 }
 /*
@@ -450,7 +450,7 @@ JNIEXPORT void JNICALL Java_HelperSDT_METHOD_1STAP_1PROBE9
     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);
 
 }
 
@@ -504,5 +504,5 @@ JNIEXPORT void JNICALL Java_HelperSDT_METHOD_1STAP_1PROBE10
     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);
 }
index 6c7c52a7f8ab5305c164e877f4748c398d827442..2d333282c6ad80e9c6e47ec2dcc5ffc057ecdda3 100644 (file)
@@ -61,6 +61,7 @@ public:
                  std::string& value);
   void bminstall (systemtap_session & sess,
                 std::string java_proc);
+  std::string mark_param(int i);
 
 };
 
@@ -105,6 +106,38 @@ java_builder::bminstall (systemtap_session & sess, std::string java_proc)
     }
 }
 
+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,
@@ -311,78 +344,80 @@ java_builder::build (systemtap_session & sess,
    * 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;
This page took 0.039996 seconds and 5 git commands to generate.