pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:2069:    return jnz_imm_rel32(0);       case F_FOREACH:    START_JUMP();    /* -4: array    -3: lvalue[0]    -2: lvalue[1]    -1: counter    */    amd64_load_sp_reg(); +  mov_mem8_reg( sp_reg, -4*sizeof(struct svalue), REG_RBX ); +  cmp_reg32_imm( REG_RBX, PIKE_T_ARRAY ); +  jne(&label_D);    mov_mem_reg( sp_reg, -1*sizeof(struct svalue)+8, REG_RAX );    mov_mem_reg( sp_reg, -4*sizeof(struct svalue)+8, REG_RBX );    mov_mem32_reg( REG_RBX, OFFSETOF(array,size), REG_RCX );    cmp_reg_reg( REG_RAX, REG_RCX );    je(&label_A);       /* increase counter */    add_mem_imm( sp_reg, -1*(int)sizeof(struct svalue)+8, 1 );       /* get item */
pike.git/src/code/amd64.c:2113:    jg( &label_B );    add_imm_mem( 1, REG_RCX, OFFSETOF(pike_string, refs));    jmp( &label_B );       LABEL_C;    add_reg_imm_reg( sp_reg, -3*sizeof(struct svalue), ARG1_REG );    mov_reg_reg( REG_RBX, ARG2_REG );    amd64_call_c_function( assign_lvalue );    jmp(&label_B);    +  LABEL_D; +  /* Bad arg 1. Let the C opcode throw the error. */ +  amd64_call_c_opcode(instrs[off].address, flags); +  /* NOT_REACHED */ +     LABEL_A;    mov_imm_reg( 0, REG_RBX );    LABEL_B;    test_reg(REG_RBX);    return jnz_imm_rel32(0);       case F_LOOP:    START_JUMP();    /* counter in pike_sp-1 */    /* decrement until 0. */