< prev index next >

src/hotspot/share/c1/c1_LIRGenerator.cpp

Print this page


   1 /*
   2  * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.

   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


3051     if (os::is_MP()) __ membar();
3052     break;
3053   case vmIntrinsics::_onSpinWait:
3054     __ on_spin_wait();
3055     break;
3056   case vmIntrinsics::_Reference_get:
3057     do_Reference_get(x);
3058     break;
3059 
3060   case vmIntrinsics::_updateCRC32:
3061   case vmIntrinsics::_updateBytesCRC32:
3062   case vmIntrinsics::_updateByteBufferCRC32:
3063     do_update_CRC32(x);
3064     break;
3065 
3066   case vmIntrinsics::_updateBytesCRC32C:
3067   case vmIntrinsics::_updateDirectByteBufferCRC32C:
3068     do_update_CRC32C(x);
3069     break;
3070 























3071   case vmIntrinsics::_vectorizedMismatch:
3072     do_vectorizedMismatch(x);
3073     break;
3074 
3075   default: ShouldNotReachHere(); break;
3076   }
3077 }
3078 
3079 void LIRGenerator::profile_arguments(ProfileCall* x) {
3080   if (compilation()->profile_arguments()) {
3081     int bci = x->bci_of_invoke();
3082     ciMethodData* md = x->method()->method_data_or_null();
3083     assert(md != NULL, "Sanity");
3084     ciProfileData* data = md->bci_to_data(bci);
3085     if (data != NULL) {
3086       if ((data->is_CallTypeData() && data->as_CallTypeData()->has_arguments()) ||
3087           (data->is_VirtualCallTypeData() && data->as_VirtualCallTypeData()->has_arguments())) {
3088         ByteSize extra = data->is_CallTypeData() ? CallTypeData::args_data_offset() : VirtualCallTypeData::args_data_offset();
3089         int base_offset = md->byte_offset_of_slot(data, extra);
3090         LIR_Opr mdp = LIR_OprFact::illegalOpr;


   1 /*
   2  * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * Copyright (c) 2015-2018, Azul Systems, Inc. All rights reserved.
   4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   5  *
   6  * This code is free software; you can redistribute it and/or modify it
   7  * under the terms of the GNU General Public License version 2 only, as
   8  * published by the Free Software Foundation.
   9  *
  10  * This code is distributed in the hope that it will be useful, but WITHOUT
  11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13  * version 2 for more details (a copy is included in the LICENSE file that
  14  * accompanied this code).
  15  *
  16  * You should have received a copy of the GNU General Public License version
  17  * 2 along with this work; if not, write to the Free Software Foundation,
  18  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  19  *
  20  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  21  * or visit www.oracle.com if you need additional information or have any
  22  * questions.
  23  *


3052     if (os::is_MP()) __ membar();
3053     break;
3054   case vmIntrinsics::_onSpinWait:
3055     __ on_spin_wait();
3056     break;
3057   case vmIntrinsics::_Reference_get:
3058     do_Reference_get(x);
3059     break;
3060 
3061   case vmIntrinsics::_updateCRC32:
3062   case vmIntrinsics::_updateBytesCRC32:
3063   case vmIntrinsics::_updateByteBufferCRC32:
3064     do_update_CRC32(x);
3065     break;
3066 
3067   case vmIntrinsics::_updateBytesCRC32C:
3068   case vmIntrinsics::_updateDirectByteBufferCRC32C:
3069     do_update_CRC32C(x);
3070     break;
3071 
3072 #ifdef AARCH32
3073   case vmIntrinsics::_aescrypt_encryptBlock:
3074   case vmIntrinsics::_aescrypt_decryptBlock:
3075     do_aescrypt_block(x);
3076     break;
3077 
3078   case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt:
3079   case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt:
3080     do_aescrypt_cbc(x);
3081     break;
3082 
3083   case vmIntrinsics::_sha_implCompress:
3084   case vmIntrinsics::_sha2_implCompress:
3085   case vmIntrinsics::_sha5_implCompress:
3086     do_sha(x);
3087     break;
3088 
3089   case vmIntrinsics::_montgomeryMultiply:
3090   case vmIntrinsics::_montgomerySquare:
3091     do_montgomery_intrinsic(x);
3092     break;
3093 #endif
3094 
3095   case vmIntrinsics::_vectorizedMismatch:
3096     do_vectorizedMismatch(x);
3097     break;
3098 
3099   default: ShouldNotReachHere(); break;
3100   }
3101 }
3102 
3103 void LIRGenerator::profile_arguments(ProfileCall* x) {
3104   if (compilation()->profile_arguments()) {
3105     int bci = x->bci_of_invoke();
3106     ciMethodData* md = x->method()->method_data_or_null();
3107     assert(md != NULL, "Sanity");
3108     ciProfileData* data = md->bci_to_data(bci);
3109     if (data != NULL) {
3110       if ((data->is_CallTypeData() && data->as_CallTypeData()->has_arguments()) ||
3111           (data->is_VirtualCallTypeData() && data->as_VirtualCallTypeData()->has_arguments())) {
3112         ByteSize extra = data->is_CallTypeData() ? CallTypeData::args_data_offset() : VirtualCallTypeData::args_data_offset();
3113         int base_offset = md->byte_offset_of_slot(data, extra);
3114         LIR_Opr mdp = LIR_OprFact::illegalOpr;


< prev index next >