169 _current_mileage = MethodData::mileage_of(mdo->method());
170 _invocation_counter = mdo->invocation_count();
171 _backedge_counter = mdo->backedge_count();
172 _state = mdo->is_mature()? mature_state: immature_state;
173
174 _eflags = mdo->eflags();
175 _arg_local = mdo->arg_local();
176 _arg_stack = mdo->arg_stack();
177 _arg_returned = mdo->arg_returned();
178 #ifndef PRODUCT
179 if (ReplayCompiles) {
180 ciReplay::initialize(this);
181 }
182 #endif
183 }
184
185 void ciReceiverTypeData::translate_receiver_data_from(const ProfileData* data) {
186 for (uint row = 0; row < row_limit(); row++) {
187 Klass* k = data->as_ReceiverTypeData()->receiver(row);
188 if (k != NULL) {
189 ciKlass* klass = CURRENT_ENV->get_klass(k);
190 set_receiver(row, klass);
191 }
192 }
193 }
194
195
196 void ciTypeStackSlotEntries::translate_type_data_from(const TypeStackSlotEntries* entries) {
197 for (int i = 0; i < number_of_entries(); i++) {
198 intptr_t k = entries->type(i);
199 TypeStackSlotEntries::set_type(i, translate_klass(k));
200 }
201 }
202
203 void ciReturnTypeEntry::translate_type_data_from(const ReturnTypeEntry* ret) {
204 intptr_t k = ret->type();
205 set_type(translate_klass(k));
206 }
207
208 void ciSpeculativeTrapData::translate_from(const ProfileData* data) {
209 Method* m = data->as_SpeculativeTrapData()->method();
|
169 _current_mileage = MethodData::mileage_of(mdo->method());
170 _invocation_counter = mdo->invocation_count();
171 _backedge_counter = mdo->backedge_count();
172 _state = mdo->is_mature()? mature_state: immature_state;
173
174 _eflags = mdo->eflags();
175 _arg_local = mdo->arg_local();
176 _arg_stack = mdo->arg_stack();
177 _arg_returned = mdo->arg_returned();
178 #ifndef PRODUCT
179 if (ReplayCompiles) {
180 ciReplay::initialize(this);
181 }
182 #endif
183 }
184
185 void ciReceiverTypeData::translate_receiver_data_from(const ProfileData* data) {
186 for (uint row = 0; row < row_limit(); row++) {
187 Klass* k = data->as_ReceiverTypeData()->receiver(row);
188 if (k != NULL) {
189 if (k->is_loader_alive()) {
190 ciKlass* klass = CURRENT_ENV->get_klass(k);
191 set_receiver(row, klass);
192 } else {
193 // With concurrent class unloading, the MDO could have stale metadata; override it
194 clear_row(row);
195 }
196 }
197 }
198 }
199
200
201 void ciTypeStackSlotEntries::translate_type_data_from(const TypeStackSlotEntries* entries) {
202 for (int i = 0; i < number_of_entries(); i++) {
203 intptr_t k = entries->type(i);
204 TypeStackSlotEntries::set_type(i, translate_klass(k));
205 }
206 }
207
208 void ciReturnTypeEntry::translate_type_data_from(const ReturnTypeEntry* ret) {
209 intptr_t k = ret->type();
210 set_type(translate_klass(k));
211 }
212
213 void ciSpeculativeTrapData::translate_from(const ProfileData* data) {
214 Method* m = data->as_SpeculativeTrapData()->method();
|