--- old/src/hotspot/share/opto/subnode.hpp 2020-08-07 00:44:22.000000000 +0300 +++ new/src/hotspot/share/opto/subnode.hpp 2020-08-07 00:44:21.000000000 +0300 @@ -404,6 +404,28 @@ NegNode( Node *in1 ) : Node(0,in1) {} }; +//------------------------------NegINode--------------------------------------- +// Negate value an int. For int values, negation is the same as subtraction +// from zero +class NegINode : public NegNode { +public: + NegINode(Node *in1) : NegNode(in1) {} + virtual int Opcode() const; + const Type *bottom_type() const { return TypeInt::INT; } + virtual uint ideal_reg() const { return Op_RegI; } +}; + +//------------------------------NegLNode--------------------------------------- +// Negate value an int. For int values, negation is the same as subtraction +// from zero +class NegLNode : public NegNode { +public: + NegLNode(Node *in1) : NegNode(in1) {} + virtual int Opcode() const; + const Type *bottom_type() const { return TypeLong::LONG; } + virtual uint ideal_reg() const { return Op_RegL; } +}; + //------------------------------NegFNode--------------------------------------- // Negate value a float. Negating 0.0 returns -0.0, but subtracting from // zero returns +0.0 (per JVM spec on 'fneg' bytecode). As subtraction