pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:2240:    jmp( &label_B );       LABEL_C;    /* integer */    mov_mem_reg( sp_reg,    -sizeof(struct svalue)+OFFSETOF(svalue,u.integer),    P_REG_RBX );    amd64_add_sp(-1);       LABEL_B; /* Branch or not? */ -  test_reg32( P_REG_RBX ); +  test_reg( P_REG_RBX );    if( op == F_BRANCH_WHEN_ZERO )    return jz_imm_rel32(0);    return jnz_imm_rel32(0);       case F_FOREACH:    START_JUMP();    /* -4: array    -3: lvalue[0]    -2: lvalue[1]    -1: counter
pike.git/src/code/amd64.c:2307:       LABEL_C;    add_reg_imm_reg( sp_reg, -3*sizeof(struct svalue), ARG1_REG );    mov_reg_reg( P_REG_RBX, ARG2_REG );    amd64_call_c_function( assign_lvalue );    jmp(&label_B);       LABEL_A;    mov_imm_reg( 0, P_REG_RBX );    LABEL_B; -  test_reg32(P_REG_RBX); +  test_reg(P_REG_RBX);    return jnz_imm_rel32(0);       case F_LOOP:    START_JUMP();    /* counter in pike_sp-1 */    /* decrement until 0. */    /* if not 0, branch */    /* otherwise, pop */    amd64_load_sp_reg();    mov_mem32_reg( sp_reg, -sizeof(struct svalue), P_REG_RAX );
pike.git/src/code/amd64.c:3110:    u.integer -> RAX    else if( type == PIKE_T_OBJECT || type == PIKE_T_FUNCTION )    call svalue_is_true(&local)    else    1 -> RAX       The tests are ordered assuming integers are most commonly    checked. That is not nessasarily true.    */    mov_sval_type( ARG1_REG, P_REG_RCX ); -  cmp_reg32_imm( P_REG_RCX, PIKE_T_INT ); je( &label_C ); +  cmp_reg32_imm( P_REG_RCX, PIKE_T_INT ); +  je( &label_C );    mov_imm_reg( 1, P_REG_RAX );    shl_reg32_reg( P_REG_RAX, P_REG_RCX );    and_reg32_imm( P_REG_RAX, BIT_FUNCTION|BIT_OBJECT );    jnz( &label_A );    /* Not object, int or function. Always true. */    mov_imm_reg( 1, P_REG_RAX );    jmp( &label_B );    LABEL_A;    amd64_call_c_function(svalue_is_true);    jmp( &label_B );