diff -r ae0af9fb3dbb -r cba8afa5cfed src/hotspot/share/utilities/globalDefinitions.hpp --- a/src/hotspot/share/utilities/globalDefinitions.hpp Mon Oct 21 09:26:14 2019 -0700 +++ b/src/hotspot/share/utilities/globalDefinitions.hpp Mon Oct 21 13:13:16 2019 -0400 @@ -29,6 +29,9 @@ #include "utilities/debug.hpp" #include "utilities/macros.hpp" +// Get constants like JVM_T_CHAR and JVM_SIGNATURE_INT, before pulling in . +#include "classfile_constants.h" + #include COMPILER_HEADER(utilities/globalDefinitions) // Defaults for macros that might be defined per compiler. @@ -570,14 +573,22 @@ // NOTE: replicated in SA in vm/agent/sun/jvm/hotspot/runtime/BasicType.java enum BasicType { - T_BOOLEAN = 4, - T_CHAR = 5, - T_FLOAT = 6, - T_DOUBLE = 7, - T_BYTE = 8, - T_SHORT = 9, - T_INT = 10, - T_LONG = 11, +// The values T_BOOLEAN..T_LONG (4..11) are derived from the JVMS. + T_BOOLEAN = JVM_T_BOOLEAN, + T_CHAR = JVM_T_CHAR, + T_FLOAT = JVM_T_FLOAT, + T_DOUBLE = JVM_T_DOUBLE, + T_BYTE = JVM_T_BYTE, + T_SHORT = JVM_T_SHORT, + T_INT = JVM_T_INT, + T_LONG = JVM_T_LONG, + // The remaining values are not part of any standard. + // T_OBJECT and T_VOID denote two more semantic choices + // for method return values. + // T_OBJECT and T_ARRAY describe signature syntax. + // T_ADDRESS, T_METADATA, T_NARROWOOP, T_NARROWKLASS describe + // internal references within the JVM as if they were Java + // types in their own right. T_OBJECT = 12, T_ARRAY = 13, T_VOID = 14, @@ -602,6 +613,10 @@ return (t == T_BYTE || t == T_SHORT); } +inline bool is_double_word_type(BasicType t) { + return (t == T_DOUBLE || t == T_LONG); +} + inline bool is_reference_type(BasicType t) { return (t == T_OBJECT || t == T_ARRAY); } @@ -609,17 +624,17 @@ // Convert a char from a classfile signature to a BasicType inline BasicType char2type(char c) { switch( c ) { - case 'B': return T_BYTE; - case 'C': return T_CHAR; - case 'D': return T_DOUBLE; - case 'F': return T_FLOAT; - case 'I': return T_INT; - case 'J': return T_LONG; - case 'S': return T_SHORT; - case 'Z': return T_BOOLEAN; - case 'V': return T_VOID; - case 'L': return T_OBJECT; - case '[': return T_ARRAY; + case JVM_SIGNATURE_BYTE: return T_BYTE; + case JVM_SIGNATURE_CHAR: return T_CHAR; + case JVM_SIGNATURE_DOUBLE: return T_DOUBLE; + case JVM_SIGNATURE_FLOAT: return T_FLOAT; + case JVM_SIGNATURE_INT: return T_INT; + case JVM_SIGNATURE_LONG: return T_LONG; + case JVM_SIGNATURE_SHORT: return T_SHORT; + case JVM_SIGNATURE_BOOLEAN: return T_BOOLEAN; + case JVM_SIGNATURE_VOID: return T_VOID; + case JVM_SIGNATURE_CLASS: return T_OBJECT; + case JVM_SIGNATURE_ARRAY: return T_ARRAY; } return T_ILLEGAL; }