884 public: |
884 public: |
885 AryEqNode(Node* control, Node* char_array_mem, Node* s1, Node* s2): |
885 AryEqNode(Node* control, Node* char_array_mem, Node* s1, Node* s2): |
886 StrIntrinsicNode(control, char_array_mem, s1, s2) {}; |
886 StrIntrinsicNode(control, char_array_mem, s1, s2) {}; |
887 virtual int Opcode() const; |
887 virtual int Opcode() const; |
888 virtual const Type* bottom_type() const { return TypeInt::BOOL; } |
888 virtual const Type* bottom_type() const { return TypeInt::BOOL; } |
|
889 }; |
|
890 |
|
891 |
|
892 //------------------------------EncodeISOArray-------------------------------- |
|
893 // encode char[] to byte[] in ISO_8859_1 |
|
894 class EncodeISOArrayNode: public Node { |
|
895 public: |
|
896 EncodeISOArrayNode(Node *control, Node* arymem, Node* s1, Node* s2, Node* c): Node(control, arymem, s1, s2, c) {}; |
|
897 virtual int Opcode() const; |
|
898 virtual bool depends_only_on_test() const { return false; } |
|
899 virtual const Type* bottom_type() const { return TypeInt::INT; } |
|
900 virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; } |
|
901 virtual uint match_edge(uint idx) const; |
|
902 virtual uint ideal_reg() const { return Op_RegI; } |
|
903 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); |
|
904 virtual const Type *Value(PhaseTransform *phase) const; |
889 }; |
905 }; |
890 |
906 |
891 //------------------------------MemBar----------------------------------------- |
907 //------------------------------MemBar----------------------------------------- |
892 // There are different flavors of Memory Barriers to match the Java Memory |
908 // There are different flavors of Memory Barriers to match the Java Memory |
893 // Model. Monitor-enter and volatile-load act as Aquires: no following ref |
909 // Model. Monitor-enter and volatile-load act as Aquires: no following ref |