comparison src/share/vm/runtime/frame.cpp @ 14909:4ca6dc0799b6

Backout jdk9 merge
author Gilles Duboscq <duboscq@ssw.jku.at>
date Tue, 01 Apr 2014 13:57:07 +0200
parents d8041d695d19
children 52b4284cb496
comparison
equal deleted inserted replaced
14908:8db6e76cb658 14909:4ca6dc0799b6
647 interpreter_frame_method()->print_name(st); 647 interpreter_frame_method()->print_name(st);
648 st->cr(); 648 st->cr();
649 #endif 649 #endif
650 } 650 }
651 651
652 // Print whether the frame is in the VM or OS indicating a HotSpot problem. 652 // Return whether the frame is in the VM or os indicating a Hotspot problem.
653 // Otherwise, it's likely a bug in the native library that the Java code calls, 653 // Otherwise, it's likely a bug in the native library that the Java code calls,
654 // hopefully indicating where to submit bugs. 654 // hopefully indicating where to submit bugs.
655 void frame::print_C_frame(outputStream* st, char* buf, int buflen, address pc) { 655 void frame::print_C_frame(outputStream* st, char* buf, int buflen, address pc) {
656 // C/C++ frame 656 // C/C++ frame
657 bool in_vm = os::address_is_in_vm(pc); 657 bool in_vm = os::address_is_in_vm(pc);
893 int size = asc.size(); 893 int size = asc.size();
894 return (oop *)interpreter_frame_tos_at(size); 894 return (oop *)interpreter_frame_tos_at(size);
895 } 895 }
896 896
897 897
898 void frame::oops_interpreted_do(OopClosure* f, CLDClosure* cld_f, 898 void frame::oops_interpreted_do(OopClosure* f, CLDToOopClosure* cld_f,
899 const RegisterMap* map, bool query_oop_map_cache) { 899 const RegisterMap* map, bool query_oop_map_cache) {
900 assert(is_interpreted_frame(), "Not an interpreted frame"); 900 assert(is_interpreted_frame(), "Not an interpreted frame");
901 assert(map != NULL, "map must be set"); 901 assert(map != NULL, "map must be set");
902 Thread *thread = Thread::current(); 902 Thread *thread = Thread::current();
903 methodHandle m (thread, interpreter_frame_method()); 903 methodHandle m (thread, interpreter_frame_method());
926 if (cld_f != NULL) { 926 if (cld_f != NULL) {
927 // The method pointer in the frame might be the only path to the method's 927 // The method pointer in the frame might be the only path to the method's
928 // klass, and the klass needs to be kept alive while executing. The GCs 928 // klass, and the klass needs to be kept alive while executing. The GCs
929 // don't trace through method pointers, so typically in similar situations 929 // don't trace through method pointers, so typically in similar situations
930 // the mirror or the class loader of the klass are installed as a GC root. 930 // the mirror or the class loader of the klass are installed as a GC root.
931 // To minimize the overhead of doing that here, we ask the GC to pass down a 931 // To minimze the overhead of doing that here, we ask the GC to pass down a
932 // closure that knows how to keep klasses alive given a ClassLoaderData. 932 // closure that knows how to keep klasses alive given a ClassLoaderData.
933 cld_f->do_cld(m->method_holder()->class_loader_data()); 933 cld_f->do_cld(m->method_holder()->class_loader_data());
934 } 934 }
935 935
936 if (m->is_native() PPC32_ONLY(&& m->is_static())) { 936 #if !defined(PPC) || defined(ZERO)
937 f->do_oop(interpreter_frame_temp_oop_addr()); 937 if (m->is_native()) {
938 } 938 #ifdef CC_INTERP
939 interpreterState istate = get_interpreterState();
940 f->do_oop((oop*)&istate->_oop_temp);
941 #else
942 f->do_oop((oop*)( fp() + interpreter_frame_oop_temp_offset ));
943 #endif /* CC_INTERP */
944 }
945 #else // PPC
946 if (m->is_native() && m->is_static()) {
947 f->do_oop(interpreter_frame_mirror_addr());
948 }
949 #endif // PPC
939 950
940 int max_locals = m->is_native() ? m->size_of_parameters() : m->max_locals(); 951 int max_locals = m->is_native() ? m->size_of_parameters() : m->max_locals();
941 952
942 Symbol* signature = NULL; 953 Symbol* signature = NULL;
943 bool has_receiver = false; 954 bool has_receiver = false;
1133 // Traverse the Handle Block saved in the entry frame 1144 // Traverse the Handle Block saved in the entry frame
1134 entry_frame_call_wrapper()->oops_do(f); 1145 entry_frame_call_wrapper()->oops_do(f);
1135 } 1146 }
1136 1147
1137 1148
1138 void frame::oops_do_internal(OopClosure* f, CLDClosure* cld_f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache) { 1149 void frame::oops_do_internal(OopClosure* f, CLDToOopClosure* cld_f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache) {
1139 #ifndef PRODUCT 1150 #ifndef PRODUCT
1140 // simulate GC crash here to dump java thread in error report 1151 // simulate GC crash here to dump java thread in error report
1141 if (CrashGCForDumpingJavaThread) { 1152 if (CrashGCForDumpingJavaThread) {
1142 char *t = NULL; 1153 char *t = NULL;
1143 *t = 'c'; 1154 *t = 'c';