< prev index next > src/hotspot/share/oops/constantPool.hpp
Print this page
class ConstantPool : public Metadata {
friend class VMStructs;
friend class JVMCIVMStructs;
friend class BytecodeInterpreter; // Directly extracts a klass in the pool for fast instanceof/checkcast
friend class Universe; // For null constructor
- friend class ClassPrelinker; // CDS
+ friend class AOTConstantPoolResolver;
private:
// If you add a new field that points to any metaspace object, you
// must add this field to ConstantPool::metaspace_pointers_do().
Array<u1>* _tags; // the tag array describing the constant pool's contents
ConstantPoolCache* _cache; // the cache holding interpreter runtime information
enum {
_has_preresolution = 1, // Flags
_on_stack = 2,
_is_shared = 4,
- _has_dynamic_constant = 8
+ _has_dynamic_constant = 8,
+ _is_for_method_handle_intrinsic = 16
};
u2 _flags; // old fashioned bit twiddling
int _length; // number of elements in the array
bool is_shared() const { return (_flags & _is_shared) != 0; }
bool has_dynamic_constant() const { return (_flags & _has_dynamic_constant) != 0; }
void set_has_dynamic_constant() { _flags |= _has_dynamic_constant; }
+ bool is_for_method_handle_intrinsic() const { return (_flags & _is_for_method_handle_intrinsic) != 0; }
+ void set_is_for_method_handle_intrinsic() { _flags |= _is_for_method_handle_intrinsic; }
+
// Klass holding pool
InstanceKlass* pool_holder() const { return _pool_holder; }
void set_pool_holder(InstanceKlass* k) { _pool_holder = k; }
InstanceKlass** pool_holder_addr() { return &_pool_holder; }
}
#if INCLUDE_CDS
// CDS support
objArrayOop prepare_resolved_references_for_archiving() NOT_CDS_JAVA_HEAP_RETURN_(nullptr);
+ void find_archivable_hidden_classes() NOT_CDS_JAVA_HEAP_RETURN;
void add_dumped_interned_strings() NOT_CDS_JAVA_HEAP_RETURN;
void remove_unshareable_info();
void restore_unshareable_info(TRAPS);
private:
void remove_unshareable_entries();
void remove_resolved_klass_if_non_deterministic(int cp_index);
+ template <typename Function> void iterate_archivable_resolved_references(Function function);
#endif
private:
enum { _no_index_sentinel = -1, _possible_index_sentinel = -2 };
public:
< prev index next >