src/share/vm/prims/methodComparator.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/prims/methodComparator.cpp Thu Apr 16 13:30:57 2015
--- new/src/share/vm/prims/methodComparator.cpp Thu Apr 16 13:30:57 2015
*** 135,145 ****
--- 135,145 ----
case Bytecodes::_multianewarray : // fall through
case Bytecodes::_checkcast : // fall through
case Bytecodes::_instanceof : {
u2 cpi_old = _s_old->get_index_u2();
u2 cpi_new = _s_new->get_index_u2();
! if ((_old_cp->klass_at_noresolve(cpi_old) != _new_cp->klass_at_noresolve(cpi_new)))
! if ((_old_cp->klass_at_noresolve(cpi_old)->not_equals(_new_cp->klass_at_noresolve(cpi_new))))
return false;
if (c_old == Bytecodes::_multianewarray &&
*(jbyte*)(_s_old->bcp() + 3) != *(jbyte*)(_s_new->bcp() + 3))
return false;
break;
*** 156,180 ****
--- 156,180 ----
int cpci_old = _s_old->get_index_u2_cpcache();
int cpci_new = _s_new->get_index_u2_cpcache();
// Check if the names of classes, field/method names and signatures at these indexes
// are the same. Indices which are really into constantpool cache (rather than constant
// pool itself) are accepted by the constantpool query routines below.
! if ((_old_cp->klass_ref_at_noresolve(cpci_old) != _new_cp->klass_ref_at_noresolve(cpci_new)) ||
! (_old_cp->name_ref_at(cpci_old) != _new_cp->name_ref_at(cpci_new)) ||
! (_old_cp->signature_ref_at(cpci_old) != _new_cp->signature_ref_at(cpci_new)))
! if ((_old_cp->klass_ref_at_noresolve(cpci_old)->not_equals(_new_cp->klass_ref_at_noresolve(cpci_new))) ||
! (_old_cp->name_ref_at(cpci_old)->not_equals(_new_cp->name_ref_at(cpci_new))) ||
! (_old_cp->signature_ref_at(cpci_old)->not_equals(_new_cp->signature_ref_at(cpci_new))))
return false;
break;
}
case Bytecodes::_invokedynamic: {
int cpci_old = _s_old->get_index_u4();
int cpci_new = _s_new->get_index_u4();
// Check if the names of classes, field/method names and signatures at these indexes
// are the same. Indices which are really into constantpool cache (rather than constant
// pool itself) are accepted by the constantpool query routines below.
! if ((_old_cp->name_ref_at(cpci_old) != _new_cp->name_ref_at(cpci_new)) ||
! (_old_cp->signature_ref_at(cpci_old) != _new_cp->signature_ref_at(cpci_new)))
! if ((_old_cp->name_ref_at(cpci_old)->not_equals(_new_cp->name_ref_at(cpci_new))) ||
! (_old_cp->signature_ref_at(cpci_old)->not_equals(_new_cp->signature_ref_at(cpci_new))))
return false;
// Translate object indexes to constant pool cache indexes.
cpci_old = _old_cp->invokedynamic_cp_cache_index(cpci_old);
cpci_new = _new_cp->invokedynamic_cp_cache_index(cpci_new);
*** 409,435 ****
--- 409,435 ----
return (_old_cp->is_pseudo_string_at(cpi_old) == _new_cp->is_pseudo_string_at(cpi_new));
} else if (tag_old.is_klass() || tag_old.is_unresolved_klass()) {
// tag_old should be klass - 4881222
if (! (tag_new.is_unresolved_klass() || tag_new.is_klass()))
return false;
! if (_old_cp->klass_at_noresolve(cpi_old) !=
! _new_cp->klass_at_noresolve(cpi_new))
! if (_old_cp->klass_at_noresolve(cpi_old)->not_equals(
! _new_cp->klass_at_noresolve(cpi_new)))
return false;
} else if (tag_old.is_method_type() && tag_new.is_method_type()) {
int mti_old = _old_cp->method_type_index_at(cpi_old);
int mti_new = _new_cp->method_type_index_at(cpi_new);
! if ((_old_cp->symbol_at(mti_old) != _new_cp->symbol_at(mti_new)))
! if ((_old_cp->symbol_at(mti_old)->not_equals(_new_cp->symbol_at(mti_new))))
return false;
} else if (tag_old.is_method_handle() && tag_new.is_method_handle()) {
if (_old_cp->method_handle_ref_kind_at(cpi_old) !=
_new_cp->method_handle_ref_kind_at(cpi_new))
return false;
int mhi_old = _old_cp->method_handle_index_at(cpi_old);
int mhi_new = _new_cp->method_handle_index_at(cpi_new);
! if ((_old_cp->uncached_klass_ref_at_noresolve(mhi_old) != _new_cp->uncached_klass_ref_at_noresolve(mhi_new)) ||
! (_old_cp->uncached_name_ref_at(mhi_old) != _new_cp->uncached_name_ref_at(mhi_new)) ||
! (_old_cp->uncached_signature_ref_at(mhi_old) != _new_cp->uncached_signature_ref_at(mhi_new)))
! if ((_old_cp->uncached_klass_ref_at_noresolve(mhi_old)->not_equals(_new_cp->uncached_klass_ref_at_noresolve(mhi_new))) ||
! (_old_cp->uncached_name_ref_at(mhi_old)->not_equals(_new_cp->uncached_name_ref_at(mhi_new))) ||
! (_old_cp->uncached_signature_ref_at(mhi_old)->not_equals(_new_cp->uncached_signature_ref_at(mhi_new))))
return false;
} else {
return false; // unknown tag
}
return true;
src/share/vm/prims/methodComparator.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File