< prev index next >

src/hotspot/share/classfile/stackMapFrame.cpp

Print this page

        

*** 78,88 **** SignatureStream ss(m->signature()); int init_local_num = 0; if (!m->is_static()) { init_local_num++; // add one extra argument for instance method ! if (m->name() == vmSymbols::object_initializer_name() && thisKlass.name() != vmSymbols::java_lang_Object()) { _locals[0] = VerificationType::uninitialized_this_type(); _flags |= FLAG_THIS_UNINIT; } else { _locals[0] = thisKlass; --- 78,88 ---- SignatureStream ss(m->signature()); int init_local_num = 0; if (!m->is_static()) { init_local_num++; // add one extra argument for instance method ! if (m->is_object_constructor() && thisKlass.name() != vmSymbols::java_lang_Object()) { _locals[0] = VerificationType::uninitialized_this_type(); _flags |= FLAG_THIS_UNINIT; } else { _locals[0] = thisKlass;
*** 98,117 **** --- 98,121 ---- _locals_size = init_local_num; switch (ss.type()) { case T_OBJECT: case T_ARRAY: + case T_VALUETYPE: { Symbol* sig = ss.as_symbol(); if (!sig->is_permanent()) { // Create another symbol to save as signature stream unreferences // this symbol. Symbol *sig_copy = verifier()->create_temporary_symbol(sig, 0, sig->utf8_length()); assert(sig_copy == sig, "symbols don't match"); sig = sig_copy; } + if (ss.type() == T_VALUETYPE) { + return VerificationType::valuetype_type(sig); + } 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();
< prev index next >