< prev index next >

src/hotspot/share/cds/finalImageRecipes.hpp

Print this page
*** 53,27 ***
    // For each klass k _all_klasses->at(i), _cp_recipes->at(i) lists all the {klass,field,method,indy}
    // cp indices that were resolved for k during the training run.
    Array<Array<int>*>* _cp_recipes;
    Array<int>* _cp_flags;
  
!   FinalImageRecipes() : _all_klasses(nullptr), _cp_recipes(nullptr), _cp_flags(nullptr) {}
  
    void* operator new(size_t size) throw();
  
    // Called when dumping preimage
    void record_all_classes();
    void record_recipes_for_constantpool();
  
    // Called when dumping final image
    void apply_recipes_impl(TRAPS);
    void load_all_classes(TRAPS);
    void apply_recipes_for_constantpool(JavaThread* current);
  
  public:
    static void serialize(SerializeClosure* soc);
  
    // Called when dumping preimage
    static void record_recipes();
  
    // Called when dumping final image
    static void apply_recipes(TRAPS);
  };
--- 53,60 ---
    // For each klass k _all_klasses->at(i), _cp_recipes->at(i) lists all the {klass,field,method,indy}
    // cp indices that were resolved for k during the training run.
    Array<Array<int>*>* _cp_recipes;
    Array<int>* _cp_flags;
  
!   // The RefectionData for  _reflect_klasses[i] should be initialized with _reflect_flags[i]
+   Array<InstanceKlass*>* _reflect_klasses;
+   Array<int>*            _reflect_flags;
+ 
+   static GrowableArray<InstanceKlass*>* _tmp_reflect_klasses;
+   static GrowableArray<int>* _tmp_reflect_flags;
+ 
+   struct TmpDynamicProxyClassInfo {
+     int _loader_type;
+     int _access_flags;
+     const char* _proxy_name;
+     GrowableArray<Klass*>* _interfaces;
+   };
+ 
+   struct DynamicProxyClassInfo {
+     int _loader_type;
+     int _access_flags;
+     const char* _proxy_name;
+     Array<Klass*>* _interfaces;
+   };
+ 
+   Array<DynamicProxyClassInfo>* _dynamic_proxy_classes;
+ 
+   static GrowableArray<TmpDynamicProxyClassInfo>* _tmp_dynamic_proxy_classes;
+ 
+   FinalImageRecipes() : _all_klasses(nullptr), _cp_recipes(nullptr), _cp_flags(nullptr),
+                         _reflect_klasses(nullptr), _reflect_flags(nullptr),
+                         _dynamic_proxy_classes(nullptr) {}
  
    void* operator new(size_t size) throw();
  
    // Called when dumping preimage
    void record_all_classes();
    void record_recipes_for_constantpool();
+   void record_recipes_for_reflection_data();
+   void record_recipes_for_dynamic_proxies();
  
    // Called when dumping final image
    void apply_recipes_impl(TRAPS);
    void load_all_classes(TRAPS);
    void apply_recipes_for_constantpool(JavaThread* current);
+   void apply_recipes_for_reflection_data(JavaThread* current);
+   void apply_recipes_for_dynamic_proxies(TRAPS);
  
  public:
    static void serialize(SerializeClosure* soc);
  
    // Called when dumping preimage
+   static void add_dynamic_proxy_class(oop loader, const char* proxy_name, objArrayOop interfaces, int access_flags);
+   static void add_reflection_data_flags(InstanceKlass* ik, TRAPS);
    static void record_recipes();
  
    // Called when dumping final image
    static void apply_recipes(TRAPS);
  };
< prev index next >