equal
deleted
inserted
replaced
39 #include "oops/objArrayKlass.hpp" |
39 #include "oops/objArrayKlass.hpp" |
40 #include "oops/objArrayOop.inline.hpp" |
40 #include "oops/objArrayOop.inline.hpp" |
41 #include "oops/oop.inline.hpp" |
41 #include "oops/oop.inline.hpp" |
42 #include "oops/typeArrayOop.inline.hpp" |
42 #include "oops/typeArrayOop.inline.hpp" |
43 #include "prims/methodHandles.hpp" |
43 #include "prims/methodHandles.hpp" |
44 #include "runtime/compilationPolicy.hpp" |
|
45 #include "runtime/deoptimization.hpp" |
44 #include "runtime/deoptimization.hpp" |
46 #include "runtime/fieldDescriptor.inline.hpp" |
45 #include "runtime/fieldDescriptor.inline.hpp" |
47 #include "runtime/handles.inline.hpp" |
46 #include "runtime/handles.inline.hpp" |
48 #include "runtime/interfaceSupport.inline.hpp" |
47 #include "runtime/interfaceSupport.inline.hpp" |
49 #include "runtime/javaCalls.hpp" |
48 #include "runtime/javaCalls.hpp" |
571 } else if (sig->char_at(0) != '(') { |
570 } else if (sig->char_at(0) != '(') { |
572 BasicType bt = char2type(sig->char_at(0)); |
571 BasicType bt = char2type(sig->char_at(0)); |
573 if (is_subword_type(bt)) { |
572 if (is_subword_type(bt)) { |
574 bsig = vmSymbols::int_signature(); |
573 bsig = vmSymbols::int_signature(); |
575 } else { |
574 } else { |
576 assert(bt == T_OBJECT || bt == T_ARRAY, "is_basic_type_signature was false"); |
575 assert(is_reference_type(bt), "is_basic_type_signature was false"); |
577 bsig = vmSymbols::object_signature(); |
576 bsig = vmSymbols::object_signature(); |
578 } |
577 } |
579 } else { |
578 } else { |
580 ResourceMark rm; |
579 ResourceMark rm; |
581 stringStream buffer(128); |
580 stringStream buffer(128); |
590 buffer.put(')'); |
589 buffer.put(')'); |
591 } |
590 } |
592 if (arg_pos == keep_arg_pos) { |
591 if (arg_pos == keep_arg_pos) { |
593 buffer.write((char*) ss.raw_bytes(), |
592 buffer.write((char*) ss.raw_bytes(), |
594 (int) ss.raw_length()); |
593 (int) ss.raw_length()); |
595 } else if (bt == T_OBJECT || bt == T_ARRAY) { |
594 } else if (is_reference_type(bt)) { |
596 buffer.write(OBJ_SIG, OBJ_SIG_LEN); |
595 buffer.write(OBJ_SIG, OBJ_SIG_LEN); |
597 } else { |
596 } else { |
598 if (is_subword_type(bt)) |
597 if (is_subword_type(bt)) |
599 bt = T_INT; |
598 bt = T_INT; |
600 buffer.put(type2char(bt)); |
599 buffer.put(type2char(bt)); |
1002 } else if (rfill < rlimit) { |
1001 } else if (rfill < rlimit) { |
1003 Handle result(thread, results->obj_at(rfill++)); |
1002 Handle result(thread, results->obj_at(rfill++)); |
1004 if (!java_lang_invoke_MemberName::is_instance(result())) |
1003 if (!java_lang_invoke_MemberName::is_instance(result())) |
1005 return -99; // caller bug! |
1004 return -99; // caller bug! |
1006 oop saved = MethodHandles::init_field_MemberName(result, st.field_descriptor()); |
1005 oop saved = MethodHandles::init_field_MemberName(result, st.field_descriptor()); |
1007 if (!oopDesc::equals(saved, result())) |
1006 if (saved != result()) |
1008 results->obj_at_put(rfill-1, saved); // show saved instance to user |
1007 results->obj_at_put(rfill-1, saved); // show saved instance to user |
1009 } else if (++overflow >= overflow_limit) { |
1008 } else if (++overflow >= overflow_limit) { |
1010 match_flags = 0; break; // got tired of looking at overflow |
1009 match_flags = 0; break; // got tired of looking at overflow |
1011 } |
1010 } |
1012 } |
1011 } |
1054 Handle result(thread, results->obj_at(rfill++)); |
1053 Handle result(thread, results->obj_at(rfill++)); |
1055 if (!java_lang_invoke_MemberName::is_instance(result())) |
1054 if (!java_lang_invoke_MemberName::is_instance(result())) |
1056 return -99; // caller bug! |
1055 return -99; // caller bug! |
1057 CallInfo info(m, NULL, CHECK_0); |
1056 CallInfo info(m, NULL, CHECK_0); |
1058 oop saved = MethodHandles::init_method_MemberName(result, info); |
1057 oop saved = MethodHandles::init_method_MemberName(result, info); |
1059 if (!oopDesc::equals(saved, result())) |
1058 if (saved != result()) |
1060 results->obj_at_put(rfill-1, saved); // show saved instance to user |
1059 results->obj_at_put(rfill-1, saved); // show saved instance to user |
1061 } else if (++overflow >= overflow_limit) { |
1060 } else if (++overflow >= overflow_limit) { |
1062 match_flags = 0; break; // got tired of looking at overflow |
1061 match_flags = 0; break; // got tired of looking at overflow |
1063 } |
1062 } |
1064 } |
1063 } |