src/share/vm/classfile/verifier.cpp
Print this page
rev 3 : [mq]: anonk.patch
*** 1598,1610 ****
} else {
assert(opcode == Bytecodes::_ldc2_w, "must be ldc2_w");
types = (1 << JVM_CONSTANT_Double) | (1 << JVM_CONSTANT_Long);
verify_cp_type(index, cp, types, CHECK_VERIFY(this));
}
! if (tag.is_string() || tag.is_unresolved_string()) {
current_frame->push_stack(
VerificationType::reference_type(
vmSymbols::java_lang_String()), CHECK_VERIFY(this));
} else if (tag.is_klass() || tag.is_unresolved_klass()) {
current_frame->push_stack(
VerificationType::reference_type(
vmSymbols::java_lang_Class()), CHECK_VERIFY(this));
--- 1598,1614 ----
} else {
assert(opcode == Bytecodes::_ldc2_w, "must be ldc2_w");
types = (1 << JVM_CONSTANT_Double) | (1 << JVM_CONSTANT_Long);
verify_cp_type(index, cp, types, CHECK_VERIFY(this));
}
! if (tag.is_string() && cp->is_pseudo_string_at(index)) {
current_frame->push_stack(
VerificationType::reference_type(
+ vmSymbols::java_lang_Object()), CHECK_VERIFY(this));
+ } else if (tag.is_string() || tag.is_unresolved_string()) {
+ current_frame->push_stack(
+ VerificationType::reference_type(
vmSymbols::java_lang_String()), CHECK_VERIFY(this));
} else if (tag.is_klass() || tag.is_unresolved_klass()) {
current_frame->push_stack(
VerificationType::reference_type(
vmSymbols::java_lang_Class()), CHECK_VERIFY(this));