< prev index next >

src/hotspot/share/oops/constantPool.hpp

Print this page

286   int cp_to_object_index(int index);
287 
288   void set_resolved_klasses(Array<Klass*>* rk)  { _resolved_klasses = rk; }
289   Array<Klass*>* resolved_klasses() const       { return _resolved_klasses; }
290   void allocate_resolved_klasses(ClassLoaderData* loader_data, int num_klasses, TRAPS);
291   void initialize_unresolved_klasses(ClassLoaderData* loader_data, TRAPS);
292 
293   // Given the per-instruction index of an indy instruction, report the
294   // main constant pool entry for its bootstrap specifier.
295   // From there, uncached_name/signature_ref_at will get the name/type.
296   inline u2 invokedynamic_bootstrap_ref_index_at(int indy_index) const;
297 
298   // Assembly code support
299   static ByteSize tags_offset()         { return byte_offset_of(ConstantPool, _tags); }
300   static ByteSize cache_offset()        { return byte_offset_of(ConstantPool, _cache); }
301   static ByteSize pool_holder_offset()  { return byte_offset_of(ConstantPool, _pool_holder); }
302   static ByteSize resolved_klasses_offset()    { return byte_offset_of(ConstantPool, _resolved_klasses); }
303 
304   // Storing constants
305 
306   // For temporary use while constructing constant pool
307   void klass_index_at_put(int cp_index, int name_index) {
308     tag_at_put(cp_index, JVM_CONSTANT_ClassIndex);
309     *int_at_addr(cp_index) = name_index;
310   }
311 
312   // Hidden class support:
313   void klass_at_put(int class_index, Klass* k);
314 
315   void unresolved_klass_at_put(int cp_index, int name_index, int resolved_klass_index) {
316     release_tag_at_put(cp_index, JVM_CONSTANT_UnresolvedClass);
317 
318     assert((name_index & 0xffff0000) == 0, "must be");
319     assert((resolved_klass_index & 0xffff0000) == 0, "must be");
320     *int_at_addr(cp_index) =
321       build_int_from_shorts((jushort)resolved_klass_index, (jushort)name_index);
322   }
323 
324   void method_handle_index_at_put(int cp_index, int ref_kind, int ref_index) {
325     tag_at_put(cp_index, JVM_CONSTANT_MethodHandle);
326     *int_at_addr(cp_index) = ((jint) ref_index<<16) | ref_kind;

286   int cp_to_object_index(int index);
287 
288   void set_resolved_klasses(Array<Klass*>* rk)  { _resolved_klasses = rk; }
289   Array<Klass*>* resolved_klasses() const       { return _resolved_klasses; }
290   void allocate_resolved_klasses(ClassLoaderData* loader_data, int num_klasses, TRAPS);
291   void initialize_unresolved_klasses(ClassLoaderData* loader_data, TRAPS);
292 
293   // Given the per-instruction index of an indy instruction, report the
294   // main constant pool entry for its bootstrap specifier.
295   // From there, uncached_name/signature_ref_at will get the name/type.
296   inline u2 invokedynamic_bootstrap_ref_index_at(int indy_index) const;
297 
298   // Assembly code support
299   static ByteSize tags_offset()         { return byte_offset_of(ConstantPool, _tags); }
300   static ByteSize cache_offset()        { return byte_offset_of(ConstantPool, _cache); }
301   static ByteSize pool_holder_offset()  { return byte_offset_of(ConstantPool, _pool_holder); }
302   static ByteSize resolved_klasses_offset()    { return byte_offset_of(ConstantPool, _resolved_klasses); }
303 
304   // Storing constants
305 
306   // For temporary use while constructing constant pool. Used during a retransform/class redefinition as well.
307   void klass_index_at_put(int cp_index, int name_index) {
308     tag_at_put(cp_index, JVM_CONSTANT_ClassIndex);
309     *int_at_addr(cp_index) = name_index;
310   }
311 
312   // Hidden class support:
313   void klass_at_put(int class_index, Klass* k);
314 
315   void unresolved_klass_at_put(int cp_index, int name_index, int resolved_klass_index) {
316     release_tag_at_put(cp_index, JVM_CONSTANT_UnresolvedClass);
317 
318     assert((name_index & 0xffff0000) == 0, "must be");
319     assert((resolved_klass_index & 0xffff0000) == 0, "must be");
320     *int_at_addr(cp_index) =
321       build_int_from_shorts((jushort)resolved_klass_index, (jushort)name_index);
322   }
323 
324   void method_handle_index_at_put(int cp_index, int ref_kind, int ref_index) {
325     tag_at_put(cp_index, JVM_CONSTANT_MethodHandle);
326     *int_at_addr(cp_index) = ((jint) ref_index<<16) | ref_kind;
< prev index next >