< prev index next >
src/hotspot/share/oops/constantPool.cpp
Print this page
*** 233,243 ****
Klass** adr = resolved_klasses()->adr_at(resolved_klass_index);
OrderAccess::release_store(adr, k);
// The interpreter assumes when the tag is stored, the klass is resolved
// and the Klass* non-NULL, so we need hardware store ordering here.
! jbyte qdesc_bit = (name->is_Q_signature() || name->is_Q_array_signature()) ? (jbyte)JVM_CONSTANT_QDESC_BIT : 0;
if (k != NULL) {
release_tag_at_put(class_index, JVM_CONSTANT_Class | qdesc_bit);
} else {
release_tag_at_put(class_index, JVM_CONSTANT_UnresolvedClass | qdesc_bit);
}
--- 233,243 ----
Klass** adr = resolved_klasses()->adr_at(resolved_klass_index);
OrderAccess::release_store(adr, k);
// The interpreter assumes when the tag is stored, the klass is resolved
// and the Klass* non-NULL, so we need hardware store ordering here.
! jbyte qdesc_bit = (name->is_Q_signature()) ? (jbyte) JVM_CONSTANT_QDescBit : 0;
if (k != NULL) {
release_tag_at_put(class_index, JVM_CONSTANT_Class | qdesc_bit);
} else {
release_tag_at_put(class_index, JVM_CONSTANT_UnresolvedClass | qdesc_bit);
}
*** 251,261 ****
Klass** adr = resolved_klasses()->adr_at(resolved_klass_index);
OrderAccess::release_store(adr, k);
// The interpreter assumes when the tag is stored, the klass is resolved
// and the Klass* non-NULL, so we need hardware store ordering here.
! assert(!(k->name()->is_Q_signature() || k->name()->is_Q_array_signature()), "Q-type without JVM_CONSTANT_QDESC_BIT");
release_tag_at_put(class_index, JVM_CONSTANT_Class);
}
#if INCLUDE_CDS_JAVA_HEAP
// Archive the resolved references
--- 251,261 ----
Klass** adr = resolved_klasses()->adr_at(resolved_klass_index);
OrderAccess::release_store(adr, k);
// The interpreter assumes when the tag is stored, the klass is resolved
// and the Klass* non-NULL, so we need hardware store ordering here.
! assert(!k->name()->is_Q_signature(), "Q-type without JVM_CONSTANT_QDescBit");
release_tag_at_put(class_index, JVM_CONSTANT_Class);
}
#if INCLUDE_CDS_JAVA_HEAP
// Archive the resolved references
*** 549,559 ****
// The interpreter assumes when the tag is stored, the klass is resolved
// and the Klass* stored in _resolved_klasses is non-NULL, so we need
// hardware store ordering here.
jbyte tag = JVM_CONSTANT_Class;
if (this_cp->tag_at(which).is_Qdescriptor_klass()) {
! tag |= JVM_CONSTANT_QDESC_BIT;
}
this_cp->release_tag_at_put(which, tag);
return k;
}
--- 549,559 ----
// The interpreter assumes when the tag is stored, the klass is resolved
// and the Klass* stored in _resolved_klasses is non-NULL, so we need
// hardware store ordering here.
jbyte tag = JVM_CONSTANT_Class;
if (this_cp->tag_at(which).is_Qdescriptor_klass()) {
! tag |= JVM_CONSTANT_QDescBit;
}
this_cp->release_tag_at_put(which, tag);
return k;
}
*** 1987,1997 ****
idx1 = Bytes::get_Java_u2(bytes);
printf("class #%03d", idx1);
ent_size = 2;
break;
}
! case (JVM_CONSTANT_Class | JVM_CONSTANT_QDESC_BIT): {
idx1 = Bytes::get_Java_u2(bytes);
printf("qclass #%03d", idx1);
ent_size = 2;
break;
}
--- 1987,1997 ----
idx1 = Bytes::get_Java_u2(bytes);
printf("class #%03d", idx1);
ent_size = 2;
break;
}
! case (JVM_CONSTANT_Class | JVM_CONSTANT_QDescBit): {
idx1 = Bytes::get_Java_u2(bytes);
printf("qclass #%03d", idx1);
ent_size = 2;
break;
}
*** 2035,2045 ****
}
case JVM_CONSTANT_UnresolvedClass: {
printf("UnresolvedClass: %s", WARN_MSG);
break;
}
! case (JVM_CONSTANT_UnresolvedClass | JVM_CONSTANT_QDESC_BIT): {
printf("UnresolvedQClass: %s", WARN_MSG);
break;
}
case JVM_CONSTANT_UnresolvedClassInError: {
printf("UnresolvedClassInErr: %s", WARN_MSG);
--- 2035,2045 ----
}
case JVM_CONSTANT_UnresolvedClass: {
printf("UnresolvedClass: %s", WARN_MSG);
break;
}
! case (JVM_CONSTANT_UnresolvedClass | JVM_CONSTANT_QDescBit): {
printf("UnresolvedQClass: %s", WARN_MSG);
break;
}
case JVM_CONSTANT_UnresolvedClassInError: {
printf("UnresolvedClassInErr: %s", WARN_MSG);
< prev index next >