pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:2357:    LABELS();    ins_debug_instr_prologue(a-F_OFFSET, b, 0);    amd64_load_sp_reg();    mov_mem8_reg( sp_reg, -1*sizeof(struct svalue), REG_RAX );    cmp_reg32_imm( REG_RAX, PIKE_T_ARRAY );    jne( &label_A );       mov_mem_reg( sp_reg, -1*sizeof(struct svalue)+8, REG_RDX ); /* u.array */    /* -> arr[sizeof(arr)-b] */    mov_mem32_reg( REG_RDX, OFFSETOF(array,size), REG_RCX ); -  mov_imm_reg( b, REG_RBX); -  cmp_reg_reg( REG_RCX, REG_RBX ); -  jge( &label_A ); /* b >= RBX, index outside array */ -  shl_reg_imm( REG_RBX, 4 ); +  cmp_reg32_imm( REG_RCX, b ); +  jle( &label_A ); /* RCX <= b, index outside array */ +  mov_imm_reg( b * sizeof(struct svalue), REG_RBX);    add_reg_mem( REG_RBX, REG_RDX, OFFSETOF(array,item) );       /* This overwrites the array. */    amd64_push_svaluep_to( REG_RBX, -1 );       /* We know it's an array. */    add_mem32_imm( REG_RDX, OFFSETOF(array,refs), -1);    jnz( &label_C );    mov_reg_reg( REG_RDX, ARG1_REG );    amd64_call_c_function(really_free_array);