hotspot/src/share/vm/runtime/frame.cpp

Print this page




1077   }
1078   // Traverse the Handle Block saved in the entry frame
1079   entry_frame_call_wrapper()->oops_do(f);
1080 }
1081 
1082 
1083 void frame::oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache) {
1084 #ifndef PRODUCT
1085   // simulate GC crash here to dump java thread in error report
1086   if (CrashGCForDumpingJavaThread) {
1087     char *t = NULL;
1088     *t = 'c';
1089   }
1090 #endif
1091   if (is_interpreted_frame()) {
1092     oops_interpreted_do(f, map, use_interpreter_oop_map_cache);
1093   } else if (is_entry_frame()) {
1094     oops_entry_do(f, map);
1095   } else if (CodeCache::contains(pc())) {
1096     oops_code_blob_do(f, cf, map);




1097   } else {
1098     ShouldNotReachHere();
1099   }
1100 }
1101 
1102 void frame::nmethods_do(CodeBlobClosure* cf) {
1103   if (_cb != NULL && _cb->is_nmethod()) {
1104     cf->do_code_blob(_cb);
1105   }
1106 }
1107 
1108 
1109 void frame::gc_prologue() {
1110   if (is_interpreted_frame()) {
1111     // set bcx to bci to become methodOop position independent during GC
1112     interpreter_frame_set_bcx(interpreter_frame_bci());
1113   }
1114 }
1115 
1116 




1077   }
1078   // Traverse the Handle Block saved in the entry frame
1079   entry_frame_call_wrapper()->oops_do(f);
1080 }
1081 
1082 
1083 void frame::oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache) {
1084 #ifndef PRODUCT
1085   // simulate GC crash here to dump java thread in error report
1086   if (CrashGCForDumpingJavaThread) {
1087     char *t = NULL;
1088     *t = 'c';
1089   }
1090 #endif
1091   if (is_interpreted_frame()) {
1092     oops_interpreted_do(f, map, use_interpreter_oop_map_cache);
1093   } else if (is_entry_frame()) {
1094     oops_entry_do(f, map);
1095   } else if (CodeCache::contains(pc())) {
1096     oops_code_blob_do(f, cf, map);
1097 #ifdef SHARK
1098   } else if (is_fake_stub_frame()) {
1099     // nothing to do
1100 #endif // SHARK
1101   } else {
1102     ShouldNotReachHere();
1103   }
1104 }
1105 
1106 void frame::nmethods_do(CodeBlobClosure* cf) {
1107   if (_cb != NULL && _cb->is_nmethod()) {
1108     cf->do_code_blob(_cb);
1109   }
1110 }
1111 
1112 
1113 void frame::gc_prologue() {
1114   if (is_interpreted_frame()) {
1115     // set bcx to bci to become methodOop position independent during GC
1116     interpreter_frame_set_bcx(interpreter_frame_bci());
1117   }
1118 }
1119 
1120