1022 assert( Universe::heap()->is_in(owner), "bad receiver" );
1023 return owner;
1024 }
1025
1026 void frame::oops_entry_do(OopClosure* f, const RegisterMap* map) {
1027 assert(map != NULL, "map must be set");
1028 if (map->include_argument_oops()) {
1029 // must collect argument oops, as nobody else is doing it
1030 Thread *thread = Thread::current();
1031 methodHandle m (thread, entry_frame_call_wrapper()->callee_method());
1032 EntryFrameOopFinder finder(this, m->signature(), m->is_static());
1033 finder.arguments_do(f);
1034 }
1035 // Traverse the Handle Block saved in the entry frame
1036 entry_frame_call_wrapper()->oops_do(f);
1037 }
1038
1039
1040 void frame::oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache) {
1041 #ifndef PRODUCT
1042 #if defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x5140
1043 #pragma error_messages(off, SEC_NULL_PTR_DEREF)
1044 #endif
1045 // simulate GC crash here to dump java thread in error report
1046 if (CrashGCForDumpingJavaThread) {
1047 char *t = NULL;
1048 *t = 'c';
1049 }
1050 #endif
1051 if (is_interpreted_frame()) {
1052 oops_interpreted_do(f, map, use_interpreter_oop_map_cache);
1053 } else if (is_entry_frame()) {
1054 oops_entry_do(f, map);
1055 } else if (CodeCache::contains(pc())) {
1056 oops_code_blob_do(f, cf, map);
1057 } else {
1058 ShouldNotReachHere();
1059 }
1060 }
1061
1062 void frame::nmethods_do(CodeBlobClosure* cf) {
1063 if (_cb != NULL && _cb->is_nmethod()) {
1064 cf->do_code_blob(_cb);
|
1022 assert( Universe::heap()->is_in(owner), "bad receiver" );
1023 return owner;
1024 }
1025
1026 void frame::oops_entry_do(OopClosure* f, const RegisterMap* map) {
1027 assert(map != NULL, "map must be set");
1028 if (map->include_argument_oops()) {
1029 // must collect argument oops, as nobody else is doing it
1030 Thread *thread = Thread::current();
1031 methodHandle m (thread, entry_frame_call_wrapper()->callee_method());
1032 EntryFrameOopFinder finder(this, m->signature(), m->is_static());
1033 finder.arguments_do(f);
1034 }
1035 // Traverse the Handle Block saved in the entry frame
1036 entry_frame_call_wrapper()->oops_do(f);
1037 }
1038
1039
1040 void frame::oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache) {
1041 #ifndef PRODUCT
1042 // simulate GC crash here to dump java thread in error report
1043 if (CrashGCForDumpingJavaThread) {
1044 char *t = NULL;
1045 *t = 'c';
1046 }
1047 #endif
1048 if (is_interpreted_frame()) {
1049 oops_interpreted_do(f, map, use_interpreter_oop_map_cache);
1050 } else if (is_entry_frame()) {
1051 oops_entry_do(f, map);
1052 } else if (CodeCache::contains(pc())) {
1053 oops_code_blob_do(f, cf, map);
1054 } else {
1055 ShouldNotReachHere();
1056 }
1057 }
1058
1059 void frame::nmethods_do(CodeBlobClosure* cf) {
1060 if (_cb != NULL && _cb->is_nmethod()) {
1061 cf->do_code_blob(_cb);
|