pike.git / src / code / amd64.c

version» Context lines:

pike.git/src/code/amd64.c:1308:    amd64_mark(0);    return;    case F_MARK2:    ins_f_byte(F_MARK);    ins_f_byte(F_MARK);    return;    case F_POP_MARK:    ins_debug_instr_prologue(b, 0, 0);    amd64_pop_mark();    return; +  case F_POP_TO_MARK: +  ins_debug_instr_prologue(b, 0, 0); +  amd64_load_mark_sp_reg(); +  amd64_load_sp_reg(); +  amd64_pop_mark(); +  mov_mem_reg(mark_sp_reg, 0, REG_RBX); +  jmp(&label_A); +  LABEL_B; +  amd64_add_sp( -1 ); +  amd64_free_svalue( sp_reg, 0 ); +  LABEL_A; +  cmp_reg_reg(REG_RBX, sp_reg); +  jl(&label_B); +  return;    }       amd64_call_c_opcode(addr,flags);       if (instrs[b].flags & I_RETURN) {    LABELS();       if ((b + F_OFFSET) == F_RETURN_IF_TRUE) {    /* Kludge. We must check if the ret addr is    * PC + JUMP_EPILOGUE_SIZE. */
pike.git/src/code/amd64.c:1794: Inside #if 1
   add_reg_imm( REG_R8, b*sizeof(struct svalue) );    amd64_push_svaluep(REG_R8);    add_reg_imm( REG_R8, (c-b)*sizeof(struct svalue) );    amd64_push_svaluep(REG_R8);   #else    ins_f_byte_with_arg( F_LOCAL, b );    ins_f_byte_with_arg( F_LOCAL, c );   #endif    return;    +  case F_FILL_STACK: +  { +  LABELS(); +  if (!b) return; +  ins_debug_instr_prologue(a-F_OFFSET, b, c); +  amd64_load_fp_reg(); +  amd64_load_sp_reg(); +  mov_mem_reg(fp_reg, OFFSETOF(pike_frame, locals), ARG1_REG); +  add_reg_imm(ARG1_REG, b*sizeof(struct svalue)); +  jmp(&label_A); +  LABEL_B; +  amd64_push_int(0, c); +  LABEL_A; +  cmp_reg_reg(sp_reg, ARG1_REG); +  jge(&label_B); +  } +  return; +     case F_INIT_FRAME:    ins_debug_instr_prologue(a-F_OFFSET, b, c);    amd64_load_fp_reg();       if(OFFSETOF(pike_frame, num_locals) != OFFSETOF(pike_frame, num_args)-2 )    Pike_fatal("This code does not with unless num_args\n"    "directly follows num_locals in struct pike_frame\n");       mov_imm_mem32( (b<<16)|c, fp_reg, OFFSETOF(pike_frame, num_locals));    return;