Index: src/crankshaft/ia32/lithium-codegen-ia32.cc |
diff --git a/src/crankshaft/ia32/lithium-codegen-ia32.cc b/src/crankshaft/ia32/lithium-codegen-ia32.cc |
index febab6c42f9a75ce41409433fda0678a98ddb35b..7c9405db0a31e70fdf081ee51a290bf338974464 100644 |
--- a/src/crankshaft/ia32/lithium-codegen-ia32.cc |
+++ b/src/crankshaft/ia32/lithium-codegen-ia32.cc |
@@ -5191,58 +5191,6 @@ void LCodeGen::DoToFastProperties(LToFastProperties* instr) { |
} |
-void LCodeGen::DoRegExpLiteral(LRegExpLiteral* instr) { |
- DCHECK(ToRegister(instr->context()).is(esi)); |
- Label materialized; |
- // Registers will be used as follows: |
- // ecx = literals array. |
- // ebx = regexp literal. |
- // eax = regexp literal clone. |
- // esi = context. |
- int literal_offset = |
- LiteralsArray::OffsetOfLiteralAt(instr->hydrogen()->literal_index()); |
- __ LoadHeapObject(ecx, instr->hydrogen()->literals()); |
- __ mov(ebx, FieldOperand(ecx, literal_offset)); |
- __ cmp(ebx, factory()->undefined_value()); |
- __ j(not_equal, &materialized, Label::kNear); |
- |
- // Create regexp literal using runtime function |
- // Result will be in eax. |
- __ push(ecx); |
- __ push(Immediate(Smi::FromInt(instr->hydrogen()->literal_index()))); |
- __ push(Immediate(instr->hydrogen()->pattern())); |
- __ push(Immediate(instr->hydrogen()->flags())); |
- CallRuntime(Runtime::kMaterializeRegExpLiteral, 4, instr); |
- __ mov(ebx, eax); |
- |
- __ bind(&materialized); |
- int size = JSRegExp::kSize + JSRegExp::kInObjectFieldCount * kPointerSize; |
- Label allocated, runtime_allocate; |
- __ Allocate(size, eax, ecx, edx, &runtime_allocate, TAG_OBJECT); |
- __ jmp(&allocated, Label::kNear); |
- |
- __ bind(&runtime_allocate); |
- __ push(ebx); |
- __ push(Immediate(Smi::FromInt(size))); |
- CallRuntime(Runtime::kAllocateInNewSpace, 1, instr); |
- __ pop(ebx); |
- |
- __ bind(&allocated); |
- // Copy the content into the newly allocated memory. |
- // (Unroll copy loop once for better throughput). |
- for (int i = 0; i < size - kPointerSize; i += 2 * kPointerSize) { |
- __ mov(edx, FieldOperand(ebx, i)); |
- __ mov(ecx, FieldOperand(ebx, i + kPointerSize)); |
- __ mov(FieldOperand(eax, i), edx); |
- __ mov(FieldOperand(eax, i + kPointerSize), ecx); |
- } |
- if ((size % (2 * kPointerSize)) != 0) { |
- __ mov(edx, FieldOperand(ebx, size - kPointerSize)); |
- __ mov(FieldOperand(eax, size - kPointerSize), edx); |
- } |
-} |
- |
- |
void LCodeGen::DoTypeof(LTypeof* instr) { |
DCHECK(ToRegister(instr->context()).is(esi)); |
DCHECK(ToRegister(instr->value()).is(ebx)); |