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