< prev index next >

src/hotspot/share/opto/memnode.hpp

Print this page

        

*** 501,541 **** }; //------------------------------LoadKlassNode---------------------------------- // Load a Klass from an object class LoadKlassNode : public LoadPNode { protected: // In most cases, LoadKlassNode does not have the control input set. If the control // input is set, it must not be removed (by LoadNode::Ideal()). virtual bool can_remove_control() const; public: ! LoadKlassNode(Node *c, Node *mem, Node *adr, const TypePtr *at, const TypeKlassPtr *tk, MemOrd mo) ! : LoadPNode(c, mem, adr, at, tk, mo) {} virtual int Opcode() const; virtual const Type* Value(PhaseGVN* phase) const; virtual Node* Identity(PhaseGVN* phase); virtual bool depends_only_on_test() const { return true; } // Polymorphic factory method: static Node* make(PhaseGVN& gvn, Node* ctl, Node* mem, Node* adr, const TypePtr* at, ! const TypeKlassPtr* tk = TypeKlassPtr::OBJECT); }; //------------------------------LoadNKlassNode--------------------------------- // Load a narrow Klass from an object. class LoadNKlassNode : public LoadNNode { public: ! LoadNKlassNode(Node *c, Node *mem, Node *adr, const TypePtr *at, const TypeNarrowKlass *tk, MemOrd mo) ! : LoadNNode(c, mem, adr, at, tk, mo) {} virtual int Opcode() const; virtual uint ideal_reg() const { return Op_RegN; } virtual int store_Opcode() const { return Op_StoreNKlass; } virtual BasicType memory_type() const { return T_NARROWKLASS; } virtual const Type* Value(PhaseGVN* phase) const; virtual Node* Identity(PhaseGVN* phase); virtual bool depends_only_on_test() const { return true; } }; // Retrieve the null free/flattened property from an array klass. This // is treated a bit like a field that would be read from the klass // structure at runtime except, the implementation encodes the --- 501,549 ---- }; //------------------------------LoadKlassNode---------------------------------- // Load a Klass from an object class LoadKlassNode : public LoadPNode { + private: + bool _clear_prop_bits; // Clear the ArrayStorageProperties bits protected: // In most cases, LoadKlassNode does not have the control input set. If the control // input is set, it must not be removed (by LoadNode::Ideal()). virtual bool can_remove_control() const; public: ! LoadKlassNode(Node *c, Node *mem, Node *adr, const TypePtr *at, const TypeKlassPtr *tk, MemOrd mo, bool clear_prop_bits) ! : LoadPNode(c, mem, adr, at, tk, mo), _clear_prop_bits(clear_prop_bits) {} ! virtual uint size_of() const { return sizeof(*this); } virtual int Opcode() const; virtual const Type* Value(PhaseGVN* phase) const; virtual Node* Identity(PhaseGVN* phase); virtual bool depends_only_on_test() const { return true; } + bool clear_prop_bits() const { return _clear_prop_bits; } // Polymorphic factory method: static Node* make(PhaseGVN& gvn, Node* ctl, Node* mem, Node* adr, const TypePtr* at, ! const TypeKlassPtr* tk = TypeKlassPtr::OBJECT, bool clear_prop_bits = false); }; //------------------------------LoadNKlassNode--------------------------------- // Load a narrow Klass from an object. class LoadNKlassNode : public LoadNNode { + private: + bool _clear_prop_bits; // Clear the ArrayStorageProperties bits public: ! LoadNKlassNode(Node *c, Node *mem, Node *adr, const TypePtr *at, const TypeNarrowKlass *tk, MemOrd mo, bool clear_prop_bits) ! : LoadNNode(c, mem, adr, at, tk, mo), _clear_prop_bits(clear_prop_bits) {} ! virtual uint size_of() const { return sizeof(*this); } virtual int Opcode() const; virtual uint ideal_reg() const { return Op_RegN; } virtual int store_Opcode() const { return Op_StoreNKlass; } virtual BasicType memory_type() const { return T_NARROWKLASS; } virtual const Type* Value(PhaseGVN* phase) const; virtual Node* Identity(PhaseGVN* phase); virtual bool depends_only_on_test() const { return true; } + bool clear_prop_bits() const { return _clear_prop_bits; } }; // Retrieve the null free/flattened property from an array klass. This // is treated a bit like a field that would be read from the klass // structure at runtime except, the implementation encodes the
< prev index next >