pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:1277:    P_REG_RAX);    mov_reg_mem(P_REG_RCX, sp_reg, OFFSETOF(svalue, u.object));    add_reg_imm(P_REG_RAX, fun);    add_imm_mem( 1, P_REG_RCX,(INT32)OFFSETOF(object, refs));    shl_reg_imm(P_REG_RAX, 16);    add_reg_imm(P_REG_RAX, PIKE_T_FUNCTION);    mov_reg_mem(P_REG_RAX, sp_reg, OFFSETOF(svalue, tu.t.type));    amd64_add_sp(1);   }    - #ifdef PIKE_DEBUG - static void amd64_stack_error(void) - { -  Pike_fatal("Stack error\n"); - } - #endif -  +    void amd64_update_pc(void)   {    INT32 tmp = PIKE_PC, disp;    const enum amd64_reg tmp_reg = P_REG_RAX;       if(amd64_prev_stored_pc == - 1)    {    amd64_load_fp_reg();    mov_rip_imm_reg(tmp - PIKE_PC, tmp_reg);    mov_reg_mem(tmp_reg, fp_reg, OFFSETOF(pike_frame, pc));
pike.git/src/code/amd64.c:1319:    /* 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 -  if (d_flag) { -  /* Check that the stack keeps being 16 byte aligned. */ -  mov_reg_reg(P_REG_RSP, P_REG_RAX); -  and_reg_imm(P_REG_RAX, 0x08); -  AMD64_JE(0x09); -  call_imm(amd64_stack_error); +    } - #endif - #endif - } +          static void maybe_update_pc(void)   {    static int last_prog_id=-1;    static size_t last_num_linenumbers=-1;    if( !store_pc ) return;       if(   #ifdef PIKE_DEBUG