| Index: src/ia32/code-stubs-ia32.cc
|
| diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc
|
| index a863e39b3b86e0ff413c8d3478e06f0f409e0f1b..711616fc4d8287b58f8450ba8b241f6284fbe7c9 100644
|
| --- a/src/ia32/code-stubs-ia32.cc
|
| +++ b/src/ia32/code-stubs-ia32.cc
|
| @@ -49,7 +49,8 @@ void ToNumberStub::Generate(MacroAssembler* masm) {
|
|
|
| __ bind(&check_heap_number);
|
| __ mov(ebx, FieldOperand(eax, HeapObject::kMapOffset));
|
| - __ cmp(Operand(ebx), Immediate(FACTORY->heap_number_map()));
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ cmp(Operand(ebx), Immediate(factory->heap_number_map()));
|
| __ j(not_equal, &call_builtin);
|
| __ ret(0);
|
|
|
| @@ -83,16 +84,17 @@ void FastNewClosureStub::Generate(MacroAssembler* masm) {
|
|
|
| // Initialize the rest of the function. We don't have to update the
|
| // write barrier because the allocated object is in new space.
|
| - __ mov(ebx, Immediate(FACTORY->empty_fixed_array()));
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ mov(ebx, Immediate(factory->empty_fixed_array()));
|
| __ mov(FieldOperand(eax, JSObject::kPropertiesOffset), ebx);
|
| __ mov(FieldOperand(eax, JSObject::kElementsOffset), ebx);
|
| __ mov(FieldOperand(eax, JSFunction::kPrototypeOrInitialMapOffset),
|
| - Immediate(FACTORY->the_hole_value()));
|
| + Immediate(factory->the_hole_value()));
|
| __ mov(FieldOperand(eax, JSFunction::kSharedFunctionInfoOffset), edx);
|
| __ mov(FieldOperand(eax, JSFunction::kContextOffset), esi);
|
| __ mov(FieldOperand(eax, JSFunction::kLiteralsOffset), ebx);
|
| __ mov(FieldOperand(eax, JSFunction::kNextFunctionLinkOffset),
|
| - Immediate(FACTORY->undefined_value()));
|
| + Immediate(factory->undefined_value()));
|
|
|
| // Initialize the code pointer in the function to be the one
|
| // found in the shared function info object.
|
| @@ -109,7 +111,7 @@ void FastNewClosureStub::Generate(MacroAssembler* masm) {
|
| __ pop(edx);
|
| __ push(esi);
|
| __ push(edx);
|
| - __ push(Immediate(FACTORY->false_value()));
|
| + __ push(Immediate(factory->false_value()));
|
| __ push(ecx); // Restore return address.
|
| __ TailCallRuntime(Runtime::kNewClosure, 3, 1);
|
| }
|
| @@ -126,7 +128,8 @@ void FastNewContextStub::Generate(MacroAssembler* masm) {
|
| __ mov(ecx, Operand(esp, 1 * kPointerSize));
|
|
|
| // Setup the object header.
|
| - __ mov(FieldOperand(eax, HeapObject::kMapOffset), FACTORY->context_map());
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ mov(FieldOperand(eax, HeapObject::kMapOffset), factory->context_map());
|
| __ mov(FieldOperand(eax, Context::kLengthOffset),
|
| Immediate(Smi::FromInt(length)));
|
|
|
| @@ -145,7 +148,7 @@ void FastNewContextStub::Generate(MacroAssembler* masm) {
|
| __ mov(Operand(eax, Context::SlotOffset(Context::GLOBAL_INDEX)), ebx);
|
|
|
| // Initialize the rest of the slots to undefined.
|
| - __ mov(ebx, FACTORY->undefined_value());
|
| + __ mov(ebx, factory->undefined_value());
|
| for (int i = Context::MIN_CONTEXT_SLOTS; i < length; i++) {
|
| __ mov(Operand(eax, Context::SlotOffset(i)), ebx);
|
| }
|
| @@ -181,7 +184,8 @@ void FastCloneShallowArrayStub::Generate(MacroAssembler* masm) {
|
| STATIC_ASSERT(kSmiTag == 0);
|
| __ mov(ecx, FieldOperand(ecx, eax, times_half_pointer_size,
|
| FixedArray::kHeaderSize));
|
| - __ cmp(ecx, FACTORY->undefined_value());
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ cmp(ecx, factory->undefined_value());
|
| __ j(equal, &slow_case);
|
|
|
| if (FLAG_debug_code) {
|
| @@ -189,11 +193,11 @@ void FastCloneShallowArrayStub::Generate(MacroAssembler* masm) {
|
| Handle<Map> expected_map;
|
| if (mode_ == CLONE_ELEMENTS) {
|
| message = "Expected (writable) fixed array";
|
| - expected_map = FACTORY->fixed_array_map();
|
| + expected_map = factory->fixed_array_map();
|
| } else {
|
| ASSERT(mode_ == COPY_ON_WRITE_ELEMENTS);
|
| message = "Expected copy-on-write fixed array";
|
| - expected_map = FACTORY->fixed_cow_array_map();
|
| + expected_map = factory->fixed_cow_array_map();
|
| }
|
| __ push(ecx);
|
| __ mov(ecx, FieldOperand(ecx, JSArray::kElementsOffset));
|
| @@ -242,7 +246,8 @@ void ToBooleanStub::Generate(MacroAssembler* masm) {
|
| __ mov(eax, Operand(esp, 1 * kPointerSize));
|
|
|
| // 'null' => false.
|
| - __ cmp(eax, FACTORY->null_value());
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ cmp(eax, factory->null_value());
|
| __ j(equal, &false_result);
|
|
|
| // Get the map and type of the heap object.
|
| @@ -268,7 +273,7 @@ void ToBooleanStub::Generate(MacroAssembler* masm) {
|
|
|
| __ bind(¬_string);
|
| // HeapNumber => false iff +0, -0, or NaN.
|
| - __ cmp(edx, FACTORY->heap_number_map());
|
| + __ cmp(edx, factory->heap_number_map());
|
| __ j(not_equal, &true_result);
|
| __ fldz();
|
| __ fld_d(FieldOperand(eax, HeapNumber::kValueOffset));
|
| @@ -2521,7 +2526,8 @@ void TranscendentalCacheStub::Generate(MacroAssembler* masm) {
|
| __ bind(&input_not_smi);
|
| // Check if input is a HeapNumber.
|
| __ mov(ebx, FieldOperand(eax, HeapObject::kMapOffset));
|
| - __ cmp(Operand(ebx), Immediate(FACTORY->heap_number_map()));
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ cmp(Operand(ebx), Immediate(factory->heap_number_map()));
|
| __ j(not_equal, &runtime_call);
|
| // Input is a HeapNumber. Push it on the FPU stack and load its
|
| // low and high words into ebx, edx.
|
| @@ -2989,14 +2995,15 @@ void FloatingPointHelper::LoadUnknownsAsIntegers(MacroAssembler* masm,
|
|
|
| // If the argument is undefined it converts to zero (ECMA-262, section 9.5).
|
| __ bind(&check_undefined_arg1);
|
| - __ cmp(edx, FACTORY->undefined_value());
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ cmp(edx, factory->undefined_value());
|
| __ j(not_equal, conversion_failure);
|
| __ mov(edx, Immediate(0));
|
| __ jmp(&load_arg2);
|
|
|
| __ bind(&arg1_is_object);
|
| __ mov(ebx, FieldOperand(edx, HeapObject::kMapOffset));
|
| - __ cmp(ebx, FACTORY->heap_number_map());
|
| + __ cmp(ebx, factory->heap_number_map());
|
| __ j(not_equal, &check_undefined_arg1);
|
|
|
| // Get the untagged integer version of the edx heap number in ecx.
|
| @@ -3020,14 +3027,14 @@ void FloatingPointHelper::LoadUnknownsAsIntegers(MacroAssembler* masm,
|
|
|
| // If the argument is undefined it converts to zero (ECMA-262, section 9.5).
|
| __ bind(&check_undefined_arg2);
|
| - __ cmp(eax, FACTORY->undefined_value());
|
| + __ cmp(eax, factory->undefined_value());
|
| __ j(not_equal, conversion_failure);
|
| __ mov(ecx, Immediate(0));
|
| __ jmp(&done);
|
|
|
| __ bind(&arg2_is_object);
|
| __ mov(ebx, FieldOperand(eax, HeapObject::kMapOffset));
|
| - __ cmp(ebx, FACTORY->heap_number_map());
|
| + __ cmp(ebx, factory->heap_number_map());
|
| __ j(not_equal, &check_undefined_arg2);
|
|
|
| // Get the untagged integer version of the eax heap number in ecx.
|
| @@ -3114,14 +3121,15 @@ void FloatingPointHelper::LoadSSE2Operands(MacroAssembler* masm,
|
| // Load operand in edx into xmm0, or branch to not_numbers.
|
| __ test(edx, Immediate(kSmiTagMask));
|
| __ j(zero, &load_smi_edx, not_taken); // Argument in edx is a smi.
|
| - __ cmp(FieldOperand(edx, HeapObject::kMapOffset), FACTORY->heap_number_map());
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ cmp(FieldOperand(edx, HeapObject::kMapOffset), factory->heap_number_map());
|
| __ j(not_equal, not_numbers); // Argument in edx is not a number.
|
| __ movdbl(xmm0, FieldOperand(edx, HeapNumber::kValueOffset));
|
| __ bind(&load_eax);
|
| // Load operand in eax into xmm1, or branch to not_numbers.
|
| __ test(eax, Immediate(kSmiTagMask));
|
| __ j(zero, &load_smi_eax, not_taken); // Argument in eax is a smi.
|
| - __ cmp(FieldOperand(eax, HeapObject::kMapOffset), FACTORY->heap_number_map());
|
| + __ cmp(FieldOperand(eax, HeapObject::kMapOffset), factory->heap_number_map());
|
| __ j(equal, &load_float_eax);
|
| __ jmp(not_numbers); // Argument in eax is not a number.
|
| __ bind(&load_smi_edx);
|
| @@ -3239,14 +3247,15 @@ void FloatingPointHelper::CheckFloatOperands(MacroAssembler* masm,
|
| __ test(edx, Immediate(kSmiTagMask));
|
| __ j(zero, &test_other, not_taken); // argument in edx is OK
|
| __ mov(scratch, FieldOperand(edx, HeapObject::kMapOffset));
|
| - __ cmp(scratch, FACTORY->heap_number_map());
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ cmp(scratch, factory->heap_number_map());
|
| __ j(not_equal, non_float); // argument in edx is not a number -> NaN
|
|
|
| __ bind(&test_other);
|
| __ test(eax, Immediate(kSmiTagMask));
|
| __ j(zero, &done); // argument in eax is OK
|
| __ mov(scratch, FieldOperand(eax, HeapObject::kMapOffset));
|
| - __ cmp(scratch, FACTORY->heap_number_map());
|
| + __ cmp(scratch, factory->heap_number_map());
|
| __ j(not_equal, non_float); // argument in eax is not a number -> NaN
|
|
|
| // Fall-through: Both operands are numbers.
|
| @@ -3292,7 +3301,7 @@ void GenericUnaryOpStub::Generate(MacroAssembler* masm) {
|
| }
|
|
|
| __ mov(edx, FieldOperand(eax, HeapObject::kMapOffset));
|
| - __ cmp(edx, FACTORY->heap_number_map());
|
| + __ cmp(edx, masm->isolate()->factory()->heap_number_map());
|
| __ j(not_equal, &slow);
|
| if (overwrite_ == UNARY_OVERWRITE) {
|
| __ mov(edx, FieldOperand(eax, HeapNumber::kExponentOffset));
|
| @@ -3324,7 +3333,7 @@ void GenericUnaryOpStub::Generate(MacroAssembler* masm) {
|
|
|
| // Check if the operand is a heap number.
|
| __ mov(edx, FieldOperand(eax, HeapObject::kMapOffset));
|
| - __ cmp(edx, FACTORY->heap_number_map());
|
| + __ cmp(edx, masm->isolate()->factory()->heap_number_map());
|
| __ j(not_equal, &slow, not_taken);
|
|
|
| // Convert the heap number in eax to an untagged integer in ecx.
|
| @@ -3426,8 +3435,9 @@ void MathPowStub::Generate(MacroAssembler* masm) {
|
| __ jmp(&powi);
|
| // exponent is smi and base is a heapnumber.
|
| __ bind(&base_nonsmi);
|
| + Factory* factory = masm->isolate()->factory();
|
| __ cmp(FieldOperand(edx, HeapObject::kMapOffset),
|
| - FACTORY->heap_number_map());
|
| + factory->heap_number_map());
|
| __ j(not_equal, &call_runtime);
|
|
|
| __ movdbl(xmm0, FieldOperand(edx, HeapNumber::kValueOffset));
|
| @@ -3479,7 +3489,7 @@ void MathPowStub::Generate(MacroAssembler* masm) {
|
| // on doubles.
|
| __ bind(&exponent_nonsmi);
|
| __ cmp(FieldOperand(eax, HeapObject::kMapOffset),
|
| - FACTORY->heap_number_map());
|
| + factory->heap_number_map());
|
| __ j(not_equal, &call_runtime);
|
| __ movdbl(xmm1, FieldOperand(eax, HeapNumber::kValueOffset));
|
| // Test if exponent is nan.
|
| @@ -3496,7 +3506,7 @@ void MathPowStub::Generate(MacroAssembler* masm) {
|
|
|
| __ bind(&base_not_smi);
|
| __ cmp(FieldOperand(edx, HeapObject::kMapOffset),
|
| - FACTORY->heap_number_map());
|
| + factory->heap_number_map());
|
| __ j(not_equal, &call_runtime);
|
| __ mov(ecx, FieldOperand(edx, HeapNumber::kExponentOffset));
|
| __ and_(ecx, HeapNumber::kExponentMask);
|
| @@ -3694,7 +3704,7 @@ void ArgumentsAccessStub::GenerateNewObject(MacroAssembler* masm) {
|
| __ lea(edi, Operand(eax, GetArgumentsObjectSize()));
|
| __ mov(FieldOperand(eax, JSObject::kElementsOffset), edi);
|
| __ mov(FieldOperand(edi, FixedArray::kMapOffset),
|
| - Immediate(FACTORY->fixed_array_map()));
|
| + Immediate(masm->isolate()->factory()->fixed_array_map()));
|
|
|
| __ mov(FieldOperand(edi, FixedArray::kLengthOffset), ecx);
|
| // Untag the length for the loop below.
|
| @@ -3823,7 +3833,8 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| // Check that the JSArray is in fast case.
|
| __ mov(ebx, FieldOperand(eax, JSArray::kElementsOffset));
|
| __ mov(eax, FieldOperand(ebx, HeapObject::kMapOffset));
|
| - __ cmp(eax, FACTORY->fixed_array_map());
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ cmp(eax, factory->fixed_array_map());
|
| __ j(not_equal, &runtime);
|
| // Check that the last match info has space for the capture registers and the
|
| // additional information.
|
| @@ -3861,7 +3872,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| __ j(not_zero, &runtime);
|
| // String is a cons string.
|
| __ mov(edx, FieldOperand(eax, ConsString::kSecondOffset));
|
| - __ cmp(Operand(edx), FACTORY->empty_string());
|
| + __ cmp(Operand(edx), factory->empty_string());
|
| __ j(not_equal, &runtime);
|
| __ mov(eax, FieldOperand(eax, ConsString::kFirstOffset));
|
| __ mov(ebx, FieldOperand(eax, HeapObject::kMapOffset));
|
| @@ -4000,7 +4011,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
|
|
| // Special handling of termination exceptions which are uncatchable
|
| // by javascript code.
|
| - __ cmp(eax, FACTORY->termination_exception());
|
| + __ cmp(eax, factory->termination_exception());
|
| Label throw_termination_exception;
|
| __ j(equal, &throw_termination_exception);
|
|
|
| @@ -4012,7 +4023,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
|
|
| __ bind(&failure);
|
| // For failure to match, return null.
|
| - __ mov(Operand(eax), FACTORY->null_value());
|
| + __ mov(Operand(eax), factory->null_value());
|
| __ ret(4 * kPointerSize);
|
|
|
| // Load RegExp data.
|
| @@ -4113,7 +4124,8 @@ void RegExpConstructResultStub::Generate(MacroAssembler* masm) {
|
| // Set elements to point to FixedArray allocated right after the JSArray.
|
| // Interleave operations for better latency.
|
| __ mov(edx, ContextOperand(esi, Context::GLOBAL_INDEX));
|
| - __ mov(ecx, Immediate(FACTORY->empty_fixed_array()));
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ mov(ecx, Immediate(factory->empty_fixed_array()));
|
| __ lea(ebx, Operand(eax, JSRegExpResult::kSize));
|
| __ mov(edx, FieldOperand(edx, GlobalObject::kGlobalContextOffset));
|
| __ mov(FieldOperand(eax, JSObject::kElementsOffset), ebx);
|
| @@ -4136,12 +4148,12 @@ void RegExpConstructResultStub::Generate(MacroAssembler* masm) {
|
|
|
| // Set map.
|
| __ mov(FieldOperand(ebx, HeapObject::kMapOffset),
|
| - Immediate(FACTORY->fixed_array_map()));
|
| + Immediate(factory->fixed_array_map()));
|
| // Set length.
|
| __ mov(FieldOperand(ebx, FixedArray::kLengthOffset), ecx);
|
| // Fill contents of fixed-array with the-hole.
|
| __ SmiUntag(ecx);
|
| - __ mov(edx, Immediate(FACTORY->the_hole_value()));
|
| + __ mov(edx, Immediate(factory->the_hole_value()));
|
| __ lea(ebx, FieldOperand(ebx, FixedArray::kHeaderSize));
|
| // Fill fixed array elements with hole.
|
| // eax: JSArray.
|
| @@ -4207,7 +4219,7 @@ void NumberToStringStub::GenerateLookupNumberStringCache(MacroAssembler* masm,
|
| __ jmp(&smi_hash_calculated);
|
| __ bind(¬_smi);
|
| __ cmp(FieldOperand(object, HeapObject::kMapOffset),
|
| - FACTORY->heap_number_map());
|
| + masm->isolate()->factory()->heap_number_map());
|
| __ j(not_equal, not_found);
|
| STATIC_ASSERT(8 == kDoubleSize);
|
| __ mov(scratch, FieldOperand(object, HeapNumber::kValueOffset));
|
| @@ -4324,14 +4336,14 @@ void CompareStub::Generate(MacroAssembler* masm) {
|
| // Check for undefined. undefined OP undefined is false even though
|
| // undefined == undefined.
|
| NearLabel check_for_nan;
|
| - __ cmp(edx, FACTORY->undefined_value());
|
| + __ cmp(edx, masm->isolate()->factory()->undefined_value());
|
| __ j(not_equal, &check_for_nan);
|
| __ Set(eax, Immediate(Smi::FromInt(NegativeComparisonResult(cc_))));
|
| __ ret(0);
|
| __ bind(&check_for_nan);
|
| }
|
|
|
| - // Test for NaN. Sadly, we can't just compare to FACTORY->nan_value(),
|
| + // Test for NaN. Sadly, we can't just compare to factory->nan_value(),
|
| // so we do the second best thing - test it ourselves.
|
| // Note: if cc_ != equal, never_nan_nan_ is not used.
|
| if (never_nan_nan_ && (cc_ == equal)) {
|
| @@ -4340,7 +4352,7 @@ void CompareStub::Generate(MacroAssembler* masm) {
|
| } else {
|
| NearLabel heap_number;
|
| __ cmp(FieldOperand(edx, HeapObject::kMapOffset),
|
| - Immediate(FACTORY->heap_number_map()));
|
| + Immediate(masm->isolate()->factory()->heap_number_map()));
|
| __ j(equal, &heap_number);
|
| if (cc_ != equal) {
|
| // Call runtime on identical JSObjects. Otherwise return equal.
|
| @@ -4417,7 +4429,7 @@ void CompareStub::Generate(MacroAssembler* masm) {
|
|
|
| // Check if the non-smi operand is a heap number.
|
| __ cmp(FieldOperand(ebx, HeapObject::kMapOffset),
|
| - Immediate(FACTORY->heap_number_map()));
|
| + Immediate(masm->isolate()->factory()->heap_number_map()));
|
| // If heap number, handle it in the slow case.
|
| __ j(equal, &slow);
|
| // Return non-equal (ebx is not zero)
|
| @@ -4749,7 +4761,7 @@ void CEntryStub::GenerateCore(MacroAssembler* masm,
|
| // call as this may lead to crashes in the IC code later.
|
| if (FLAG_debug_code) {
|
| NearLabel okay;
|
| - __ cmp(eax, FACTORY->the_hole_value());
|
| + __ cmp(eax, masm->isolate()->factory()->the_hole_value());
|
| __ j(not_equal, &okay);
|
| __ int3();
|
| __ bind(&okay);
|
| @@ -4807,7 +4819,7 @@ void CEntryStub::GenerateCore(MacroAssembler* masm,
|
|
|
| // Special handling of termination exceptions which are uncatchable
|
| // by javascript code.
|
| - __ cmp(eax, FACTORY->termination_exception());
|
| + __ cmp(eax, masm->isolate()->factory()->termination_exception());
|
| __ j(equal, throw_termination_exception);
|
|
|
| // Handle normal exception.
|
| @@ -5108,7 +5120,8 @@ void InstanceofStub::Generate(MacroAssembler* masm) {
|
| __ bind(&loop);
|
| __ cmp(scratch, Operand(prototype));
|
| __ j(equal, &is_instance);
|
| - __ cmp(Operand(scratch), Immediate(FACTORY->null_value()));
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ cmp(Operand(scratch), Immediate(factory->null_value()));
|
| __ j(equal, &is_not_instance);
|
| __ mov(scratch, FieldOperand(scratch, HeapObject::kMapOffset));
|
| __ mov(scratch, FieldOperand(scratch, Map::kPrototypeOffset));
|
| @@ -5122,7 +5135,7 @@ void InstanceofStub::Generate(MacroAssembler* masm) {
|
| times_pointer_size, roots_address), eax);
|
| } else {
|
| // Get return address and delta to inlined map check.
|
| - __ mov(eax, FACTORY->true_value());
|
| + __ mov(eax, factory->true_value());
|
| __ mov(scratch, Operand(esp, 0 * kPointerSize));
|
| __ sub(scratch, Operand(esp, 1 * kPointerSize));
|
| if (FLAG_debug_code) {
|
| @@ -5144,7 +5157,7 @@ void InstanceofStub::Generate(MacroAssembler* masm) {
|
| scratch, times_pointer_size, roots_address), eax);
|
| } else {
|
| // Get return address and delta to inlined map check.
|
| - __ mov(eax, FACTORY->false_value());
|
| + __ mov(eax, factory->false_value());
|
| __ mov(scratch, Operand(esp, 0 * kPointerSize));
|
| __ sub(scratch, Operand(esp, 1 * kPointerSize));
|
| if (FLAG_debug_code) {
|
| @@ -5168,7 +5181,7 @@ void InstanceofStub::Generate(MacroAssembler* masm) {
|
| __ j(not_equal, &slow, not_taken);
|
|
|
| // Null is not instance of anything.
|
| - __ cmp(object, FACTORY->null_value());
|
| + __ cmp(object, factory->null_value());
|
| __ j(not_equal, &object_not_null);
|
| __ Set(eax, Immediate(Smi::FromInt(1)));
|
| __ ret((HasArgsInRegisters() ? 0 : 2) * kPointerSize);
|
| @@ -5209,10 +5222,10 @@ void InstanceofStub::Generate(MacroAssembler* masm) {
|
| NearLabel true_value, done;
|
| __ test(eax, Operand(eax));
|
| __ j(zero, &true_value);
|
| - __ mov(eax, FACTORY->false_value());
|
| + __ mov(eax, factory->false_value());
|
| __ jmp(&done);
|
| __ bind(&true_value);
|
| - __ mov(eax, FACTORY->true_value());
|
| + __ mov(eax, factory->true_value());
|
| __ bind(&done);
|
| __ ret((HasArgsInRegisters() ? 0 : 2) * kPointerSize);
|
| }
|
| @@ -5341,7 +5354,7 @@ void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) {
|
| // the case we would rather go to the runtime system now to flatten
|
| // the string.
|
| __ cmp(FieldOperand(object_, ConsString::kSecondOffset),
|
| - Immediate(FACTORY->empty_string()));
|
| + Immediate(masm->isolate()->factory()->empty_string()));
|
| __ j(not_equal, &call_runtime_);
|
| // Get the first of the two strings and load its instance type.
|
| __ mov(object_, FieldOperand(object_, ConsString::kFirstOffset));
|
| @@ -5386,7 +5399,10 @@ void StringCharCodeAtGenerator::GenerateSlow(
|
| // Index is not a smi.
|
| __ bind(&index_not_smi_);
|
| // If index is a heap number, try converting it to an integer.
|
| - __ CheckMap(index_, FACTORY->heap_number_map(), index_not_number_, true);
|
| + __ CheckMap(index_,
|
| + masm->isolate()->factory()->heap_number_map(),
|
| + index_not_number_,
|
| + true);
|
| call_helper.BeforeCall(masm);
|
| __ push(object_);
|
| __ push(index_);
|
| @@ -5447,7 +5463,8 @@ void StringCharFromCodeGenerator::GenerateFast(MacroAssembler* masm) {
|
| ((~String::kMaxAsciiCharCode) << kSmiTagSize)));
|
| __ j(not_zero, &slow_case_, not_taken);
|
|
|
| - __ Set(result_, Immediate(FACTORY->single_character_string_cache()));
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ Set(result_, Immediate(factory->single_character_string_cache()));
|
| STATIC_ASSERT(kSmiTag == 0);
|
| STATIC_ASSERT(kSmiTagSize == 1);
|
| STATIC_ASSERT(kSmiShiftSize == 0);
|
| @@ -5455,7 +5472,7 @@ void StringCharFromCodeGenerator::GenerateFast(MacroAssembler* masm) {
|
| __ mov(result_, FieldOperand(result_,
|
| code_, times_half_pointer_size,
|
| FixedArray::kHeaderSize));
|
| - __ cmp(result_, FACTORY->undefined_value());
|
| + __ cmp(result_, factory->undefined_value());
|
| __ j(equal, &slow_case_, not_taken);
|
| __ bind(&exit_);
|
| }
|
| @@ -5983,9 +6000,10 @@ void StringHelper::GenerateTwoCharacterSymbolTableProbe(MacroAssembler* masm,
|
| SymbolTable::kElementsStartOffset));
|
|
|
| // If entry is undefined no string with this hash can be found.
|
| - __ cmp(candidate, FACTORY->undefined_value());
|
| + Factory* factory = masm->isolate()->factory();
|
| + __ cmp(candidate, factory->undefined_value());
|
| __ j(equal, not_found);
|
| - __ cmp(candidate, FACTORY->null_value());
|
| + __ cmp(candidate, factory->null_value());
|
| __ j(equal, &next_probe[i]);
|
|
|
| // If length is not 2 the string is not a candidate.
|
|
|