Reviewers: Erik Corry,

Description:
A recursive call to the code generator could (conceivably) clobber any
register.  Generate code to evaluate both arguments of FastCharCodeAt
before popping either from the stack.

Please review this at http://codereview.chromium.org/13706

SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/

Affected files:
   M     src/codegen-ia32.cc


Index: src/codegen-ia32.cc
===================================================================
--- src/codegen-ia32.cc (revision 957)
+++ src/codegen-ia32.cc (working copy)
@@ -2919,18 +2919,16 @@
    Label ascii_string;
    Label got_char_code;

-  // Load the string into eax.
+  // Load the string into eax and the index into ebx.
    Load(args->at(0));
+  Load(args->at(1));
+  frame_->Pop(ebx);
    frame_->Pop(eax);
    // If the receiver is a smi return undefined.
    ASSERT(kSmiTag == 0);
    __ test(eax, Immediate(kSmiTagMask));
    __ j(zero, &slow_case, not_taken);

-  // Load the index into ebx.
-  Load(args->at(1));
-  frame_->Pop(ebx);
-
    // Check for negative or non-smi index.
    ASSERT(kSmiTag == 0);
    __ test(ebx, Immediate(kSmiTagMask | 0x80000000));



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

Reply via email to