hotspot/src/share/vm/ci/ciMethod.hpp
changeset 13391 30245956af37
parent 13291 9de3b1387cb8
child 13728 882756847a04
equal deleted inserted replaced
13309:50c604cb0d5f 13391:30245956af37
   131   int          arg_size() const                  {
   131   int          arg_size() const                  {
   132     check_is_loaded();
   132     check_is_loaded();
   133     return _signature->size() + (_flags.is_static() ? 0 : 1);
   133     return _signature->size() + (_flags.is_static() ? 0 : 1);
   134   }
   134   }
   135   // Report the number of elements on stack when invoking this method.
   135   // Report the number of elements on stack when invoking this method.
   136   // This is different than the regular arg_size because invokdynamic
   136   // This is different than the regular arg_size because invokedynamic
   137   // has an implicit receiver.
   137   // has an implicit receiver.
   138   int invoke_arg_size(Bytecodes::Code code) const {
   138   int invoke_arg_size(Bytecodes::Code code) const {
   139     int arg_size = _signature->size();
   139     if (is_loaded()) {
   140     // Add a receiver argument, maybe:
   140       return arg_size();
   141     if (code != Bytecodes::_invokestatic &&
   141     } else {
   142         code != Bytecodes::_invokedynamic) {
   142       int arg_size = _signature->size();
   143       arg_size++;
   143       // Add a receiver argument, maybe:
       
   144       if (code != Bytecodes::_invokestatic &&
       
   145           code != Bytecodes::_invokedynamic) {
       
   146         arg_size++;
       
   147       }
       
   148       return arg_size;
   144     }
   149     }
   145     return arg_size;
       
   146   }
   150   }
   147 
   151 
   148 
   152 
   149   // Method code and related information.
   153   // Method code and related information.
   150   address code()                                 { if (_code == NULL) load_code(); return _code; }
   154   address code()                                 { if (_code == NULL) load_code(); return _code; }
   159 
   163 
   160   // Code size for inlining decisions.
   164   // Code size for inlining decisions.
   161   int code_size_for_inlining();
   165   int code_size_for_inlining();
   162 
   166 
   163   bool force_inline() { return get_methodOop()->force_inline(); }
   167   bool force_inline() { return get_methodOop()->force_inline(); }
       
   168   bool dont_inline()  { return get_methodOop()->dont_inline();  }
   164 
   169 
   165   int comp_level();
   170   int comp_level();
   166   int highest_osr_comp_level();
   171   int highest_osr_comp_level();
   167 
   172 
   168   Bytecodes::Code java_code_at_bci(int bci) {
   173   Bytecodes::Code java_code_at_bci(int bci) {
   256   bool check_call(int refinfo_index, bool is_static) const;
   261   bool check_call(int refinfo_index, bool is_static) const;
   257   bool ensure_method_data();  // make sure it exists in the VM also
   262   bool ensure_method_data();  // make sure it exists in the VM also
   258   int scale_count(int count, float prof_factor = 1.);  // make MDO count commensurate with IIC
   263   int scale_count(int count, float prof_factor = 1.);  // make MDO count commensurate with IIC
   259 
   264 
   260   // JSR 292 support
   265   // JSR 292 support
   261   bool is_method_handle_invoke()  const;
   266   bool is_method_handle_intrinsic()  const;
   262   bool is_method_handle_adapter() const;
   267   bool is_compiled_lambda_form() const;
   263   ciInstance* method_handle_type();
   268   bool has_member_arg() const;
   264 
   269 
   265   // What kind of ciObject is this?
   270   // What kind of ciObject is this?
   266   bool is_method()                               { return true; }
   271   bool is_method()                               { return true; }
   267 
   272 
   268   // Java access flags
   273   // Java access flags