提交 46bca5bb 编写于 作者: K kvn

8041959: Skip replay parsing errors with ReplayIgnoreInitErrors

Summary: Allow replay compilation with replay file parsing error.
Reviewed-by: twisti, iveresov
上级 b52d92aa
...@@ -376,11 +376,15 @@ class CompileReplay : public StackObj { ...@@ -376,11 +376,15 @@ class CompileReplay : public StackObj {
int c = getc(_stream); int c = getc(_stream);
while(c != EOF) { while(c != EOF) {
c = get_line(c); c = get_line(c);
process_command(CHECK); process_command(THREAD);
if (had_error()) { if (had_error()) {
tty->print_cr("Error while parsing line %d: %s\n", line_no, _error_message); tty->print_cr("Error while parsing line %d: %s\n", line_no, _error_message);
tty->print_cr("%s", _buffer); if (ReplayIgnoreInitErrors) {
return; CLEAR_PENDING_EXCEPTION;
_error_message = NULL;
} else {
return;
}
} }
line_no++; line_no++;
} }
...@@ -565,10 +569,14 @@ class CompileReplay : public StackObj { ...@@ -565,10 +569,14 @@ class CompileReplay : public StackObj {
void process_ciMethodData(TRAPS) { void process_ciMethodData(TRAPS) {
Method* method = parse_method(CHECK); Method* method = parse_method(CHECK);
if (had_error()) return; 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)) { if (InstanceRefKlass::owns_pending_list_lock((JavaThread*)THREAD)) {
return; 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); // methodOopDesc::build_interpreter_method_data(method, CHECK);
{ {
// Grab a lock here to prevent multiple // Grab a lock here to prevent multiple
......
...@@ -192,6 +192,10 @@ nmethod* SimpleThresholdPolicy::event(methodHandle method, methodHandle inlinee, ...@@ -192,6 +192,10 @@ nmethod* SimpleThresholdPolicy::event(methodHandle method, methodHandle inlinee,
thread->is_interp_only_mode()) { thread->is_interp_only_mode()) {
return NULL; return NULL;
} }
if (CompileTheWorld || ReplayCompiles) {
// Don't trigger other compiles in testing mode
return NULL;
}
nmethod *osr_nm = NULL; nmethod *osr_nm = NULL;
handle_counter_overflow(method()); handle_counter_overflow(method());
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册