VirtualBox

Changeset 13672

Show
Ignore:
Timestamp:
10/30/08 13:09:07 (2 months ago)
Author:
vboxsync
Message:

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

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • 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); 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy