< prev index next > src/hotspot/share/opto/parse.hpp
Print this page
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();
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();
// 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();
// 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();
// 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();
// 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_aconst_init();
+ 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();
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);
void sharpen_type_after_if(BoolTest::mask btest,
Node* con, const Type* tcon,
Node* val, const Type* tval);
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);
< prev index next >