Mercurial > hg > truffle
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); |