src/share/vm/ci/ciReplay.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
8011675 Cdiff src/share/vm/ci/ciReplay.cpp
src/share/vm/ci/ciReplay.cpp
Print this page
*** 368,382 ****
} else {
report_error("unknown command");
}
}
! // compile <klass> <name> <signature> <entry_bci>
void process_compile(TRAPS) {
// methodHandle method;
Method* method = parse_method(CHECK);
int entry_bci = parse_int("entry_bci");
Klass* k = method->method_holder();
((InstanceKlass*)k)->initialize(THREAD);
if (HAS_PENDING_EXCEPTION) {
oop throwable = PENDING_EXCEPTION;
java_lang_Throwable::print(throwable, tty);
--- 368,418 ----
} else {
report_error("unknown command");
}
}
! // validation of comp_level
! bool is_valid_comp_level(int comp_level) {
! const int msg_len = 256;
! char* msg = NULL;
! if (!is_compile(comp_level)) {
! msg = NEW_RESOURCE_ARRAY(char, msg_len);
! jio_snprintf(msg, msg_len, "%d isn't compilation level", comp_level);
! } else if (!TieredCompilation && (comp_level != CompLevel_highest_tier)) {
! msg = NEW_RESOURCE_ARRAY(char, msg_len);
! switch (comp_level) {
! case CompLevel_simple:
! jio_snprintf(msg, msg_len, "compilation level %d requires Client VM or TieredCompilation", comp_level);
! break;
! case CompLevel_full_optimization:
! jio_snprintf(msg, msg_len, "compilation level %d requires Server VM", comp_level);
! break;
! default:
! jio_snprintf(msg, msg_len, "compilation level %d requires TieredCompilation", comp_level);
! }
! }
! if (msg != NULL) {
! report_error(msg);
! return false;
! }
! return true;
! }
!
! // compile <klass> <name> <signature> <entry_bci> <comp_level>
void process_compile(TRAPS) {
// methodHandle method;
Method* method = parse_method(CHECK);
int entry_bci = parse_int("entry_bci");
+ const char* comp_level_label = "comp_level";
+ int comp_level = parse_int(comp_level_label);
+ // old version w/o comp_level
+ if (had_error() && (error_message() == comp_level_label)) {
+ comp_level = CompLevel_full_optimization;
+ }
+ if (!is_valid_comp_level(comp_level)) {
+ return;
+ }
Klass* k = method->method_holder();
((InstanceKlass*)k)->initialize(THREAD);
if (HAS_PENDING_EXCEPTION) {
oop throwable = PENDING_EXCEPTION;
java_lang_Throwable::print(throwable, tty);
*** 387,402 ****
} else {
return;
}
}
// Make sure the existence of a prior compile doesn't stop this one
! nmethod* nm = (entry_bci != InvocationEntryBci) ? method->lookup_osr_nmethod_for(entry_bci, CompLevel_full_optimization, true) : method->code();
if (nm != NULL) {
nm->make_not_entrant();
}
replay_state = this;
! CompileBroker::compile_method(method, entry_bci, CompLevel_full_optimization,
methodHandle(), 0, "replay", THREAD);
replay_state = NULL;
reset();
}
--- 423,438 ----
} else {
return;
}
}
// Make sure the existence of a prior compile doesn't stop this one
! nmethod* nm = (entry_bci != InvocationEntryBci) ? method->lookup_osr_nmethod_for(entry_bci, comp_level, true) : method->code();
if (nm != NULL) {
nm->make_not_entrant();
}
replay_state = this;
! CompileBroker::compile_method(method, entry_bci, comp_level,
methodHandle(), 0, "replay", THREAD);
replay_state = NULL;
reset();
}
src/share/vm/ci/ciReplay.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File