901 current < interpreter_frame_monitor_begin();
902 current = next_monitor_in_interpreter_frame(current)
903 ) {
904 #ifdef ASSERT
905 interpreter_frame_verify_monitor(current);
906 #endif
907 current->oops_do(f);
908 }
909
910 // process fixed part
911 if (cld_f != NULL) {
912 // The method pointer in the frame might be the only path to the method's
913 // klass, and the klass needs to be kept alive while executing. The GCs
914 // don't trace through method pointers, so typically in similar situations
915 // the mirror or the class loader of the klass are installed as a GC root.
916 // To minimze the overhead of doing that here, we ask the GC to pass down a
917 // closure that knows how to keep klasses alive given a ClassLoaderData.
918 cld_f->do_cld(m->method_holder()->class_loader_data());
919 }
920
921 #if !defined(PPC) || defined(ZERO)
922 if (m->is_native()) {
923 #ifdef CC_INTERP
924 interpreterState istate = get_interpreterState();
925 f->do_oop((oop*)&istate->_oop_temp);
926 #else
927 f->do_oop((oop*)( fp() + interpreter_frame_oop_temp_offset ));
928 #endif /* CC_INTERP */
929 }
930 #else // PPC
931 if (m->is_native() && m->is_static()) {
932 f->do_oop(interpreter_frame_mirror_addr());
933 }
934 #endif // PPC
935
936 int max_locals = m->is_native() ? m->size_of_parameters() : m->max_locals();
937
938 Symbol* signature = NULL;
939 bool has_receiver = false;
940
941 // Process a callee's arguments if we are at a call site
942 // (i.e., if we are at an invoke bytecode)
943 // This is used sometimes for calling into the VM, not for another
944 // interpreted or compiled frame.
945 if (!m->is_native()) {
946 Bytecode_invoke call = Bytecode_invoke_check(m, bci);
947 if (call.is_valid()) {
948 signature = call.signature();
949 has_receiver = call.has_receiver();
950 if (map->include_argument_oops() &&
951 interpreter_frame_expression_stack_size() > 0) {
952 ResourceMark rm(thread); // is this right ???
953 // we are at a call site & the expression stack is not empty
954 // => process callee's arguments
|
901 current < interpreter_frame_monitor_begin();
902 current = next_monitor_in_interpreter_frame(current)
903 ) {
904 #ifdef ASSERT
905 interpreter_frame_verify_monitor(current);
906 #endif
907 current->oops_do(f);
908 }
909
910 // process fixed part
911 if (cld_f != NULL) {
912 // The method pointer in the frame might be the only path to the method's
913 // klass, and the klass needs to be kept alive while executing. The GCs
914 // don't trace through method pointers, so typically in similar situations
915 // the mirror or the class loader of the klass are installed as a GC root.
916 // To minimze the overhead of doing that here, we ask the GC to pass down a
917 // closure that knows how to keep klasses alive given a ClassLoaderData.
918 cld_f->do_cld(m->method_holder()->class_loader_data());
919 }
920
921 #if !defined(PPC32) || defined(ZERO)
922 if (m->is_native()) {
923 #ifdef CC_INTERP
924 interpreterState istate = get_interpreterState();
925 f->do_oop((oop*)&istate->_oop_temp);
926 #else
927 f->do_oop((oop*)( fp() + interpreter_frame_oop_temp_offset ));
928 #endif /* CC_INTERP */
929 }
930 #else // PPC32
931 if (m->is_native() && m->is_static()) {
932 f->do_oop(interpreter_frame_mirror_addr());
933 }
934 #endif // PPC32
935
936 int max_locals = m->is_native() ? m->size_of_parameters() : m->max_locals();
937
938 Symbol* signature = NULL;
939 bool has_receiver = false;
940
941 // Process a callee's arguments if we are at a call site
942 // (i.e., if we are at an invoke bytecode)
943 // This is used sometimes for calling into the VM, not for another
944 // interpreted or compiled frame.
945 if (!m->is_native()) {
946 Bytecode_invoke call = Bytecode_invoke_check(m, bci);
947 if (call.is_valid()) {
948 signature = call.signature();
949 has_receiver = call.has_receiver();
950 if (map->include_argument_oops() &&
951 interpreter_frame_expression_stack_size() > 0) {
952 ResourceMark rm(thread); // is this right ???
953 // we are at a call site & the expression stack is not empty
954 // => process callee's arguments
|