@@ -186,7 +186,7 @@ const Type* CMoveNode::Value(PhaseGVN* phase) const {
186
186
// Make a correctly-flavored CMove. Since _type is directly determined
187
187
// from the inputs we do not need to specify it here.
188
188
CMoveNode* CMoveNode::make (Node* bol, Node* left, Node* right, const Type* t) {
189
- switch ( t->basic_type () ) {
189
+ switch ( t->basic_type ()) {
190
190
case T_INT: return new CMoveINode (bol, left, right, t->is_int ());
191
191
case T_FLOAT: return new CMoveFNode (bol, left, right, t);
192
192
case T_DOUBLE: return new CMoveDNode (bol, left, right, t);
@@ -195,8 +195,23 @@ CMoveNode* CMoveNode::make(Node* bol, Node* left, Node* right, const Type* t) {
195
195
case T_ADDRESS: return new CMovePNode (bol, left, right, t->is_ptr ());
196
196
case T_NARROWOOP: return new CMoveNNode (bol, left, right, t);
197
197
default :
198
- ShouldNotReachHere ();
199
- return nullptr ;
198
+ ShouldNotReachHere ();
199
+ return nullptr ;
200
+ }
201
+ }
202
+
203
+ bool CMoveNode::supported (const Type* t) {
204
+ switch (t->basic_type ()) {
205
+ case T_INT: return Matcher::match_rule_supported (Op_CMoveI);
206
+ case T_FLOAT: return Matcher::match_rule_supported (Op_CMoveF);
207
+ case T_DOUBLE: return Matcher::match_rule_supported (Op_CMoveD);
208
+ case T_LONG: return Matcher::match_rule_supported (Op_CMoveL);
209
+ case T_OBJECT: return Matcher::match_rule_supported (Op_CMoveP);
210
+ case T_ADDRESS: return Matcher::match_rule_supported (Op_CMoveP);
211
+ case T_NARROWOOP: return Matcher::match_rule_supported (Op_CMoveN);
212
+ default :
213
+ ShouldNotReachHere ();
214
+ return false ;
200
215
}
201
216
}
202
217
0 commit comments