< prev index next >

src/hotspot/share/classfile/stackMapTable.cpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 186,196 **** (!_cp->tag_at(class_index).is_klass() && !_cp->tag_at(class_index).is_unresolved_klass())) { _stream->stackmap_format_error("bad class index", THREAD); return VerificationType::bogus_type(); } ! return VerificationType::reference_type(_cp->klass_name_at(class_index)); } if (tag == ITEM_UninitializedThis) { if (flags != NULL) { *flags |= FLAG_THIS_UNINIT; } --- 186,206 ---- (!_cp->tag_at(class_index).is_klass() && !_cp->tag_at(class_index).is_unresolved_klass())) { _stream->stackmap_format_error("bad class index", THREAD); return VerificationType::bogus_type(); } ! Symbol* klass_name = _cp->klass_name_at(class_index); ! if (klass_name->is_Q_signature()) { ! Symbol* fund_name = klass_name->fundamental_name(THREAD); ! if (fund_name == NULL) { ! _stream->stackmap_format_error("TBD something bad happened", THREAD); ! return VerificationType::bogus_type(); ! } ! return VerificationType::valuetype_type(fund_name); ! } else { ! return VerificationType::reference_type(klass_name); ! } } if (tag == ITEM_UninitializedThis) { if (flags != NULL) { *flags |= FLAG_THIS_UNINIT; }
< prev index next >