--- a/src/hotspot/share/opto/loopnode.hpp Mon Jan 14 13:45:19 2019 -0800
+++ b/src/hotspot/share/opto/loopnode.hpp Mon Jan 14 15:07:22 2019 +0100
@@ -747,12 +747,14 @@
}
Node* cast_incr_before_loop(Node* incr, Node* ctrl, Node* loop);
- void duplicate_predicates_helper(Node* predicate, Node* castii, IdealLoopTree* outer_loop,
+ void duplicate_predicates_helper(Node* predicate, Node* start, Node* end, IdealLoopTree* outer_loop,
LoopNode* outer_main_head, uint dd_main_head);
- void duplicate_predicates(CountedLoopNode* pre_head, Node* castii, IdealLoopTree* outer_loop,
+ void duplicate_predicates(CountedLoopNode* pre_head, Node* start, Node* end, IdealLoopTree* outer_loop,
LoopNode* outer_main_head, uint dd_main_head);
- Node* update_skeleton_predicate(Node* iff, Node* value, Node* predicate = NULL, Node* uncommon_proj = NULL,
- Node* current_proj = NULL, IdealLoopTree* outer_loop = NULL, Node* prev_proj = NULL);
+ Node* clone_skeleton_predicate(Node* iff, Node* value, Node* predicate, Node* uncommon_proj,
+ Node* current_proj, IdealLoopTree* outer_loop, Node* prev_proj);
+ bool skeleton_predicate_has_opaque(IfNode* iff);
+ void update_skeleton_predicates(Node* ctrl, CountedLoopNode* loop_head, Node* init, int stride_con);
void insert_loop_limit_check(ProjNode* limit_check_proj, Node* cmp_limit, Node* bol);
public:
@@ -1128,7 +1130,7 @@
Deoptimization::DeoptReason reason);
Node* add_range_check_predicate(IdealLoopTree* loop, CountedLoopNode* cl,
Node* predicate_proj, int scale_con, Node* offset,
- Node* limit, jint stride_con);
+ Node* limit, jint stride_con, Node* value);
// Helper function to collect predicate for eliminating the useless ones
void collect_potentially_useful_predicates(IdealLoopTree *loop, Unique_Node_List &predicate_opaque1);