int Compilation::compile_java_method() { assert(!method()->is_native(), "should not reach here"); if (BailoutOnExceptionHandlers) { if (method()->has_exception_handlers()) { bailout("linear scan can't handle exception handlers"); } } CHECK_BAILOUT_(no_frame_size); { PhaseTraceTime timeit(_t_buildIR); build_hir(); } if (BailoutAfterHIR) { BAILOUT_("Bailing out because of -XX:+BailoutAfterHIR", no_frame_size); } { PhaseTraceTime timeit(_t_emit_lir); _frame_map = new FrameMap(method(), hir()->number_of_locks(), MAX2(4, hir()->max_stack())); emit_lir(); } CHECK_BAILOUT_(no_frame_size); { PhaseTraceTime timeit(_t_codeemit); return emit_code_body(); } }
int Compilation::emit_code_body() { // emit code if (!setup_code_buffer(code(), allocator()->num_calls())) { BAILOUT_("size requested greater than avail code buffer size", 0); } code()->initialize_oop_recorder(env()->oop_recorder()); _masm = new C1_MacroAssembler(code()); _masm->set_oop_recorder(env()->oop_recorder()); LIR_Assembler lir_asm(this); lir_asm.emit_code(hir()->code()); CHECK_BAILOUT_(0); emit_code_epilog(&lir_asm); CHECK_BAILOUT_(0); generate_exception_handler_table(); #ifndef PRODUCT if (PrintExceptionHandlers && Verbose) { exception_handler_table()->print(); } #endif /* PRODUCT */ return frame_map()->framesize(); }
int FpuStackSim::offset_from_tos(int rnr) const { for (int i = tos_index(); i >= 0; i--) { if (regs_at(i) == rnr) { return tos_index() - i; } } assert(false, "FpuStackSim: register not found"); BAILOUT_("FpuStackSim: register not found", 0); }