Пример #1
0
void LIR_Assembler::add_call_info(int pc_offset, CodeEmitInfo* cinfo) {
  flush_debug_info(pc_offset);
  cinfo->record_debug_info(compilation()->debug_info_recorder(), pc_offset);
  if (cinfo->exception_handlers() != NULL) {
    compilation()->add_exception_handlers_for_pco(pc_offset, cinfo->exception_handlers());
  }
}
void LIR_Assembler::add_debug_info_for_branch(CodeEmitInfo* info) {
    int pc_offset = code_offset();
    flush_debug_info(pc_offset);
    info->record_debug_info(compilation()->debug_info_recorder(), pc_offset);
    if (info->exception_handlers() != NULL) {
        compilation()->add_exception_handlers_for_pco(pc_offset, info->exception_handlers());
    }
}
void LIR_Assembler::emit_code(BlockList* hir) {
    if (PrintLIR) {
        print_LIR(hir);
    }

    int n = hir->length();
    for (int i = 0; i < n; i++) {
        emit_block(hir->at(i));
        CHECK_BAILOUT();
    }

    flush_debug_info(code_offset());

    DEBUG_ONLY(check_no_unbound_labels());
}