516 return index + 1; 517 } 518 if (invalid_name_char(c)) { 519 return -1; 520 } 521 } 522 // fall through 523 default: ; // fall through 524 } 525 return -1; 526 } 527 528 bool SignatureVerifier::invalid_name_char(char c) { 529 switch (c) { 530 case '\0': case '.': case ';': case '[': 531 return true; 532 default: 533 return false; 534 } 535 } | 516 return index + 1; 517 } 518 if (invalid_name_char(c)) { 519 return -1; 520 } 521 } 522 // fall through 523 default: ; // fall through 524 } 525 return -1; 526 } 527 528 bool SignatureVerifier::invalid_name_char(char c) { 529 switch (c) { 530 case '\0': case '.': case ';': case '[': 531 return true; 532 default: 533 return false; 534 } 535 } 536 537 int SigEntry::count_fields(const GrowableArray<SigEntry>& sig_extended) { 538 int values = 0; 539 for (int i = 0; i < sig_extended.length(); i++) { 540 if (sig_extended.at(i)._bt == T_VALUETYPE) { 541 values++; 542 } 543 } 544 return sig_extended.length() - 2 * values; 545 } 546 547 void SigEntry::fill_sig_bt(const GrowableArray<SigEntry>& sig_extended, BasicType* sig_bt_cc, int total_args_passed_cc, bool skip_vt) { 548 int j = 0; 549 for (int i = 0; i < sig_extended.length(); i++) { 550 if (!skip_vt) { 551 sig_bt_cc[j++] = sig_extended.at(i)._bt; 552 } else if (sig_extended.at(i)._bt != T_VALUETYPE && 553 (sig_extended.at(i)._bt != T_VOID || 554 sig_extended.at(i-1)._bt == T_LONG || 555 sig_extended.at(i-1)._bt == T_DOUBLE)) { 556 sig_bt_cc[j++] = sig_extended.at(i)._bt; 557 } 558 } 559 assert(j == total_args_passed_cc, "bad number of arguments"); 560 } |