Index: src/ia32/macro-assembler-ia32.cc |
diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc |
index 9df5cad915a0a615e0510d514c70d19b16893730..f3c485717aec418b8bf7a964ac5665b3ac2145bc 100644 |
--- a/src/ia32/macro-assembler-ia32.cc |
+++ b/src/ia32/macro-assembler-ia32.cc |
@@ -1208,6 +1208,42 @@ void MacroAssembler::AllocateAsciiConsString(Register result, |
} |
+void MacroAssembler::AllocateSlicedString(Register result, |
+ Register scratch1, |
+ Register scratch2, |
+ Label* gc_required) { |
+ // Allocate heap number in new space. |
+ AllocateInNewSpace(SlicedString::kSize, |
+ result, |
+ scratch1, |
+ scratch2, |
+ gc_required, |
+ TAG_OBJECT); |
+ |
+ // Set the map. The other fields are left uninitialized. |
+ mov(FieldOperand(result, HeapObject::kMapOffset), |
+ Immediate(isolate()->factory()->sliced_string_map())); |
+} |
+ |
+ |
+void MacroAssembler::AllocateAsciiSlicedString(Register result, |
+ Register scratch1, |
+ Register scratch2, |
+ Label* gc_required) { |
+ // Allocate heap number in new space. |
+ AllocateInNewSpace(SlicedString::kSize, |
+ result, |
+ scratch1, |
+ scratch2, |
+ gc_required, |
+ TAG_OBJECT); |
+ |
+ // Set the map. The other fields are left uninitialized. |
+ mov(FieldOperand(result, HeapObject::kMapOffset), |
+ Immediate(isolate()->factory()->sliced_ascii_string_map())); |
+} |
+ |
+ |
// Copy memory, byte-by-byte, from source to destination. Not optimized for |
// long or aligned copies. The contents of scratch and length are destroyed. |
// Source and destination are incremented by length. |