mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 06:14:49 +02:00
8023657: New type profiling points: arguments to call
X86 interpreter and c1 type profiling for arguments at calls Reviewed-by: kvn, twisti
This commit is contained in:
parent
b90addac58
commit
cbd0e9bf96
40 changed files with 1773 additions and 238 deletions
|
@ -657,6 +657,7 @@ class NullCheckEliminator: public ValueVisitor {
|
|||
void handle_Intrinsic (Intrinsic* x);
|
||||
void handle_ExceptionObject (ExceptionObject* x);
|
||||
void handle_Phi (Phi* x);
|
||||
void handle_ProfileCall (ProfileCall* x);
|
||||
};
|
||||
|
||||
|
||||
|
@ -715,7 +716,8 @@ void NullCheckVisitor::do_UnsafePutObject(UnsafePutObject* x) {}
|
|||
void NullCheckVisitor::do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) {}
|
||||
void NullCheckVisitor::do_UnsafePrefetchRead (UnsafePrefetchRead* x) {}
|
||||
void NullCheckVisitor::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {}
|
||||
void NullCheckVisitor::do_ProfileCall (ProfileCall* x) { nce()->clear_last_explicit_null_check(); }
|
||||
void NullCheckVisitor::do_ProfileCall (ProfileCall* x) { nce()->clear_last_explicit_null_check();
|
||||
nce()->handle_ProfileCall(x); }
|
||||
void NullCheckVisitor::do_ProfileInvoke (ProfileInvoke* x) {}
|
||||
void NullCheckVisitor::do_RuntimeCall (RuntimeCall* x) {}
|
||||
void NullCheckVisitor::do_MemBar (MemBar* x) {}
|
||||
|
@ -1134,6 +1136,11 @@ void NullCheckEliminator::handle_Phi(Phi* x) {
|
|||
}
|
||||
}
|
||||
|
||||
void NullCheckEliminator::handle_ProfileCall(ProfileCall* x) {
|
||||
for (int i = 0; i < x->nb_profiled_args(); i++) {
|
||||
x->set_arg_needs_null_check(i, !set_contains(x->profiled_arg_at(i)));
|
||||
}
|
||||
}
|
||||
|
||||
void Optimizer::eliminate_null_checks() {
|
||||
ResourceMark rm;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue