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:
|