1 /* |
1 /* |
2 * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. |
3 * Copyright (c) 2016, 2018 SAP SE. All rights reserved. |
3 * Copyright (c) 2016, 2018 SAP SE. All rights reserved. |
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
5 * |
5 * |
6 * This code is free software; you can redistribute it and/or modify it |
6 * This code is free software; you can redistribute it and/or modify it |
7 * under the terms of the GNU General Public License version 2 only, as |
7 * under the terms of the GNU General Public License version 2 only, as |
1616 |
1616 |
1617 for (int i = 0; i < total_in_args; i++) { |
1617 for (int i = 0; i < total_in_args; i++) { |
1618 out_sig_bt[argc++] = in_sig_bt[i]; |
1618 out_sig_bt[argc++] = in_sig_bt[i]; |
1619 } |
1619 } |
1620 } else { |
1620 } else { |
1621 Thread* THREAD = Thread::current(); |
|
1622 in_elem_bt = NEW_RESOURCE_ARRAY(BasicType, total_in_args); |
1621 in_elem_bt = NEW_RESOURCE_ARRAY(BasicType, total_in_args); |
1623 SignatureStream ss(method->signature()); |
1622 SignatureStream ss(method->signature()); |
1624 int o = 0; |
1623 int o = 0; |
1625 for (int i = 0; i < total_in_args; i++, o++) { |
1624 for (int i = 0; i < total_in_args; i++, o++) { |
1626 if (in_sig_bt[i] == T_ARRAY) { |
1625 if (in_sig_bt[i] == T_ARRAY) { |
1627 // Arrays are passed as tuples (int, elem*). |
1626 // Arrays are passed as tuples (int, elem*). |
1628 Symbol* atype = ss.as_symbol(CHECK_NULL); |
1627 Symbol* atype = ss.as_symbol(); |
1629 const char* at = atype->as_C_string(); |
1628 const char* at = atype->as_C_string(); |
1630 if (strlen(at) == 2) { |
1629 if (strlen(at) == 2) { |
1631 assert(at[0] == '[', "must be"); |
1630 assert(at[0] == '[', "must be"); |
1632 switch (at[1]) { |
1631 switch (at[1]) { |
1633 case 'B': in_elem_bt[o] = T_BYTE; break; |
1632 case 'B': in_elem_bt[o] = T_BYTE; break; |