< prev index next >

src/hotspot/share/compiler/methodMatcher.cpp

Print this page

287     // it doesn't show up again.
288     if ((OptionType::Unknown != CompilerOracle::parse_option_type(method_name) ||
289         CompileCommand::Unknown != CompilerOracle::parse_option_name(method_name)) &&
290         *(line + bytes_read) != '\0' &&
291         strstr(line + bytes_read, method_name) == nullptr) {
292       error_msg = "Did not specify any method name";
293       method_name[0] = '\0';
294       return;
295     }
296 
297     if ((strchr(class_name, JVM_SIGNATURE_SPECIAL) != nullptr) ||
298         (strchr(class_name, JVM_SIGNATURE_ENDSPECIAL) != nullptr)) {
299       error_msg = "Chars '<' and '>' not allowed in class name";
300       return;
301     }
302 
303     if ((strchr(method_name, JVM_SIGNATURE_SPECIAL) != nullptr) ||
304         (strchr(method_name, JVM_SIGNATURE_ENDSPECIAL) != nullptr)) {
305       if (!vmSymbols::object_initializer_name()->equals(method_name) &&
306           !vmSymbols::class_initializer_name()->equals(method_name)) {
307         error_msg = "Chars '<' and '>' only allowed in <init> and <clinit>";
308         return;
309       }
310     }
311 
312     if (c_match == MethodMatcher::Unknown || m_match == MethodMatcher::Unknown) {
313       assert(error_msg != nullptr, "Must have been set by check_mode()");
314       return;
315     }
316 
317     EXCEPTION_MARK;
318     Symbol* signature = nullptr;
319     line += bytes_read;
320     bytes_read = 0;
321 
322     skip_leading_spaces(line, &total_bytes_read);
323 
324     // there might be a signature following the method.
325     // signatures always begin with ( so match that by hand
326     if (line[0] == '(') {
327       line++;

287     // it doesn't show up again.
288     if ((OptionType::Unknown != CompilerOracle::parse_option_type(method_name) ||
289         CompileCommand::Unknown != CompilerOracle::parse_option_name(method_name)) &&
290         *(line + bytes_read) != '\0' &&
291         strstr(line + bytes_read, method_name) == nullptr) {
292       error_msg = "Did not specify any method name";
293       method_name[0] = '\0';
294       return;
295     }
296 
297     if ((strchr(class_name, JVM_SIGNATURE_SPECIAL) != nullptr) ||
298         (strchr(class_name, JVM_SIGNATURE_ENDSPECIAL) != nullptr)) {
299       error_msg = "Chars '<' and '>' not allowed in class name";
300       return;
301     }
302 
303     if ((strchr(method_name, JVM_SIGNATURE_SPECIAL) != nullptr) ||
304         (strchr(method_name, JVM_SIGNATURE_ENDSPECIAL) != nullptr)) {
305       if (!vmSymbols::object_initializer_name()->equals(method_name) &&
306           !vmSymbols::class_initializer_name()->equals(method_name)) {
307         error_msg = "Chars '<' and '>' only allowed in <init>, <clinit>";
308         return;
309       }
310     }
311 
312     if (c_match == MethodMatcher::Unknown || m_match == MethodMatcher::Unknown) {
313       assert(error_msg != nullptr, "Must have been set by check_mode()");
314       return;
315     }
316 
317     EXCEPTION_MARK;
318     Symbol* signature = nullptr;
319     line += bytes_read;
320     bytes_read = 0;
321 
322     skip_leading_spaces(line, &total_bytes_read);
323 
324     // there might be a signature following the method.
325     // signatures always begin with ( so match that by hand
326     if (line[0] == '(') {
327       line++;
< prev index next >