pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:3182:    mov_mem8_reg( sp_reg, -sizeof(struct svalue )+OFFSETOF(svalue,tu.t.type), P_REG_RAX);    cmp_reg32_imm( P_REG_RAX, c );    je( &label_B );       /* not the same type. Fall back to use C-function (for code size mainly).. */    mov_reg_reg( P_REG_RBX, ARG1_REG );    mov_imm_reg( c, ARG2_REG );    add_reg_imm_reg( sp_reg, -sizeof(struct svalue), ARG3_REG );    amd64_call_c_function(assign_to_short_svalue);    /* pop stack if needed. */ -  if( a == F_ASSIGN_PRIVATE_GLOBAL_AND_POP ) +  if( a == F_ASSIGN_PRIVATE_TYPED_GLOBAL_AND_POP )    {    amd64_add_sp(-1);    /* this will either have assigned 0 or thrown an error.    * if we assigned 0, it was because the argument evaluated as false.    * However, that means that we might possibly have to free it here..    *    * We do not even know that is has at least two references.    */    amd64_free_svalue( sp_reg, 0 );    }
pike.git/src/code/amd64.c:3216:    jnz(&label_C);       mov_reg_reg( P_REG_RBX, ARG1_REG );    mov_imm_reg( c, ARG2_REG );    amd64_call_c_function(really_free_short_svalue_ptr);    }    LABEL_C; /* old value is gone. Assign new value */    mov_mem_reg( sp_reg, -8, P_REG_RAX );    mov_reg_mem( P_REG_RAX, P_REG_RBX, 0 );    -  if( a == F_ASSIGN_PRIVATE_GLOBAL_AND_POP ) +  if( a == F_ASSIGN_PRIVATE_TYPED_GLOBAL_AND_POP )    amd64_add_sp( -1 );    else if( c >= MIN_REF_TYPE )    add_mem_imm( P_REG_RAX, OFFSETOF(pike_string,refs), 1 );    LABEL_E;    }    return;    case F_PRIVATE_TYPED_GLOBAL:    /* b -> off, c -> type */    ins_debug_instr_prologue(a-F_OFFSET, b, c);    amd64_load_sp_reg();