comparison src/share/vm/ci/ciReplay.cpp @ 17912:653e11c86c5a

8041959: Skip replay parsing errors with ReplayIgnoreInitErrors Summary: Allow replay compilation with replay file parsing error. Reviewed-by: twisti, iveresov
author kvn
date Tue, 29 Apr 2014 10:29:56 -0700
parents 849eb7bfceac
children 52b4284cb496
comparison
equal deleted inserted replaced
17911:f48e481abef0 17912:653e11c86c5a
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);