src/share/vm/c1/c1_LIRGenerator.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7088419 Sdiff src/share/vm/c1

src/share/vm/c1/c1_LIRGenerator.cpp

Print this page




2977     do_CompareAndSwap(x, intType);
2978     break;
2979   case vmIntrinsics::_compareAndSwapLong:
2980     do_CompareAndSwap(x, longType);
2981     break;
2982 
2983   case vmIntrinsics::_loadFence :
2984     if (os::is_MP()) __ membar_acquire();
2985     break;
2986   case vmIntrinsics::_storeFence:
2987     if (os::is_MP()) __ membar_release();
2988     break;
2989   case vmIntrinsics::_fullFence :
2990     if (os::is_MP()) __ membar();
2991     break;
2992 
2993   case vmIntrinsics::_Reference_get:
2994     do_Reference_get(x);
2995     break;
2996 






2997   default: ShouldNotReachHere(); break;
2998   }
2999 }
3000 
3001 void LIRGenerator::do_ProfileCall(ProfileCall* x) {
3002   // Need recv in a temporary register so it interferes with the other temporaries
3003   LIR_Opr recv = LIR_OprFact::illegalOpr;
3004   LIR_Opr mdo = new_register(T_OBJECT);
3005   // tmp is used to hold the counters on SPARC
3006   LIR_Opr tmp = new_pointer_register();
3007   if (x->recv() != NULL) {
3008     LIRItem value(x->recv(), this);
3009     value.load_item();
3010     recv = new_register(T_OBJECT);
3011     __ move(value.result(), recv);
3012   }
3013   __ profile_call(x->method(), x->bci_of_invoke(), x->callee(), mdo, recv, tmp, x->known_holder());
3014 }
3015 
3016 void LIRGenerator::do_ProfileInvoke(ProfileInvoke* x) {




2977     do_CompareAndSwap(x, intType);
2978     break;
2979   case vmIntrinsics::_compareAndSwapLong:
2980     do_CompareAndSwap(x, longType);
2981     break;
2982 
2983   case vmIntrinsics::_loadFence :
2984     if (os::is_MP()) __ membar_acquire();
2985     break;
2986   case vmIntrinsics::_storeFence:
2987     if (os::is_MP()) __ membar_release();
2988     break;
2989   case vmIntrinsics::_fullFence :
2990     if (os::is_MP()) __ membar();
2991     break;
2992 
2993   case vmIntrinsics::_Reference_get:
2994     do_Reference_get(x);
2995     break;
2996 
2997   case vmIntrinsics::_updateCRC32:
2998   case vmIntrinsics::_updateBytesCRC32:
2999   case vmIntrinsics::_updateByteBufferCRC32:
3000     do_update_CRC32(x);
3001     break;
3002 
3003   default: ShouldNotReachHere(); break;
3004   }
3005 }
3006 
3007 void LIRGenerator::do_ProfileCall(ProfileCall* x) {
3008   // Need recv in a temporary register so it interferes with the other temporaries
3009   LIR_Opr recv = LIR_OprFact::illegalOpr;
3010   LIR_Opr mdo = new_register(T_OBJECT);
3011   // tmp is used to hold the counters on SPARC
3012   LIR_Opr tmp = new_pointer_register();
3013   if (x->recv() != NULL) {
3014     LIRItem value(x->recv(), this);
3015     value.load_item();
3016     recv = new_register(T_OBJECT);
3017     __ move(value.result(), recv);
3018   }
3019   __ profile_call(x->method(), x->bci_of_invoke(), x->callee(), mdo, recv, tmp, x->known_holder());
3020 }
3021 
3022 void LIRGenerator::do_ProfileInvoke(ProfileInvoke* x) {


src/share/vm/c1/c1_LIRGenerator.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File