pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:675:    return;    }    jmp_rel_imm32( rel );   }      static void call_rel_imm32( int rel )   {    rel -= 5; // counts from the next instruction    opcode( 0xe8 );    id( rel ); +  sp_reg = -1;    return;   }         static void jmp_reg( enum amd64_reg reg )   {    rex(0,reg,0,0);    opcode( 0xff );    modrm( 3, 4, reg );   }
pike.git/src/code/amd64.c:1208:   #endif    amd64_prev_stored_pc = tmp;    }    else if ((disp = tmp - amd64_prev_stored_pc))    {   #ifdef PIKE_DEBUG    if (a_flag >= 60)    fprintf (stderr, "pc %d update pc relative: %d\n", tmp, disp);   #endif    amd64_load_fp_reg(); -  add_imm_mem(disp, fp_reg, OFFSETOF (pike_frame, pc)); +  mov_rip_imm_reg(tmp - PIKE_PC, tmp_reg); +  mov_reg_mem(tmp_reg, fp_reg, OFFSETOF(pike_frame, pc)); +  /* amd64_load_fp_reg(); */ +  /* add_imm_mem(disp, fp_reg, OFFSETOF (pike_frame, pc)); */    amd64_prev_stored_pc += disp;    }    else {   #ifdef PIKE_DEBUG    if (a_flag >= 60)    fprintf (stderr, "pc %d update pc - already up-to-date\n", tmp);   #endif    }   #if 0   #ifdef PIKE_DEBUG