Revision: 18289
Author:   [email protected]
Date:     Tue Dec 10 14:36:10 2013 UTC
Log:      Properly restore the receiver after the interceptor call.

[email protected]

Review URL: https://chromiumcodereview.appspot.com/108803006
http://code.google.com/p/v8/source/detail?r=18289

Modified:
 /branches/bleeding_edge/src/arm/stub-cache-arm.cc
 /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc
 /branches/bleeding_edge/src/x64/stub-cache-x64.cc

=======================================
--- /branches/bleeding_edge/src/arm/stub-cache-arm.cc Tue Dec 10 13:11:08 2013 UTC +++ /branches/bleeding_edge/src/arm/stub-cache-arm.cc Tue Dec 10 14:36:10 2013 UTC
@@ -1089,12 +1089,13 @@
                            Label* interceptor_succeeded) {
     {
       FrameScope scope(masm, StackFrame::INTERNAL);
-      __ Push(holder, name_);
+      __ Push(receiver, holder, name_);
       CompileCallLoadPropertyWithInterceptor(
           masm, receiver, holder, name_, holder_obj,
           IC::kLoadPropertyWithInterceptorOnly);
-      __ pop(name_);  // Restore the name.
-      __ pop(holder);  // Restore the holder.
+      __ pop(receiver);
+      __ pop(name_);
+      __ pop(holder);
     }
// If interceptor returns no-result sentinel, call the constant function.
     __ LoadRoot(scratch, Heap::kNoInterceptorResultSentinelRootIndex);
=======================================
--- /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc Tue Dec 10 13:11:08 2013 UTC +++ /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc Tue Dec 10 14:36:10 2013 UTC
@@ -807,15 +807,17 @@
                            Label* interceptor_succeeded) {
     {
       FrameScope scope(masm, StackFrame::INTERNAL);
-      __ push(holder);  // Save the holder.
-      __ push(name_);  // Save the name.
+      __ push(receiver);
+      __ push(holder);
+      __ push(name_);

       CompileCallLoadPropertyWithInterceptor(
           masm, receiver, holder, name_, holder_obj,
           IC::kLoadPropertyWithInterceptorOnly);

-      __ pop(name_);  // Restore the name.
-      __ pop(holder);  // Restore the holder.
+      __ pop(name_);
+      __ pop(holder);
+      __ pop(receiver);
       // Leave the internal frame.
     }

=======================================
--- /branches/bleeding_edge/src/x64/stub-cache-x64.cc Tue Dec 10 13:11:08 2013 UTC +++ /branches/bleeding_edge/src/x64/stub-cache-x64.cc Tue Dec 10 14:36:10 2013 UTC
@@ -799,15 +799,17 @@
                            Label* interceptor_succeeded) {
     {
       FrameScope scope(masm, StackFrame::INTERNAL);
-      __ push(holder);  // Save the holder.
-      __ push(name_);  // Save the name.
+      __ push(receiver);
+      __ push(holder);
+      __ push(name_);

       CompileCallLoadPropertyWithInterceptor(
           masm, receiver, holder, name_, holder_obj,
           IC::kLoadPropertyWithInterceptorOnly);

-      __ pop(name_);  // Restore the name.
-      __ pop(holder);  // Restore the holder.
+      __ pop(name_);
+      __ pop(holder);
+      __ pop(receiver);
       // Leave the internal frame.
     }

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to