< prev index next >

src/hotspot/cpu/sparc/sharedRuntime_sparc.cpp

Print this page

        

*** 1905,1936 **** for (int i = 0; i < total_in_args ; i++ ) { if (in_sig_bt[i] == T_ARRAY) { // Arrays are passed as int, elem* pair out_sig_bt[argc++] = T_INT; out_sig_bt[argc++] = T_ADDRESS; ! Symbol* atype = ss.as_symbol(); ! const char* at = atype->as_C_string(); ! if (strlen(at) == 2) { ! assert(at[0] == '[', "must be"); ! switch (at[1]) { ! case 'B': in_elem_bt[i] = T_BYTE; break; ! case 'C': in_elem_bt[i] = T_CHAR; break; ! case 'D': in_elem_bt[i] = T_DOUBLE; break; ! case 'F': in_elem_bt[i] = T_FLOAT; break; ! case 'I': in_elem_bt[i] = T_INT; break; ! case 'J': in_elem_bt[i] = T_LONG; break; ! case 'S': in_elem_bt[i] = T_SHORT; break; ! case 'Z': in_elem_bt[i] = T_BOOLEAN; break; ! default: ShouldNotReachHere(); ! } ! } } else { out_sig_bt[argc++] = in_sig_bt[i]; in_elem_bt[i] = T_VOID; } if (in_sig_bt[i] != T_VOID) { ! assert(in_sig_bt[i] == ss.type(), "must match"); ss.next(); } } } --- 1905,1925 ---- for (int i = 0; i < total_in_args ; i++ ) { if (in_sig_bt[i] == T_ARRAY) { // Arrays are passed as int, elem* pair out_sig_bt[argc++] = T_INT; out_sig_bt[argc++] = T_ADDRESS; ! ss.skip_array_prefix(1); // skip one '[' ! if (ss.is_primitive()) ! in_elem_bt[i] = ss.type(); ! // else what is in_elem_bt[i]? } else { out_sig_bt[argc++] = in_sig_bt[i]; in_elem_bt[i] = T_VOID; } if (in_sig_bt[i] != T_VOID) { ! assert(in_sig_bt[i] == ss.type() || ! in_sig_bt[i] == T_ARRAY, "must match"); ss.next(); } } }
< prev index next >