src/share/vm/opto/library_call.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/opto/library_call.cpp

src/share/vm/opto/library_call.cpp

Print this page
rev 6132 : 8031755: Type speculation should be used to optimize explicit null checks
Summary: feed profiling data about reference nullness to type speculation.
Reviewed-by:

*** 4656,4674 **** // Do we already have or could we have type information for dest bool could_have_dest = has_dest; ciKlass* src_k = NULL; if (!has_src) { ! src_k = src_type->speculative_type(); if (src_k != NULL && src_k->is_array_klass()) { could_have_src = true; } } ciKlass* dest_k = NULL; if (!has_dest) { ! dest_k = dest_type->speculative_type(); if (dest_k != NULL && dest_k->is_array_klass()) { could_have_dest = true; } } --- 4656,4674 ---- // Do we already have or could we have type information for dest bool could_have_dest = has_dest; ciKlass* src_k = NULL; if (!has_src) { ! src_k = src_type->speculative_type_not_null(); if (src_k != NULL && src_k->is_array_klass()) { could_have_src = true; } } ciKlass* dest_k = NULL; if (!has_dest) { ! dest_k = dest_type->speculative_type_not_null(); if (dest_k != NULL && dest_k->is_array_klass()) { could_have_dest = true; } }
*** 4736,4752 **** // Do we have the exact type of dest? bool could_have_dest = dest_spec; ciKlass* src_k = top_src->klass(); ciKlass* dest_k = top_dest->klass(); if (!src_spec) { ! src_k = src_type->speculative_type(); if (src_k != NULL && src_k->is_array_klass()) { could_have_src = true; } } if (!dest_spec) { ! dest_k = dest_type->speculative_type(); if (dest_k != NULL && dest_k->is_array_klass()) { could_have_dest = true; } } if (could_have_src && could_have_dest) { --- 4736,4752 ---- // Do we have the exact type of dest? bool could_have_dest = dest_spec; ciKlass* src_k = top_src->klass(); ciKlass* dest_k = top_dest->klass(); if (!src_spec) { ! src_k = src_type->speculative_type_not_null(); if (src_k != NULL && src_k->is_array_klass()) { could_have_src = true; } } if (!dest_spec) { ! dest_k = dest_type->speculative_type_not_null(); if (dest_k != NULL && dest_k->is_array_klass()) { could_have_dest = true; } } if (could_have_src && could_have_dest) {
src/share/vm/opto/library_call.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File