Index: src/arm/macro-assembler-arm.cc |
diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc |
index b5097b3f86cb8627481a303c5a8e30f184bb686b..ccabe2c67e20af6358a8172c1f1be02b112f10f7 100644 |
--- a/src/arm/macro-assembler-arm.cc |
+++ b/src/arm/macro-assembler-arm.cc |
@@ -399,20 +399,6 @@ void MacroAssembler::EnterExitFrame(ExitFrame::Mode mode) { |
} |
-void MacroAssembler::InitializeNewString(Register string, |
- Register length, |
- Heap::RootListIndex map_index, |
- Register scratch1, |
- Register scratch2) { |
- mov(scratch1, Operand(length, LSL, kSmiTagSize)); |
- LoadRoot(scratch2, map_index); |
- str(scratch1, FieldMemOperand(string, String::kLengthOffset)); |
- mov(scratch1, Operand(String::kEmptyHashField)); |
- str(scratch2, FieldMemOperand(string, HeapObject::kMapOffset)); |
- str(scratch1, FieldMemOperand(string, String::kHashFieldOffset)); |
-} |
- |
- |
int MacroAssembler::ActivationFrameAlignment() { |
#if defined(V8_HOST_ARCH_ARM) |
// Running on the real platform. Use the alignment as mandated by the local |
@@ -1034,11 +1020,11 @@ void MacroAssembler::AllocateTwoByteString(Register result, |
TAG_OBJECT); |
// Set the map, length and hash field. |
- InitializeNewString(result, |
- length, |
- Heap::kStringMapRootIndex, |
- scratch1, |
- scratch2); |
+ LoadRoot(scratch1, Heap::kStringMapRootIndex); |
+ str(length, FieldMemOperand(result, String::kLengthOffset)); |
+ str(scratch1, FieldMemOperand(result, HeapObject::kMapOffset)); |
+ mov(scratch2, Operand(String::kEmptyHashField)); |
+ str(scratch2, FieldMemOperand(result, String::kHashFieldOffset)); |
} |
@@ -1068,11 +1054,12 @@ void MacroAssembler::AllocateAsciiString(Register result, |
TAG_OBJECT); |
// Set the map, length and hash field. |
- InitializeNewString(result, |
- length, |
- Heap::kAsciiStringMapRootIndex, |
- scratch1, |
- scratch2); |
+ LoadRoot(scratch1, Heap::kAsciiStringMapRootIndex); |
+ mov(scratch1, Operand(Factory::ascii_string_map())); |
+ str(length, FieldMemOperand(result, String::kLengthOffset)); |
+ str(scratch1, FieldMemOperand(result, HeapObject::kMapOffset)); |
+ mov(scratch2, Operand(String::kEmptyHashField)); |
+ str(scratch2, FieldMemOperand(result, String::kHashFieldOffset)); |
} |
@@ -1087,12 +1074,11 @@ void MacroAssembler::AllocateTwoByteConsString(Register result, |
scratch2, |
gc_required, |
TAG_OBJECT); |
- |
- InitializeNewString(result, |
- length, |
- Heap::kConsStringMapRootIndex, |
- scratch1, |
- scratch2); |
+ LoadRoot(scratch1, Heap::kConsStringMapRootIndex); |
+ mov(scratch2, Operand(String::kEmptyHashField)); |
+ str(length, FieldMemOperand(result, String::kLengthOffset)); |
+ str(scratch1, FieldMemOperand(result, HeapObject::kMapOffset)); |
+ str(scratch2, FieldMemOperand(result, String::kHashFieldOffset)); |
} |
@@ -1107,12 +1093,11 @@ void MacroAssembler::AllocateAsciiConsString(Register result, |
scratch2, |
gc_required, |
TAG_OBJECT); |
- |
- InitializeNewString(result, |
- length, |
- Heap::kConsAsciiStringMapRootIndex, |
- scratch1, |
- scratch2); |
+ LoadRoot(scratch1, Heap::kConsAsciiStringMapRootIndex); |
+ mov(scratch2, Operand(String::kEmptyHashField)); |
+ str(length, FieldMemOperand(result, String::kLengthOffset)); |
+ str(scratch1, FieldMemOperand(result, HeapObject::kMapOffset)); |
+ str(scratch2, FieldMemOperand(result, String::kHashFieldOffset)); |
} |