< prev index next >
src/share/vm/classfile/classFileParser.hpp
Print this page
*** 1,7 ****
/*
! * Copyright (c) 1997, 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) 1997, 2017, 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.
*** 120,129 ****
--- 120,138 ----
AccessFlags _access_flags;
// for tracing and notifications
Publicity _pub_level;
+ // Used to keep track of whether a constant pool item 19 or 20 is found. These
+ // correspond to CONSTANT_Module and CONSTANT_Package tags and are not allowed
+ // in regular class files. For class file version >= 53, a CFE cannot be thrown
+ // immediately when these are seen because a NCDFE must be thrown if the class's
+ // access_flags have ACC_MODULE set. But, the access_flags haven't been looked
+ // at yet. So, the bad constant pool item is cached here. A value of zero
+ // means that no constant pool item 19 or 20 was found.
+ short _bad_constant_seen;
+
// class attributes parsed before the instance klass is created:
bool _synthetic_flag;
int _sde_length;
const char* _sde_buffer;
u2 _sourcefile_index;
*** 159,168 ****
--- 168,179 ----
void fix_anonymous_class_name(TRAPS);
void fill_instance_klass(InstanceKlass* ik, bool cf_changed_in_CFLH, TRAPS);
void set_klass(InstanceKlass* instance);
+ void set_class_bad_constant_seen(short bad_constant);
+ short class_bad_constant_seen() { return _bad_constant_seen; }
void set_class_synthetic_flag(bool x) { _synthetic_flag = x; }
void set_class_sourcefile_index(u2 x) { _sourcefile_index = x; }
void set_class_generic_signature_index(u2 x) { _generic_signature_index = x; }
void set_class_sde_buffer(const char* x, int len) { _sde_buffer = x; _sde_length = len; }
< prev index next >