Example #1
0
 virtual void print_method_on(outputStream* st) {
   int limit;
   int i;
   Method* m = method();
   Symbol* k = m->klass_name();
   // Print the class name with dots instead of slashes
   limit = k->utf8_length();
   for (i = 0 ; i < limit ; i += 1) {
     char c = (char) k->byte_at(i);
     if (c == '/') {
       c = '.';
     }
     st->print("%c", c);
   }
   if (limit > 0) {
     st->print(".");
   }
   Symbol* n = m->name();
   limit = n->utf8_length();
   for (i = 0 ; i < limit ; i += 1) {
     char c = (char) n->byte_at(i);
     st->print("%c", c);
   }
   if (Verbose || WizardMode) {
     // Disambiguate overloaded methods
     Symbol* sig = m->signature();
     sig->print_symbol_on(st);
   } else if (MethodHandles::is_signature_polymorphic(m->intrinsic_id()))
     // compare with Method::print_short_name
     MethodHandles::print_as_basic_type_signature_on(st, m->signature(), true);
 }
Symbol* MethodFamily::generate_conflicts_message(GrowableArray<Method*>* methods, TRAPS) const {
  stringStream ss;
  ss.print("Conflicting default methods:");
  for (int i = 0; i < methods->length(); ++i) {
    Method* method = methods->at(i);
    Symbol* klass = method->klass_name();
    Symbol* name = method->name();
    ss.print(" ");
    ss.write((const char*)klass->bytes(), klass->utf8_length());
    ss.print(".");
    ss.write((const char*)name->bytes(), name->utf8_length());
  }
  return SymbolTable::new_symbol(ss.base(), (int)ss.size(), CHECK_NULL);
}