--- a/hotspot/src/share/vm/ci/ciMethod.hpp Thu Jun 15 09:52:44 2017 +0200
+++ b/hotspot/src/share/vm/ci/ciMethod.hpp Fri Jun 09 10:51:52 2017 +0200
@@ -40,6 +40,14 @@
class BCEscapeAnalyzer;
class InlineTree;
+// Whether profiling found an oop to be always, never or sometimes
+// null
+enum ProfilePtrKind {
+ ProfileAlwaysNull,
+ ProfileNeverNull,
+ ProfileMaybeNull
+};
+
// ciMethod
//
// This class represents a Method* in the HotSpot virtual
@@ -248,9 +256,9 @@
int interpreter_call_site_count(int bci);
// Does type profiling provide any useful information at this point?
- bool argument_profiled_type(int bci, int i, ciKlass*& type, bool& maybe_null);
- bool parameter_profiled_type(int i, ciKlass*& type, bool& maybe_null);
- bool return_profiled_type(int bci, ciKlass*& type, bool& maybe_null);
+ bool argument_profiled_type(int bci, int i, ciKlass*& type, ProfilePtrKind& ptr_kind);
+ bool parameter_profiled_type(int i, ciKlass*& type, ProfilePtrKind& ptr_kind);
+ bool return_profiled_type(int bci, ciKlass*& type, ProfilePtrKind& ptr_kind);
ciField* get_field_at_bci( int bci, bool &will_link);
ciMethod* get_method_at_bci(int bci, bool &will_link, ciSignature* *declared_signature);