< prev index next >
src/hotspot/share/opto/parse2.cpp
Print this page
rev 54102 : 8261812: C2 compilation fails with assert(!had_error) failed: bad dominance
Reviewed-by: kvn, thartmann
@@ -2626,23 +2626,22 @@
push_pair(b);
break;
case Bytecodes::_i2b:
// Sign extend
a = pop();
- a = _gvn.transform( new LShiftINode(a,_gvn.intcon(24)) );
- a = _gvn.transform( new RShiftINode(a,_gvn.intcon(24)) );
- push( a );
+ a = Compile::narrow_value(T_BYTE, a, NULL, &_gvn, true);
+ push(a);
break;
case Bytecodes::_i2s:
a = pop();
- a = _gvn.transform( new LShiftINode(a,_gvn.intcon(16)) );
- a = _gvn.transform( new RShiftINode(a,_gvn.intcon(16)) );
- push( a );
+ a = Compile::narrow_value(T_SHORT, a, NULL, &_gvn, true);
+ push(a);
break;
case Bytecodes::_i2c:
a = pop();
- push( _gvn.transform( new AndINode(a,_gvn.intcon(0xFFFF)) ) );
+ a = Compile::narrow_value(T_CHAR, a, NULL, &_gvn, true);
+ push(a);
break;
case Bytecodes::_i2f:
a = pop();
b = _gvn.transform( new ConvI2FNode(a) ) ;
< prev index next >