1004 bool CallNode::is_call_to_arraycopystub() const {
1005 if (_name != NULL && strstr(_name, "arraycopy") != 0) {
1006 return true;
1007 }
1008 return false;
1009 }
1010
1011 //=============================================================================
1012 uint CallJavaNode::size_of() const { return sizeof(*this); }
1013 bool CallJavaNode::cmp( const Node &n ) const {
1014 CallJavaNode &call = (CallJavaNode&)n;
1015 return CallNode::cmp(call) && _method == call._method &&
1016 _override_symbolic_info == call._override_symbolic_info;
1017 }
1018 #ifdef ASSERT
1019 bool CallJavaNode::validate_symbolic_info() const {
1020 if (method() == NULL) {
1021 return true; // call into runtime or uncommon trap
1022 }
1023 Bytecodes::Code bc = jvms()->method()->java_code_at_bci(_bci);
1024 if (ACmpOnValues == 3 && (bc == Bytecodes::_if_acmpeq || bc == Bytecodes::_if_acmpne)) {
1025 return true;
1026 }
1027 ciMethod* symbolic_info = jvms()->method()->get_method_at_bci(_bci);
1028 ciMethod* callee = method();
1029 if (symbolic_info->is_method_handle_intrinsic() && !callee->is_method_handle_intrinsic()) {
1030 assert(override_symbolic_info(), "should be set");
1031 }
1032 assert(ciMethod::is_consistent_info(symbolic_info, callee), "inconsistent info");
1033 return true;
1034 }
1035 #endif
1036
1037 #ifndef PRODUCT
1038 void CallJavaNode::dump_spec(outputStream *st) const {
1039 if( _method ) _method->print_short_name(st);
1040 CallNode::dump_spec(st);
1041 }
1042
1043 void CallJavaNode::dump_compact_spec(outputStream* st) const {
1044 if (_method) {
|
1004 bool CallNode::is_call_to_arraycopystub() const {
1005 if (_name != NULL && strstr(_name, "arraycopy") != 0) {
1006 return true;
1007 }
1008 return false;
1009 }
1010
1011 //=============================================================================
1012 uint CallJavaNode::size_of() const { return sizeof(*this); }
1013 bool CallJavaNode::cmp( const Node &n ) const {
1014 CallJavaNode &call = (CallJavaNode&)n;
1015 return CallNode::cmp(call) && _method == call._method &&
1016 _override_symbolic_info == call._override_symbolic_info;
1017 }
1018 #ifdef ASSERT
1019 bool CallJavaNode::validate_symbolic_info() const {
1020 if (method() == NULL) {
1021 return true; // call into runtime or uncommon trap
1022 }
1023 Bytecodes::Code bc = jvms()->method()->java_code_at_bci(_bci);
1024 if (EnableValhalla && (bc == Bytecodes::_if_acmpeq || bc == Bytecodes::_if_acmpne)) {
1025 return true;
1026 }
1027 ciMethod* symbolic_info = jvms()->method()->get_method_at_bci(_bci);
1028 ciMethod* callee = method();
1029 if (symbolic_info->is_method_handle_intrinsic() && !callee->is_method_handle_intrinsic()) {
1030 assert(override_symbolic_info(), "should be set");
1031 }
1032 assert(ciMethod::is_consistent_info(symbolic_info, callee), "inconsistent info");
1033 return true;
1034 }
1035 #endif
1036
1037 #ifndef PRODUCT
1038 void CallJavaNode::dump_spec(outputStream *st) const {
1039 if( _method ) _method->print_short_name(st);
1040 CallNode::dump_spec(st);
1041 }
1042
1043 void CallJavaNode::dump_compact_spec(outputStream* st) const {
1044 if (_method) {
|