8054492: Casting can result in redundant null checks in generated code

Add C2 intrinsic for Class.cast() method and force inline it too.

Reviewed-by: jrose, roland, drchase, iignatyev
This commit is contained in:
Vladimir Kozlov 2014-10-31 16:51:57 -07:00
parent daf2fd0593
commit 74def215cd
7 changed files with 451 additions and 4 deletions

View file

@ -1295,6 +1295,10 @@ void Method::init_intrinsic_id() {
vmIntrinsics::ID id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags);
if (id != vmIntrinsics::_none) {
set_intrinsic_id(id);
if (id == vmIntrinsics::_Class_cast) {
// Even if the intrinsic is rejected, we want to inline this simple method.
set_force_inline(true);
}
return;
}