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