< prev index next >

src/hotspot/share/ci/ciMethod.hpp

Print this page
*** 70,10 ***
--- 70,11 ---
    ciFlags          _flags;
    ciSymbol*        _name;
    ciInstanceKlass* _holder;
    ciSignature*     _signature;
    ciMethodData*    _method_data;
+   ciMethodData*    _method_data_recorded;
    ciMethodBlocks*   _method_blocks;
  
    // Code attributes.
    int _code_size;
    int _max_stack;

*** 93,10 ***
--- 94,12 ---
    bool _can_be_statically_bound;
    bool _can_omit_stack_trace;
    bool _has_reserved_stack_access;
    bool _is_overpass;
  
+   GrowableArray<int>* _has_trap_at_bci;
+ 
    // Lazy fields, filled in on demand
    address              _code;
    ciExceptionHandler** _exception_handlers;
  
    // Optional liveness analyzer.

*** 115,11 ***
  
    void print_impl(outputStream* st);
  
    void load_code();
  
!   bool ensure_method_data(const methodHandle& h_m);
  
    void code_at_put(int bci, Bytecodes::Code code) {
      Bytecodes::check(code);
      assert(0 <= bci && bci < code_size(), "valid bci");
      address bcp = _code + bci;
--- 118,11 ---
  
    void print_impl(outputStream* st);
  
    void load_code();
  
!   bool ensure_method_data(const methodHandle& h_m, bool training_data_only);
  
    void code_at_put(int bci, Bytecodes::Code code) {
      Bytecodes::check(code);
      assert(0 <= bci && bci < code_size(), "valid bci");
      address bcp = _code + bci;

*** 312,11 ***
    bool is_not_reached(int bci);
    bool was_executed_more_than(int times);
    bool has_unloaded_classes_in_signature();
    bool is_klass_loaded(int refinfo_index, Bytecodes::Code bc, bool must_be_resolved) const;
    bool check_call(int refinfo_index, bool is_static) const;
!   bool ensure_method_data();  // make sure it exists in the VM also
    MethodCounters* ensure_method_counters();
  
    int inline_instructions_size();
    int scale_count(int count, float prof_factor = 1.);  // make MDO count commensurate with IIC
  
--- 315,11 ---
    bool is_not_reached(int bci);
    bool was_executed_more_than(int times);
    bool has_unloaded_classes_in_signature();
    bool is_klass_loaded(int refinfo_index, Bytecodes::Code bc, bool must_be_resolved) const;
    bool check_call(int refinfo_index, bool is_static) const;
!   bool ensure_method_data(bool training_data_only = false);  // make sure it exists in the VM also
    MethodCounters* ensure_method_counters();
  
    int inline_instructions_size();
    int scale_count(int count, float prof_factor = 1.);  // make MDO count commensurate with IIC
  

*** 380,8 ***
--- 383,12 ---
    // Print the name of this method in various incarnations.
    void print_name(outputStream* st = tty);
    void print_short_name(outputStream* st = tty);
  
    static bool is_consistent_info(ciMethod* declared_method, ciMethod* resolved_method);
+   bool has_trap_at(int bci) {
+     return _has_trap_at_bci != nullptr &&
+            _has_trap_at_bci->contains(bci);
+   }
  };
  
  #endif // SHARE_CI_CIMETHOD_HPP
< prev index next >