src/share/vm/opto/movenode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
8034812 Cdiff src/share/vm/opto/movenode.cpp
src/share/vm/opto/movenode.cpp
Print this page
*** 158,174 ****
//------------------------------make-------------------------------------------
// Make a correctly-flavored CMove. Since _type is directly determined
// from the inputs we do not need to specify it here.
CMoveNode *CMoveNode::make( Compile *C, Node *c, Node *bol, Node *left, Node *right, const Type *t ) {
switch( t->basic_type() ) {
! case T_INT: return new (C) CMoveINode( bol, left, right, t->is_int() );
! case T_FLOAT: return new (C) CMoveFNode( bol, left, right, t );
! case T_DOUBLE: return new (C) CMoveDNode( bol, left, right, t );
! case T_LONG: return new (C) CMoveLNode( bol, left, right, t->is_long() );
! case T_OBJECT: return new (C) CMovePNode( c, bol, left, right, t->is_oopptr() );
! case T_ADDRESS: return new (C) CMovePNode( c, bol, left, right, t->is_ptr() );
! case T_NARROWOOP: return new (C) CMoveNNode( c, bol, left, right, t );
default:
ShouldNotReachHere();
return NULL;
}
}
--- 158,174 ----
//------------------------------make-------------------------------------------
// Make a correctly-flavored CMove. Since _type is directly determined
// from the inputs we do not need to specify it here.
CMoveNode *CMoveNode::make( Compile *C, Node *c, Node *bol, Node *left, Node *right, const Type *t ) {
switch( t->basic_type() ) {
! case T_INT: return new CMoveINode( bol, left, right, t->is_int() );
! case T_FLOAT: return new CMoveFNode( bol, left, right, t );
! case T_DOUBLE: return new CMoveDNode( bol, left, right, t );
! case T_LONG: return new CMoveLNode( bol, left, right, t->is_long() );
! case T_OBJECT: return new CMovePNode( c, bol, left, right, t->is_oopptr() );
! case T_ADDRESS: return new CMovePNode( c, bol, left, right, t->is_ptr() );
! case T_NARROWOOP: return new CMoveNNode( c, bol, left, right, t );
default:
ShouldNotReachHere();
return NULL;
}
}
*** 231,243 ****
// Convert to a bool (flipped)
// Build int->bool conversion
#ifndef PRODUCT
if( PrintOpto ) tty->print_cr("CMOV to I2B");
#endif
! Node *n = new (phase->C) Conv2BNode( cmp->in(1) );
if( flip )
! n = new (phase->C) XorINode( phase->transform(n), phase->intcon(1) );
return n;
}
//=============================================================================
--- 231,243 ----
// Convert to a bool (flipped)
// Build int->bool conversion
#ifndef PRODUCT
if( PrintOpto ) tty->print_cr("CMOV to I2B");
#endif
! Node *n = new Conv2BNode( cmp->in(1) );
if( flip )
! n = new XorINode( phase->transform(n), phase->intcon(1) );
return n;
}
//=============================================================================
*** 287,299 ****
// Allow only SubF(0,X) and fail out for all others; NegF is not OK
if( sub->Opcode() != Op_SubF ||
sub->in(2) != X ||
phase->type(sub->in(1)) != TypeF::ZERO ) return NULL;
! Node *abs = new (phase->C) AbsFNode( X );
if( flip )
! abs = new (phase->C) SubFNode(sub->in(1), phase->transform(abs));
return abs;
}
//=============================================================================
--- 287,299 ----
// Allow only SubF(0,X) and fail out for all others; NegF is not OK
if( sub->Opcode() != Op_SubF ||
sub->in(2) != X ||
phase->type(sub->in(1)) != TypeF::ZERO ) return NULL;
! Node *abs = new AbsFNode( X );
if( flip )
! abs = new SubFNode(sub->in(1), phase->transform(abs));
return abs;
}
//=============================================================================
*** 343,355 ****
// Allow only SubD(0,X) and fail out for all others; NegD is not OK
if( sub->Opcode() != Op_SubD ||
sub->in(2) != X ||
phase->type(sub->in(1)) != TypeD::ZERO ) return NULL;
! Node *abs = new (phase->C) AbsDNode( X );
if( flip )
! abs = new (phase->C) SubDNode(sub->in(1), phase->transform(abs));
return abs;
}
//------------------------------Value------------------------------------------
--- 343,355 ----
// Allow only SubD(0,X) and fail out for all others; NegD is not OK
if( sub->Opcode() != Op_SubD ||
sub->in(2) != X ||
phase->type(sub->in(1)) != TypeD::ZERO ) return NULL;
! Node *abs = new AbsDNode( X );
if( flip )
! abs = new SubDNode(sub->in(1), phase->transform(abs));
return abs;
}
//------------------------------Value------------------------------------------
src/share/vm/opto/movenode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File