pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:2988:    if(a == F_CALL_BUILTIN1 )    {    /* Note: It is not actually possible to do ins_debug_instr_prologue    here.    ins_debug_instr_prologue(a-F_OFFSET, b, 0);    */    mov_imm_reg( 1, ARG1_REG );    }       /* Get function pointer */ +  ins_debug_instr_prologue(a-F_OFFSET, b, 0);    amd64_call_c_opcode(Pike_compiler->new_program->constants[b].sval.u.efun->function,    I_UPDATE_SP);    return;       case F_CONSTANT:    ins_debug_instr_prologue(a-F_OFFSET, b, 0);    amd64_load_fp_reg();    amd64_load_sp_reg();    mov_mem_reg( fp_reg, OFFSETOF(pike_frame,context), P_REG_RCX );    mov_mem_reg( P_REG_RCX, OFFSETOF(inherit,prog), P_REG_RCX );
pike.git/src/code/amd64.c:3151:    amd64_push_int((((unsigned INT64)b)<<32)|(unsigned INT32)c, 0);    return;    case F_MARK_AND_EXTERNAL:    ins_f_byte(F_MARK);    ins_f_byte_with_2_args(F_EXTERNAL, b, c);    return;       case F_CLEAR_N_LOCAL:    {    LABELS(); -  ins_debug_instr_prologue(a-F_OFFSET, b, 0); +  ins_debug_instr_prologue(a-F_OFFSET, b, c);    amd64_load_fp_reg();    mov_mem_reg(fp_reg, OFFSETOF(pike_frame, locals), P_REG_RBX);    add_reg_imm(P_REG_RBX, b*sizeof(struct svalue));    if( c > 1 )    add_reg_imm_reg(P_REG_RBX, c*sizeof(struct svalue), P_REG_RBP );       LABEL_A;    amd64_free_svalue(P_REG_RBX, 0);    mov_imm_mem(PIKE_T_INT, P_REG_RBX, OFFSETOF(svalue, tu.t.type));    mov_imm_mem(0, P_REG_RBX, OFFSETOF(svalue, u.integer));
pike.git/src/code/amd64.c:3291:    LABEL_A;    mov_mem_reg(ARG1_REG, OFFSETOF(object,storage), P_REG_RBX );    add_reg_mem(P_REG_RBX, ARG2_REG, OFFSETOF(inherit,storage_offset));    add_reg_imm(P_REG_RBX, b );    amd64_free_svalue( P_REG_RBX, 0 );    amd64_assign_svalue_no_free( P_REG_RBX, sp_reg, -sizeof(struct svalue));    amd64_ref_svalue(P_REG_RBX,0);    LABEL_B;    }    return; +     case F_ASSIGN_PRIVATE_TYPED_GLOBAL_AND_POP:    case F_ASSIGN_PRIVATE_TYPED_GLOBAL:    {    LABELS();    amd64_load_sp_reg();    -  ins_debug_instr_prologue(a-F_OFFSET, b, 0); +  ins_debug_instr_prologue(a-F_OFFSET, b, c);       amd64_get_storage( P_REG_RBX, b );       /* do not assign anything if this object is destructed. */       /* we really only need to redo this check after we have called    some other function. It is sort of hard to know when that    happens while generating the code, however. Simply assigning    the global could in theory actually destruct this object (old    value includes something with a destroy that calls destruct on
pike.git/src/code/amd64.c:3411:    mov_imm_mem( c, sp_reg, 0 );    mov_reg_mem( P_REG_RBX, sp_reg, 8 );    amd64_add_sp(1);    LABEL_B;    }    return;    case F_ADD_LOCAL_INT:    case F_ADD_LOCAL_INT_AND_POP:    {    LABELS(); -  ins_debug_instr_prologue(a-F_OFFSET, b, 0); +  ins_debug_instr_prologue(a-F_OFFSET, b, c);    amd64_load_fp_reg();    mov_mem_reg( fp_reg, OFFSETOF(pike_frame, locals), ARG1_REG);    add_reg_imm( ARG1_REG, b*sizeof(struct svalue) );       /* arg1 = dst    arg2 = int    */    mov_sval_type( ARG1_REG, P_REG_RAX );    cmp_reg32_imm( P_REG_RAX, PIKE_T_INT );    jne(&label_A); /* Fallback */
pike.git/src/code/amd64.c:3451:    mov_mem_reg( ARG1_REG, OFFSETOF(svalue,u.integer), P_REG_RAX );    amd64_push_int_reg( P_REG_RAX );    }    LABEL_C;    return;    }      #if 0    /* this is a: nonworking, and b: not really all that more efficient anyway.. */    case F_APPLY_N: +  ins_debug_instr_prologue(a-F_OFFSET, b, c);    mov_imm_reg( APPLY_SVALUE_STRICT, ARG1_REG );    mov_imm_reg( c, ARG2_REG );    mov_ptr_reg( &((Pike_fp->context->prog->constants + b)->sval), ARG3_REG );    clear_reg( ARG4_REG );    amd64_call_c_opcode(mega_apply, I_UPDATE_SP);    return;   #endif    case F_CALL_BUILTIN_N: -  +  ins_debug_instr_prologue(a-F_OFFSET, b, c);    mov_imm_reg( c, ARG1_REG );    amd64_call_c_opcode(Pike_compiler->new_program->constants[b].sval.u.efun->function,    I_UPDATE_SP);    return;          case F_ADD_LOCALS_AND_POP:    {    LABELS();    ins_debug_instr_prologue(a-F_OFFSET, b, 0);
pike.git/src/code/amd64.c:3526:    mov_mem_reg(fp_reg, OFFSETOF(pike_frame, current_object), ARG1_REG);    mov_mem_reg(fp_reg, OFFSETOF(pike_frame,context), ARG2_REG);    mov_mem16_reg(ARG2_REG, OFFSETOF(inherit, identifier_level), ARG2_REG);    add_reg_imm( ARG2_REG, b );    amd64_call_c_function( object_low_set_index );    return;       case F_LEXICAL_LOCAL:    if( c < 5 )    { +  ins_debug_instr_prologue(a-F_OFFSET, b, c);    amd64_load_fp_reg();    mov_reg_reg( fp_reg, P_REG_RAX );    while(c--)    mov_mem_reg( P_REG_RAX, OFFSETOF(pike_frame,scope), P_REG_RAX );    mov_mem_reg( P_REG_RAX, OFFSETOF(pike_frame,locals), P_REG_RAX );    add_reg_imm_reg( P_REG_RAX, b*sizeof(struct svalue), P_REG_RBX );    amd64_push_svaluep( P_REG_RBX );    return;    }    /* use c version. Could have a loop version here. */    break;       case F_LEXICAL_LOCAL_LVALUE:    if( c < 5 )    { -  +  ins_debug_instr_prologue(a-F_OFFSET, b, c);    amd64_load_fp_reg();    amd64_load_sp_reg();    mov_reg_reg( fp_reg, P_REG_RAX );    while(c--)    mov_mem_reg( P_REG_RAX, OFFSETOF(pike_frame,scope), P_REG_RAX );    mov_mem_reg( P_REG_RAX, OFFSETOF(pike_frame,locals), P_REG_RAX );    add_reg_imm_reg( P_REG_RAX, b*sizeof(struct svalue), P_REG_RAX );    mov_imm_mem( T_SVALUE_PTR, sp_reg, OFFSETOF(svalue, tu.t.type));    mov_reg_mem( P_REG_RAX, sp_reg, OFFSETOF(svalue,u.lval) );    mov_imm_mem( T_VOID, sp_reg,