< prev index next >
src/hotspot/share/prims/methodComparator.cpp
Print this page
rev 52749 : Bootstrap method consolidation
* clean up and simplify JDK support code for BSM invocation
* simplify JVM bootstrap handshake: use BootstrapCallInfo only
* remove unused JVM paths and data fields
* move bootstrap argument processing from MethodHandleNatives to ConstantPool
* remove ConstantGroup; merge argument access into BootstrapCallInfo
* adjust BSM argument access: remove copyArguments, add argumentRef API
* add metadata-free BSM modes, including symbolic arguments from CP
*** 121,141 ****
cpci_old = _old_cp->invokedynamic_cp_cache_index(cpci_old);
cpci_new = _new_cp->invokedynamic_cp_cache_index(cpci_new);
int cpi_old = _old_cp->cache()->entry_at(cpci_old)->constant_pool_index();
int cpi_new = _new_cp->cache()->entry_at(cpci_new)->constant_pool_index();
! int bsm_old = _old_cp->invoke_dynamic_bootstrap_method_ref_index_at(cpi_old);
! int bsm_new = _new_cp->invoke_dynamic_bootstrap_method_ref_index_at(cpi_new);
if (!pool_constants_same(bsm_old, bsm_new))
return false;
! int cnt_old = _old_cp->invoke_dynamic_argument_count_at(cpi_old);
! int cnt_new = _new_cp->invoke_dynamic_argument_count_at(cpi_new);
if (cnt_old != cnt_new)
return false;
for (int arg_i = 0; arg_i < cnt_old; arg_i++) {
! int idx_old = _old_cp->invoke_dynamic_argument_index_at(cpi_old, arg_i);
! int idx_new = _new_cp->invoke_dynamic_argument_index_at(cpi_new, arg_i);
if (!pool_constants_same(idx_old, idx_new))
return false;
}
break;
}
--- 121,141 ----
cpci_old = _old_cp->invokedynamic_cp_cache_index(cpci_old);
cpci_new = _new_cp->invokedynamic_cp_cache_index(cpci_new);
int cpi_old = _old_cp->cache()->entry_at(cpci_old)->constant_pool_index();
int cpi_new = _new_cp->cache()->entry_at(cpci_new)->constant_pool_index();
! int bsm_old = _old_cp->bootstrap_method_ref_index_at(cpi_old);
! int bsm_new = _new_cp->bootstrap_method_ref_index_at(cpi_new);
if (!pool_constants_same(bsm_old, bsm_new))
return false;
! int cnt_old = _old_cp->bootstrap_argument_count_at(cpi_old);
! int cnt_new = _new_cp->bootstrap_argument_count_at(cpi_new);
if (cnt_old != cnt_new)
return false;
for (int arg_i = 0; arg_i < cnt_old; arg_i++) {
! int idx_old = _old_cp->bootstrap_argument_index_at(cpi_old, arg_i);
! int idx_new = _new_cp->bootstrap_argument_index_at(cpi_new, arg_i);
if (!pool_constants_same(idx_old, idx_new))
return false;
}
break;
}
< prev index next >