src/share/vm/opto/graphKit.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/graphKit.cpp	Tue Mar 28 13:17:07 2017
--- new/src/share/vm/opto/graphKit.cpp	Tue Mar 28 13:17:06 2017

*** 549,558 **** --- 549,563 ---- if (C->trap_count(reason) != 0 && method()->method_data()->trap_count(reason) != 0 && has_ex_handler()) { treat_throw_as_hot = true; } + + // TODO: Check if and how profiling can be used for vbox/vunbox + if (java_bc() == Bytecodes::_vbox || java_bc() == Bytecodes::_vunbox) { + treat_throw_as_hot = true; + } } // If this throw happens frequently, an uncommon trap might cause // a performance pothole. If there is a local exception handler, // and if this particular bytecode appears to be deoptimizing often,
*** 3046,3056 **** --- 3051,3066 ---- } } ciProfileData* data = NULL; bool safe_for_replace = false; ! if (failure_control == NULL) { // use MDO in regular case only ! if (failure_control == NULL && + java_bc() != Bytecodes::_vbox && + java_bc() != Bytecodes::_vunbox) { // use MDO in regular case only + // Don't use MDO for the vunbox and vbox as no profile + // information is recorded for that bytecode. + // TOOD: Implement profiling for vunbox. assert(java_bc() == Bytecodes::_aastore || java_bc() == Bytecodes::_checkcast, "interpreter profiles type checks only for these BCs"); data = method()->method_data()->bci_to_data(bci()); safe_for_replace = true;
*** 3063,3072 **** --- 3073,3084 ---- C->set_has_split_ifs(true); // Has chance for split-if optimization // Use null-cast information if it is available bool speculative_not_null = false; bool never_see_null = ((failure_control == NULL) // regular case only + && java_bc() != Bytecodes::_vunbox // TODO: Implement profiling for vunbox and vbox. + && java_bc() != Bytecodes::_vbox && seems_never_null(obj, data, speculative_not_null)); // Null check; get casted pointer; set region slot 3 Node* null_ctl = top(); Node* not_null_obj = null_check_oop(obj, &null_ctl, never_see_null, safe_for_replace, speculative_not_null);

src/share/vm/opto/graphKit.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File