< prev index next >

src/cpu/ppc/vm/macroAssembler_ppc.cpp

Print this page




4275   ld(tmp, 0, tmp);
4276   if (oop != tmp) mr_if_needed(R4_ARG2, oop);
4277   load_const_optimized(R3_ARG1, (address)msg, R0);
4278   // Call destination for its side effect.
4279   call_c(tmp);
4280 
4281   pop_frame();
4282   restore_LR_CR(tmp);
4283   restore_volatile_gprs(R1_SP, -nbytes_save); // except R0
4284 }
4285 
4286 const char* stop_types[] = {
4287   "stop",
4288   "untested",
4289   "unimplemented",
4290   "shouldnotreachhere"
4291 };
4292 
4293 static void stop_on_request(int tp, const char* msg) {
4294   tty->print("PPC assembly code requires stop: (%s) %s\n", stop_types[tp%/*stop_end*/4], msg);
4295   guarantee(false, err_msg("PPC assembly code requires stop: %s", msg));
4296 }
4297 
4298 // Call a C-function that prints output.
4299 void MacroAssembler::stop(int type, const char* msg, int id) {
4300 #ifndef PRODUCT
4301   block_comment(err_msg("stop: %s %s {", stop_types[type%stop_end], msg));
4302 #else
4303   block_comment("stop {");
4304 #endif
4305 
4306   // setup arguments
4307   load_const_optimized(R3_ARG1, type);
4308   load_const_optimized(R4_ARG2, (void *)msg, /*tmp=*/R0);
4309   call_VM_leaf(CAST_FROM_FN_PTR(address, stop_on_request), R3_ARG1, R4_ARG2);
4310   illtrap();
4311   emit_int32(id);
4312   block_comment("} stop;");
4313 }
4314 
4315 #ifndef PRODUCT




4275   ld(tmp, 0, tmp);
4276   if (oop != tmp) mr_if_needed(R4_ARG2, oop);
4277   load_const_optimized(R3_ARG1, (address)msg, R0);
4278   // Call destination for its side effect.
4279   call_c(tmp);
4280 
4281   pop_frame();
4282   restore_LR_CR(tmp);
4283   restore_volatile_gprs(R1_SP, -nbytes_save); // except R0
4284 }
4285 
4286 const char* stop_types[] = {
4287   "stop",
4288   "untested",
4289   "unimplemented",
4290   "shouldnotreachhere"
4291 };
4292 
4293 static void stop_on_request(int tp, const char* msg) {
4294   tty->print("PPC assembly code requires stop: (%s) %s\n", stop_types[tp%/*stop_end*/4], msg);
4295   guarantee(false, "PPC assembly code requires stop: %s", msg);
4296 }
4297 
4298 // Call a C-function that prints output.
4299 void MacroAssembler::stop(int type, const char* msg, int id) {
4300 #ifndef PRODUCT
4301   block_comment(err_msg("stop: %s %s {", stop_types[type%stop_end], msg));
4302 #else
4303   block_comment("stop {");
4304 #endif
4305 
4306   // setup arguments
4307   load_const_optimized(R3_ARG1, type);
4308   load_const_optimized(R4_ARG2, (void *)msg, /*tmp=*/R0);
4309   call_VM_leaf(CAST_FROM_FN_PTR(address, stop_on_request), R3_ARG1, R4_ARG2);
4310   illtrap();
4311   emit_int32(id);
4312   block_comment("} stop;");
4313 }
4314 
4315 #ifndef PRODUCT


< prev index next >