< 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 >