< prev index next >

src/hotspot/share/opto/castnode.hpp

Print this page
@@ -208,10 +208,11 @@
      : ConstraintCastNode(ctrl, n, t, dependency, types) {
      assert(ctrl != nullptr, "control must be set");
      init_class_id(Class_CheckCastPP);
    }
  
+   virtual Node* Identity(PhaseGVN* phase);
    virtual const Type* Value(PhaseGVN* phase) const;
    virtual int   Opcode() const;
    virtual uint  ideal_reg() const { return Op_RegP; }
    bool depends_only_on_test() const { return !type()->isa_rawptr() && ConstraintCastNode::depends_only_on_test(); }
   };

@@ -228,10 +229,19 @@
    virtual Node* Identity(PhaseGVN* phase);
    virtual uint ideal_reg() const { return Op_RegP; }
    virtual const Type *bottom_type() const { return TypeRawPtr::BOTTOM; }
  };
  
+ // Cast an integer to a narrow oop
+ class CastI2NNode : public Node {
+   public:
+   CastI2NNode(Node* ctrl, Node* n) : Node(ctrl, n) { }
+   virtual int Opcode() const;
+   virtual uint ideal_reg() const { return Op_RegN; }
+   virtual const Type* bottom_type() const { return TypeNarrowOop::BOTTOM; }
+ };
+ 
  //------------------------------CastP2XNode-------------------------------------
  // Used in both 32-bit and 64-bit land.
  // Used for card-marks and unsafe pointer math.
  class CastP2XNode : public Node {
    public:

@@ -244,8 +254,6 @@
    virtual const Type *bottom_type() const { return TypeX_X; }
    // Return false to keep node from moving away from an associated card mark.
    virtual bool depends_only_on_test() const { return false; }
  };
  
- 
- 
  #endif // SHARE_OPTO_CASTNODE_HPP
< prev index next >