--- a/hotspot/src/share/vm/oops/method.cpp Wed Jul 05 11:03:19 2017 -0700
+++ b/hotspot/src/share/vm/oops/method.cpp Thu Jul 06 01:50:26 2017 +0200
@@ -550,6 +550,9 @@
case Bytecodes::_jsr_w:
if( bcs.dest_w() < bcs.next_bci() ) _access_flags.set_has_loops();
break;
+
+ default:
+ break;
}
}
_access_flags.set_loops_flag_init();
@@ -1390,7 +1393,10 @@
ConstMethod* newcm = newm->constMethod();
int new_const_method_size = newm->constMethod()->size();
- memcpy(newm(), m(), sizeof(Method));
+ // This works because the source and target are both Methods. Some compilers
+ // (e.g., clang) complain that the target vtable pointer will be stomped,
+ // so cast away newm()'s and m()'s Methodness.
+ memcpy((void*)newm(), (void*)m(), sizeof(Method));
// Create shallow copy of ConstMethod.
memcpy(newcm, m->constMethod(), sizeof(ConstMethod));
@@ -1513,6 +1519,8 @@
klass_id = vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_Math);
id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags);
break;
+ default:
+ break;
}
break;
@@ -1524,6 +1532,9 @@
if (is_static() != MethodHandles::is_signature_polymorphic_static(id))
id = vmIntrinsics::_none;
break;
+
+ default:
+ break;
}
if (id != vmIntrinsics::_none) {