< prev index next >

src/hotspot/share/opto/parse.hpp

Print this page
*** 409,11 ***
   private:
    // Create a JVMS & map for the initial state of this method.
    SafePointNode* create_entry_map();
  
    // OSR helpers
!   Node *fetch_interpreter_state(int index, BasicType bt, Node *local_addrs, Node *local_addrs_base);
    Node* check_interpreter_type(Node* l, const Type* type, SafePointNode* &bad_type_exit);
    void  load_interpreter_state(Node* osr_buf);
  
    // Functions for managing basic blocks:
    void init_blocks();
--- 409,11 ---
   private:
    // Create a JVMS & map for the initial state of this method.
    SafePointNode* create_entry_map();
  
    // OSR helpers
!   Node* fetch_interpreter_state(int index, const Type* type, Node* local_addrs, Node* local_addrs_base);
    Node* check_interpreter_type(Node* l, const Type* type, SafePointNode* &bad_type_exit);
    void  load_interpreter_state(Node* osr_buf);
  
    // Functions for managing basic blocks:
    void init_blocks();

*** 455,17 ***
  
    // Parse this bytecode, and alter the Parsers JVM->Node mapping
    void do_one_bytecode();
  
    // helper function to generate array store check
!   void array_store_check();
    // Helper function to generate array load
    void array_load(BasicType etype);
    // Helper function to generate array store
    void array_store(BasicType etype);
    // Helper function to compute array addressing
    Node* array_addressing(BasicType type, int vals, const Type*& elemtype);
  
    void clinit_deopt();
  
    void rtm_deopt();
  
--- 455,18 ---
  
    // Parse this bytecode, and alter the Parsers JVM->Node mapping
    void do_one_bytecode();
  
    // helper function to generate array store check
!   Node* array_store_check(Node*& adr, const Type*& elemtype);
    // Helper function to generate array load
    void array_load(BasicType etype);
    // Helper function to generate array store
    void array_store(BasicType etype);
    // Helper function to compute array addressing
    Node* array_addressing(BasicType type, int vals, const Type*& elemtype);
+   Node* record_profile_for_speculation_at_array_load(Node* ld);
  
    void clinit_deopt();
  
    void rtm_deopt();
  

*** 510,17 ***
  
    // common code for making initial checks and forming addresses
    void do_field_access(bool is_get, bool is_field);
  
    // common code for actually performing the load or store
!   void do_get_xxx(Node* obj, ciField* field, bool is_field);
    void do_put_xxx(Node* obj, ciField* field, bool is_field);
  
    // implementation of object creation bytecodes
    void do_new();
    void do_newarray(BasicType elemtype);
!   void do_anewarray();
    void do_multianewarray();
    Node* expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions, int nargs);
  
    // implementation of jsr/ret
    void do_jsr();
--- 511,19 ---
  
    // common code for making initial checks and forming addresses
    void do_field_access(bool is_get, bool is_field);
  
    // common code for actually performing the load or store
!   void do_get_xxx(Node* obj, ciField* field);
    void do_put_xxx(Node* obj, ciField* field, bool is_field);
  
    // implementation of object creation bytecodes
    void do_new();
+   void do_defaultvalue();
+   void do_withfield();
    void do_newarray(BasicType elemtype);
!   void do_newarray();
    void do_multianewarray();
    Node* expand_multianewarray(ciArrayKlass* array_klass, Node* *lengths, int ndimensions, int nargs);
  
    // implementation of jsr/ret
    void do_jsr();

*** 531,14 ***
    bool    seems_never_taken(float prob) const;
    bool    path_is_suitable_for_uncommon_trap(float prob) const;
    bool    seems_stable_comparison() const;
  
    void    do_ifnull(BoolTest::mask btest, Node* c);
!   void    do_if(BoolTest::mask btest, Node* c);
    int     repush_if_args();
!   void    adjust_map_after_if(BoolTest::mask btest, Node* c, float prob,
-                               Block* path, Block* other_path);
    void    sharpen_type_after_if(BoolTest::mask btest,
                                  Node* con, const Type* tcon,
                                  Node* val, const Type* tval);
    void    maybe_add_predicate_after_if(Block* path);
    IfNode* jump_if_fork_int(Node* a, Node* b, BoolTest::mask mask, float prob, float cnt);
--- 534,18 ---
    bool    seems_never_taken(float prob) const;
    bool    path_is_suitable_for_uncommon_trap(float prob) const;
    bool    seems_stable_comparison() const;
  
    void    do_ifnull(BoolTest::mask btest, Node* c);
!   void    do_if(BoolTest::mask btest, Node* c, bool new_path = false, Node** ctrl_taken = NULL);
+   void    do_acmp(BoolTest::mask btest, Node* left, Node* right);
+   void    acmp_always_null_input(Node* input, const TypeOopPtr* tinput, BoolTest::mask btest, Node* eq_region);
+   void    acmp_known_non_inline_type_input(Node* input, const TypeOopPtr* tinput, ProfilePtrKind input_ptr, ciKlass* input_type, BoolTest::mask btest, Node* eq_region);
+   Node*   acmp_null_check(Node* input, const TypeOopPtr* tinput, ProfilePtrKind input_ptr, Node*& null_ctl);
+   void    acmp_unknown_non_inline_type_input(Node* input, const TypeOopPtr* tinput, ProfilePtrKind input_ptr, BoolTest::mask btest, Node* eq_region);
    int     repush_if_args();
!   void    adjust_map_after_if(BoolTest::mask btest, Node* c, float prob, Block* path);
    void    sharpen_type_after_if(BoolTest::mask btest,
                                  Node* con, const Type* tcon,
                                  Node* val, const Type* tval);
    void    maybe_add_predicate_after_if(Block* path);
    IfNode* jump_if_fork_int(Node* a, Node* b, BoolTest::mask mask, float prob, float cnt);
< prev index next >