< prev index next > src/hotspot/share/oops/constantPool.hpp
Print this page
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; }
constantTag tag_ref_at(int cp_cache_index, Bytecodes::Code code);
int to_cp_index(int which, Bytecodes::Code code);
- // Lookup for entries consisting of (name_index, signature_index)
+ bool is_resolved(int which, Bytecodes::Code code);
+
+ // Lookup for entries consisting of (name_index, signature_index)
u2 name_ref_index_at(int cp_index); // == low-order jshort of name_and_type_at(cp_index)
u2 signature_ref_index_at(int cp_index); // == high-order jshort of name_and_type_at(cp_index)
BasicType basic_type_for_signature_at(int cp_index) const;
#if INCLUDE_CDS
// CDS support
objArrayOop prepare_resolved_references_for_archiving() NOT_CDS_JAVA_HEAP_RETURN_(nullptr);
void add_dumped_interned_strings() NOT_CDS_JAVA_HEAP_RETURN;
- bool maybe_archive_resolved_klass_at(int cp_index);
+ bool can_archive_invokehandle(ResolvedMethodEntry* rme);
+ bool can_archive_resolved_method(ResolvedMethodEntry* method_entry);
void remove_unshareable_info();
+ void remove_unshareable_entries();
void restore_unshareable_info(TRAPS);
+ private:
+ void remove_resolved_klass_if_non_deterministic(int cp_index);
+ void remove_resolved_field_entries_if_non_deterministic();
+ void remove_resolved_method_entries_if_non_deterministic();
+ void remove_resolved_indy_entries_if_non_deterministic();
#endif
private:
enum { _no_index_sentinel = -1, _possible_index_sentinel = -2 };
public:
< prev index next >