aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/utilities
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/vm/utilities')
-rw-r--r--src/share/vm/utilities/constantTag.cpp15
-rw-r--r--src/share/vm/utilities/constantTag.hpp3
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?