< prev index next >

src/hotspot/share/opto/parse.hpp

Print this page

480   void merge_common(Block* target, int pnum);
481   // Helper functions for merging individual cells.
482   PhiNode *ensure_phi(       int idx, bool nocreate = false);
483   PhiNode *ensure_memory_phi(int idx, bool nocreate = false);
484   // Helper to merge the current memory state into the given basic block
485   void merge_memory_edges(MergeMemNode* n, int pnum, bool nophi);
486 
487   // Parse this bytecode, and alter the Parsers JVM->Node mapping
488   void do_one_bytecode();
489 
490   // helper function to generate array store check
491   void array_store_check();
492   // Helper function to generate array load
493   void array_load(BasicType etype);
494   // Helper function to generate array store
495   void array_store(BasicType etype);
496   // Helper function to compute array addressing
497   Node* array_addressing(BasicType type, int vals, const Type*& elemtype);
498 
499   void clinit_deopt();

500 
501   // Pass current map to exits
502   void return_current(Node* value);
503 
504   // Register finalizers on return from Object.<init>
505   void call_register_finalizer();
506 
507   // Insert a compiler safepoint into the graph
508   void add_safepoint();
509 
510   // Insert a compiler safepoint into the graph, if there is a back-branch.
511   void maybe_add_safepoint(int target_bci) {
512     if (target_bci <= bci()) {
513       add_safepoint();
514     }
515   }
516 
517   // Note:  Intrinsic generation routines may be found in library_call.cpp.
518 
519   // Helper function to setup Ideal Call nodes

565   void    adjust_map_after_if(BoolTest::mask btest, Node* c, float prob, Block* path);
566   void    sharpen_type_after_if(BoolTest::mask btest,
567                                 Node* con, const Type* tcon,
568                                 Node* val, const Type* tval);
569   void    maybe_add_predicate_after_if(Block* path);
570   IfNode* jump_if_fork_int(Node* a, Node* b, BoolTest::mask mask, float prob, float cnt);
571   void    jump_if_true_fork(IfNode *ifNode, int dest_bci_if_true, bool unc);
572   void    jump_if_false_fork(IfNode *ifNode, int dest_bci_if_false, bool unc);
573   void    jump_if_always_fork(int dest_bci_if_true, bool unc);
574 
575   friend class SwitchRange;
576   void    do_tableswitch();
577   void    do_lookupswitch();
578   void    jump_switch_ranges(Node* a, SwitchRange* lo, SwitchRange* hi, int depth = 0);
579   bool    create_jump_tables(Node* a, SwitchRange* lo, SwitchRange* hi);
580   void    linear_search_switch_ranges(Node* key_val, SwitchRange*& lo, SwitchRange*& hi);
581 
582   // helper function for call statistics
583   void count_compiled_calls(bool at_method_entry, bool is_inline) PRODUCT_RETURN;
584 



585   Node_Notes* make_node_notes(Node_Notes* caller_nn);
586 
587   // Helper functions for handling normal and abnormal exits.
588   void build_exits();
589 
590   // Fix up all exceptional control flow exiting a single bytecode.
591   void do_exceptions();
592 
593   // Fix up all exiting control flow at the end of the parse.
594   void do_exits();
595 
596   // Add Catch/CatchProjs
597   // The call is either a Java call or the VM's rethrow stub
598   void catch_call_exceptions(ciExceptionHandlerStream&);
599 
600   // Handle all exceptions thrown by the inlined method.
601   // Also handles exceptions for individual bytecodes.
602   void catch_inline_exceptions(SafePointNode* ex_map);
603 
604   // Merge the given map into correct exceptional exit state.

480   void merge_common(Block* target, int pnum);
481   // Helper functions for merging individual cells.
482   PhiNode *ensure_phi(       int idx, bool nocreate = false);
483   PhiNode *ensure_memory_phi(int idx, bool nocreate = false);
484   // Helper to merge the current memory state into the given basic block
485   void merge_memory_edges(MergeMemNode* n, int pnum, bool nophi);
486 
487   // Parse this bytecode, and alter the Parsers JVM->Node mapping
488   void do_one_bytecode();
489 
490   // helper function to generate array store check
491   void array_store_check();
492   // Helper function to generate array load
493   void array_load(BasicType etype);
494   // Helper function to generate array store
495   void array_store(BasicType etype);
496   // Helper function to compute array addressing
497   Node* array_addressing(BasicType type, int vals, const Type*& elemtype);
498 
499   void clinit_deopt();
500   void clinit_barrier_on_inline();
501 
502   // Pass current map to exits
503   void return_current(Node* value);
504 
505   // Register finalizers on return from Object.<init>
506   void call_register_finalizer();
507 
508   // Insert a compiler safepoint into the graph
509   void add_safepoint();
510 
511   // Insert a compiler safepoint into the graph, if there is a back-branch.
512   void maybe_add_safepoint(int target_bci) {
513     if (target_bci <= bci()) {
514       add_safepoint();
515     }
516   }
517 
518   // Note:  Intrinsic generation routines may be found in library_call.cpp.
519 
520   // Helper function to setup Ideal Call nodes

566   void    adjust_map_after_if(BoolTest::mask btest, Node* c, float prob, Block* path);
567   void    sharpen_type_after_if(BoolTest::mask btest,
568                                 Node* con, const Type* tcon,
569                                 Node* val, const Type* tval);
570   void    maybe_add_predicate_after_if(Block* path);
571   IfNode* jump_if_fork_int(Node* a, Node* b, BoolTest::mask mask, float prob, float cnt);
572   void    jump_if_true_fork(IfNode *ifNode, int dest_bci_if_true, bool unc);
573   void    jump_if_false_fork(IfNode *ifNode, int dest_bci_if_false, bool unc);
574   void    jump_if_always_fork(int dest_bci_if_true, bool unc);
575 
576   friend class SwitchRange;
577   void    do_tableswitch();
578   void    do_lookupswitch();
579   void    jump_switch_ranges(Node* a, SwitchRange* lo, SwitchRange* hi, int depth = 0);
580   bool    create_jump_tables(Node* a, SwitchRange* lo, SwitchRange* hi);
581   void    linear_search_switch_ranges(Node* key_val, SwitchRange*& lo, SwitchRange*& hi);
582 
583   // helper function for call statistics
584   void count_compiled_calls(bool at_method_entry, bool is_inline) PRODUCT_RETURN;
585 
586   // AOT compiled code invocations count
587   void count_aot_code_calls() NOT_CDS_RETURN;
588 
589   Node_Notes* make_node_notes(Node_Notes* caller_nn);
590 
591   // Helper functions for handling normal and abnormal exits.
592   void build_exits();
593 
594   // Fix up all exceptional control flow exiting a single bytecode.
595   void do_exceptions();
596 
597   // Fix up all exiting control flow at the end of the parse.
598   void do_exits();
599 
600   // Add Catch/CatchProjs
601   // The call is either a Java call or the VM's rethrow stub
602   void catch_call_exceptions(ciExceptionHandlerStream&);
603 
604   // Handle all exceptions thrown by the inlined method.
605   // Also handles exceptions for individual bytecodes.
606   void catch_inline_exceptions(SafePointNode* ex_map);
607 
608   // Merge the given map into correct exceptional exit state.
< prev index next >