comparison src/share/vm/opto/memnode.hpp @ 681:fbde8ec322d0

6761600: Use sse 4.2 in intrinsics Summary: Use SSE 4.2 in intrinsics for String.{compareTo/equals/indexOf} and Arrays.equals. Reviewed-by: kvn, never, jrose
author cfang
date Tue, 31 Mar 2009 14:07:08 -0700
parents 7bb995fbd3c0
children 685e959d09ea
comparison
equal deleted inserted replaced
676:d3676b4cb78c 681:fbde8ec322d0
757 s1, s2) {}; 757 s1, s2) {};
758 virtual int Opcode() const; 758 virtual int Opcode() const;
759 virtual bool depends_only_on_test() const { return false; } 759 virtual bool depends_only_on_test() const { return false; }
760 virtual const Type* bottom_type() const { return TypeInt::INT; } 760 virtual const Type* bottom_type() const { return TypeInt::INT; }
761 // a StrCompNode (conservatively) aliases with everything: 761 // a StrCompNode (conservatively) aliases with everything:
762 virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; }
763 virtual uint match_edge(uint idx) const;
764 virtual uint ideal_reg() const { return Op_RegI; }
765 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
766 };
767
768 //------------------------------StrEquals-------------------------------------
769 class StrEqualsNode: public Node {
770 public:
771 StrEqualsNode(Node *control,
772 Node* char_array_mem,
773 Node* value_mem,
774 Node* count_mem,
775 Node* offset_mem,
776 Node* s1, Node* s2): Node(control,
777 char_array_mem,
778 value_mem,
779 count_mem,
780 offset_mem,
781 s1, s2) {};
782 virtual int Opcode() const;
783 virtual bool depends_only_on_test() const { return false; }
784 virtual const Type* bottom_type() const { return TypeInt::BOOL; }
785 // a StrEqualsNode (conservatively) aliases with everything:
786 virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; }
787 virtual uint match_edge(uint idx) const;
788 virtual uint ideal_reg() const { return Op_RegI; }
789 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
790 };
791
792 //------------------------------StrIndexOf-------------------------------------
793 class StrIndexOfNode: public Node {
794 public:
795 StrIndexOfNode(Node *control,
796 Node* char_array_mem,
797 Node* value_mem,
798 Node* count_mem,
799 Node* offset_mem,
800 Node* s1, Node* s2): Node(control,
801 char_array_mem,
802 value_mem,
803 count_mem,
804 offset_mem,
805 s1, s2) {};
806 virtual int Opcode() const;
807 virtual bool depends_only_on_test() const { return false; }
808 virtual const Type* bottom_type() const { return TypeInt::INT; }
809 // a StrIndexOfNode (conservatively) aliases with everything:
762 virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; } 810 virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; }
763 virtual uint match_edge(uint idx) const; 811 virtual uint match_edge(uint idx) const;
764 virtual uint ideal_reg() const { return Op_RegI; } 812 virtual uint ideal_reg() const { return Op_RegI; }
765 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); 813 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
766 }; 814 };