Reviewers: William Hesse, Message: This is annoying and fragile. We probably want to get the cc_reg inside the virtual frame so we can preserve it when required.
Even better is to get rid of the requirement that frames be mergable (at least for blocks reached by only forward CFG edges, and possibly forbid a value in cc_reg on the backward ones). Description: Experimental: the code to make a frame mergable is sometimes emitted between an instruction that sets the processor flags and an instruction that tests them. The flags must not be affected by the make mergable code (mov and push is OK, xor is not). Please review this at http://codereview.chromium.org/17017 SVN Base: http://v8.googlecode.com/svn/branches/experimental/toiger/ Affected files: M src/virtual-frame-ia32.cc Index: src/virtual-frame-ia32.cc =================================================================== --- src/virtual-frame-ia32.cc (revision 1021) +++ src/virtual-frame-ia32.cc (working copy) @@ -196,7 +196,7 @@ // Write elements below the stack pointer to their (already allocated) // actual frame location. if (element.is_constant()) { - __ Set(Operand(ebp, fp_relative(index)), Immediate(element.handle())); + __ mov(Operand(ebp, fp_relative(index)), Immediate(element.handle())); } else { ASSERT(element.is_register()); __ mov(Operand(ebp, fp_relative(index)), element.reg()); @@ -365,7 +365,7 @@ ASSERT(!target.is_valid() || target.is_register() || target.is_memory()); if (target.is_register()) { if (source.is_constant()) { - __ Set(target.reg(), Immediate(source.handle())); + __ mov(target.reg(), Immediate(source.handle())); } else if (source.is_register() && !source.reg().is(target.reg())) { __ mov(target.reg(), source.reg()); } --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
