diff -r ae0af9fb3dbb -r cba8afa5cfed src/hotspot/share/runtime/sharedRuntime.cpp --- a/src/hotspot/share/runtime/sharedRuntime.cpp Mon Oct 21 09:26:14 2019 -0700 +++ b/src/hotspot/share/runtime/sharedRuntime.cpp Mon Oct 21 13:13:16 2019 -0400 @@ -2990,28 +2990,28 @@ sig_bt[cnt++] = T_OBJECT; // Receiver is argument 0; not in signature } - while (*s != ')') { // Find closing right paren - switch (*s++) { // Switch on signature character - case 'B': sig_bt[cnt++] = T_BYTE; break; - case 'C': sig_bt[cnt++] = T_CHAR; break; - case 'D': sig_bt[cnt++] = T_DOUBLE; sig_bt[cnt++] = T_VOID; break; - case 'F': sig_bt[cnt++] = T_FLOAT; break; - case 'I': sig_bt[cnt++] = T_INT; break; - case 'J': sig_bt[cnt++] = T_LONG; sig_bt[cnt++] = T_VOID; break; - case 'S': sig_bt[cnt++] = T_SHORT; break; - case 'Z': sig_bt[cnt++] = T_BOOLEAN; break; - case 'V': sig_bt[cnt++] = T_VOID; break; - case 'L': // Oop - while (*s++ != ';'); // Skip signature + while (*s != JVM_SIGNATURE_ENDFUNC) { // Find closing right paren + switch (*s++) { // Switch on signature character + case JVM_SIGNATURE_BYTE: sig_bt[cnt++] = T_BYTE; break; + case JVM_SIGNATURE_CHAR: sig_bt[cnt++] = T_CHAR; break; + case JVM_SIGNATURE_DOUBLE: sig_bt[cnt++] = T_DOUBLE; sig_bt[cnt++] = T_VOID; break; + case JVM_SIGNATURE_FLOAT: sig_bt[cnt++] = T_FLOAT; break; + case JVM_SIGNATURE_INT: sig_bt[cnt++] = T_INT; break; + case JVM_SIGNATURE_LONG: sig_bt[cnt++] = T_LONG; sig_bt[cnt++] = T_VOID; break; + case JVM_SIGNATURE_SHORT: sig_bt[cnt++] = T_SHORT; break; + case JVM_SIGNATURE_BOOLEAN: sig_bt[cnt++] = T_BOOLEAN; break; + case JVM_SIGNATURE_VOID: sig_bt[cnt++] = T_VOID; break; + case JVM_SIGNATURE_CLASS: // Oop + while (*s++ != JVM_SIGNATURE_ENDCLASS); // Skip signature sig_bt[cnt++] = T_OBJECT; break; - case '[': { // Array + case JVM_SIGNATURE_ARRAY: { // Array do { // Skip optional size while (*s >= '0' && *s <= '9') s++; - } while (*s++ == '['); // Nested arrays? + } while (*s++ == JVM_SIGNATURE_ARRAY); // Nested arrays? // Skip element type - if (s[-1] == 'L') - while (*s++ != ';'); // Skip signature + if (s[-1] == JVM_SIGNATURE_CLASS) + while (*s++ != JVM_SIGNATURE_ENDCLASS); // Skip signature sig_bt[cnt++] = T_ARRAY; break; }