pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:2444:    mov_mem32_reg( ARG1_REG,OFFSETOF(pike_string, len ), P_REG_RAX );    jmp( &label_C );    LABEL_B;    /* It's something else, svalue in RBX. */    mov_reg_reg( P_REG_RBX, ARG1_REG );    amd64_call_c_function( pike_sizeof );       LABEL_C;/* all done, res in RAX */    /* free value, store result */    push( P_REG_RAX ); +  sub_reg_imm(P_REG_RSP, 8); /* Align on 16 bytes. */    amd64_free_svalue( P_REG_RBX, 0 ); -  +  add_reg_imm(P_REG_RSP, 8);    pop( P_REG_RAX );    mov_reg_mem(P_REG_RAX, P_REG_RBX, OFFSETOF(svalue, u.integer));    mov_imm_mem(PIKE_T_INT, P_REG_RBX, OFFSETOF(svalue, tu.t.type));    }    return;       case F_POP_VALUE:    {    ins_debug_instr_prologue(b, 0, 0);    amd64_load_sp_reg();
pike.git/src/code/amd64.c:2956:    shl_reg_imm( P_REG_RAX, 4 );    add_reg_reg( P_REG_RBX, P_REG_RAX );       mov_mem8_reg( sp_reg, -3*sizeof(struct svalue), P_REG_RAX );    cmp_reg_imm( P_REG_RAX,T_SVALUE_PTR);    jne( &label_C );       /* SVALUE_PTR optimization */    mov_mem_reg( sp_reg, -3*sizeof(struct svalue)+8, P_REG_RDX );    push( P_REG_RDX ); +  sub_reg_imm(P_REG_RSP, 8); /* Align on 16 bytes. */    /* Free old value. */    amd64_free_svalue( P_REG_RDX, 0 ); -  +  add_reg_imm(P_REG_RSP, 8);    pop( P_REG_RDX );       /* Assign new value. */    mov_mem_reg( P_REG_RBX, 0, P_REG_RAX );    mov_mem_reg( P_REG_RBX, 8, P_REG_RCX );    mov_reg_mem( P_REG_RAX, P_REG_RDX, 0 );    mov_reg_mem( P_REG_RCX, P_REG_RDX, 8 );       /* inc refs? */    and_reg32_imm( P_REG_RAX, MIN_REF_TYPE );
pike.git/src/code/amd64.c:4104:       case F_CLEAR_N_LOCAL:    {    LABELS();    ins_debug_instr_prologue(a-F_OFFSET, b, c);    amd64_load_fp_reg();    mov_mem_reg(fp_reg, OFFSETOF(pike_frame, locals), P_REG_RBX);    add_reg_imm(P_REG_RBX, b*sizeof(struct svalue));    if( c > 1 ) {    push(P_REG_RBP); +  sub_reg_imm(P_REG_RSP, 8); /* Align on 16 bytes. */    add_reg_imm_reg(P_REG_RBX, c*sizeof(struct svalue), P_REG_RBP );    }       LABEL_A;    amd64_free_svalue(P_REG_RBX, 0);    mov_imm_mem(PIKE_T_INT, P_REG_RBX, OFFSETOF(svalue, tu.t.type));    mov_imm_mem(0, P_REG_RBX, OFFSETOF(svalue, u.integer));    if( c > 1 )    {    add_reg_imm(P_REG_RBX, sizeof(struct svalue ) );    cmp_reg_reg( P_REG_RBX, P_REG_RBP );    jne(&label_A); -  +  add_reg_imm(P_REG_RSP, 8);    pop(P_REG_RBP);    }    }    return;       case F_LOCAL_LOCAL_INDEX:    {    LABELS();    ins_debug_instr_prologue(a-F_OFFSET, b, c);    amd64_load_fp_reg();