< prev index next >

src/cpu/x86/vm/x86_32.ad

Print this page




1233   // --------------------------------------------------------------------
1234   // Check for second bits still needing moving.
1235   if( src_second == dst_second )
1236     return size;               // Self copy; no move
1237   assert( src_second_rc != rc_bad && dst_second_rc != rc_bad, "src_second & dst_second cannot be Bad" );
1238 
1239   // Check for second word int-int move
1240   if( src_second_rc == rc_int && dst_second_rc == rc_int )
1241     return impl_mov_helper(cbuf,do_size,src_second,dst_second,size, st);
1242 
1243   // Check for second word integer store
1244   if( src_second_rc == rc_int && dst_second_rc == rc_stack )
1245     return impl_helper(cbuf,do_size,false,ra_->reg2offset(dst_second),src_second,0x89,"MOV ",size, st);
1246 
1247   // Check for second word integer load
1248   if( dst_second_rc == rc_int && src_second_rc == rc_stack )
1249     return impl_helper(cbuf,do_size,true ,ra_->reg2offset(src_second),dst_second,0x8B,"MOV ",size, st);
1250 
1251 
1252   Unimplemented();

1253 }
1254 
1255 #ifndef PRODUCT
1256 void MachSpillCopyNode::format(PhaseRegAlloc *ra_, outputStream* st) const {
1257   implementation( NULL, ra_, false, st );
1258 }
1259 #endif
1260 
1261 void MachSpillCopyNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
1262   implementation( &cbuf, ra_, false, NULL );
1263 }
1264 
1265 uint MachSpillCopyNode::size(PhaseRegAlloc *ra_) const {
1266   return implementation( NULL, ra_, true, NULL );
1267 }
1268 
1269 
1270 //=============================================================================
1271 #ifndef PRODUCT
1272 void BoxLockNode::format( PhaseRegAlloc *ra_, outputStream* st ) const {




1233   // --------------------------------------------------------------------
1234   // Check for second bits still needing moving.
1235   if( src_second == dst_second )
1236     return size;               // Self copy; no move
1237   assert( src_second_rc != rc_bad && dst_second_rc != rc_bad, "src_second & dst_second cannot be Bad" );
1238 
1239   // Check for second word int-int move
1240   if( src_second_rc == rc_int && dst_second_rc == rc_int )
1241     return impl_mov_helper(cbuf,do_size,src_second,dst_second,size, st);
1242 
1243   // Check for second word integer store
1244   if( src_second_rc == rc_int && dst_second_rc == rc_stack )
1245     return impl_helper(cbuf,do_size,false,ra_->reg2offset(dst_second),src_second,0x89,"MOV ",size, st);
1246 
1247   // Check for second word integer load
1248   if( dst_second_rc == rc_int && src_second_rc == rc_stack )
1249     return impl_helper(cbuf,do_size,true ,ra_->reg2offset(src_second),dst_second,0x8B,"MOV ",size, st);
1250 
1251 
1252   Unimplemented();
1253   return 0; // Mute compiler
1254 }
1255 
1256 #ifndef PRODUCT
1257 void MachSpillCopyNode::format(PhaseRegAlloc *ra_, outputStream* st) const {
1258   implementation( NULL, ra_, false, st );
1259 }
1260 #endif
1261 
1262 void MachSpillCopyNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
1263   implementation( &cbuf, ra_, false, NULL );
1264 }
1265 
1266 uint MachSpillCopyNode::size(PhaseRegAlloc *ra_) const {
1267   return implementation( NULL, ra_, true, NULL );
1268 }
1269 
1270 
1271 //=============================================================================
1272 #ifndef PRODUCT
1273 void BoxLockNode::format( PhaseRegAlloc *ra_, outputStream* st ) const {


< prev index next >