Index: src/x64/virtual-frame-x64.cc |
=================================================================== |
--- src/x64/virtual-frame-x64.cc (revision 3269) |
+++ src/x64/virtual-frame-x64.cc (working copy) |
@@ -893,16 +893,15 @@ |
// on the stack. |
int start = Min(begin, stack_pointer_ + 1); |
- // Emit normal 'push' instructions for elements above stack pointer |
- // and use mov instructions if we are below stack pointer. |
+ // If positive we have to adjust the stack pointer. |
+ int delta = end - stack_pointer_; |
+ if (delta > 0) { |
+ stack_pointer_ = end; |
+ __ subq(rsp, Immediate(delta * kPointerSize)); |
+ } |
+ |
for (int i = start; i <= end; i++) { |
- if (!elements_[i].is_synced()) { |
- if (i <= stack_pointer_) { |
- SyncElementBelowStackPointer(i); |
- } else { |
- SyncElementByPushing(i); |
- } |
- } |
+ if (!elements_[i].is_synced()) SyncElementBelowStackPointer(i); |
} |
} |