< prev index next > src/hotspot/share/opto/cfgnode.hpp
Print this page
static Node* clone_through_phi(Node* root_phi, const Type* t, uint c, PhaseIterGVN* igvn);
static Node* merge_through_phi(Node* root_phi, PhaseIterGVN* igvn);
bool must_wait_for_region_in_irreducible_loop(PhaseGVN* phase) const;
+ bool can_push_inline_types_down(PhaseGVN* phase, bool can_reshape, ciInlineKlass*& inline_klass);
+ InlineTypeNode* push_inline_types_down(PhaseGVN* phase, bool can_reshape, ciInlineKlass* inline_klass);
+
public:
// Node layout (parallels RegionNode):
enum { Region, // Control input is the Phi's region.
Input // Input values are [1..len)
};
inst_index() == index &&
inst_offset() == offset &&
type()->higher_equal(tp);
}
+ bool can_be_inline_type() const {
+ return EnableValhalla && _type->isa_instptr() && _type->is_instptr()->can_be_inline_type();
+ }
+
+ Node* try_push_inline_types_down(PhaseGVN* phase, bool can_reshape);
+ DEBUG_ONLY(bool can_push_inline_types_down(PhaseGVN* phase);)
+
virtual const Type* Value(PhaseGVN* phase) const;
virtual Node* Identity(PhaseGVN* phase);
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
virtual const RegMask &out_RegMask() const;
virtual const RegMask &in_RegMask(uint) const;
// Takes the type of val and filters it through the test represented
// by if_proj and returns a more refined type if one is produced.
// Returns null is it couldn't improve the type.
static const TypeInt* filtered_int_type(PhaseGVN* phase, Node* val, Node* if_proj);
+ bool is_flat_array_check(PhaseTransform* phase, Node** array = nullptr);
+
#ifndef PRODUCT
AssertionPredicateType assertion_predicate_type() const {
return _assertion_predicate_type;
}
// the effects on its arguments, and would be finally matched to nothing.
class BlackholeNode : public MultiNode {
public:
BlackholeNode(Node* ctrl) : MultiNode(1) {
init_req(TypeFunc::Control, ctrl);
+ init_class_id(Class_Blackhole);
}
virtual int Opcode() const;
virtual uint ideal_reg() const { return 0; } // not matched in the AD file
virtual const Type* bottom_type() const { return TypeTuple::MEMBAR; }
< prev index next >