1411 |
1411 |
1412 for (int i = 0; i < total_in_args ; i++ ) { |
1412 for (int i = 0; i < total_in_args ; i++ ) { |
1413 out_sig_bt[argc++] = in_sig_bt[i]; |
1413 out_sig_bt[argc++] = in_sig_bt[i]; |
1414 } |
1414 } |
1415 } else { |
1415 } else { |
1416 Thread* THREAD = Thread::current(); |
|
1417 in_elem_bt = NEW_RESOURCE_ARRAY(BasicType, total_in_args); |
1416 in_elem_bt = NEW_RESOURCE_ARRAY(BasicType, total_in_args); |
1418 SignatureStream ss(method->signature()); |
1417 SignatureStream ss(method->signature()); |
1419 for (int i = 0; i < total_in_args ; i++ ) { |
1418 for (int i = 0; i < total_in_args ; i++ ) { |
1420 if (in_sig_bt[i] == T_ARRAY) { |
1419 if (in_sig_bt[i] == T_ARRAY) { |
1421 // Arrays are passed as int, elem* pair |
1420 // Arrays are passed as int, elem* pair |
1422 out_sig_bt[argc++] = T_INT; |
1421 out_sig_bt[argc++] = T_INT; |
1423 out_sig_bt[argc++] = T_ADDRESS; |
1422 out_sig_bt[argc++] = T_ADDRESS; |
1424 Symbol* atype = ss.as_symbol(CHECK_NULL); |
1423 Symbol* atype = ss.as_symbol(); |
1425 const char* at = atype->as_C_string(); |
1424 const char* at = atype->as_C_string(); |
1426 if (strlen(at) == 2) { |
1425 if (strlen(at) == 2) { |
1427 assert(at[0] == '[', "must be"); |
1426 assert(at[0] == '[', "must be"); |
1428 switch (at[1]) { |
1427 switch (at[1]) { |
1429 case 'B': in_elem_bt[i] = T_BYTE; break; |
1428 case 'B': in_elem_bt[i] = T_BYTE; break; |