equal
deleted
inserted
replaced
1425 int bss_index_in_pool = index_info->int_at(1); |
1425 int bss_index_in_pool = index_info->int_at(1); |
1426 // While we are here, take a quick look at the index info: |
1426 // While we are here, take a quick look at the index info: |
1427 if (bss_index_in_pool <= 0 || |
1427 if (bss_index_in_pool <= 0 || |
1428 bss_index_in_pool >= caller->constants()->length() || |
1428 bss_index_in_pool >= caller->constants()->length() || |
1429 index_info->int_at(0) |
1429 index_info->int_at(0) |
1430 != caller->constants()->invoke_dynamic_argument_count_at(bss_index_in_pool)) { |
1430 != caller->constants()->bootstrap_argument_count_at(bss_index_in_pool)) { |
1431 THROW_MSG(vmSymbols::java_lang_InternalError(), "bad index info (1)"); |
1431 THROW_MSG(vmSymbols::java_lang_InternalError(), "bad index info (1)"); |
1432 } |
1432 } |
1433 objArrayHandle buf(THREAD, (objArrayOop) JNIHandles::resolve(buf_jh)); |
1433 objArrayHandle buf(THREAD, (objArrayOop) JNIHandles::resolve(buf_jh)); |
1434 if (start < 0) { |
1434 if (start < 0) { |
1435 for (int pseudo_index = -4; pseudo_index < 0; pseudo_index++) { |
1435 for (int pseudo_index = -4; pseudo_index < 0; pseudo_index++) { |
1437 if (start >= end || 0 > pos || pos >= buf->length()) break; |
1437 if (start >= end || 0 > pos || pos >= buf->length()) break; |
1438 oop pseudo_arg = NULL; |
1438 oop pseudo_arg = NULL; |
1439 switch (pseudo_index) { |
1439 switch (pseudo_index) { |
1440 case -4: // bootstrap method |
1440 case -4: // bootstrap method |
1441 { |
1441 { |
1442 int bsm_index = caller->constants()->invoke_dynamic_bootstrap_method_ref_index_at(bss_index_in_pool); |
1442 int bsm_index = caller->constants()->bootstrap_method_ref_index_at(bss_index_in_pool); |
1443 pseudo_arg = caller->constants()->resolve_possibly_cached_constant_at(bsm_index, CHECK); |
1443 pseudo_arg = caller->constants()->resolve_possibly_cached_constant_at(bsm_index, CHECK); |
1444 break; |
1444 break; |
1445 } |
1445 } |
1446 case -3: // name |
1446 case -3: // name |
1447 { |
1447 { |
1462 pseudo_arg = th(); |
1462 pseudo_arg = th(); |
1463 break; |
1463 break; |
1464 } |
1464 } |
1465 case -1: // argument count |
1465 case -1: // argument count |
1466 { |
1466 { |
1467 int argc = caller->constants()->invoke_dynamic_argument_count_at(bss_index_in_pool); |
1467 int argc = caller->constants()->bootstrap_argument_count_at(bss_index_in_pool); |
1468 jvalue argc_value; argc_value.i = (jint)argc; |
1468 jvalue argc_value; argc_value.i = (jint)argc; |
1469 pseudo_arg = java_lang_boxing_object::create(T_INT, &argc_value, CHECK); |
1469 pseudo_arg = java_lang_boxing_object::create(T_INT, &argc_value, CHECK); |
1470 break; |
1470 break; |
1471 } |
1471 } |
1472 } |
1472 } |