OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "v8.h" | 5 #include "v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 |
8 | 8 |
9 #include "bootstrapper.h" | 9 #include "bootstrapper.h" |
10 #include "codegen.h" | 10 #include "codegen.h" |
(...skipping 787 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
798 ASSERT(dst0.IsValid()); | 798 ASSERT(dst0.IsValid()); |
799 | 799 |
800 int count = 1 + dst1.IsValid() + dst2.IsValid() + dst3.IsValid(); | 800 int count = 1 + dst1.IsValid() + dst2.IsValid() + dst3.IsValid(); |
801 int size = dst0.SizeInBytes(); | 801 int size = dst0.SizeInBytes(); |
802 | 802 |
803 PopHelper(count, size, dst0, dst1, dst2, dst3); | 803 PopHelper(count, size, dst0, dst1, dst2, dst3); |
804 PopPostamble(count, size); | 804 PopPostamble(count, size); |
805 } | 805 } |
806 | 806 |
807 | 807 |
808 void MacroAssembler::PushPopQueue::PushQueued() { | 808 void MacroAssembler::PushPopQueue::PushQueued( |
| 809 PreambleDirective preamble_directive) { |
809 if (queued_.empty()) return; | 810 if (queued_.empty()) return; |
810 | 811 |
811 masm_->PushPreamble(size_); | 812 if (preamble_directive == WITH_PREAMBLE) { |
| 813 masm_->PushPreamble(size_); |
| 814 } |
812 | 815 |
813 int count = queued_.size(); | 816 int count = queued_.size(); |
814 int index = 0; | 817 int index = 0; |
815 while (index < count) { | 818 while (index < count) { |
816 // PushHelper can only handle registers with the same size and type, and it | 819 // PushHelper can only handle registers with the same size and type, and it |
817 // can handle only four at a time. Batch them up accordingly. | 820 // can handle only four at a time. Batch them up accordingly. |
818 CPURegister batch[4] = {NoReg, NoReg, NoReg, NoReg}; | 821 CPURegister batch[4] = {NoReg, NoReg, NoReg, NoReg}; |
819 int batch_index = 0; | 822 int batch_index = 0; |
820 do { | 823 do { |
821 batch[batch_index++] = queued_[index++]; | 824 batch[batch_index++] = queued_[index++]; |
(...skipping 4451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5273 } | 5276 } |
5274 } | 5277 } |
5275 | 5278 |
5276 | 5279 |
5277 #undef __ | 5280 #undef __ |
5278 | 5281 |
5279 | 5282 |
5280 } } // namespace v8::internal | 5283 } } // namespace v8::internal |
5281 | 5284 |
5282 #endif // V8_TARGET_ARCH_ARM64 | 5285 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |