< prev index next >

src/hotspot/cpu/arm/interpreterRT_arm.cpp

Print this page




   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  *
  23  */
  24 
  25 #include "precompiled.hpp"

  26 #include "interpreter/interpreter.hpp"
  27 #include "interpreter/interpreterRuntime.hpp"
  28 #include "memory/allocation.inline.hpp"
  29 #include "memory/universe.hpp"
  30 #include "oops/method.hpp"
  31 #include "oops/oop.inline.hpp"
  32 #include "runtime/handles.inline.hpp"
  33 #include "runtime/icache.hpp"
  34 #include "runtime/interfaceSupport.inline.hpp"
  35 #include "runtime/signature.hpp"
  36 
  37 #define __ _masm->















  38 
  39 #ifdef SHARING_FAST_NATIVE_FINGERPRINTS
  40 // mapping from SignatureIterator param to (common) type of parsing
  41 static const u1 shared_type[] = {
  42   (u1) SignatureIterator::int_parm, // bool
  43   (u1) SignatureIterator::int_parm, // byte
  44   (u1) SignatureIterator::int_parm, // char
  45   (u1) SignatureIterator::int_parm, // short
  46   (u1) SignatureIterator::int_parm, // int
  47   (u1) SignatureIterator::long_parm, // long
  48 #ifndef __ABI_HARD__
  49   (u1) SignatureIterator::int_parm, // float, passed as int
  50   (u1) SignatureIterator::long_parm, // double, passed as long
  51 #else
  52   (u1) SignatureIterator::float_parm, // float
  53   (u1) SignatureIterator::double_parm, // double
  54 #endif
  55   (u1) SignatureIterator::obj_parm, // obj
  56   (u1) SignatureIterator::done_parm // done
  57 };




   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  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "interpreter/interp_masm.hpp"
  27 #include "interpreter/interpreter.hpp"
  28 #include "interpreter/interpreterRuntime.hpp"
  29 #include "memory/allocation.inline.hpp"
  30 #include "memory/universe.hpp"
  31 #include "oops/method.hpp"
  32 #include "oops/oop.inline.hpp"
  33 #include "runtime/handles.inline.hpp"
  34 #include "runtime/icache.hpp"
  35 #include "runtime/interfaceSupport.inline.hpp"
  36 #include "runtime/signature.hpp"
  37 
  38 #define __ _masm->
  39 
  40 Interpreter::SignatureHandlerGenerator::SignatureHandlerGenerator(
  41     const methodHandle& method, CodeBuffer* buffer) : NativeSignatureIterator(method) {
  42   _masm = new MacroAssembler(buffer);
  43   _abi_offset = 0;
  44   _ireg = is_static() ? 2 : 1;
  45 #ifdef __ABI_HARD__
  46 #ifdef AARCH64
  47   _freg = 0;
  48 #else
  49   _fp_slot = 0;
  50   _single_fpr_slot = 0;
  51 #endif
  52 #endif
  53 }
  54 
  55 #ifdef SHARING_FAST_NATIVE_FINGERPRINTS
  56 // mapping from SignatureIterator param to (common) type of parsing
  57 static const u1 shared_type[] = {
  58   (u1) SignatureIterator::int_parm, // bool
  59   (u1) SignatureIterator::int_parm, // byte
  60   (u1) SignatureIterator::int_parm, // char
  61   (u1) SignatureIterator::int_parm, // short
  62   (u1) SignatureIterator::int_parm, // int
  63   (u1) SignatureIterator::long_parm, // long
  64 #ifndef __ABI_HARD__
  65   (u1) SignatureIterator::int_parm, // float, passed as int
  66   (u1) SignatureIterator::long_parm, // double, passed as long
  67 #else
  68   (u1) SignatureIterator::float_parm, // float
  69   (u1) SignatureIterator::double_parm, // double
  70 #endif
  71   (u1) SignatureIterator::obj_parm, // obj
  72   (u1) SignatureIterator::done_parm // done
  73 };


< prev index next >