60 StrIntrinsicNode(Node* control, Node* char_array_mem,
61 Node* s1, Node* c1, Node* s2, Node* c2, ArgEncoding encoding):
62 Node(control, char_array_mem, s1, c1, s2, c2), _encoding(encoding) {
63 }
64
65 StrIntrinsicNode(Node* control, Node* char_array_mem,
66 Node* s1, Node* s2, Node* c, ArgEncoding encoding):
67 Node(control, char_array_mem, s1, s2, c), _encoding(encoding) {
68 }
69
70 StrIntrinsicNode(Node* control, Node* char_array_mem,
71 Node* s1, Node* s2, ArgEncoding encoding):
72 Node(control, char_array_mem, s1, s2), _encoding(encoding) {
73 }
74
75 virtual bool depends_only_on_test() const { return false; }
76 virtual const TypePtr* adr_type() const { return TypeAryPtr::BYTES; }
77 virtual uint match_edge(uint idx) const;
78 virtual uint ideal_reg() const { return Op_RegI; }
79 virtual Node* Ideal(PhaseGVN* phase, bool can_reshape);
80 virtual const Type* Value(PhaseTransform* phase) const;
81 ArgEncoding encoding() const { return _encoding; }
82 };
83
84 //------------------------------StrComp-------------------------------------
85 class StrCompNode: public StrIntrinsicNode {
86 public:
87 StrCompNode(Node* control, Node* char_array_mem,
88 Node* s1, Node* c1, Node* s2, Node* c2, ArgEncoding encoding):
89 StrIntrinsicNode(control, char_array_mem, s1, c1, s2, c2, encoding) {};
90 virtual int Opcode() const;
91 virtual const Type* bottom_type() const { return TypeInt::INT; }
92 };
93
94 //------------------------------StrEquals-------------------------------------
95 class StrEqualsNode: public StrIntrinsicNode {
96 public:
97 StrEqualsNode(Node* control, Node* char_array_mem,
98 Node* s1, Node* s2, Node* c, ArgEncoding encoding):
99 StrIntrinsicNode(control, char_array_mem, s1, s2, c, encoding) {};
100 virtual int Opcode() const;
160 public:
161 HasNegativesNode(Node* control, Node* char_array_mem, Node* s1, Node* c1):
162 StrIntrinsicNode(control, char_array_mem, s1, c1, none) {};
163 virtual int Opcode() const;
164 virtual const Type* bottom_type() const { return TypeInt::BOOL; }
165 };
166
167
168 //------------------------------EncodeISOArray--------------------------------
169 // encode char[] to byte[] in ISO_8859_1
170 class EncodeISOArrayNode: public Node {
171 public:
172 EncodeISOArrayNode(Node* control, Node* arymem, Node* s1, Node* s2, Node* c): Node(control, arymem, s1, s2, c) {};
173 virtual int Opcode() const;
174 virtual bool depends_only_on_test() const { return false; }
175 virtual const Type* bottom_type() const { return TypeInt::INT; }
176 virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; }
177 virtual uint match_edge(uint idx) const;
178 virtual uint ideal_reg() const { return Op_RegI; }
179 virtual Node* Ideal(PhaseGVN* phase, bool can_reshape);
180 virtual const Type* Value(PhaseTransform* phase) const;
181 };
182
183 #endif // SHARE_VM_OPTO_INTRINSICNODE_HPP
|
60 StrIntrinsicNode(Node* control, Node* char_array_mem,
61 Node* s1, Node* c1, Node* s2, Node* c2, ArgEncoding encoding):
62 Node(control, char_array_mem, s1, c1, s2, c2), _encoding(encoding) {
63 }
64
65 StrIntrinsicNode(Node* control, Node* char_array_mem,
66 Node* s1, Node* s2, Node* c, ArgEncoding encoding):
67 Node(control, char_array_mem, s1, s2, c), _encoding(encoding) {
68 }
69
70 StrIntrinsicNode(Node* control, Node* char_array_mem,
71 Node* s1, Node* s2, ArgEncoding encoding):
72 Node(control, char_array_mem, s1, s2), _encoding(encoding) {
73 }
74
75 virtual bool depends_only_on_test() const { return false; }
76 virtual const TypePtr* adr_type() const { return TypeAryPtr::BYTES; }
77 virtual uint match_edge(uint idx) const;
78 virtual uint ideal_reg() const { return Op_RegI; }
79 virtual Node* Ideal(PhaseGVN* phase, bool can_reshape);
80 virtual const Type* Value(PhaseGVN* phase) const;
81 ArgEncoding encoding() const { return _encoding; }
82 };
83
84 //------------------------------StrComp-------------------------------------
85 class StrCompNode: public StrIntrinsicNode {
86 public:
87 StrCompNode(Node* control, Node* char_array_mem,
88 Node* s1, Node* c1, Node* s2, Node* c2, ArgEncoding encoding):
89 StrIntrinsicNode(control, char_array_mem, s1, c1, s2, c2, encoding) {};
90 virtual int Opcode() const;
91 virtual const Type* bottom_type() const { return TypeInt::INT; }
92 };
93
94 //------------------------------StrEquals-------------------------------------
95 class StrEqualsNode: public StrIntrinsicNode {
96 public:
97 StrEqualsNode(Node* control, Node* char_array_mem,
98 Node* s1, Node* s2, Node* c, ArgEncoding encoding):
99 StrIntrinsicNode(control, char_array_mem, s1, s2, c, encoding) {};
100 virtual int Opcode() const;
160 public:
161 HasNegativesNode(Node* control, Node* char_array_mem, Node* s1, Node* c1):
162 StrIntrinsicNode(control, char_array_mem, s1, c1, none) {};
163 virtual int Opcode() const;
164 virtual const Type* bottom_type() const { return TypeInt::BOOL; }
165 };
166
167
168 //------------------------------EncodeISOArray--------------------------------
169 // encode char[] to byte[] in ISO_8859_1
170 class EncodeISOArrayNode: public Node {
171 public:
172 EncodeISOArrayNode(Node* control, Node* arymem, Node* s1, Node* s2, Node* c): Node(control, arymem, s1, s2, c) {};
173 virtual int Opcode() const;
174 virtual bool depends_only_on_test() const { return false; }
175 virtual const Type* bottom_type() const { return TypeInt::INT; }
176 virtual const TypePtr* adr_type() const { return TypePtr::BOTTOM; }
177 virtual uint match_edge(uint idx) const;
178 virtual uint ideal_reg() const { return Op_RegI; }
179 virtual Node* Ideal(PhaseGVN* phase, bool can_reshape);
180 virtual const Type* Value(PhaseGVN* phase) const;
181 };
182
183 #endif // SHARE_VM_OPTO_INTRINSICNODE_HPP
|