278 // must call add_safepoint before: it sets PcDesc and this routine uses |
278 // must call add_safepoint before: it sets PcDesc and this routine uses |
279 // the last PcDesc set |
279 // the last PcDesc set |
280 void DebugInformationRecorder::describe_scope(int pc_offset, |
280 void DebugInformationRecorder::describe_scope(int pc_offset, |
281 ciMethod* method, |
281 ciMethod* method, |
282 int bci, |
282 int bci, |
|
283 bool reexecute, |
283 DebugToken* locals, |
284 DebugToken* locals, |
284 DebugToken* expressions, |
285 DebugToken* expressions, |
285 DebugToken* monitors) { |
286 DebugToken* monitors) { |
286 assert(_recording_state != rs_null, "nesting of recording calls"); |
287 assert(_recording_state != rs_null, "nesting of recording calls"); |
287 PcDesc* last_pd = last_pc(); |
288 PcDesc* last_pd = last_pc(); |
295 stream()->write_int(sender_stream_offset); |
296 stream()->write_int(sender_stream_offset); |
296 |
297 |
297 // serialize scope |
298 // serialize scope |
298 jobject method_enc = (method == NULL)? NULL: method->encoding(); |
299 jobject method_enc = (method == NULL)? NULL: method->encoding(); |
299 stream()->write_int(oop_recorder()->find_index(method_enc)); |
300 stream()->write_int(oop_recorder()->find_index(method_enc)); |
300 stream()->write_bci(bci); |
301 stream()->write_bci_and_reexecute(bci, reexecute); |
301 assert(method == NULL || |
302 assert(method == NULL || |
302 (method->is_native() && bci == 0) || |
303 (method->is_native() && bci == 0) || |
303 (!method->is_native() && 0 <= bci && bci < method->code_size()) || |
304 (!method->is_native() && 0 <= bci && bci < method->code_size()) || |
304 bci == -1, "illegal bci"); |
305 bci == -1, "illegal bci"); |
305 |
306 |