Symbol* MethodFamily::generate_method_message(Symbol *klass_name, Method* method, TRAPS) const { stringStream ss; ss.print("Method "); Symbol* name = method->name(); Symbol* signature = method->signature(); ss.write((const char*)klass_name->bytes(), klass_name->utf8_length()); ss.print("."); ss.write((const char*)name->bytes(), name->utf8_length()); ss.write((const char*)signature->bytes(), signature->utf8_length()); ss.print(" is abstract"); return SymbolTable::new_symbol(ss.base(), (int)ss.size(), CHECK_NULL); }
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); }
const jbyte* raw_bytes() { return _signature->bytes() + _begin; }