src/share/vm/code/compiledIC.hpp

changeset 6991
882004b9e7e1
parent 6198
55fb97c4c58d
child 7535
7ae4e26cb1e0
child 8073
682119c4c32e
     1.1 --- a/src/share/vm/code/compiledIC.hpp	Thu Jun 26 11:36:58 2014 +0200
     1.2 +++ b/src/share/vm/code/compiledIC.hpp	Tue Jul 01 09:03:55 2014 +0200
     1.3 @@ -150,6 +150,9 @@
     1.4    bool          _is_optimized;  // an optimized virtual call (i.e., no compiled IC)
     1.5  
     1.6    CompiledIC(nmethod* nm, NativeCall* ic_call);
     1.7 +  CompiledIC(RelocIterator* iter);
     1.8 +
     1.9 +  void initialize_from_iter(RelocIterator* iter);
    1.10  
    1.11    static bool is_icholder_entry(address entry);
    1.12  
    1.13 @@ -183,6 +186,7 @@
    1.14    friend CompiledIC* CompiledIC_before(nmethod* nm, address return_addr);
    1.15    friend CompiledIC* CompiledIC_at(nmethod* nm, address call_site);
    1.16    friend CompiledIC* CompiledIC_at(Relocation* call_site);
    1.17 +  friend CompiledIC* CompiledIC_at(RelocIterator* reloc_iter);
    1.18  
    1.19    // This is used to release CompiledICHolder*s from nmethods that
    1.20    // are about to be freed.  The callsite might contain other stale
    1.21 @@ -263,6 +267,13 @@
    1.22    return c_ic;
    1.23  }
    1.24  
    1.25 +inline CompiledIC* CompiledIC_at(RelocIterator* reloc_iter) {
    1.26 +  assert(reloc_iter->type() == relocInfo::virtual_call_type ||
    1.27 +      reloc_iter->type() == relocInfo::opt_virtual_call_type, "wrong reloc. info");
    1.28 +  CompiledIC* c_ic = new CompiledIC(reloc_iter);
    1.29 +  c_ic->verify();
    1.30 +  return c_ic;
    1.31 +}
    1.32  
    1.33  //-----------------------------------------------------------------------------
    1.34  // The CompiledStaticCall represents a call to a static method in the compiled

mercurial