src/hotspot/share/opto/cfgnode.hpp
changeset 52925 9c18c9d839d3
parent 52143 ad6384355aa3
child 53244 9807daeb47c4
equal deleted inserted replaced
52924:420ff459906f 52925:9c18c9d839d3
     1 /*
     1 /*
     2  * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
   302   static bool is_dominator_unc(CallStaticJavaNode* dom_unc, CallStaticJavaNode* unc);
   302   static bool is_dominator_unc(CallStaticJavaNode* dom_unc, CallStaticJavaNode* unc);
   303 
   303 
   304 protected:
   304 protected:
   305   ProjNode* range_check_trap_proj(int& flip, Node*& l, Node*& r);
   305   ProjNode* range_check_trap_proj(int& flip, Node*& l, Node*& r);
   306   Node* Ideal_common(PhaseGVN *phase, bool can_reshape);
   306   Node* Ideal_common(PhaseGVN *phase, bool can_reshape);
   307   Node* dominated_by(Node* prev_dom, PhaseIterGVN* igvn);
       
   308   Node* search_identical(int dist);
   307   Node* search_identical(int dist);
   309 
   308 
   310 public:
   309 public:
   311 
   310 
   312   // Degrees of branch prediction probability by order of magnitude:
   311   // Degrees of branch prediction probability by order of magnitude:
   390   virtual const Type* Value(PhaseGVN* phase) const;
   389   virtual const Type* Value(PhaseGVN* phase) const;
   391   virtual int required_outcnt() const { return 2; }
   390   virtual int required_outcnt() const { return 2; }
   392   virtual const RegMask &out_RegMask() const;
   391   virtual const RegMask &out_RegMask() const;
   393   Node* fold_compares(PhaseIterGVN* phase);
   392   Node* fold_compares(PhaseIterGVN* phase);
   394   static Node* up_one_dom(Node* curr, bool linear_only = false);
   393   static Node* up_one_dom(Node* curr, bool linear_only = false);
       
   394   Node* dominated_by(Node* prev_dom, PhaseIterGVN* igvn);
   395 
   395 
   396   // Takes the type of val and filters it through the test represented
   396   // Takes the type of val and filters it through the test represented
   397   // by if_proj and returns a more refined type if one is produced.
   397   // by if_proj and returns a more refined type if one is produced.
   398   // Returns NULL is it couldn't improve the type.
   398   // Returns NULL is it couldn't improve the type.
   399   static const TypeInt* filtered_int_type(PhaseGVN* phase, Node* val, Node* if_proj);
   399   static const TypeInt* filtered_int_type(PhaseGVN* phase, Node* val, Node* if_proj);