< 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() ? (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() || 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); }
*** 251,260 **** --- 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
*** 1985,1994 **** --- 1986,2001 ---- 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; + } case JVM_CONSTANT_String: { idx1 = Bytes::get_Java_u2(bytes); printf("String #%03d", idx1); ent_size = 2; break;
*** 2027,2036 **** --- 2034,2047 ---- } 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); break; } case JVM_CONSTANT_StringIndex: {
*** 2198,2207 **** --- 2209,2219 ---- break; } case JVM_CONSTANT_Class: case JVM_CONSTANT_UnresolvedClass: case JVM_CONSTANT_UnresolvedClassInError: { + assert(!tag_at(idx).is_Qdescriptor_klass(), "Failed to encode QDesc"); *bytes = JVM_CONSTANT_Class; Symbol* sym = klass_name_at(idx); idx1 = tbl->symbol_to_value(sym); assert(idx1 != 0, "Have not found a hashtable entry"); Bytes::put_Java_u2((address) (bytes+1), idx1);
< prev index next >