< prev index next >

src/share/vm/runtime/signature.cpp

Print this page

        

*** 531,535 **** --- 531,560 ---- return true; default: return false; } } + + int SigEntry::count_fields(const GrowableArray<SigEntry>& sig_extended) { + int values = 0; + for (int i = 0; i < sig_extended.length(); i++) { + if (sig_extended.at(i)._bt == T_VALUETYPE) { + values++; + } + } + return sig_extended.length() - 2 * values; + } + + void SigEntry::fill_sig_bt(const GrowableArray<SigEntry>& sig_extended, BasicType* sig_bt_cc, int total_args_passed_cc, bool skip_vt) { + int j = 0; + for (int i = 0; i < sig_extended.length(); i++) { + if (!skip_vt) { + sig_bt_cc[j++] = sig_extended.at(i)._bt; + } else if (sig_extended.at(i)._bt != T_VALUETYPE && + (sig_extended.at(i)._bt != T_VOID || + sig_extended.at(i-1)._bt == T_LONG || + sig_extended.at(i-1)._bt == T_DOUBLE)) { + sig_bt_cc[j++] = sig_extended.at(i)._bt; + } + } + assert(j == total_args_passed_cc, "bad number of arguments"); + }
< prev index next >