< prev index next >
src/hotspot/share/classfile/stackMapFrame.cpp
Print this page
rev 54022 : 8220366: Optimize Symbol handling in ClassVerifier and SignatureStream
Reviewed-by: TBD
@@ -101,17 +101,20 @@
switch (ss.type()) {
case T_OBJECT:
case T_ARRAY:
{
Symbol* sig = ss.as_symbol(CHECK_(VerificationType::bogus_type()));
+ if (!sig->is_permanent()) {
// Create another symbol to save as signature stream unreferences
// this symbol.
- Symbol* sig_copy =
+ Symbol *sig_copy =
verifier()->create_temporary_symbol(sig, 0, sig->utf8_length(),
CHECK_(VerificationType::bogus_type()));
assert(sig_copy == sig, "symbols don't match");
- return VerificationType::reference_type(sig_copy);
+ sig = sig_copy;
+ }
+ return VerificationType::reference_type(sig);
}
case T_INT: return VerificationType::integer_type();
case T_BYTE: return VerificationType::byte_type();
case T_CHAR: return VerificationType::char_type();
case T_SHORT: return VerificationType::short_type();
< prev index next >