< prev index next >

src/hotspot/share/oops/constantPool.hpp

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

@@ -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; }
  

@@ -676,16 +680,18 @@
    }
  
  #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 >