< prev index next >

src/hotspot/share/cds/classListParser.hpp

Print this page
*** 23,19 ***
   */
  
  #ifndef SHARE_CDS_CLASSLISTPARSER_HPP
  #define SHARE_CDS_CLASSLISTPARSER_HPP
  
  #include "utilities/exceptions.hpp"
  #include "utilities/globalDefinitions.hpp"
  #include "utilities/growableArray.hpp"
  #include "utilities/istream.hpp"
  #include "utilities/resizeableResourceHash.hpp"
  
- #define LAMBDA_PROXY_TAG "@lambda-proxy"
- #define LAMBDA_FORM_TAG  "@lambda-form-invoker"
- 
  class constantPoolHandle;
  class Thread;
  
  class CDSIndyInfo {
    GrowableArray<const char*>* _items;
--- 23,17 ---
   */
  
  #ifndef SHARE_CDS_CLASSLISTPARSER_HPP
  #define SHARE_CDS_CLASSLISTPARSER_HPP
  
+ #include "interpreter/bytecodes.hpp"
  #include "utilities/exceptions.hpp"
  #include "utilities/globalDefinitions.hpp"
  #include "utilities/growableArray.hpp"
  #include "utilities/istream.hpp"
  #include "utilities/resizeableResourceHash.hpp"
  
  class constantPoolHandle;
  class Thread;
  
  class CDSIndyInfo {
    GrowableArray<const char*>* _items;

*** 66,11 ***
--- 64,20 ---
      return _items;
    }
  };
  
  class ClassListParser : public StackObj {
+   static const char* CONSTANT_POOL_TAG;
+   static const char* DYNAMIC_PROXY_TAG;
+   static const char* LAMBDA_FORM_TAG;
+   static const char* LAMBDA_PROXY_TAG;
  public:
+   static const char* ARRAY_TAG;
+ 
+   static const char* CLASS_REFLECTION_DATA_TAG;
+   static const char* LOADER_NEGATIVE_CACHE_TAG;
+ 
    enum ParseMode {
      _parse_all,
      _parse_lambda_forms_invokers_only,
    };
  

*** 115,22 ***
    InstanceKlass* lookup_class_by_id(int id);
    void print_specified_interfaces();
    void print_actual_interfaces(InstanceKlass *ik);
    bool is_matching_cp_entry(const constantPoolHandle &pool, int cp_index, TRAPS);
  
    void resolve_indy(JavaThread* current, Symbol* class_name_symbol);
    void resolve_indy_impl(Symbol* class_name_symbol, TRAPS);
    void clean_up_input_line();
    void read_class_name_and_attributes();
    void parse_class_name_and_attributes(TRAPS);
    Klass* load_current_class(Symbol* class_name_symbol, TRAPS);
  
    size_t lineno() { return _input_stream.lineno(); }
    FILE* do_open(const char* file);
    ClassListParser(const char* file, ParseMode _parse_mode);
    ~ClassListParser();
! 
  public:
    static void parse_classlist(const char* classlist_path, ParseMode parse_mode, TRAPS) {
      ClassListParser parser(classlist_path, parse_mode);
      parser.parse(THREAD);
    }
--- 122,34 ---
    InstanceKlass* lookup_class_by_id(int id);
    void print_specified_interfaces();
    void print_actual_interfaces(InstanceKlass *ik);
    bool is_matching_cp_entry(const constantPoolHandle &pool, int cp_index, TRAPS);
  
+   InstanceKlass* find_builtin_class_helper(JavaThread* current, Symbol* class_name_symbol, oop class_loader_oop);
+   InstanceKlass* find_builtin_class(JavaThread* current, const char* class_name);
+ 
    void resolve_indy(JavaThread* current, Symbol* class_name_symbol);
    void resolve_indy_impl(Symbol* class_name_symbol, TRAPS);
    void clean_up_input_line();
    void read_class_name_and_attributes();
    void parse_class_name_and_attributes(TRAPS);
    Klass* load_current_class(Symbol* class_name_symbol, TRAPS);
+   void parse_constant_pool_tag();
+   void parse_class_reflection_data_tag();
+   void parse_dynamic_proxy_tag();
+   void parse_loader_negative_cache_tag();
+   void parse_array_dimension_tag();
  
    size_t lineno() { return _input_stream.lineno(); }
    FILE* do_open(const char* file);
    ClassListParser(const char* file, ParseMode _parse_mode);
    ~ClassListParser();
!   void print_diagnostic_info(outputStream* st, const char* msg, va_list ap) ATTRIBUTE_PRINTF(3, 0);
+   void print_diagnostic_info(outputStream* st, const char* msg, ...) ATTRIBUTE_PRINTF(3, 0);
+   void constant_pool_resolution_warning(const char* msg, ...) ATTRIBUTE_PRINTF(2, 0);
+   void error(const char* msg, ...) ATTRIBUTE_PRINTF(2, 0);
+   oop loader_from_type(const char* loader_name);
  public:
    static void parse_classlist(const char* classlist_path, ParseMode parse_mode, TRAPS) {
      ClassListParser parser(classlist_path, parse_mode);
      parser.parse(THREAD);
    }

*** 139,17 ***
    static ClassListParser* instance() {
      assert(is_parsing_thread(), "call this only in the thread that created ClassListParsing::_instance");
      assert(_instance != nullptr, "must be");
      return _instance;
    }
  
    void parse(TRAPS);
    void split_tokens_by_whitespace(int offset, GrowableArray<const char*>* items);
    int split_at_tag_from_line();
    void parse_at_tags(TRAPS);
    char* _token;
-   void error(const char* msg, ...);
    void parse_int(int* value);
    void parse_uint(int* value);
    bool try_parse_uint(int* value);
    bool skip_token(const char* option_name);
    void skip_whitespaces();
--- 158,22 ---
    static ClassListParser* instance() {
      assert(is_parsing_thread(), "call this only in the thread that created ClassListParsing::_instance");
      assert(_instance != nullptr, "must be");
      return _instance;
    }
+   static const char* lambda_proxy_tag() {
+     return LAMBDA_PROXY_TAG;
+   }
+   static const char* lambda_form_tag() {
+     return LAMBDA_FORM_TAG;
+   }
  
    void parse(TRAPS);
    void split_tokens_by_whitespace(int offset, GrowableArray<const char*>* items);
    int split_at_tag_from_line();
    void parse_at_tags(TRAPS);
    char* _token;
    void parse_int(int* value);
    void parse_uint(int* value);
    bool try_parse_uint(int* value);
    bool skip_token(const char* option_name);
    void skip_whitespaces();
< prev index next >