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 #include "v8.h" | 5 #include "v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_IA32 | 7 #if V8_TARGET_ARCH_IA32 |
8 | 8 |
9 #include "bootstrapper.h" | 9 #include "bootstrapper.h" |
10 #include "codegen.h" | 10 #include "codegen.h" |
(...skipping 1778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1789 // Set the map. The other fields are left uninitialized. | 1789 // Set the map. The other fields are left uninitialized. |
1790 mov(FieldOperand(result, HeapObject::kMapOffset), | 1790 mov(FieldOperand(result, HeapObject::kMapOffset), |
1791 Immediate(isolate()->factory()->cons_string_map())); | 1791 Immediate(isolate()->factory()->cons_string_map())); |
1792 } | 1792 } |
1793 | 1793 |
1794 | 1794 |
1795 void MacroAssembler::AllocateAsciiConsString(Register result, | 1795 void MacroAssembler::AllocateAsciiConsString(Register result, |
1796 Register scratch1, | 1796 Register scratch1, |
1797 Register scratch2, | 1797 Register scratch2, |
1798 Label* gc_required) { | 1798 Label* gc_required) { |
1799 Label allocate_new_space, install_map; | |
1800 AllocationFlags flags = TAG_OBJECT; | |
1801 | |
1802 ExternalReference high_promotion_mode = ExternalReference:: | |
1803 new_space_high_promotion_mode_active_address(isolate()); | |
1804 | |
1805 test(Operand::StaticVariable(high_promotion_mode), Immediate(1)); | |
1806 j(zero, &allocate_new_space); | |
1807 | |
1808 Allocate(ConsString::kSize, | 1799 Allocate(ConsString::kSize, |
1809 result, | 1800 result, |
1810 scratch1, | 1801 scratch1, |
1811 scratch2, | 1802 scratch2, |
1812 gc_required, | 1803 gc_required, |
1813 static_cast<AllocationFlags>(flags | PRETENURE_OLD_POINTER_SPACE)); | 1804 TAG_OBJECT); |
1814 jmp(&install_map); | |
1815 | 1805 |
1816 bind(&allocate_new_space); | |
1817 Allocate(ConsString::kSize, | |
1818 result, | |
1819 scratch1, | |
1820 scratch2, | |
1821 gc_required, | |
1822 flags); | |
1823 | |
1824 bind(&install_map); | |
1825 // Set the map. The other fields are left uninitialized. | 1806 // Set the map. The other fields are left uninitialized. |
1826 mov(FieldOperand(result, HeapObject::kMapOffset), | 1807 mov(FieldOperand(result, HeapObject::kMapOffset), |
1827 Immediate(isolate()->factory()->cons_ascii_string_map())); | 1808 Immediate(isolate()->factory()->cons_ascii_string_map())); |
1828 } | 1809 } |
1829 | 1810 |
1830 | 1811 |
1831 void MacroAssembler::AllocateTwoByteSlicedString(Register result, | 1812 void MacroAssembler::AllocateTwoByteSlicedString(Register result, |
1832 Register scratch1, | 1813 Register scratch1, |
1833 Register scratch2, | 1814 Register scratch2, |
1834 Label* gc_required) { | 1815 Label* gc_required) { |
(...skipping 1622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3457 if (ms.shift() > 0) sar(edx, ms.shift()); | 3438 if (ms.shift() > 0) sar(edx, ms.shift()); |
3458 mov(eax, dividend); | 3439 mov(eax, dividend); |
3459 shr(eax, 31); | 3440 shr(eax, 31); |
3460 add(edx, eax); | 3441 add(edx, eax); |
3461 } | 3442 } |
3462 | 3443 |
3463 | 3444 |
3464 } } // namespace v8::internal | 3445 } } // namespace v8::internal |
3465 | 3446 |
3466 #endif // V8_TARGET_ARCH_IA32 | 3447 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |