VirtualBox

Ignore:
Timestamp:
Oct 30, 2008 12:09:07 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
38627
Message:

improved external events check performance, synced couple VBOX-specific
recompiler checks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/recompiler_new/target-i386/translate.c

    r13600 r13672  
    817817#endif /* VBOX */
    818818{
    819 #ifdef VBOX
    820     gen_check_external_event();
    821 #endif /* VBOX */
    822819    tcg_gen_movi_tl(cpu_tmp0, pc);
    823820    tcg_gen_st_tl(cpu_tmp0, cpu_env, offsetof(CPUState, eip));
     
    827824static void gen_check_external_event()
    828825{
    829 #if 0
    830     /** @todo: nike make it work */
    831     /* This code is more effective, but for whatever reason TCG fails to compile it */
    832826    int skip_label;
    833827    TCGv t0;
    834828   
    835829    skip_label = gen_new_label();
    836     t0 = tcg_temp_local_new(TCG_TYPE_TL);
    837     /* t0 = cpu_tmp0; */
     830    /* t0 = tcg_temp_local_new(TCG_TYPE_TL); */
     831    t0 = cpu_tmp0;
    838832
    839833    tcg_gen_ld32u_tl(t0, cpu_env, offsetof(CPUState, interrupt_request));
     
    844838                    | CPU_INTERRUPT_EXTERNAL_DMA
    845839                    | CPU_INTERRUPT_EXTERNAL_HARD);
    846     tcg_gen_brcond_i32(TCG_COND_EQ, t0, 0, skip_label);
    847     tcg_temp_free(t0);
     840    /** @todo: predict branch as taken */
     841    tcg_gen_brcondi_i32(TCG_COND_EQ, t0, 0, skip_label);
     842    /* tcg_temp_free(t0); */
    848843
    849844    tcg_gen_helper_0_0(helper_check_external_event);
    850845
    851846   gen_set_label(skip_label);
    852 #else
    853     tcg_gen_helper_0_0(helper_check_external_event);
    854 #endif
    855847}
    856848
     
    78677859            mod = (modrm >> 6) & 3;
    78687860            rm = modrm & 7;
    7869 #ifdef VBOX /* Fix for obvious bug - T1 needs to be loaded */
    7870             /** @todo: how to do that right? */
    7871             //gen_op_mov_TN_reg[ot][1][reg]();
    7872 #endif
    78737861            if (mod != 3) {
    78747862                gen_lea_modrm(s, modrm, &reg_addr, &offset_addr);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette