< prev index next >

src/hotspot/share/runtime/frame.cpp

Print this page
rev 59383 : [mq]: final


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);


< prev index next >