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