src/share/vm/runtime/frame.cpp

Print this page
rev 4738 : Clean up PPC defines.

Reorganize PPC defines.  Distinguish PPC, PPC64 and PPC32.
PPC should guard code needed on PPC regardless of word size.
PPC32 and PPC64 should guard code needed in the 64-bit or
the 32-bit port.

 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