Ticket #530: jit.patch

File jit.patch, 3.4 KB (added by rg, 5 years ago)
  • src/jit/i386/jit_defs.c

     
    24762476const char i_map[] = 
    24772477    { emit_EDI, emit_ESI, emit_EDX, emit_ECX }; 
    24782478const char floatval_map[] = 
    2479     { 1, 2, 3, 4, 5 };         /* ST(1) .. (ST(4) */ 
     2479    { };         /* XXX see TT #530, #501, #38 */ 
    24802480 
    24812481const char i_map_sub[] = 
    24822482    { emit_EDX, emit_ECX, emit_EBX, emit_EDI, emit_ESI }; 
     
    24942494            4,                  /* 4 mapped ints */ 
    24952495            2,                  /* first 2 are preserved */ 
    24962496            i_map, 
    2497             4,                  /* 4 mapped float regs */ 
     2497            0,                  /* 0 mapped float regs see TT #530, #38, #501 */ 
    24982498            0,                  /* ABI sez it's not preserved */ 
    24992499            floatval_map 
    25002500        }, 
  • src/jit/i386/jit_emit.h

     
    12231223        jit_emit_fstore_mb_n((interp), (pc), emit_EBX, (d)); \ 
    12241224    } \ 
    12251225    else { \ 
    1226         jit_emit_fst_mb_n((interp), (pc), emit_EBX, (d)); \ 
     1226        jit_emit_fstore_mb_n((interp), (pc), emit_EBX, (d)); \ 
    12271227    } \ 
    12281228} 
    12291229 
  • src/jit/i386/core.jit

     
    17401740        emitm_fstp(NATIVECODE, (MAP[1] + 1));              /* store res */ 
    17411741    } 
    17421742    else { 
    1743         jit_emit_fstore_m_n(interp, NATIVECODE, ROFFS_NUM(1)); 
     1743        jit_emit_fstore_mb_n(interp, NATIVECODE, emit_EBX, ROFFS_NUM(1)); 
    17441744    } 
    17451745    if (saved) 
    17461746        emitm_popl_r(NATIVECODE, emit_ECX); 
  • src/jit_debug.c

     
    286286        char * const src = Parrot_str_to_cstring(interp, 
    287287            Parrot_debug_pc_to_filename(interp, 
    288288            interp->code->debugs, 0)); 
    289         pasmfile = string_make(interp, src, strlen(src), NULL, 
    290                 PObj_external_FLAG); 
     289        pasmfile = string_make(interp, src, strlen(src), NULL, 0); 
    291290        file = Parrot_str_copy(interp, pasmfile); 
    292291        /* chop pasm/pir */ 
    293292 
  • t/op/trans.t

     
    205205ok 2 
    206206OUTPUT 
    207207 
    208 my $runcore = $ENV{TEST_PROG_ARGS} || ''; 
    209 my @bsdtodo = ( 
    210     $runcore =~ /--runcore=jit/ &&  $^O =~ m/bsd/i 
    211         ? ( todo => 'broken under JIT TT #501' ) 
    212         : () 
    213 ); 
    214  
    215 pasm_output_is( <<"CODE", <<OUTPUT, "sinh", @bsdtodo ); 
     208pasm_output_is( <<"CODE", <<OUTPUT, "sinh" ); 
    216209        .include 'include/fp_equality.pasm' 
    217210        set N1, 1.0 
    218211        sinh N2, N1 
     
    232225ok 2 
    233226OUTPUT 
    234227 
    235 pasm_output_is( <<"CODE", <<OUTPUT, "tanh", @bsdtodo ); 
     228pasm_output_is( <<"CODE", <<OUTPUT, "tanh" ); 
    236229        .include 'include/fp_equality.pasm' 
    237230        set N1, 1.0 
    238231        tanh N2, N1 
     
    477470ok 2 
    478471OUTPUT 
    479472 
    480 pasm_output_is( <<"CODE", <<OUTPUT, "pow", @bsdtodo ); 
     473pasm_output_is( <<"CODE", <<OUTPUT, "pow" ); 
    481474        .include 'include/fp_equality.pasm' 
    482475        set N1, 3.0 
    483476        set I1, 3