OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 #if V8_TARGET_ARCH_X64 | 5 #if V8_TARGET_ARCH_X64 |
6 | 6 |
7 #include "src/base/bits.h" | 7 #include "src/base/bits.h" |
8 #include "src/base/division-by-constant.h" | 8 #include "src/base/division-by-constant.h" |
9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 4888 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4899 // Calculate new top and bail out if new space is exhausted. | 4899 // Calculate new top and bail out if new space is exhausted. |
4900 ExternalReference allocation_limit = | 4900 ExternalReference allocation_limit = |
4901 AllocationUtils::GetAllocationLimitReference(isolate(), flags); | 4901 AllocationUtils::GetAllocationLimitReference(isolate(), flags); |
4902 | 4902 |
4903 Register top_reg = result_end.is_valid() ? result_end : result; | 4903 Register top_reg = result_end.is_valid() ? result_end : result; |
4904 | 4904 |
4905 if (!top_reg.is(result)) { | 4905 if (!top_reg.is(result)) { |
4906 movp(top_reg, result); | 4906 movp(top_reg, result); |
4907 } | 4907 } |
4908 addp(top_reg, Immediate(object_size)); | 4908 addp(top_reg, Immediate(object_size)); |
4909 j(carry, gc_required); | |
4910 Operand limit_operand = ExternalOperand(allocation_limit); | 4909 Operand limit_operand = ExternalOperand(allocation_limit); |
4911 cmpp(top_reg, limit_operand); | 4910 cmpp(top_reg, limit_operand); |
4912 j(above, gc_required); | 4911 j(above, gc_required); |
4913 | 4912 |
4914 // Update allocation top. | 4913 // Update allocation top. |
4915 UpdateAllocationTopHelper(top_reg, scratch, flags); | 4914 UpdateAllocationTopHelper(top_reg, scratch, flags); |
4916 | 4915 |
4917 bool tag_result = (flags & TAG_OBJECT) != 0; | 4916 bool tag_result = (flags & TAG_OBJECT) != 0; |
4918 if (top_reg.is(result)) { | 4917 if (top_reg.is(result)) { |
4919 if (tag_result) { | 4918 if (tag_result) { |
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5704 movl(rax, dividend); | 5703 movl(rax, dividend); |
5705 shrl(rax, Immediate(31)); | 5704 shrl(rax, Immediate(31)); |
5706 addl(rdx, rax); | 5705 addl(rdx, rax); |
5707 } | 5706 } |
5708 | 5707 |
5709 | 5708 |
5710 } // namespace internal | 5709 } // namespace internal |
5711 } // namespace v8 | 5710 } // namespace v8 |
5712 | 5711 |
5713 #endif // V8_TARGET_ARCH_X64 | 5712 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |