src/share/vm/ci/ciMethodData.hpp

Print this page
rev 2893 : 7121756: Improve C1 inlining policy by using profiling at call sites
Summary: profile based recompilation of methods with C1 with more inlining.
Reviewed-by:


  48 public:
  49   ciBitData(DataLayout* layout) : BitData(layout) {};
  50 };
  51 
  52 class ciCounterData : public CounterData {
  53 public:
  54   ciCounterData(DataLayout* layout) : CounterData(layout) {};
  55 };
  56 
  57 class ciJumpData : public JumpData {
  58 public:
  59   ciJumpData(DataLayout* layout) : JumpData(layout) {};
  60 };
  61 
  62 class ciReceiverTypeData : public ReceiverTypeData {
  63 public:
  64   ciReceiverTypeData(DataLayout* layout) : ReceiverTypeData(layout) {};
  65 
  66   void set_receiver(uint row, ciKlass* recv) {
  67     assert((uint)row < row_limit(), "oob");
  68     set_intptr_at(receiver0_offset + row * receiver_type_row_cell_count,
  69                   (intptr_t) recv);
  70   }
  71 
  72   ciKlass* receiver(uint row) {
  73     assert((uint)row < row_limit(), "oob");
  74     ciObject* recv = (ciObject*)intptr_at(receiver0_offset + row * receiver_type_row_cell_count);
  75     assert(recv == NULL || recv->is_klass(), "wrong type");
  76     return (ciKlass*)recv;
  77   }
  78 
  79   // Copy & translate from oop based ReceiverTypeData
  80   virtual void translate_from(ProfileData* data) {
  81     translate_receiver_data_from(data);
  82   }
  83   void translate_receiver_data_from(ProfileData* data);
  84 #ifndef PRODUCT
  85   void print_data_on(outputStream* st);
  86   void print_receiver_data_on(outputStream* st);
  87 #endif
  88 };
  89 
  90 class ciVirtualCallData : public VirtualCallData {
  91   // Fake multiple inheritance...  It's a ciReceiverTypeData also.
  92   ciReceiverTypeData* rtd_super() { return (ciReceiverTypeData*) this; }
  93 
  94 public:




  48 public:
  49   ciBitData(DataLayout* layout) : BitData(layout) {};
  50 };
  51 
  52 class ciCounterData : public CounterData {
  53 public:
  54   ciCounterData(DataLayout* layout) : CounterData(layout) {};
  55 };
  56 
  57 class ciJumpData : public JumpData {
  58 public:
  59   ciJumpData(DataLayout* layout) : JumpData(layout) {};
  60 };
  61 
  62 class ciReceiverTypeData : public ReceiverTypeData {
  63 public:
  64   ciReceiverTypeData(DataLayout* layout) : ReceiverTypeData(layout) {};
  65 
  66   void set_receiver(uint row, ciKlass* recv) {
  67     assert((uint)row < row_limit(), "oob");
  68     set_intptr_at(receiver_cell_index(row),
  69                   (intptr_t) recv);
  70   }
  71 
  72   ciKlass* receiver(uint row) {
  73     assert((uint)row < row_limit(), "oob");
  74     ciObject* recv = (ciObject*)intptr_at(receiver_cell_index(row));
  75     assert(recv == NULL || recv->is_klass(), "wrong type");
  76     return (ciKlass*)recv;
  77   }
  78 
  79   // Copy & translate from oop based ReceiverTypeData
  80   virtual void translate_from(ProfileData* data) {
  81     translate_receiver_data_from(data);
  82   }
  83   void translate_receiver_data_from(ProfileData* data);
  84 #ifndef PRODUCT
  85   void print_data_on(outputStream* st);
  86   void print_receiver_data_on(outputStream* st);
  87 #endif
  88 };
  89 
  90 class ciVirtualCallData : public VirtualCallData {
  91   // Fake multiple inheritance...  It's a ciReceiverTypeData also.
  92   ciReceiverTypeData* rtd_super() { return (ciReceiverTypeData*) this; }
  93 
  94 public: