It seems right to me.  Thanks for the fix.

On Mon, Oct 13, 2008 at 8:42 PM, <[EMAIL PROTECTED]> wrote:

> Reviewers: Kevin Millikin, Erik Corry,
>
> Description:
> Fix a missing peephole optimization in ia32 code exposed with Kevin's
> change.
>
>
> Please review this at http://codereview.chromium.org/7117
>
> Affected files:
>  M     src/assembler-ia32.cc
>
>
> Index: src/assembler-ia32.cc
> ===================================================================
> --- src/assembler-ia32.cc       (revision 490)
> +++ src/assembler-ia32.cc       (working copy)
> @@ -720,6 +720,23 @@
>
>
>  void Assembler::add(const Operand& dst, const Immediate& x) {
> +  ASSERT(reloc_info_writer.last_pc() != NULL);
> +  if (FLAG_push_pop_elimination && (reloc_info_writer.last_pc() <=
> last_pc_)) {
> +    byte instr = last_pc_[0];
> +    if ((instr & 0xf8) == 0x50) {
> +      // Last instruction was a push. Check whether this is a pop without
> a
> +      // result.
> +      if ((dst.is_reg(esp)) &&
> +          (x.x_ == kPointerSize) && (x.rmode_ == RelocInfo::NONE)) {
> +        pc_ = last_pc_;
> +        last_pc_ = NULL;
> +        if (FLAG_print_push_pop_elimination) {
> +          PrintF("%d push/pop(noreg) eliminated\n", pc_offset());
> +        }
> +        return;
> +      }
> +    }
> +  }
>   EnsureSpace ensure_space(this);
>   last_pc_ = pc_;
>   emit_arith(0, dst, x);
>
>
>


-- 
Google Denmark ApS
CVR nr. 28 86 69 84
c/o Philip & Partners, 7 Vognmagergade, P.O. Box 2227, DK-1018 Copenhagen K,
Denmark

--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to