pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:3033:    mov_imm_mem(PIKE_T_INT, sp_reg, SVAL(-1).type);    mov_reg_mem(P_REG_RBX, sp_reg, SVAL(-1).value);    jmp(&label_B);    LABEL_A;    update_arg1(b);    amd64_call_c_opcode(instrs[a-F_OFFSET].address,    instrs[a-F_OFFSET].flags);    LABEL_B;    }    return; - /* case F_XOR_INT: */ +  +  case F_MOD_INT:    case F_DIVIDE_INT:    if( b == 0 )    {    yyerror("Divide by constant 0\n");    break;    }    {    LABELS();    ins_debug_instr_prologue(a-F_OFFSET, b, 0);    amd64_load_sp_reg();
pike.git/src/code/amd64.c:3219:    break;       case F_SUBTRACT_INT:    case F_ADD_NEG_INT:    b = -b;    case F_ADD_INT:    {    LABELS();    ins_debug_instr_prologue(a-F_OFFSET, b, 0);    amd64_load_sp_reg(); -  mov_mem16_reg( sp_reg, -sizeof(struct svalue), P_REG_RAX ); -  cmp_reg32_imm( P_REG_RAX,PIKE_T_INT ); -  jne( &label_A ); -  mov_mem_reg(sp_reg, -  -sizeof(struct svalue)+OFFSETOF(svalue,u.integer), -  P_REG_RAX ); -  test_reg32( P_REG_RAX ); -  jz( &label_C ); -  +  mov_mem8_reg( sp_reg,SVAL(-1).type, P_REG_RAX ); +  test_reg32(P_REG_RAX); +  jnz( &label_A ); +  mov_mem_reg(sp_reg, SVAL(-1).value,P_REG_RAX );    add_reg_imm( P_REG_RAX, b );    jo( &label_A ); /* if overflow, use f_add */ -  mov_reg_mem( P_REG_RAX,sp_reg, -  -sizeof(struct svalue)+OFFSETOF(svalue,u.integer)); +  mov_imm_mem( PIKE_T_INT, sp_reg, SVAL(-1).type ); +  mov_reg_mem( P_REG_RAX, sp_reg, SVAL(-1).value );    jmp(&label_B); /* all done. */       LABEL_A;    amd64_push_int(b,0);    update_arg1(2);    amd64_call_c_opcode( f_add, I_UPDATE_SP );    amd64_load_sp_reg(); -  jmp( &label_B ); -  LABEL_C; -  // int, and 0, we need to set it to b and clear subtype -  mov_imm_mem( PIKE_T_INT, sp_reg, -sizeof(struct svalue ) ); -  mov_imm_mem( b, sp_reg, -  -sizeof(struct svalue )+OFFSETOF(svalue,u.integer) ); +     LABEL_B;    }    return;       case F_NUMBER:    ins_debug_instr_prologue(a-F_OFFSET, b, 0);    amd64_push_int(b, 0);    return;    case F_NEG_NUMBER:    ins_debug_instr_prologue(a-F_OFFSET, b, 0);