OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 4048 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4059 // Set the map. The other fields are left uninitialized. | 4059 // Set the map. The other fields are left uninitialized. |
4060 LoadRoot(kScratchRegister, Heap::kConsStringMapRootIndex); | 4060 LoadRoot(kScratchRegister, Heap::kConsStringMapRootIndex); |
4061 movq(FieldOperand(result, HeapObject::kMapOffset), kScratchRegister); | 4061 movq(FieldOperand(result, HeapObject::kMapOffset), kScratchRegister); |
4062 } | 4062 } |
4063 | 4063 |
4064 | 4064 |
4065 void MacroAssembler::AllocateAsciiConsString(Register result, | 4065 void MacroAssembler::AllocateAsciiConsString(Register result, |
4066 Register scratch1, | 4066 Register scratch1, |
4067 Register scratch2, | 4067 Register scratch2, |
4068 Label* gc_required) { | 4068 Label* gc_required) { |
4069 // Allocate heap number in new space. | 4069 Label allocate_new_space, install_map; |
4070 Allocate(ConsString::kSize, result, scratch1, scratch2, gc_required, | 4070 AllocationFlags flags = TAG_OBJECT; |
4071 TAG_OBJECT); | 4071 |
| 4072 ExternalReference high_promotion_mode = ExternalReference:: |
| 4073 new_space_high_promotion_mode_active_address(isolate()); |
| 4074 |
| 4075 Load(scratch1, high_promotion_mode); |
| 4076 testb(scratch1, Immediate(1)); |
| 4077 j(zero, &allocate_new_space); |
| 4078 Allocate(ConsString::kSize, |
| 4079 result, |
| 4080 scratch1, |
| 4081 scratch2, |
| 4082 gc_required, |
| 4083 static_cast<AllocationFlags>(flags | PRETENURE_OLD_POINTER_SPACE)); |
| 4084 |
| 4085 jmp(&install_map); |
| 4086 |
| 4087 bind(&allocate_new_space); |
| 4088 Allocate(ConsString::kSize, |
| 4089 result, |
| 4090 scratch1, |
| 4091 scratch2, |
| 4092 gc_required, |
| 4093 flags); |
| 4094 |
| 4095 bind(&install_map); |
4072 | 4096 |
4073 // Set the map. The other fields are left uninitialized. | 4097 // Set the map. The other fields are left uninitialized. |
4074 LoadRoot(kScratchRegister, Heap::kConsAsciiStringMapRootIndex); | 4098 LoadRoot(kScratchRegister, Heap::kConsAsciiStringMapRootIndex); |
4075 movq(FieldOperand(result, HeapObject::kMapOffset), kScratchRegister); | 4099 movq(FieldOperand(result, HeapObject::kMapOffset), kScratchRegister); |
4076 } | 4100 } |
4077 | 4101 |
4078 | 4102 |
4079 void MacroAssembler::AllocateTwoByteSlicedString(Register result, | 4103 void MacroAssembler::AllocateTwoByteSlicedString(Register result, |
4080 Register scratch1, | 4104 Register scratch1, |
4081 Register scratch2, | 4105 Register scratch2, |
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4648 j(greater, &no_info_available); | 4672 j(greater, &no_info_available); |
4649 CompareRoot(MemOperand(scratch_reg, -AllocationSiteInfo::kSize), | 4673 CompareRoot(MemOperand(scratch_reg, -AllocationSiteInfo::kSize), |
4650 Heap::kAllocationSiteInfoMapRootIndex); | 4674 Heap::kAllocationSiteInfoMapRootIndex); |
4651 bind(&no_info_available); | 4675 bind(&no_info_available); |
4652 } | 4676 } |
4653 | 4677 |
4654 | 4678 |
4655 } } // namespace v8::internal | 4679 } } // namespace v8::internal |
4656 | 4680 |
4657 #endif // V8_TARGET_ARCH_X64 | 4681 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |