Index: src/ia32/builtins-ia32.cc |
diff --git a/src/ia32/builtins-ia32.cc b/src/ia32/builtins-ia32.cc |
index e642f9dd969db58df70a2525fdc866bc92e462f5..2970a0e08074288540adc78b44d0e7026b24645d 100644 |
--- a/src/ia32/builtins-ia32.cc |
+++ b/src/ia32/builtins-ia32.cc |
@@ -185,7 +185,8 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm, |
// ebx: JSObject |
// edi: start of next object |
__ mov(Operand(ebx, JSObject::kMapOffset), eax); |
- __ mov(ecx, FACTORY->empty_fixed_array()); |
+ Factory* factory = masm->isolate()->factory(); |
+ __ mov(ecx, factory->empty_fixed_array()); |
__ mov(Operand(ebx, JSObject::kPropertiesOffset), ecx); |
__ mov(Operand(ebx, JSObject::kElementsOffset), ecx); |
// Set extra fields in the newly allocated object. |
@@ -195,9 +196,9 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm, |
{ Label loop, entry; |
// To allow for truncation. |
if (count_constructions) { |
- __ mov(edx, FACTORY->one_pointer_filler_map()); |
+ __ mov(edx, factory->one_pointer_filler_map()); |
} else { |
- __ mov(edx, FACTORY->undefined_value()); |
+ __ mov(edx, factory->undefined_value()); |
} |
__ lea(ecx, Operand(ebx, JSObject::kHeaderSize)); |
__ jmp(&entry); |
@@ -253,7 +254,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm, |
// edi: FixedArray |
// edx: number of elements |
// ecx: start of next object |
- __ mov(eax, FACTORY->fixed_array_map()); |
+ __ mov(eax, factory->fixed_array_map()); |
__ mov(Operand(edi, FixedArray::kMapOffset), eax); // setup the map |
__ SmiTag(edx); |
__ mov(Operand(edi, FixedArray::kLengthOffset), edx); // and length |
@@ -263,7 +264,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm, |
// edi: FixedArray |
// ecx: start of next object |
{ Label loop, entry; |
- __ mov(edx, FACTORY->undefined_value()); |
+ __ mov(edx, factory->undefined_value()); |
__ lea(eax, Operand(edi, FixedArray::kHeaderSize)); |
__ jmp(&entry); |
__ bind(&loop); |
@@ -562,12 +563,14 @@ void Builtins::Generate_NotifyOSR(MacroAssembler* masm) { |
void Builtins::Generate_FunctionCall(MacroAssembler* masm) { |
+ Factory* factory = masm->isolate()->factory(); |
+ |
// 1. Make sure we have at least one argument. |
{ Label done; |
__ test(eax, Operand(eax)); |
__ j(not_zero, &done, taken); |
__ pop(ebx); |
- __ push(Immediate(FACTORY->undefined_value())); |
+ __ push(Immediate(factory->undefined_value())); |
__ push(ebx); |
__ inc(eax); |
__ bind(&done); |
@@ -601,9 +604,9 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) { |
__ test(ebx, Immediate(kSmiTagMask)); |
__ j(zero, &convert_to_object); |
- __ cmp(ebx, FACTORY->null_value()); |
+ __ cmp(ebx, factory->null_value()); |
__ j(equal, &use_global_receiver); |
- __ cmp(ebx, FACTORY->undefined_value()); |
+ __ cmp(ebx, factory->undefined_value()); |
__ j(equal, &use_global_receiver); |
// We don't use IsObjectJSObjectType here because we jump on success. |
@@ -755,9 +758,10 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) { |
// Compute the receiver in non-strict mode. |
__ test(ebx, Immediate(kSmiTagMask)); |
__ j(zero, &call_to_object); |
- __ cmp(ebx, FACTORY->null_value()); |
+ Factory* factory = masm->isolate()->factory(); |
+ __ cmp(ebx, factory->null_value()); |
__ j(equal, &use_global_receiver); |
- __ cmp(ebx, FACTORY->undefined_value()); |
+ __ cmp(ebx, factory->undefined_value()); |
__ j(equal, &use_global_receiver); |
// If given receiver is already a JavaScript object then there's no |
@@ -868,8 +872,9 @@ static void AllocateEmptyJSArray(MacroAssembler* masm, |
// scratch1: initial map |
// scratch2: start of next object |
__ mov(FieldOperand(result, JSObject::kMapOffset), scratch1); |
+ Factory* factory = masm->isolate()->factory(); |
__ mov(FieldOperand(result, JSArray::kPropertiesOffset), |
- FACTORY->empty_fixed_array()); |
+ factory->empty_fixed_array()); |
// Field JSArray::kElementsOffset is initialized later. |
__ mov(FieldOperand(result, JSArray::kLengthOffset), Immediate(0)); |
@@ -877,7 +882,7 @@ static void AllocateEmptyJSArray(MacroAssembler* masm, |
// fixed array. |
if (initial_capacity == 0) { |
__ mov(FieldOperand(result, JSArray::kElementsOffset), |
- FACTORY->empty_fixed_array()); |
+ factory->empty_fixed_array()); |
return; |
} |
@@ -894,7 +899,7 @@ static void AllocateEmptyJSArray(MacroAssembler* masm, |
// scratch1: elements array |
// scratch2: start of next object |
__ mov(FieldOperand(scratch1, FixedArray::kMapOffset), |
- FACTORY->fixed_array_map()); |
+ factory->fixed_array_map()); |
__ mov(FieldOperand(scratch1, FixedArray::kLengthOffset), |
Immediate(Smi::FromInt(initial_capacity))); |
@@ -905,7 +910,7 @@ static void AllocateEmptyJSArray(MacroAssembler* masm, |
if (initial_capacity <= kLoopUnfoldLimit) { |
// Use a scratch register here to have only one reloc info when unfolding |
// the loop. |
- __ mov(scratch3, FACTORY->the_hole_value()); |
+ __ mov(scratch3, factory->the_hole_value()); |
for (int i = 0; i < initial_capacity; i++) { |
__ mov(FieldOperand(scratch1, |
FixedArray::kHeaderSize + i * kPointerSize), |
@@ -915,7 +920,7 @@ static void AllocateEmptyJSArray(MacroAssembler* masm, |
Label loop, entry; |
__ jmp(&entry); |
__ bind(&loop); |
- __ mov(Operand(scratch1, 0), FACTORY->the_hole_value()); |
+ __ mov(Operand(scratch1, 0), factory->the_hole_value()); |
__ add(Operand(scratch1), Immediate(kPointerSize)); |
__ bind(&entry); |
__ cmp(scratch1, Operand(scratch2)); |
@@ -970,7 +975,8 @@ static void AllocateJSArray(MacroAssembler* masm, |
// elements_array_end: start of next object |
// array_size: size of array (smi) |
__ mov(FieldOperand(result, JSObject::kMapOffset), elements_array); |
- __ mov(elements_array, FACTORY->empty_fixed_array()); |
+ Factory* factory = masm->isolate()->factory(); |
+ __ mov(elements_array, factory->empty_fixed_array()); |
__ mov(FieldOperand(result, JSArray::kPropertiesOffset), elements_array); |
// Field JSArray::kElementsOffset is initialized later. |
__ mov(FieldOperand(result, JSArray::kLengthOffset), array_size); |
@@ -989,7 +995,7 @@ static void AllocateJSArray(MacroAssembler* masm, |
// elements_array_end: start of next object |
// array_size: size of array (smi) |
__ mov(FieldOperand(elements_array, FixedArray::kMapOffset), |
- FACTORY->fixed_array_map()); |
+ factory->fixed_array_map()); |
// For non-empty JSArrays the length of the FixedArray and the JSArray is the |
// same. |
__ mov(FieldOperand(elements_array, FixedArray::kLengthOffset), array_size); |
@@ -1001,7 +1007,7 @@ static void AllocateJSArray(MacroAssembler* masm, |
__ SmiUntag(array_size); |
__ lea(edi, Operand(elements_array, |
FixedArray::kHeaderSize - kHeapObjectTag)); |
- __ mov(eax, FACTORY->the_hole_value()); |
+ __ mov(eax, factory->the_hole_value()); |
__ cld(); |
// Do not use rep stos when filling less than kRepStosThreshold |
// words. |
@@ -1342,7 +1348,8 @@ void Builtins::Generate_StringConstructCode(MacroAssembler* masm) { |
__ mov(FieldOperand(eax, HeapObject::kMapOffset), ecx); |
// Set properties and elements. |
- __ Set(ecx, Immediate(FACTORY->empty_fixed_array())); |
+ Factory* factory = masm->isolate()->factory(); |
+ __ Set(ecx, Immediate(factory->empty_fixed_array())); |
__ mov(FieldOperand(eax, JSObject::kPropertiesOffset), ecx); |
__ mov(FieldOperand(eax, JSObject::kElementsOffset), ecx); |
@@ -1383,7 +1390,7 @@ void Builtins::Generate_StringConstructCode(MacroAssembler* masm) { |
// Load the empty string into ebx, remove the receiver from the |
// stack, and jump back to the case where the argument is a string. |
__ bind(&no_arguments); |
- __ Set(ebx, Immediate(FACTORY->empty_string())); |
+ __ Set(ebx, Immediate(factory->empty_string())); |
__ pop(ecx); |
__ lea(esp, Operand(esp, kPointerSize)); |
__ push(ecx); |