< prev index next >

src/hotspot/share/c1/c1_LIR.cpp

Print this page


 804 
 805 
 806 // LIR_OpLock
 807     case lir_lock:
 808     case lir_unlock: {
 809       assert(op->as_OpLock() != NULL, "must be");
 810       LIR_OpLock* opLock = (LIR_OpLock*)op;
 811 
 812       if (opLock->_info)                          do_info(opLock->_info);
 813 
 814       // TODO: check if these operands really have to be temp
 815       // (or if input is sufficient). This may have influence on the oop map!
 816       assert(opLock->_lock->is_valid(), "used");  do_temp(opLock->_lock);
 817       assert(opLock->_hdr->is_valid(),  "used");  do_temp(opLock->_hdr);
 818       assert(opLock->_obj->is_valid(),  "used");  do_temp(opLock->_obj);
 819 
 820       if (opLock->_scratch->is_valid())           do_temp(opLock->_scratch);
 821       assert(opLock->_result->is_illegal(), "unused");
 822 
 823       do_stub(opLock->_stub);

 824 
 825       break;
 826     }
 827 
 828 
 829 // LIR_OpDelay
 830     case lir_delay_slot: {
 831       assert(op->as_OpDelay() != NULL, "must be");
 832       LIR_OpDelay* opDelay = (LIR_OpDelay*)op;
 833 
 834       visit(opDelay->delay_op());
 835       break;
 836     }
 837 
 838 // LIR_OpTypeCheck
 839     case lir_instanceof:
 840     case lir_checkcast:
 841     case lir_store_check: {
 842       assert(op->as_OpTypeCheck() != NULL, "must be");
 843       LIR_OpTypeCheck* opTypeCheck = (LIR_OpTypeCheck*)op;


1040 void LIR_OpTypeCheck::emit_code(LIR_Assembler* masm) {
1041   masm->emit_opTypeCheck(this);
1042   if (stub()) {
1043     masm->append_code_stub(stub());
1044   }
1045 }
1046 
1047 void LIR_OpCompareAndSwap::emit_code(LIR_Assembler* masm) {
1048   masm->emit_compare_and_swap(this);
1049 }
1050 
1051 void LIR_Op3::emit_code(LIR_Assembler* masm) {
1052   masm->emit_op3(this);
1053 }
1054 
1055 void LIR_OpLock::emit_code(LIR_Assembler* masm) {
1056   masm->emit_lock(this);
1057   if (stub()) {
1058     masm->append_code_stub(stub());
1059   }



1060 }
1061 
1062 #ifdef ASSERT
1063 void LIR_OpAssert::emit_code(LIR_Assembler* masm) {
1064   masm->emit_assert(this);
1065 }
1066 #endif
1067 
1068 void LIR_OpDelay::emit_code(LIR_Assembler* masm) {
1069   masm->emit_delay(this);
1070 }
1071 
1072 void LIR_OpProfileCall::emit_code(LIR_Assembler* masm) {
1073   masm->emit_profile_call(this);
1074 }
1075 
1076 void LIR_OpProfileType::emit_code(LIR_Assembler* masm) {
1077   masm->emit_profile_type(this);
1078 }
1079 


1341                     tmp));
1342 }
1343 
1344 
1345 void LIR_List::unsigned_shift_right(LIR_Opr value, LIR_Opr count, LIR_Opr dst, LIR_Opr tmp) {
1346  append(new LIR_Op2(
1347                     lir_ushr,
1348                     value,
1349                     count,
1350                     dst,
1351                     tmp));
1352 }
1353 
1354 void LIR_List::fcmp2int(LIR_Opr left, LIR_Opr right, LIR_Opr dst, bool is_unordered_less) {
1355   append(new LIR_Op2(is_unordered_less ? lir_ucmp_fd2i : lir_cmp_fd2i,
1356                      left,
1357                      right,
1358                      dst));
1359 }
1360 
1361 void LIR_List::lock_object(LIR_Opr hdr, LIR_Opr obj, LIR_Opr lock, LIR_Opr scratch, CodeStub* stub, CodeEmitInfo* info) {
1362   append(new LIR_OpLock(
1363                     lir_lock,
1364                     hdr,
1365                     obj,
1366                     lock,
1367                     scratch,
1368                     stub,
1369                     info));

1370 }
1371 
1372 void LIR_List::unlock_object(LIR_Opr hdr, LIR_Opr obj, LIR_Opr lock, LIR_Opr scratch, CodeStub* stub) {
1373   append(new LIR_OpLock(
1374                     lir_unlock,
1375                     hdr,
1376                     obj,
1377                     lock,
1378                     scratch,
1379                     stub,
1380                     NULL));
1381 }
1382 
1383 
1384 void check_LIR() {
1385   // cannot do the proper checking as PRODUCT and other modes return different results
1386   // guarantee(sizeof(LIR_OprDesc) == wordSize, "may not have a v-table");
1387 }
1388 
1389 




 804 
 805 
 806 // LIR_OpLock
 807     case lir_lock:
 808     case lir_unlock: {
 809       assert(op->as_OpLock() != NULL, "must be");
 810       LIR_OpLock* opLock = (LIR_OpLock*)op;
 811 
 812       if (opLock->_info)                          do_info(opLock->_info);
 813 
 814       // TODO: check if these operands really have to be temp
 815       // (or if input is sufficient). This may have influence on the oop map!
 816       assert(opLock->_lock->is_valid(), "used");  do_temp(opLock->_lock);
 817       assert(opLock->_hdr->is_valid(),  "used");  do_temp(opLock->_hdr);
 818       assert(opLock->_obj->is_valid(),  "used");  do_temp(opLock->_obj);
 819 
 820       if (opLock->_scratch->is_valid())           do_temp(opLock->_scratch);
 821       assert(opLock->_result->is_illegal(), "unused");
 822 
 823       do_stub(opLock->_stub);
 824       do_stub(opLock->_throw_imse_stub);
 825 
 826       break;
 827     }
 828 
 829 
 830 // LIR_OpDelay
 831     case lir_delay_slot: {
 832       assert(op->as_OpDelay() != NULL, "must be");
 833       LIR_OpDelay* opDelay = (LIR_OpDelay*)op;
 834 
 835       visit(opDelay->delay_op());
 836       break;
 837     }
 838 
 839 // LIR_OpTypeCheck
 840     case lir_instanceof:
 841     case lir_checkcast:
 842     case lir_store_check: {
 843       assert(op->as_OpTypeCheck() != NULL, "must be");
 844       LIR_OpTypeCheck* opTypeCheck = (LIR_OpTypeCheck*)op;


1041 void LIR_OpTypeCheck::emit_code(LIR_Assembler* masm) {
1042   masm->emit_opTypeCheck(this);
1043   if (stub()) {
1044     masm->append_code_stub(stub());
1045   }
1046 }
1047 
1048 void LIR_OpCompareAndSwap::emit_code(LIR_Assembler* masm) {
1049   masm->emit_compare_and_swap(this);
1050 }
1051 
1052 void LIR_Op3::emit_code(LIR_Assembler* masm) {
1053   masm->emit_op3(this);
1054 }
1055 
1056 void LIR_OpLock::emit_code(LIR_Assembler* masm) {
1057   masm->emit_lock(this);
1058   if (stub()) {
1059     masm->append_code_stub(stub());
1060   }
1061   if (throw_imse_stub()) {
1062     masm->append_code_stub(throw_imse_stub());
1063   }
1064 }
1065 
1066 #ifdef ASSERT
1067 void LIR_OpAssert::emit_code(LIR_Assembler* masm) {
1068   masm->emit_assert(this);
1069 }
1070 #endif
1071 
1072 void LIR_OpDelay::emit_code(LIR_Assembler* masm) {
1073   masm->emit_delay(this);
1074 }
1075 
1076 void LIR_OpProfileCall::emit_code(LIR_Assembler* masm) {
1077   masm->emit_profile_call(this);
1078 }
1079 
1080 void LIR_OpProfileType::emit_code(LIR_Assembler* masm) {
1081   masm->emit_profile_type(this);
1082 }
1083 


1345                     tmp));
1346 }
1347 
1348 
1349 void LIR_List::unsigned_shift_right(LIR_Opr value, LIR_Opr count, LIR_Opr dst, LIR_Opr tmp) {
1350  append(new LIR_Op2(
1351                     lir_ushr,
1352                     value,
1353                     count,
1354                     dst,
1355                     tmp));
1356 }
1357 
1358 void LIR_List::fcmp2int(LIR_Opr left, LIR_Opr right, LIR_Opr dst, bool is_unordered_less) {
1359   append(new LIR_Op2(is_unordered_less ? lir_ucmp_fd2i : lir_cmp_fd2i,
1360                      left,
1361                      right,
1362                      dst));
1363 }
1364 
1365 void LIR_List::lock_object(LIR_Opr hdr, LIR_Opr obj, LIR_Opr lock, LIR_Opr scratch, CodeStub* stub, CodeEmitInfo* info, CodeStub* throw_imse_stub) {
1366   append(new LIR_OpLock(
1367                     lir_lock,
1368                     hdr,
1369                     obj,
1370                     lock,
1371                     scratch,
1372                     stub,
1373                     info,
1374                     throw_imse_stub));
1375 }
1376 
1377 void LIR_List::unlock_object(LIR_Opr hdr, LIR_Opr obj, LIR_Opr lock, LIR_Opr scratch, CodeStub* stub) {
1378   append(new LIR_OpLock(
1379                     lir_unlock,
1380                     hdr,
1381                     obj,
1382                     lock,
1383                     scratch,
1384                     stub,
1385                     NULL));
1386 }
1387 
1388 
1389 void check_LIR() {
1390   // cannot do the proper checking as PRODUCT and other modes return different results
1391   // guarantee(sizeof(LIR_OprDesc) == wordSize, "may not have a v-table");
1392 }
1393 
1394 


< prev index next >