# HG changeset patch # User kvn # Date 1398792596 25200 # Node ID 653e11c86c5a5d0303b5d2a1d588a7973223ab3b # Parent f48e481abef0b9fd6228cf2820cac56d5af7df93 8041959: Skip replay parsing errors with ReplayIgnoreInitErrors Summary: Allow replay compilation with replay file parsing error. Reviewed-by: twisti, iveresov diff -r f48e481abef0 -r 653e11c86c5a src/share/vm/ci/ciReplay.cpp --- a/src/share/vm/ci/ciReplay.cpp Thu May 01 17:57:29 2014 -0700 +++ b/src/share/vm/ci/ciReplay.cpp Tue Apr 29 10:29:56 2014 -0700 @@ -376,11 +376,15 @@ int c = getc(_stream); while(c != EOF) { c = get_line(c); - process_command(CHECK); + process_command(THREAD); if (had_error()) { tty->print_cr("Error while parsing line %d: %s\n", line_no, _error_message); - tty->print_cr("%s", _buffer); - return; + if (ReplayIgnoreInitErrors) { + CLEAR_PENDING_EXCEPTION; + _error_message = NULL; + } else { + return; + } } line_no++; } @@ -565,10 +569,14 @@ void process_ciMethodData(TRAPS) { Method* method = parse_method(CHECK); if (had_error()) return; - /* jsut copied from Method, to build interpret data*/ + /* just copied from Method, to build interpret data*/ if (InstanceRefKlass::owns_pending_list_lock((JavaThread*)THREAD)) { return; } + // To be properly initialized, some profiling in the MDO needs the + // method to be rewritten (number of arguments at a call for + // instance) + method->method_holder()->link_class(CHECK); // methodOopDesc::build_interpreter_method_data(method, CHECK); { // Grab a lock here to prevent multiple diff -r f48e481abef0 -r 653e11c86c5a src/share/vm/runtime/simpleThresholdPolicy.cpp --- a/src/share/vm/runtime/simpleThresholdPolicy.cpp Thu May 01 17:57:29 2014 -0700 +++ b/src/share/vm/runtime/simpleThresholdPolicy.cpp Tue Apr 29 10:29:56 2014 -0700 @@ -192,6 +192,10 @@ thread->is_interp_only_mode()) { return NULL; } + if (CompileTheWorld || ReplayCompiles) { + // Don't trigger other compiles in testing mode + return NULL; + } nmethod *osr_nm = NULL; handle_counter_overflow(method());