提交 fd449da1 编写于 作者: C coleenp

8022592: assert at constantTag.cpp:57: ShouldNotReachHere()

Summary: more missing cases for JVM_CONSTANT_Method{Handle,Type}InError
Reviewed-by: hseigel, dcubed
上级 1f698622
......@@ -864,32 +864,14 @@ void ConstantPool::unreference_symbols() {
}
jbyte normalize_error_tag(jbyte tag) {
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;
}
}
// Compare this constant pool's entry at index1 to the constant pool
// cp2's entry at index2.
bool ConstantPool::compare_entry_to(int index1, constantPoolHandle cp2,
int index2, TRAPS) {
jbyte t1 = tag_at(index1).value();
jbyte t2 = cp2->tag_at(index2).value();
// JVM_CONSTANT_UnresolvedClassInError tag is equal to JVM_CONSTANT_UnresolvedClass
// when comparing (and the other error tags)
t1 = normalize_error_tag(t1);
t2 = normalize_error_tag(t2);
// The error tags are equivalent to non-error tags when comparing
jbyte t1 = tag_at(index1).non_error_value();
jbyte t2 = cp2->tag_at(index2).non_error_value();
if (t1 != t2) {
// Not the same entry type so there is nothing else to check. Note
......
......@@ -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) {
......
......@@ -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?
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册