--- old/src/hotspot/share/opto/parse.hpp 2018-04-05 11:41:49.701791196 +0200 +++ new/src/hotspot/share/opto/parse.hpp 2018-04-05 11:41:45.541805271 +0200 @@ -552,17 +552,18 @@ void sharpen_type_after_if(BoolTest::mask btest, Node* con, const Type* tcon, Node* val, const Type* tval); - IfNode* jump_if_fork_int(Node* a, Node* b, BoolTest::mask mask); + IfNode* jump_if_fork_int(Node* a, Node* b, BoolTest::mask mask, float prob, float cnt); Node* jump_if_join(Node* iffalse, Node* iftrue); - void jump_if_true_fork(IfNode *ifNode, int dest_bci_if_true, int prof_table_index); - void jump_if_false_fork(IfNode *ifNode, int dest_bci_if_false, int prof_table_index); - void jump_if_always_fork(int dest_bci_if_true, int prof_table_index); + void jump_if_true_fork(IfNode *ifNode, int dest_bci_if_true, int prof_table_index, bool unc); + void jump_if_false_fork(IfNode *ifNode, int dest_bci_if_false, int prof_table_index, bool unc); + void jump_if_always_fork(int dest_bci_if_true, int prof_table_index, bool unc); friend class SwitchRange; void do_tableswitch(); void do_lookupswitch(); void jump_switch_ranges(Node* a, SwitchRange* lo, SwitchRange* hi, int depth = 0); bool create_jump_tables(Node* a, SwitchRange* lo, SwitchRange* hi); + void linear_search_switch_ranges(Node* key_val, SwitchRange*& lo, SwitchRange*& hi); void decrement_age(); // helper functions for methodData style profiling