Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/code/nmethod.hpp
          +++ new/src/share/vm/code/nmethod.hpp
↓ open down ↓ 26 lines elided ↑ open up ↑
  27   27  
  28   28  #include "code/codeBlob.hpp"
  29   29  #include "code/pcDesc.hpp"
  30   30  
  31   31  // This class is used internally by nmethods, to cache
  32   32  // exception/pc/handler information.
  33   33  
  34   34  class ExceptionCache : public CHeapObj {
  35   35    friend class VMStructs;
  36   36   private:
  37      -  static address _unwind_handler;
  38   37    enum { cache_size = 16 };
  39   38    klassOop _exception_type;
  40   39    address  _pc[cache_size];
  41   40    address  _handler[cache_size];
  42   41    int      _count;
  43   42    ExceptionCache* _next;
  44   43  
  45   44    address pc_at(int index)                     { assert(index >= 0 && index < count(),""); return _pc[index]; }
  46   45    void    set_pc_at(int index, address a)      { assert(index >= 0 && index < cache_size,""); _pc[index] = a; }
  47   46    address handler_at(int index)                { assert(index >= 0 && index < count(),""); return _handler[index]; }
↓ open down ↓ 7 lines elided ↑ open up ↑
  55   54  
  56   55    klassOop  exception_type()                { return _exception_type; }
  57   56    klassOop* exception_type_addr()           { return &_exception_type; }
  58   57    ExceptionCache* next()                    { return _next; }
  59   58    void      set_next(ExceptionCache *ec)    { _next = ec; }
  60   59  
  61   60    address match(Handle exception, address pc);
  62   61    bool    match_exception_with_space(Handle exception) ;
  63   62    address test_address(address addr);
  64   63    bool    add_address_and_handler(address addr, address handler) ;
  65      -
  66      -  static address unwind_handler() { return _unwind_handler; }
  67   64  };
  68   65  
  69   66  
  70   67  // cache pc descs found in earlier inquiries
  71   68  class PcDescCache VALUE_OBJ_CLASS_SPEC {
  72   69    friend class VMStructs;
  73   70   private:
  74   71    enum { cache_size = 4 };
  75   72    PcDesc* _last_pc_desc;         // most recent pc_desc found
  76   73    PcDesc* _pc_descs[cache_size]; // last cache_size pc_descs found
↓ open down ↓ 641 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX