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 |