Ticket #352: tt352-jit-i386-ld.patch

File tt352-jit-i386-ld.patch, 4.9 KB (added by rurban, 13 years ago)

fixed jit_emit_mov_mr_n, but unused

  • src/jit/i386/jit_defs.c

    old new  
    11191119                emitm_fstpl(interp, jit_info->native_ptr, emit_ESP, emit_None, 1, 0); 
    11201120                /* additional stack adjustment */ 
    11211121                st += 4; 
    1122 #else 
     1122#else /* NUMVAL_SIZE == 12 */ 
    11231123                emitm_addb_i_r(jit_info->native_ptr, -12, emit_ESP); 
    1124                 emitm_fstpt(jit_info->native_ptr, emit_ESP, emit_None, 1, 0); 
     1124                emitm_fstpt(interp, jit_info->native_ptr, emit_ESP, emit_None, 1, 0); 
    11251125                st += 8; 
    11261126#endif 
    11271127                break; 
  • src/jit/i386/jit_emit.h

    old new  
    11/* 
    2  * Copyright (C) 2002-2008, Parrot Foundation. 
     2 * Copyright (C) 2002-2009, Parrot Foundation. 
    33 */ 
    44 
    55/* 
     
    218218    *(long *)(pc) = (long)(imm); \ 
    219219    (pc) += 4; } 
    220220 
     221/* TODO: remove duplicate */ 
    221222#if EXEC_CAPABLE 
    222223#  define emitm_pushl_m(pc, mem) { \ 
    223224       *((pc)++) = (char) 0xff; \ 
     
    691692#  define emitm_fstps(interp, pc, b, i, s, d) \ 
    692693    emitm_fl_2((interp), (pc), emit_b00, 1, emit_b010, (b), (i), (s), (d)) 
    693694 
     695#  define emitm_fstt(interp, pc, b, i, s, d) \ 
     696    emitm_fl_2((interp), (pc), emit_b10, 1, emit_b010, (b), (i), (s), (d)) 
     697 
    694698#if NUMVAL_SIZE == 8 
    695699 
    696700#  define jit_emit_fload_m_n(interp, pc, address) \ 
     
    708712#  define jit_emit_fst_mb_n(interp, pc, base, offs) \ 
    709713      emitm_fstl((interp), (pc), (base), emit_None, 1, (offs)) 
    710714 
    711 #else /* NUMVAL_SIZE */ 
     715#else /* NUMVAL_SIZE = 12 */ 
    712716 
    713717#  define jit_emit_fload_m_n(interp, pc, address) \ 
    714       emitm_fldt((pc), emit_None, emit_None, emit_None, (address)) 
     718      emitm_fldt((interp), (pc), emit_None, emit_None, emit_None, (address)) 
    715719 
    716720#  define jit_emit_fload_mb_n(interp, pc, base, offs) \ 
    717       emitm_fldt((pc), (base), emit_None, 1, (offs)) 
     721      emitm_fldt((interp), (pc), (base), emit_None, 1, (offs)) 
    718722 
    719 #  define jit_emit_fstore_m_n(pc, address) \ 
    720       emitm_fstpt((pc), emit_None, emit_None, emit_None, (address)) 
     723#  define jit_emit_fstore_m_n(interp, pc, address) \ 
     724      emitm_fstpt((interp), (pc), emit_None, emit_None, emit_None, (address)) 
    721725 
    722726#  define jit_emit_fstore_mb_n(interp, pc, base, offs) \ 
    723       emitm_fstpt((pc), (base), emit_None, 1, (offs)) 
     727      emitm_fstpt((interp), (pc), (base), emit_None, 1, (offs)) 
    724728 
    725729#  define jit_emit_fst_mb_n(interp, pc, base, offs) \ 
    726       emitm_fstt((pc), (base), emit_None, 1, (offs)) 
     730      emitm_fstt((interp), (pc), (base), emit_None, 1, (offs)) 
    727731 
    728732#endif /* NUMVAL_SIZE */ 
    729733 
     
    736740#  define jit_emit_fstore_m_i(pc, m) \ 
    737741      emitm_fistpl((pc), emit_None, emit_None, emit_None, (m)) 
    738742 
    739 #else /* INTVAL_SIZE */ 
     743#else /* INTVAL_SIZE = 8 */ 
    740744 
    741745#  define jit_emit_fload_m_i(interp, pc, address) \ 
    742746      emitm_fildll((interp), (pc), emit_None, emit_None, emit_None, (address)) 
     
    937941       emitm_fsubrp((pc), 1); \ 
    938942       jit_emit_fstore_mb_n((interp), (pc), emit_EBX, (mem)); \ 
    939943     } 
    940 #else 
     944 
     945#else /* without NEG_MINUS_ZERO and NEG_ZERO_SUB */ 
    941946 
    942947#  define jit_emit_neg_r_n(pc, r) { \ 
    943948       if (r) { \ 
     
    962967       emitm_fchs(pc); \ 
    963968       jit_emit_fstore_mb_n((interp), (pc), emit_EBX, (mem)); \ 
    964969     } 
    965 #endif 
     970#endif /* NEG_MINUS_ZERO, NEG_ZERO_SUB */ 
    966971 
    967972#  define jit_emit_sin_r_n(pc, r) \ 
    968973     if (r) { \ 
     
    10111016#  define jit_emit_abs_m_n(interp, pc, mem) { \ 
    10121017     jit_emit_fload_m_n((interp), (pc), (mem)); \ 
    10131018     emitm_fabs(pc); \ 
    1014      jit_emit_fstore_m_n((pc), (mem)); \ 
     1019     jit_emit_fstore_m_n((interp), (pc), (mem));        \ 
    10151020   } 
    10161021 
    10171022/* Integer comparisons */ 
     
    10401045    *((pc)++) = (char) 0xff; \ 
    10411046    *((pc)++) = (char) 0xd0 | ((reg) - 1); } 
    10421047 
     1048/* TODO: remove duplicate */ 
    10431049#if EXEC_CAPABLE 
    10441050#  define emitm_callm(pc, b, i, s, d) { \ 
    10451051       *((pc)++) = (char) 0xff; \ 
     
    10631069    *((pc)++) = (char) 0xff; \ 
    10641070    *((pc)++) = (char)(0xe0 | ((reg) - 1)); } 
    10651071 
     1072/* TODO: remove duplicate */ 
    10661073#if EXEC_CAPABLE 
    10671074#  define emitm_jumpm(pc, b, i, s, d) { \ 
    10681075       *((pc)++) = (char) 0xff; \ 
     
    12121219} 
    12131220 
    12141221/* numvar <- ST(i) */ 
    1215 #  define jit_emit_mov_mr_n(pc, d, r) { \ 
     1222/* TODO: unused. jit_emit_mov_MR_n is used instead */ 
     1223#  define jit_emit_mov_mr_n(interp, pc, d, r) {  \ 
    12161224    emitm_fld((pc), (r)); \ 
    1217     jit_emit_fstore_m_n((pc), (d)); \ 
     1225    jit_emit_fstore_m_n((interp), (pc), (d)); \ 
    12181226} 
    12191227 
    12201228#  define jit_emit_mov_MR_n(interp, pc, d, r) { \