< prev index next >

src/cpu/x86/vm/x86_32.ad

Print this page




1192 
1193   // --------------------------------------------------------------------
1194   // Check for second bits still needing moving.
1195   if( src_second == dst_second )
1196     return size;               // Self copy; no move
1197   assert( src_second_rc != rc_bad && dst_second_rc != rc_bad, "src_second & dst_second cannot be Bad" );
1198 
1199   // Check for second word int-int move
1200   if( src_second_rc == rc_int && dst_second_rc == rc_int )
1201     return impl_mov_helper(cbuf,do_size,src_second,dst_second,size, st);
1202 
1203   // Check for second word integer store
1204   if( src_second_rc == rc_int && dst_second_rc == rc_stack )
1205     return impl_helper(cbuf,do_size,false,ra_->reg2offset(dst_second),src_second,0x89,"MOV ",size, st);
1206 
1207   // Check for second word integer load
1208   if( dst_second_rc == rc_int && src_second_rc == rc_stack )
1209     return impl_helper(cbuf,do_size,true ,ra_->reg2offset(src_second),dst_second,0x8B,"MOV ",size, st);
1210 
1211 
1212   Unimplemented();
1213   return 0; // Mute compiler
1214 }
1215 
1216 #ifndef PRODUCT
1217 void MachSpillCopyNode::format(PhaseRegAlloc *ra_, outputStream* st) const {
1218   implementation( NULL, ra_, false, st );
1219 }
1220 #endif
1221 
1222 void MachSpillCopyNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
1223   implementation( &cbuf, ra_, false, NULL );
1224 }
1225 
1226 uint MachSpillCopyNode::size(PhaseRegAlloc *ra_) const {
1227   return implementation( NULL, ra_, true, NULL );
1228 }
1229 
1230 
1231 //=============================================================================
1232 #ifndef PRODUCT
1233 void BoxLockNode::format( PhaseRegAlloc *ra_, outputStream* st ) const {




1192 
1193   // --------------------------------------------------------------------
1194   // Check for second bits still needing moving.
1195   if( src_second == dst_second )
1196     return size;               // Self copy; no move
1197   assert( src_second_rc != rc_bad && dst_second_rc != rc_bad, "src_second & dst_second cannot be Bad" );
1198 
1199   // Check for second word int-int move
1200   if( src_second_rc == rc_int && dst_second_rc == rc_int )
1201     return impl_mov_helper(cbuf,do_size,src_second,dst_second,size, st);
1202 
1203   // Check for second word integer store
1204   if( src_second_rc == rc_int && dst_second_rc == rc_stack )
1205     return impl_helper(cbuf,do_size,false,ra_->reg2offset(dst_second),src_second,0x89,"MOV ",size, st);
1206 
1207   // Check for second word integer load
1208   if( dst_second_rc == rc_int && src_second_rc == rc_stack )
1209     return impl_helper(cbuf,do_size,true ,ra_->reg2offset(src_second),dst_second,0x8B,"MOV ",size, st);
1210 
1211 
1212   fatal("Unimplemented");

1213 }
1214 
1215 #ifndef PRODUCT
1216 void MachSpillCopyNode::format(PhaseRegAlloc *ra_, outputStream* st) const {
1217   implementation( NULL, ra_, false, st );
1218 }
1219 #endif
1220 
1221 void MachSpillCopyNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
1222   implementation( &cbuf, ra_, false, NULL );
1223 }
1224 
1225 uint MachSpillCopyNode::size(PhaseRegAlloc *ra_) const {
1226   return implementation( NULL, ra_, true, NULL );
1227 }
1228 
1229 
1230 //=============================================================================
1231 #ifndef PRODUCT
1232 void BoxLockNode::format( PhaseRegAlloc *ra_, outputStream* st ) const {


< prev index next >