hotspot/src/share/vm/ci/ciCallProfile.hpp
changeset 9975 82190b49ce14
parent 7408 c04a5c989f26
child 10514 e229a19078cf
equal deleted inserted replaced
9968:d46e7bd87c27 9975:82190b49ce14
    34 // at some call site
    34 // at some call site
    35 class ciCallProfile : StackObj {
    35 class ciCallProfile : StackObj {
    36 private:
    36 private:
    37   // Fields are initialized directly by ciMethod::call_profile_at_bci.
    37   // Fields are initialized directly by ciMethod::call_profile_at_bci.
    38   friend class ciMethod;
    38   friend class ciMethod;
       
    39   friend class ciMethodHandle;
    39 
    40 
    40   enum { MorphismLimit = 2 }; // Max call site's morphism we care about
    41   enum { MorphismLimit = 2 }; // Max call site's morphism we care about
    41   int  _limit;                // number of receivers have been determined
    42   int  _limit;                // number of receivers have been determined
    42   int  _morphism;             // determined call site's morphism
    43   int  _morphism;             // determined call site's morphism
    43   int  _count;                // # times has this call been executed
    44   int  _count;                // # times has this call been executed
    56 
    57 
    57   void add_receiver(ciKlass* receiver, int receiver_count);
    58   void add_receiver(ciKlass* receiver, int receiver_count);
    58 
    59 
    59 public:
    60 public:
    60   // Note:  The following predicates return false for invalid profiles:
    61   // Note:  The following predicates return false for invalid profiles:
    61   bool      has_receiver(int i) { return _limit > i; }
    62   bool      has_receiver(int i) const { return _limit > i; }
    62   int       morphism()          { return _morphism; }
    63   int       morphism() const          { return _morphism; }
    63 
    64 
    64   int       count()             { return _count; }
    65   int       count() const             { return _count; }
    65   int       receiver_count(int i)  {
    66   int       receiver_count(int i)  {
    66     assert(i < _limit, "out of Call Profile MorphismLimit");
    67     assert(i < _limit, "out of Call Profile MorphismLimit");
    67     return _receiver_count[i];
    68     return _receiver_count[i];
    68   }
    69   }
    69   float     receiver_prob(int i)  {
    70   float     receiver_prob(int i)  {