diff -r 7384f6a12fc1 -r 78bbf4d43a14 src/share/vm/classfile/verifier.cpp --- a/src/share/vm/classfile/verifier.cpp Thu May 15 18:23:26 2014 -0400 +++ b/src/share/vm/classfile/verifier.cpp Thu May 22 15:52:41 2014 -0400 @@ -364,7 +364,7 @@ void ErrorContext::details(outputStream* ss, const Method* method) const { if (is_valid()) { - ss->print_cr(""); + ss->cr(); ss->print_cr("Exception Details:"); location_details(ss, method); reason_details(ss); @@ -379,7 +379,7 @@ streamIndentor si(ss); ss->indent().print_cr("Reason:"); streamIndentor si2(ss); - ss->indent().print(""); + ss->indent().print("%s", ""); switch (_fault) { case INVALID_BYTECODE: ss->print("Error exists in the bytecode"); @@ -432,7 +432,7 @@ ShouldNotReachHere(); ss->print_cr("Unknown"); } - ss->print_cr(""); + ss->cr(); } void ErrorContext::location_details(outputStream* ss, const Method* method) const { @@ -507,7 +507,7 @@ for (u2 i = 0; i < sm_table->number_of_entries(); ++i) { ss->indent(); sm_frame->print_on(ss, current_offset); - ss->print_cr(""); + ss->cr(); current_offset += sm_frame->offset_delta(); sm_frame = sm_frame->next(); } @@ -579,7 +579,8 @@ tty->print_cr("Verifying method %s", m->name_and_sig_as_C_string()); } - const char* bad_type_msg = "Bad type on operand stack in %s"; +// For clang, the only good constant format string is a literal constant format string. +#define bad_type_msg "Bad type on operand stack in %s" int32_t max_stack = m->verifier_max_stack(); int32_t max_locals = m->max_locals(); @@ -1676,6 +1677,8 @@ } } +#undef bad_type_message + char* ClassVerifier::generate_code_data(methodHandle m, u4 code_length, TRAPS) { char* code_data = NEW_RESOURCE_ARRAY(char, code_length); memset(code_data, 0, sizeof(char) * code_length); @@ -2363,11 +2366,12 @@ if (opcode == Bytecodes::_invokedynamic) { if (!EnableInvokeDynamic || _klass->major_version() < Verifier::INVOKEDYNAMIC_MAJOR_VERSION) { - class_format_error( - (!EnableInvokeDynamic ? - "invokedynamic instructions not enabled in this JVM" : - "invokedynamic instructions not supported by this class file version"), - _klass->external_name()); + if (!EnableInvokeDynamic) { + class_format_error("invokedynamic instructions not enabled in this JVM"); + } else { + class_format_error("invokedynamic instructions not supported by this class file version (%d), class %s", + _klass->major_version(), _klass->external_name()); + } return; } } else {