| 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);
|
|
|