pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:2084:    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); +  je(&label_D); +  /* Bad arg 1. Let the C opcode throw the error. */ +  amd64_call_c_opcode(instrs[off].address, flags); +  /* NOT_REACHED */ +  +  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:2123:    mov_reg_mem( REG_RAX, REG_RDX, 0 );    mov_reg_mem( REG_RCX, REG_RDX, 8 );       /* inc refs? */    and_reg_imm( REG_RAX, 0x1f );    cmp_reg32_imm(REG_RAX, MIN_REF_TYPE);    jl( &label_B );    add_imm_mem( 1, REG_RCX, OFFSETOF(pike_string, refs));    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_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_A;    mov_imm_reg( 0, REG_RBX );    LABEL_B;    test_reg(REG_RBX);