374 void process(TRAPS) { |
374 void process(TRAPS) { |
375 int line_no = 1; |
375 int line_no = 1; |
376 int c = getc(_stream); |
376 int c = getc(_stream); |
377 while(c != EOF) { |
377 while(c != EOF) { |
378 c = get_line(c); |
378 c = get_line(c); |
379 process_command(CHECK); |
379 process_command(THREAD); |
380 if (had_error()) { |
380 if (had_error()) { |
381 tty->print_cr("Error while parsing line %d: %s\n", line_no, _error_message); |
381 tty->print_cr("Error while parsing line %d: %s\n", line_no, _error_message); |
382 tty->print_cr("%s", _buffer); |
382 if (ReplayIgnoreInitErrors) { |
383 return; |
383 CLEAR_PENDING_EXCEPTION; |
|
384 _error_message = NULL; |
|
385 } else { |
|
386 return; |
|
387 } |
384 } |
388 } |
385 line_no++; |
389 line_no++; |
386 } |
390 } |
387 } |
391 } |
388 |
392 |
563 |
567 |
564 // ciMethodData <klass> <name> <signature> <state> <current mileage> orig <length> # # ... data <length> # # ... oops <length> |
568 // ciMethodData <klass> <name> <signature> <state> <current mileage> orig <length> # # ... data <length> # # ... oops <length> |
565 void process_ciMethodData(TRAPS) { |
569 void process_ciMethodData(TRAPS) { |
566 Method* method = parse_method(CHECK); |
570 Method* method = parse_method(CHECK); |
567 if (had_error()) return; |
571 if (had_error()) return; |
568 /* jsut copied from Method, to build interpret data*/ |
572 /* just copied from Method, to build interpret data*/ |
569 if (InstanceRefKlass::owns_pending_list_lock((JavaThread*)THREAD)) { |
573 if (InstanceRefKlass::owns_pending_list_lock((JavaThread*)THREAD)) { |
570 return; |
574 return; |
571 } |
575 } |
|
576 // To be properly initialized, some profiling in the MDO needs the |
|
577 // method to be rewritten (number of arguments at a call for |
|
578 // instance) |
|
579 method->method_holder()->link_class(CHECK); |
572 // methodOopDesc::build_interpreter_method_data(method, CHECK); |
580 // methodOopDesc::build_interpreter_method_data(method, CHECK); |
573 { |
581 { |
574 // Grab a lock here to prevent multiple |
582 // Grab a lock here to prevent multiple |
575 // MethodData*s from being created. |
583 // MethodData*s from being created. |
576 MutexLocker ml(MethodData_lock, THREAD); |
584 MutexLocker ml(MethodData_lock, THREAD); |