src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp
changeset 54847 59ea39bb2809
parent 52460 f1bb77833b59
child 57710 05ff6e27de45
child 58678 9cf78a70fa4f
equal deleted inserted replaced
54846:e4049522b074 54847:59ea39bb2809
     1 /*
     1 /*
     2  * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
  1591 
  1591 
  1592     for (int i = 0; i < total_in_args ; i++ ) {
  1592     for (int i = 0; i < total_in_args ; i++ ) {
  1593       out_sig_bt[argc++] = in_sig_bt[i];
  1593       out_sig_bt[argc++] = in_sig_bt[i];
  1594     }
  1594     }
  1595   } else {
  1595   } else {
  1596     Thread* THREAD = Thread::current();
       
  1597     in_elem_bt = NEW_RESOURCE_ARRAY(BasicType, total_in_args);
  1596     in_elem_bt = NEW_RESOURCE_ARRAY(BasicType, total_in_args);
  1598     SignatureStream ss(method->signature());
  1597     SignatureStream ss(method->signature());
  1599     for (int i = 0; i < total_in_args ; i++ ) {
  1598     for (int i = 0; i < total_in_args ; i++ ) {
  1600       if (in_sig_bt[i] == T_ARRAY) {
  1599       if (in_sig_bt[i] == T_ARRAY) {
  1601         // Arrays are passed as int, elem* pair
  1600         // Arrays are passed as int, elem* pair
  1602         out_sig_bt[argc++] = T_INT;
  1601         out_sig_bt[argc++] = T_INT;
  1603         out_sig_bt[argc++] = T_ADDRESS;
  1602         out_sig_bt[argc++] = T_ADDRESS;
  1604         Symbol* atype = ss.as_symbol(CHECK_NULL);
  1603         Symbol* atype = ss.as_symbol();
  1605         const char* at = atype->as_C_string();
  1604         const char* at = atype->as_C_string();
  1606         if (strlen(at) == 2) {
  1605         if (strlen(at) == 2) {
  1607           assert(at[0] == '[', "must be");
  1606           assert(at[0] == '[', "must be");
  1608           switch (at[1]) {
  1607           switch (at[1]) {
  1609             case 'B': in_elem_bt[i]  = T_BYTE; break;
  1608             case 'B': in_elem_bt[i]  = T_BYTE; break;