< prev index next >
src/share/vm/opto/callnode.hpp
Print this page
@@ -894,10 +894,24 @@
// are defined in graphKit.cpp, which sets up the bidirectional relation.)
InitializeNode* initialization();
// Convenience for initialization->maybe_set_complete(phase)
bool maybe_set_complete(PhaseGVN* phase);
+
+#ifdef AARCH64
+ // Return true if allocation doesn't escape thread, its escape state
+ // needs be noEscape or ArgEscape. InitializeNode._does_not_escape
+ // is true when its allocation's escape state is noEscape or
+ // ArgEscape. In case allocation's InitializeNode is NULL, check
+ // AlllocateNode._is_non_escaping flag.
+ // AlllocateNode._is_non_escaping is true when its escape state is
+ // noEscape.
+ bool does_not_escape_thread() {
+ InitializeNode* init = NULL;
+ return _is_non_escaping || (((init = initialization()) != NULL) && init->does_not_escape());
+ }
+#endif
};
//------------------------------AllocateArray---------------------------------
//
// High-level array allocation
< prev index next >