| Index: src/arm/macro-assembler-arm.cc | 
| diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc | 
| index bae50600268ae4fc46524a75395b6a32b621a2d2..e625606663f2f11b19a3d1e4b8f6fdc9186e5f19 100644 | 
| --- a/src/arm/macro-assembler-arm.cc | 
| +++ b/src/arm/macro-assembler-arm.cc | 
| @@ -1933,8 +1933,34 @@ void MacroAssembler::AllocateAsciiConsString(Register result, | 
| Register scratch1, | 
| Register scratch2, | 
| Label* gc_required) { | 
| -  Allocate(ConsString::kSize, result, scratch1, scratch2, gc_required, | 
| -           TAG_OBJECT); | 
| +  Label allocate_new_space, install_map; | 
| +  AllocationFlags flags = TAG_OBJECT; | 
| + | 
| +  ExternalReference high_promotion_mode = ExternalReference:: | 
| +      new_space_high_promotion_mode_active_address(isolate()); | 
| +  mov(scratch1, Operand(high_promotion_mode)); | 
| +  ldr(scratch1, MemOperand(r4, 0)); | 
| +  cmp(scratch1, Operand::Zero()); | 
| +  b(eq, &allocate_new_space); | 
| + | 
| +  Allocate(ConsString::kSize, | 
| +           result, | 
| +           scratch1, | 
| +           scratch2, | 
| +           gc_required, | 
| +           static_cast<AllocationFlags>(flags | PRETENURE_OLD_POINTER_SPACE)); | 
| + | 
| +  jmp(&install_map); | 
| + | 
| +  bind(&allocate_new_space); | 
| +  Allocate(ConsString::kSize, | 
| +           result, | 
| +           scratch1, | 
| +           scratch2, | 
| +           gc_required, | 
| +           flags); | 
| + | 
| +  bind(&install_map); | 
|  | 
| InitializeNewString(result, | 
| length, | 
|  |