< prev index next >

src/hotspot/share/runtime/signature.cpp

Print this page




 536     default:
 537       return false;
 538   }
 539 }
 540 
 541 int SigEntry::count_fields(const GrowableArray<SigEntry>& sig_extended) {
 542   int values = 0;
 543   for (int i = 0; i < sig_extended.length(); i++) {
 544     if (sig_extended.at(i)._bt == T_VALUETYPE) {
 545       values++;
 546     }
 547   }
 548   return sig_extended.length() - 2 * values;
 549 }
 550 
 551 void SigEntry::fill_sig_bt(const GrowableArray<SigEntry>& sig_extended, BasicType* sig_bt_cc, int total_args_passed_cc, bool skip_vt) {
 552   int j = 0;
 553   for (int i = 0; i < sig_extended.length(); i++) {
 554     if (!skip_vt) {
 555       BasicType bt = sig_extended.at(i)._bt;
 556       if (bt == T_VALUETYPE) {
 557         bt = T_VALUETYPEPTR;
 558       }
 559       sig_bt_cc[j++] = bt;
 560     } else if (sig_extended.at(i)._bt != T_VALUETYPE &&
 561                (sig_extended.at(i)._bt != T_VOID ||
 562                 sig_extended.at(i-1)._bt == T_LONG ||
 563                 sig_extended.at(i-1)._bt == T_DOUBLE)) {
 564       sig_bt_cc[j++] = sig_extended.at(i)._bt;
 565     }
 566   }
 567   assert(j == total_args_passed_cc, "bad number of arguments");
 568 }


 536     default:
 537       return false;
 538   }
 539 }
 540 
 541 int SigEntry::count_fields(const GrowableArray<SigEntry>& sig_extended) {
 542   int values = 0;
 543   for (int i = 0; i < sig_extended.length(); i++) {
 544     if (sig_extended.at(i)._bt == T_VALUETYPE) {
 545       values++;
 546     }
 547   }
 548   return sig_extended.length() - 2 * values;
 549 }
 550 
 551 void SigEntry::fill_sig_bt(const GrowableArray<SigEntry>& sig_extended, BasicType* sig_bt_cc, int total_args_passed_cc, bool skip_vt) {
 552   int j = 0;
 553   for (int i = 0; i < sig_extended.length(); i++) {
 554     if (!skip_vt) {
 555       BasicType bt = sig_extended.at(i)._bt;
 556       assert(bt != T_VALUETYPE, "value types should be passed as fields or reference");


 557       sig_bt_cc[j++] = bt;
 558     } else if (sig_extended.at(i)._bt != T_VALUETYPE &&
 559                (sig_extended.at(i)._bt != T_VOID ||
 560                 sig_extended.at(i-1)._bt == T_LONG ||
 561                 sig_extended.at(i-1)._bt == T_DOUBLE)) {
 562       sig_bt_cc[j++] = sig_extended.at(i)._bt;
 563     }
 564   }
 565   assert(j == total_args_passed_cc, "bad number of arguments");
 566 }
< prev index next >