hotspot/src/share/vm/oops/method.hpp
changeset 14745 03904dd8649b
parent 14587 e9f641f0d3a9
child 15109 088b1ea04490
child 15098 3ed1d0332785
equal deleted inserted replaced
14739:12125dacc077 14745:03904dd8649b
    71 // | access_flags                                         |
    71 // | access_flags                                         |
    72 // | vtable_index                                         |
    72 // | vtable_index                                         |
    73 // |------------------------------------------------------|
    73 // |------------------------------------------------------|
    74 // | result_index (C++ interpreter only)                  |
    74 // | result_index (C++ interpreter only)                  |
    75 // |------------------------------------------------------|
    75 // |------------------------------------------------------|
    76 // | method_size             |   max_locals               |
    76 // | method_size             |   intrinsic_id|   flags    |
    77 // | size_of_parameters      |   intrinsic_id|   flags    |
       
    78 // |------------------------------------------------------|
    77 // |------------------------------------------------------|
    79 // | throwout_count          |   num_breakpoints          |
    78 // | throwout_count          |   num_breakpoints          |
    80 // |------------------------------------------------------|
    79 // |------------------------------------------------------|
    81 // | invocation_counter                                   |
    80 // | invocation_counter                                   |
    82 // | backedge_counter                                     |
    81 // | backedge_counter                                     |
   114                                                  // note: can have vtables with >2**16 elements (because of inheritance)
   113                                                  // note: can have vtables with >2**16 elements (because of inheritance)
   115 #ifdef CC_INTERP
   114 #ifdef CC_INTERP
   116   int               _result_index;               // C++ interpreter needs for converting results to/from stack
   115   int               _result_index;               // C++ interpreter needs for converting results to/from stack
   117 #endif
   116 #endif
   118   u2                _method_size;                // size of this object
   117   u2                _method_size;                // size of this object
   119   u2                _max_locals;                 // Number of local variables used by this method
       
   120   u2                _size_of_parameters;         // size of the parameter block (receiver + arguments) in words
       
   121   u1                _intrinsic_id;               // vmSymbols::intrinsic_id (0 == _none)
   118   u1                _intrinsic_id;               // vmSymbols::intrinsic_id (0 == _none)
   122   u1                _jfr_towrite  : 1,           // Flags
   119   u1                _jfr_towrite  : 1,           // Flags
   123                     _force_inline : 1,
   120                     _force_inline : 1,
   124                     _hidden       : 1,
   121                     _hidden       : 1,
   125                     _dont_inline  : 1,
   122                     _dont_inline  : 1,
   290   int  verifier_max_stack() const                { return constMethod()->max_stack(); }
   287   int  verifier_max_stack() const                { return constMethod()->max_stack(); }
   291   int           max_stack() const                { return constMethod()->max_stack() + extra_stack_entries(); }
   288   int           max_stack() const                { return constMethod()->max_stack() + extra_stack_entries(); }
   292   void      set_max_stack(int size)              {        constMethod()->set_max_stack(size); }
   289   void      set_max_stack(int size)              {        constMethod()->set_max_stack(size); }
   293 
   290 
   294   // max locals
   291   // max locals
   295   int  max_locals() const                        { return _max_locals; }
   292   int  max_locals() const                        { return constMethod()->max_locals(); }
   296   void set_max_locals(int size)                  { _max_locals = size; }
   293   void set_max_locals(int size)                  { constMethod()->set_max_locals(size); }
   297 
   294 
   298   int highest_comp_level() const;
   295   int highest_comp_level() const;
   299   void set_highest_comp_level(int level);
   296   void set_highest_comp_level(int level);
   300   int highest_osr_comp_level() const;
   297   int highest_osr_comp_level() const;
   301   void set_highest_osr_comp_level(int level);
   298   void set_highest_osr_comp_level(int level);
   309 
   306 
   310   int  interpreter_throwout_count() const        { return _interpreter_throwout_count; }
   307   int  interpreter_throwout_count() const        { return _interpreter_throwout_count; }
   311   void set_interpreter_throwout_count(int count) { _interpreter_throwout_count = count; }
   308   void set_interpreter_throwout_count(int count) { _interpreter_throwout_count = count; }
   312 
   309 
   313   // size of parameters
   310   // size of parameters
   314   int  size_of_parameters() const                { return _size_of_parameters; }
   311   int  size_of_parameters() const                { return constMethod()->size_of_parameters(); }
       
   312   void set_size_of_parameters(int size)          { constMethod()->set_size_of_parameters(size); }
   315 
   313 
   316   bool has_stackmap_table() const {
   314   bool has_stackmap_table() const {
   317     return constMethod()->has_stackmap_table();
   315     return constMethod()->has_stackmap_table();
   318   }
   316   }
   319 
   317 
   586   static ByteSize const_offset()                 { return byte_offset_of(Method, _constMethod       ); }
   584   static ByteSize const_offset()                 { return byte_offset_of(Method, _constMethod       ); }
   587   static ByteSize access_flags_offset()          { return byte_offset_of(Method, _access_flags      ); }
   585   static ByteSize access_flags_offset()          { return byte_offset_of(Method, _access_flags      ); }
   588 #ifdef CC_INTERP
   586 #ifdef CC_INTERP
   589   static ByteSize result_index_offset()          { return byte_offset_of(Method, _result_index ); }
   587   static ByteSize result_index_offset()          { return byte_offset_of(Method, _result_index ); }
   590 #endif /* CC_INTERP */
   588 #endif /* CC_INTERP */
   591   static ByteSize size_of_locals_offset()        { return byte_offset_of(Method, _max_locals        ); }
       
   592   static ByteSize size_of_parameters_offset()    { return byte_offset_of(Method, _size_of_parameters); }
       
   593   static ByteSize from_compiled_offset()         { return byte_offset_of(Method, _from_compiled_entry); }
   589   static ByteSize from_compiled_offset()         { return byte_offset_of(Method, _from_compiled_entry); }
   594   static ByteSize code_offset()                  { return byte_offset_of(Method, _code); }
   590   static ByteSize code_offset()                  { return byte_offset_of(Method, _code); }
   595   static ByteSize invocation_counter_offset()    { return byte_offset_of(Method, _invocation_counter); }
   591   static ByteSize invocation_counter_offset()    { return byte_offset_of(Method, _invocation_counter); }
   596   static ByteSize backedge_counter_offset()      { return byte_offset_of(Method, _backedge_counter); }
   592   static ByteSize backedge_counter_offset()      { return byte_offset_of(Method, _backedge_counter); }
   597   static ByteSize method_data_offset()           {
   593   static ByteSize method_data_offset()           {
   793   static void sort_methods(Array<Method*>* methods,
   789   static void sort_methods(Array<Method*>* methods,
   794                            Array<AnnotationArray*>* methods_annotations,
   790                            Array<AnnotationArray*>* methods_annotations,
   795                            Array<AnnotationArray*>* methods_parameter_annotations,
   791                            Array<AnnotationArray*>* methods_parameter_annotations,
   796                            Array<AnnotationArray*>* methods_default_annotations,
   792                            Array<AnnotationArray*>* methods_default_annotations,
   797                            bool idempotent = false);
   793                            bool idempotent = false);
   798 
       
   799   // size of parameters
       
   800   void set_size_of_parameters(int size)          { _size_of_parameters = size; }
       
   801 
   794 
   802   // Deallocation function for redefine classes or if an error occurs
   795   // Deallocation function for redefine classes or if an error occurs
   803   void deallocate_contents(ClassLoaderData* loader_data);
   796   void deallocate_contents(ClassLoaderData* loader_data);
   804 
   797 
   805   // Printing
   798   // Printing