diff options
Diffstat (limited to 'src/share/vm/utilities')
-rw-r--r-- | src/share/vm/utilities/constantTag.cpp | 15 | ||||
-rw-r--r-- | src/share/vm/utilities/constantTag.hpp | 3 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/share/vm/utilities/constantTag.cpp b/src/share/vm/utilities/constantTag.cpp index 25bff0fed..7bc55690a 100644 --- a/src/share/vm/utilities/constantTag.cpp +++ b/src/share/vm/utilities/constantTag.cpp @@ -51,7 +51,9 @@ BasicType constantTag::basic_type() const { case JVM_CONSTANT_ClassIndex : case JVM_CONSTANT_StringIndex : case JVM_CONSTANT_MethodHandle : + case JVM_CONSTANT_MethodHandleInError : case JVM_CONSTANT_MethodType : + case JVM_CONSTANT_MethodTypeInError : return T_OBJECT; default: ShouldNotReachHere(); @@ -60,6 +62,19 @@ BasicType constantTag::basic_type() const { } +jbyte constantTag::non_error_value() const { + switch (_tag) { + case JVM_CONSTANT_UnresolvedClassInError: + return JVM_CONSTANT_UnresolvedClass; + case JVM_CONSTANT_MethodHandleInError: + return JVM_CONSTANT_MethodHandle; + case JVM_CONSTANT_MethodTypeInError: + return JVM_CONSTANT_MethodType; + default: + return _tag; + } +} + const char* constantTag::internal_name() const { switch (_tag) { diff --git a/src/share/vm/utilities/constantTag.hpp b/src/share/vm/utilities/constantTag.hpp index 4865ce21f..cedddf6a4 100644 --- a/src/share/vm/utilities/constantTag.hpp +++ b/src/share/vm/utilities/constantTag.hpp @@ -108,7 +108,8 @@ class constantTag VALUE_OBJ_CLASS_SPEC { _tag = tag; } - jbyte value() { return _tag; } + jbyte value() const { return _tag; } + jbyte non_error_value() const; BasicType basic_type() const; // if used with ldc, what kind of value gets pushed? |