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); }