< prev index next >

src/cpu/s390/vm/frame_s390.cpp

Print this page
rev 12273 : 8169317: [s390] Various minor bug fixes and adaptions.


 139   }
 140   if (is_interpreted_frame()) {
 141     return sender_for_interpreter_frame(map);
 142   }
 143   assert(_cb == CodeCache::find_blob(pc()),"Must be the same");
 144   if (_cb != NULL) {
 145     return sender_for_compiled_frame(map);
 146   }
 147   // Must be native-compiled frame, i.e. the marshaling code for native
 148   // methods that exists in the core system.
 149   return frame(sender_sp(), sender_pc());
 150 }
 151 
 152 void frame::patch_pc(Thread* thread, address pc) {
 153   if (TracePcPatching) {
 154     tty->print_cr("patch_pc at address  " PTR_FORMAT " [" PTR_FORMAT " -> " PTR_FORMAT "] ",
 155                   p2i(&((address*) _sp)[-1]), p2i(((address*) _sp)[-1]), p2i(pc));
 156   }
 157   own_abi()->return_pc = (uint64_t)pc;
 158   _cb = CodeCache::find_blob(pc);
 159   address original_pc = nmethod::get_deopt_original_pc(this);
 160   if (original_pc != NULL) {
 161     assert(original_pc == _pc, "expected original to be stored before patching");
 162     _deopt_state = is_deoptimized;
 163     // Leave _pc as is.
 164   } else {
 165     _deopt_state = not_deoptimized;
 166     _pc = pc;
 167   }
 168 }
 169 
 170 bool frame::is_interpreted_frame_valid(JavaThread* thread) const {
 171   // Is there anything to do?
 172   assert(is_interpreted_frame(), "Not an interpreted frame");
 173   return true;
 174 }
 175 
 176 BasicType frame::interpreter_frame_result(oop* oop_result, jvalue* value_result) {
 177   assert(is_interpreted_frame(), "interpreted frame expected");
 178   Method* method = interpreter_frame_method();
 179   BasicType type = method->result_type();




 139   }
 140   if (is_interpreted_frame()) {
 141     return sender_for_interpreter_frame(map);
 142   }
 143   assert(_cb == CodeCache::find_blob(pc()),"Must be the same");
 144   if (_cb != NULL) {
 145     return sender_for_compiled_frame(map);
 146   }
 147   // Must be native-compiled frame, i.e. the marshaling code for native
 148   // methods that exists in the core system.
 149   return frame(sender_sp(), sender_pc());
 150 }
 151 
 152 void frame::patch_pc(Thread* thread, address pc) {
 153   if (TracePcPatching) {
 154     tty->print_cr("patch_pc at address  " PTR_FORMAT " [" PTR_FORMAT " -> " PTR_FORMAT "] ",
 155                   p2i(&((address*) _sp)[-1]), p2i(((address*) _sp)[-1]), p2i(pc));
 156   }
 157   own_abi()->return_pc = (uint64_t)pc;
 158   _cb = CodeCache::find_blob(pc);
 159   address original_pc = CompiledMethod::get_deopt_original_pc(this);
 160   if (original_pc != NULL) {
 161     assert(original_pc == _pc, "expected original to be stored before patching");
 162     _deopt_state = is_deoptimized;
 163     // Leave _pc as is.
 164   } else {
 165     _deopt_state = not_deoptimized;
 166     _pc = pc;
 167   }
 168 }
 169 
 170 bool frame::is_interpreted_frame_valid(JavaThread* thread) const {
 171   // Is there anything to do?
 172   assert(is_interpreted_frame(), "Not an interpreted frame");
 173   return true;
 174 }
 175 
 176 BasicType frame::interpreter_frame_result(oop* oop_result, jvalue* value_result) {
 177   assert(is_interpreted_frame(), "interpreted frame expected");
 178   Method* method = interpreter_frame_method();
 179   BasicType type = method->result_type();


< prev index next >