< prev index next >

src/hotspot/share/c1/c1_LIRGenerator.cpp

Print this page




3075     break;
3076   case vmIntrinsics::_Reference_get:
3077     do_Reference_get(x);
3078     break;
3079 
3080   case vmIntrinsics::_updateCRC32:
3081   case vmIntrinsics::_updateBytesCRC32:
3082   case vmIntrinsics::_updateByteBufferCRC32:
3083     do_update_CRC32(x);
3084     break;
3085 
3086   case vmIntrinsics::_updateBytesCRC32C:
3087   case vmIntrinsics::_updateDirectByteBufferCRC32C:
3088     do_update_CRC32C(x);
3089     break;
3090 
3091   case vmIntrinsics::_vectorizedMismatch:
3092     do_vectorizedMismatch(x);
3093     break;
3094 






















3095   default: ShouldNotReachHere(); break;
3096   }





3097 }
3098 
3099 void LIRGenerator::profile_arguments(ProfileCall* x) {
3100   if (compilation()->profile_arguments()) {
3101     int bci = x->bci_of_invoke();
3102     ciMethodData* md = x->method()->method_data_or_null();
3103     assert(md != NULL, "Sanity");
3104     ciProfileData* data = md->bci_to_data(bci);
3105     if (data != NULL) {
3106       if ((data->is_CallTypeData() && data->as_CallTypeData()->has_arguments()) ||
3107           (data->is_VirtualCallTypeData() && data->as_VirtualCallTypeData()->has_arguments())) {
3108         ByteSize extra = data->is_CallTypeData() ? CallTypeData::args_data_offset() : VirtualCallTypeData::args_data_offset();
3109         int base_offset = md->byte_offset_of_slot(data, extra);
3110         LIR_Opr mdp = LIR_OprFact::illegalOpr;
3111         ciTypeStackSlotEntries* args = data->is_CallTypeData() ? ((ciCallTypeData*)data)->args() : ((ciVirtualCallTypeData*)data)->args();
3112 
3113         Bytecodes::Code bc = x->method()->java_code_at_bci(bci);
3114         int start = 0;
3115         int stop = data->is_CallTypeData() ? ((ciCallTypeData*)data)->number_of_arguments() : ((ciVirtualCallTypeData*)data)->number_of_arguments();
3116         if (x->callee()->is_loaded() && x->callee()->is_static() && Bytecodes::has_receiver(bc)) {




3075     break;
3076   case vmIntrinsics::_Reference_get:
3077     do_Reference_get(x);
3078     break;
3079 
3080   case vmIntrinsics::_updateCRC32:
3081   case vmIntrinsics::_updateBytesCRC32:
3082   case vmIntrinsics::_updateByteBufferCRC32:
3083     do_update_CRC32(x);
3084     break;
3085 
3086   case vmIntrinsics::_updateBytesCRC32C:
3087   case vmIntrinsics::_updateDirectByteBufferCRC32C:
3088     do_update_CRC32C(x);
3089     break;
3090 
3091   case vmIntrinsics::_vectorizedMismatch:
3092     do_vectorizedMismatch(x);
3093     break;
3094 
3095   case vmIntrinsics::_Continuation_getFP:
3096     do_continuation_getFP(x);
3097     break;
3098   case vmIntrinsics::_Continuation_getSP:
3099     do_continuation_getSP(x);
3100     break;
3101   case vmIntrinsics::_Continuation_getPC:
3102     do_continuation_getPC(x);
3103     break;
3104   case vmIntrinsics::_Continuation_doContinue:
3105     do_continuation_doContinue(x);
3106     break;
3107   case vmIntrinsics::_Continuation_doYield:
3108     do_continuation_doYield(x);
3109     break;
3110   case vmIntrinsics::_Continuation_jump:
3111     do_continuation_jump(x);
3112     break;
3113   case vmIntrinsics::_Continuation_runLevel:
3114     do_continuation_runLevel(x);
3115     break;
3116 
3117   default: ShouldNotReachHere(); break;
3118   }
3119 }
3120 
3121 void LIRGenerator::do_continuation_runLevel(Intrinsic* x) {
3122   LIR_Opr result = rlock_result(x);
3123   __ move(LIR_OprFact::intConst(1), result);
3124 }
3125 
3126 void LIRGenerator::profile_arguments(ProfileCall* x) {
3127   if (compilation()->profile_arguments()) {
3128     int bci = x->bci_of_invoke();
3129     ciMethodData* md = x->method()->method_data_or_null();
3130     assert(md != NULL, "Sanity");
3131     ciProfileData* data = md->bci_to_data(bci);
3132     if (data != NULL) {
3133       if ((data->is_CallTypeData() && data->as_CallTypeData()->has_arguments()) ||
3134           (data->is_VirtualCallTypeData() && data->as_VirtualCallTypeData()->has_arguments())) {
3135         ByteSize extra = data->is_CallTypeData() ? CallTypeData::args_data_offset() : VirtualCallTypeData::args_data_offset();
3136         int base_offset = md->byte_offset_of_slot(data, extra);
3137         LIR_Opr mdp = LIR_OprFact::illegalOpr;
3138         ciTypeStackSlotEntries* args = data->is_CallTypeData() ? ((ciCallTypeData*)data)->args() : ((ciVirtualCallTypeData*)data)->args();
3139 
3140         Bytecodes::Code bc = x->method()->java_code_at_bci(bci);
3141         int start = 0;
3142         int stop = data->is_CallTypeData() ? ((ciCallTypeData*)data)->number_of_arguments() : ((ciVirtualCallTypeData*)data)->number_of_arguments();
3143         if (x->callee()->is_loaded() && x->callee()->is_static() && Bytecodes::has_receiver(bc)) {


< prev index next >