569
570 // returns true if the method is a getter
571 bool is_getter() const;
572
573 // returns true if the method is a setter
574 bool is_setter() const;
575
576 // returns true if the method does nothing but return a constant of primitive type
577 bool is_constant_getter() const;
578
579 // returns true if the method is static OR if the classfile version < 51
580 bool has_valid_initializer_flags() const;
581
582 // returns true if the method name is <clinit> and the method has
583 // valid static initializer flags.
584 bool is_static_initializer() const;
585
586 // returns true if the method name is <init>
587 bool is_object_initializer() const;
588
589 // compiled code support
590 // NOTE: code() is inherently racy as deopt can be clearing code
591 // simultaneously. Use with caution.
592 bool has_compiled_code() const;
593
594 bool needs_clinit_barrier() const;
595
596 // sizing
597 static int header_size() {
598 return align_up((int)sizeof(Method), wordSize) / wordSize;
599 }
600 static int size(bool is_native);
601 int size() const { return method_size(); }
602 void log_touched(Thread* current);
603 static void print_touched_methods(outputStream* out);
604
605 // interpreter support
606 static ByteSize const_offset() { return byte_offset_of(Method, _constMethod ); }
607 static ByteSize access_flags_offset() { return byte_offset_of(Method, _access_flags ); }
608 static ByteSize from_compiled_offset() { return byte_offset_of(Method, _from_compiled_entry); }
|
569
570 // returns true if the method is a getter
571 bool is_getter() const;
572
573 // returns true if the method is a setter
574 bool is_setter() const;
575
576 // returns true if the method does nothing but return a constant of primitive type
577 bool is_constant_getter() const;
578
579 // returns true if the method is static OR if the classfile version < 51
580 bool has_valid_initializer_flags() const;
581
582 // returns true if the method name is <clinit> and the method has
583 // valid static initializer flags.
584 bool is_static_initializer() const;
585
586 // returns true if the method name is <init>
587 bool is_object_initializer() const;
588
589 // returns true if the method name is wait0
590 bool is_object_wait0() const;
591
592 // compiled code support
593 // NOTE: code() is inherently racy as deopt can be clearing code
594 // simultaneously. Use with caution.
595 bool has_compiled_code() const;
596
597 bool needs_clinit_barrier() const;
598
599 // sizing
600 static int header_size() {
601 return align_up((int)sizeof(Method), wordSize) / wordSize;
602 }
603 static int size(bool is_native);
604 int size() const { return method_size(); }
605 void log_touched(Thread* current);
606 static void print_touched_methods(outputStream* out);
607
608 // interpreter support
609 static ByteSize const_offset() { return byte_offset_of(Method, _constMethod ); }
610 static ByteSize access_flags_offset() { return byte_offset_of(Method, _access_flags ); }
611 static ByteSize from_compiled_offset() { return byte_offset_of(Method, _from_compiled_entry); }
|