< prev index next >

src/hotspot/share/oops/constantPool.hpp

Print this page
@@ -106,11 +106,12 @@
  
    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

@@ -213,10 +214,13 @@
    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; }
  

@@ -659,11 +663,13 @@
  
    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;
  

@@ -675,13 +681,20 @@
  
  #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 >