src/hotspot/share/runtime/sharedRuntime.cpp
changeset 58722 cba8afa5cfed
parent 58545 725244418646
child 58957 00244fd3169a
equal deleted inserted replaced
58720:ae0af9fb3dbb 58722:cba8afa5cfed
  2988   int cnt = 0;
  2988   int cnt = 0;
  2989   if (has_receiver) {
  2989   if (has_receiver) {
  2990     sig_bt[cnt++] = T_OBJECT; // Receiver is argument 0; not in signature
  2990     sig_bt[cnt++] = T_OBJECT; // Receiver is argument 0; not in signature
  2991   }
  2991   }
  2992 
  2992 
  2993   while (*s != ')') {          // Find closing right paren
  2993   while (*s != JVM_SIGNATURE_ENDFUNC) { // Find closing right paren
  2994     switch (*s++) {            // Switch on signature character
  2994     switch (*s++) {                     // Switch on signature character
  2995     case 'B': sig_bt[cnt++] = T_BYTE;    break;
  2995     case JVM_SIGNATURE_BYTE:    sig_bt[cnt++] = T_BYTE;    break;
  2996     case 'C': sig_bt[cnt++] = T_CHAR;    break;
  2996     case JVM_SIGNATURE_CHAR:    sig_bt[cnt++] = T_CHAR;    break;
  2997     case 'D': sig_bt[cnt++] = T_DOUBLE;  sig_bt[cnt++] = T_VOID; break;
  2997     case JVM_SIGNATURE_DOUBLE:  sig_bt[cnt++] = T_DOUBLE;  sig_bt[cnt++] = T_VOID; break;
  2998     case 'F': sig_bt[cnt++] = T_FLOAT;   break;
  2998     case JVM_SIGNATURE_FLOAT:   sig_bt[cnt++] = T_FLOAT;   break;
  2999     case 'I': sig_bt[cnt++] = T_INT;     break;
  2999     case JVM_SIGNATURE_INT:     sig_bt[cnt++] = T_INT;     break;
  3000     case 'J': sig_bt[cnt++] = T_LONG;    sig_bt[cnt++] = T_VOID; break;
  3000     case JVM_SIGNATURE_LONG:    sig_bt[cnt++] = T_LONG;    sig_bt[cnt++] = T_VOID; break;
  3001     case 'S': sig_bt[cnt++] = T_SHORT;   break;
  3001     case JVM_SIGNATURE_SHORT:   sig_bt[cnt++] = T_SHORT;   break;
  3002     case 'Z': sig_bt[cnt++] = T_BOOLEAN; break;
  3002     case JVM_SIGNATURE_BOOLEAN: sig_bt[cnt++] = T_BOOLEAN; break;
  3003     case 'V': sig_bt[cnt++] = T_VOID;    break;
  3003     case JVM_SIGNATURE_VOID:    sig_bt[cnt++] = T_VOID;    break;
  3004     case 'L':                   // Oop
  3004     case JVM_SIGNATURE_CLASS: // Oop
  3005       while (*s++ != ';');   // Skip signature
  3005       while (*s++ != JVM_SIGNATURE_ENDCLASS);   // Skip signature
  3006       sig_bt[cnt++] = T_OBJECT;
  3006       sig_bt[cnt++] = T_OBJECT;
  3007       break;
  3007       break;
  3008     case '[': {                 // Array
  3008     case JVM_SIGNATURE_ARRAY: { // Array
  3009       do {                      // Skip optional size
  3009       do {                      // Skip optional size
  3010         while (*s >= '0' && *s <= '9') s++;
  3010         while (*s >= '0' && *s <= '9') s++;
  3011       } while (*s++ == '[');   // Nested arrays?
  3011       } while (*s++ == JVM_SIGNATURE_ARRAY);   // Nested arrays?
  3012       // Skip element type
  3012       // Skip element type
  3013       if (s[-1] == 'L')
  3013       if (s[-1] == JVM_SIGNATURE_CLASS)
  3014         while (*s++ != ';'); // Skip signature
  3014         while (*s++ != JVM_SIGNATURE_ENDCLASS); // Skip signature
  3015       sig_bt[cnt++] = T_ARRAY;
  3015       sig_bt[cnt++] = T_ARRAY;
  3016       break;
  3016       break;
  3017     }
  3017     }
  3018     default : ShouldNotReachHere();
  3018     default : ShouldNotReachHere();
  3019     }
  3019     }