< prev index next >

src/hotspot/share/oops/cpCache.hpp

Print this page
rev 52749 : Bootstrap method consolidation
* clean up and simplify JDK support code for BSM invocation
* simplify JVM bootstrap handshake: use BootstrapCallInfo only
* remove unused JVM paths and data fields
* move bootstrap argument processing from MethodHandleNatives to ConstantPool
* remove ConstantGroup; merge argument access into BootstrapCallInfo
* adjust BSM argument access: remove copyArguments, add argumentRef API
* add metadata-free BSM modes, including symbolic arguments from CP

*** 178,188 **** tos_state_bits = 4, tos_state_mask = right_n_bits(tos_state_bits), tos_state_shift = BitsPerInt - tos_state_bits, // see verify_tos_state_shift below // misc. option bits; can be any bit position in [16..27] is_field_entry_shift = 26, // (F) is it a field or a method? ! has_method_type_shift = 25, // (M) does the call site have a MethodType? has_appendix_shift = 24, // (A) does the call site have an appendix argument? is_forced_virtual_shift = 23, // (I) is the interface reference forced to virtual mode? is_final_shift = 22, // (f) is the field or method final? is_volatile_shift = 21, // (v) is the field volatile? is_vfinal_shift = 20, // (vf) did the call resolve to a final method? --- 178,188 ---- tos_state_bits = 4, tos_state_mask = right_n_bits(tos_state_bits), tos_state_shift = BitsPerInt - tos_state_bits, // see verify_tos_state_shift below // misc. option bits; can be any bit position in [16..27] is_field_entry_shift = 26, // (F) is it a field or a method? ! has_local_signature_shift = 25, // (M) does the call site have a per-site signature (sig-poly methods)? has_appendix_shift = 24, // (A) does the call site have an appendix argument? is_forced_virtual_shift = 23, // (I) is the interface reference forced to virtual mode? is_final_shift = 22, // (f) is the field or method final? is_volatile_shift = 21, // (v) is the field volatile? is_vfinal_shift = 20, // (vf) did the call resolve to a final method?
*** 289,311 **** // the method and recorded the success or failure before this thread had a // chance to record its failure. bool save_and_throw_indy_exc(const constantPoolHandle& cpool, int cpool_index, int index, constantTag tag, TRAPS); ! // invokedynamic and invokehandle call sites have two entries in the // resolved references array: - // appendix (at index+0) - // MethodType (at index+1) - enum { - _indy_resolved_references_appendix_offset = 0, - _indy_resolved_references_method_type_offset = 1, - _indy_resolved_references_entries - }; - Method* method_if_resolved(const constantPoolHandle& cpool); oop appendix_if_resolved(const constantPoolHandle& cpool); - oop method_type_if_resolved(const constantPoolHandle& cpool); void set_parameter_size(int value); // Which bytecode number (1 or 2) in the index field is valid for this bytecode? // Returns -1 if neither is valid. --- 289,302 ---- // the method and recorded the success or failure before this thread had a // chance to record its failure. bool save_and_throw_indy_exc(const constantPoolHandle& cpool, int cpool_index, int index, constantTag tag, TRAPS); ! // invokedynamic and invokehandle call sites have an "appendix" item in the // resolved references array: Method* method_if_resolved(const constantPoolHandle& cpool); oop appendix_if_resolved(const constantPoolHandle& cpool); void set_parameter_size(int value); // Which bytecode number (1 or 2) in the index field is valid for this bytecode? // Returns -1 if neither is valid.
*** 354,364 **** bool is_final() const { return (_flags & (1 << is_final_shift)) != 0; } bool is_forced_virtual() const { return (_flags & (1 << is_forced_virtual_shift)) != 0; } bool is_vfinal() const { return (_flags & (1 << is_vfinal_shift)) != 0; } bool indy_resolution_failed() const; bool has_appendix() const; ! bool has_method_type() const; bool is_method_entry() const { return (_flags & (1 << is_field_entry_shift)) == 0; } bool is_field_entry() const { return (_flags & (1 << is_field_entry_shift)) != 0; } bool is_long() const { return flag_state() == ltos; } bool is_double() const { return flag_state() == dtos; } TosState flag_state() const { assert((uint)number_of_states <= (uint)tos_state_mask+1, ""); --- 345,355 ---- bool is_final() const { return (_flags & (1 << is_final_shift)) != 0; } bool is_forced_virtual() const { return (_flags & (1 << is_forced_virtual_shift)) != 0; } bool is_vfinal() const { return (_flags & (1 << is_vfinal_shift)) != 0; } bool indy_resolution_failed() const; bool has_appendix() const; ! bool has_local_signature() const; bool is_method_entry() const { return (_flags & (1 << is_field_entry_shift)) == 0; } bool is_field_entry() const { return (_flags & (1 << is_field_entry_shift)) != 0; } bool is_long() const { return flag_state() == ltos; } bool is_double() const { return flag_state() == dtos; } TosState flag_state() const { assert((uint)number_of_states <= (uint)tos_state_mask+1, "");
*** 441,451 **** const intArray& invokedynamic_references_map); public: static ConstantPoolCache* allocate(ClassLoaderData* loader_data, const intStack& cp_cache_map, const intStack& invokedynamic_cp_cache_map, ! const intStack& invokedynamic_references_map, TRAPS); bool is_constantPoolCache() const { return true; } int length() const { return _length; } void metaspace_pointers_do(MetaspaceClosure* it); MetaspaceObj::Type type() const { return ConstantPoolCacheType; } --- 432,442 ---- const intArray& invokedynamic_references_map); public: static ConstantPoolCache* allocate(ClassLoaderData* loader_data, const intStack& cp_cache_map, const intStack& invokedynamic_cp_cache_map, ! const intStack& appendix_references_map, TRAPS); bool is_constantPoolCache() const { return true; } int length() const { return _length; } void metaspace_pointers_do(MetaspaceClosure* it); MetaspaceObj::Type type() const { return ConstantPoolCacheType; }
< prev index next >