src/share/vm/prims/methodHandles.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7045514 Sdiff src/share/vm/prims

src/share/vm/prims/methodHandles.hpp

Print this page




 200     CONV_OP_LIMIT         = java_lang_invoke_AdapterMethodHandle::CONV_OP_LIMIT,
 201     CONV_OP_MASK          = java_lang_invoke_AdapterMethodHandle::CONV_OP_MASK,
 202     CONV_TYPE_MASK        = java_lang_invoke_AdapterMethodHandle::CONV_TYPE_MASK,
 203     CONV_VMINFO_MASK      = java_lang_invoke_AdapterMethodHandle::CONV_VMINFO_MASK,
 204     CONV_VMINFO_SHIFT     = java_lang_invoke_AdapterMethodHandle::CONV_VMINFO_SHIFT,
 205     CONV_OP_SHIFT         = java_lang_invoke_AdapterMethodHandle::CONV_OP_SHIFT,
 206     CONV_DEST_TYPE_SHIFT  = java_lang_invoke_AdapterMethodHandle::CONV_DEST_TYPE_SHIFT,
 207     CONV_SRC_TYPE_SHIFT   = java_lang_invoke_AdapterMethodHandle::CONV_SRC_TYPE_SHIFT,
 208     CONV_STACK_MOVE_SHIFT = java_lang_invoke_AdapterMethodHandle::CONV_STACK_MOVE_SHIFT,
 209     CONV_STACK_MOVE_MASK  = java_lang_invoke_AdapterMethodHandle::CONV_STACK_MOVE_MASK
 210   };
 211 
 212   static bool _enabled;
 213   static MethodHandleEntry* _entries[_EK_LIMIT];
 214   static const char*        _entry_names[_EK_LIMIT+1];
 215   static jobject            _raise_exception_method;
 216   static address            _adapter_return_handlers[CONV_TYPE_MASK+1];
 217 
 218   // Adapters.
 219   static MethodHandlesAdapterBlob* _adapter_code;
 220   static int                       _adapter_code_size;
 221 
 222   static bool ek_valid(EntryKind ek)            { return (uint)ek < (uint)_EK_LIMIT; }
 223   static bool conv_op_valid(int op)             { return (uint)op < (uint)CONV_OP_LIMIT; }
 224 
 225  public:
 226   static bool    have_entry(EntryKind ek)       { return ek_valid(ek) && _entries[ek] != NULL; }
 227   static MethodHandleEntry* entry(EntryKind ek) { assert(ek_valid(ek), "initialized");
 228                                                   return _entries[ek]; }
 229   static const char* entry_name(EntryKind ek)   { assert(ek_valid(ek), "oob");
 230                                                   return _entry_names[ek]; }
 231   static EntryKind adapter_entry_kind(int op)   { assert(conv_op_valid(op), "oob");
 232                                                   return EntryKind(_adapter_mh_first + op); }
 233 
 234   static void init_entry(EntryKind ek, MethodHandleEntry* me) {
 235     assert(ek_valid(ek), "oob");
 236     assert(_entries[ek] == NULL, "no double initialization");
 237     _entries[ek] = me;
 238   }
 239 
 240   // Some adapter helper functions.


 696                                               KlassHandle receiver_limit,
 697                                               int decode_flags,
 698                                               KlassHandle receiver_klass,
 699                                               TRAPS);
 700 
 701 public:
 702   static bool is_float_fixed_reinterpretation_cast(BasicType src, BasicType dst);
 703   static bool same_basic_type_for_arguments(BasicType src, BasicType dst,
 704                                             bool raw = false,
 705                                             bool for_return = false);
 706   static bool same_basic_type_for_returns(BasicType src, BasicType dst, bool raw = false) {
 707     return same_basic_type_for_arguments(src, dst, raw, true);
 708   }
 709 
 710   static Symbol* convert_to_signature(oop type_str, bool polymorphic, TRAPS);
 711 
 712 #ifdef TARGET_ARCH_x86
 713 # include "methodHandles_x86.hpp"
 714 #endif
 715 #ifdef TARGET_ARCH_sparc
 716 #define TARGET_ARCH_NYI_6939861 1 //FIXME
 717 //# include "methodHandles_sparc.hpp"
 718 #endif
 719 #ifdef TARGET_ARCH_zero
 720 #define TARGET_ARCH_NYI_6939861 1 //FIXME
 721 //# include "methodHandles_zero.hpp"
 722 #endif
 723 #ifdef TARGET_ARCH_arm
 724 # include "methodHandles_arm.hpp"
 725 #endif
 726 #ifdef TARGET_ARCH_ppc
 727 # include "methodHandles_ppc.hpp"
 728 #endif
 729 
 730 #ifdef TARGET_ARCH_NYI_6939861
 731   // Here are some backward compatible declarations until the 6939861 ports are updated.
 732   #define _adapter_flyby    (_EK_LIMIT + 10)
 733   #define _adapter_ricochet (_EK_LIMIT + 11)
 734   #define _adapter_opt_spread_1    _adapter_opt_spread_1_ref
 735   #define _adapter_opt_spread_more _adapter_opt_spread_ref
 736   enum {
 737     _INSERT_NO_MASK   = -1,
 738     _INSERT_REF_MASK  = 0,
 739     _INSERT_INT_MASK  = 1,
 740     _INSERT_LONG_MASK = 3
 741   };




 200     CONV_OP_LIMIT         = java_lang_invoke_AdapterMethodHandle::CONV_OP_LIMIT,
 201     CONV_OP_MASK          = java_lang_invoke_AdapterMethodHandle::CONV_OP_MASK,
 202     CONV_TYPE_MASK        = java_lang_invoke_AdapterMethodHandle::CONV_TYPE_MASK,
 203     CONV_VMINFO_MASK      = java_lang_invoke_AdapterMethodHandle::CONV_VMINFO_MASK,
 204     CONV_VMINFO_SHIFT     = java_lang_invoke_AdapterMethodHandle::CONV_VMINFO_SHIFT,
 205     CONV_OP_SHIFT         = java_lang_invoke_AdapterMethodHandle::CONV_OP_SHIFT,
 206     CONV_DEST_TYPE_SHIFT  = java_lang_invoke_AdapterMethodHandle::CONV_DEST_TYPE_SHIFT,
 207     CONV_SRC_TYPE_SHIFT   = java_lang_invoke_AdapterMethodHandle::CONV_SRC_TYPE_SHIFT,
 208     CONV_STACK_MOVE_SHIFT = java_lang_invoke_AdapterMethodHandle::CONV_STACK_MOVE_SHIFT,
 209     CONV_STACK_MOVE_MASK  = java_lang_invoke_AdapterMethodHandle::CONV_STACK_MOVE_MASK
 210   };
 211 
 212   static bool _enabled;
 213   static MethodHandleEntry* _entries[_EK_LIMIT];
 214   static const char*        _entry_names[_EK_LIMIT+1];
 215   static jobject            _raise_exception_method;
 216   static address            _adapter_return_handlers[CONV_TYPE_MASK+1];
 217 
 218   // Adapters.
 219   static MethodHandlesAdapterBlob* _adapter_code;

 220 
 221   static bool ek_valid(EntryKind ek)            { return (uint)ek < (uint)_EK_LIMIT; }
 222   static bool conv_op_valid(int op)             { return (uint)op < (uint)CONV_OP_LIMIT; }
 223 
 224  public:
 225   static bool    have_entry(EntryKind ek)       { return ek_valid(ek) && _entries[ek] != NULL; }
 226   static MethodHandleEntry* entry(EntryKind ek) { assert(ek_valid(ek), "initialized");
 227                                                   return _entries[ek]; }
 228   static const char* entry_name(EntryKind ek)   { assert(ek_valid(ek), "oob");
 229                                                   return _entry_names[ek]; }
 230   static EntryKind adapter_entry_kind(int op)   { assert(conv_op_valid(op), "oob");
 231                                                   return EntryKind(_adapter_mh_first + op); }
 232 
 233   static void init_entry(EntryKind ek, MethodHandleEntry* me) {
 234     assert(ek_valid(ek), "oob");
 235     assert(_entries[ek] == NULL, "no double initialization");
 236     _entries[ek] = me;
 237   }
 238 
 239   // Some adapter helper functions.


 695                                               KlassHandle receiver_limit,
 696                                               int decode_flags,
 697                                               KlassHandle receiver_klass,
 698                                               TRAPS);
 699 
 700 public:
 701   static bool is_float_fixed_reinterpretation_cast(BasicType src, BasicType dst);
 702   static bool same_basic_type_for_arguments(BasicType src, BasicType dst,
 703                                             bool raw = false,
 704                                             bool for_return = false);
 705   static bool same_basic_type_for_returns(BasicType src, BasicType dst, bool raw = false) {
 706     return same_basic_type_for_arguments(src, dst, raw, true);
 707   }
 708 
 709   static Symbol* convert_to_signature(oop type_str, bool polymorphic, TRAPS);
 710 
 711 #ifdef TARGET_ARCH_x86
 712 # include "methodHandles_x86.hpp"
 713 #endif
 714 #ifdef TARGET_ARCH_sparc
 715 # include "methodHandles_sparc.hpp"

 716 #endif
 717 #ifdef TARGET_ARCH_zero
 718 # include "methodHandles_zero.hpp"

 719 #endif
 720 #ifdef TARGET_ARCH_arm
 721 # include "methodHandles_arm.hpp"
 722 #endif
 723 #ifdef TARGET_ARCH_ppc
 724 # include "methodHandles_ppc.hpp"
 725 #endif
 726 
 727 #ifdef TARGET_ARCH_NYI_6939861
 728   // Here are some backward compatible declarations until the 6939861 ports are updated.
 729   #define _adapter_flyby    (_EK_LIMIT + 10)
 730   #define _adapter_ricochet (_EK_LIMIT + 11)
 731   #define _adapter_opt_spread_1    _adapter_opt_spread_1_ref
 732   #define _adapter_opt_spread_more _adapter_opt_spread_ref
 733   enum {
 734     _INSERT_NO_MASK   = -1,
 735     _INSERT_REF_MASK  = 0,
 736     _INSERT_INT_MASK  = 1,
 737     _INSERT_LONG_MASK = 3
 738   };


src/share/vm/prims/methodHandles.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File