--- old/src/share/vm/opto/callnode.hpp 2021-01-25 19:30:42.542906877 +0000 +++ new/src/share/vm/opto/callnode.hpp 2021-01-25 19:30:42.411905500 +0000 @@ -896,6 +896,20 @@ // 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---------------------------------