| Index: src/x64/code-stubs-x64.cc
|
| diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc
|
| index 2e2b975c79108b6d29705f6662072b2ef7185e1c..9b350adeea894569798b2b210c26c287d03086cb 100644
|
| --- a/src/x64/code-stubs-x64.cc
|
| +++ b/src/x64/code-stubs-x64.cc
|
| @@ -479,10 +479,9 @@ void CallDescriptors::InitializeForIsolate(Isolate* isolate) {
|
|
|
| void HydrogenCodeStub::GenerateLightweightMiss(MacroAssembler* masm) {
|
| // Update the static counter each time a new code stub is generated.
|
| - Isolate* isolate = masm->isolate();
|
| - isolate->counters()->code_stubs()->Increment();
|
| + isolate()->counters()->code_stubs()->Increment();
|
|
|
| - CodeStubInterfaceDescriptor* descriptor = GetInterfaceDescriptor(isolate);
|
| + CodeStubInterfaceDescriptor* descriptor = GetInterfaceDescriptor(isolate());
|
| int param_count = descriptor->register_param_count_;
|
| {
|
| // Call the runtime system in a fresh internal frame.
|
| @@ -506,11 +505,11 @@ void StoreBufferOverflowStub::Generate(MacroAssembler* masm) {
|
| const int argument_count = 1;
|
| __ PrepareCallCFunction(argument_count);
|
| __ LoadAddress(arg_reg_1,
|
| - ExternalReference::isolate_address(masm->isolate()));
|
| + ExternalReference::isolate_address(isolate()));
|
|
|
| AllowExternalCallThatCantCauseGC scope(masm);
|
| __ CallCFunction(
|
| - ExternalReference::store_buffer_overflow_function(masm->isolate()),
|
| + ExternalReference::store_buffer_overflow_function(isolate()),
|
| argument_count);
|
| __ PopCallerSaved(save_doubles_);
|
| __ ret(0);
|
| @@ -871,7 +870,7 @@ void MathPowStub::Generate(MacroAssembler* masm) {
|
| __ Cvtlsi2sd(double_exponent, exponent);
|
|
|
| // Returning or bailing out.
|
| - Counters* counters = masm->isolate()->counters();
|
| + Counters* counters = isolate()->counters();
|
| if (exponent_type_ == ON_STACK) {
|
| // The arguments are still on the stack.
|
| __ bind(&call_runtime);
|
| @@ -893,7 +892,7 @@ void MathPowStub::Generate(MacroAssembler* masm) {
|
| AllowExternalCallThatCantCauseGC scope(masm);
|
| __ PrepareCallCFunction(2);
|
| __ CallCFunction(
|
| - ExternalReference::power_double_double_function(masm->isolate()), 2);
|
| + ExternalReference::power_double_double_function(isolate()), 2);
|
| }
|
| // Return value is in xmm0.
|
| __ movsd(double_result, xmm0);
|
| @@ -914,7 +913,7 @@ void FunctionPrototypeStub::Generate(MacroAssembler* masm) {
|
| // -- rdx : receiver
|
| // -- rsp[0] : return address
|
| // -----------------------------------
|
| - __ Cmp(rax, masm->isolate()->factory()->prototype_string());
|
| + __ Cmp(rax, isolate()->factory()->prototype_string());
|
| __ j(not_equal, &miss);
|
| receiver = rdx;
|
| } else {
|
| @@ -1000,7 +999,7 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) {
|
| // rbx: the mapped parameter count (untagged)
|
| // rax: the allocated object (tagged).
|
|
|
| - Factory* factory = masm->isolate()->factory();
|
| + Factory* factory = isolate()->factory();
|
|
|
| StackArgumentsAccessor args(rsp, 3, ARGUMENTS_DONT_CONTAIN_RECEIVER);
|
| __ SmiToInteger64(rbx, args.GetArgumentOperand(2));
|
| @@ -1363,11 +1362,10 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| ARGUMENTS_DONT_CONTAIN_RECEIVER);
|
| Label runtime;
|
| // Ensure that a RegExp stack is allocated.
|
| - Isolate* isolate = masm->isolate();
|
| ExternalReference address_of_regexp_stack_memory_address =
|
| - ExternalReference::address_of_regexp_stack_memory_address(isolate);
|
| + ExternalReference::address_of_regexp_stack_memory_address(isolate());
|
| ExternalReference address_of_regexp_stack_memory_size =
|
| - ExternalReference::address_of_regexp_stack_memory_size(isolate);
|
| + ExternalReference::address_of_regexp_stack_memory_size(isolate());
|
| __ Load(kScratchRegister, address_of_regexp_stack_memory_size);
|
| __ testp(kScratchRegister, kScratchRegister);
|
| __ j(zero, &runtime);
|
| @@ -1519,7 +1517,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| // rcx: encoding of subject string (1 if ASCII 0 if two_byte);
|
| // r11: code
|
| // All checks done. Now push arguments for native regexp code.
|
| - Counters* counters = masm->isolate()->counters();
|
| + Counters* counters = isolate()->counters();
|
| __ IncrementCounter(counters->regexp_entry_native(), 1);
|
|
|
| // Isolates: note we add an additional parameter here (isolate pointer).
|
| @@ -1530,7 +1528,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
|
|
| // Argument 9: Pass current isolate address.
|
| __ LoadAddress(kScratchRegister,
|
| - ExternalReference::isolate_address(masm->isolate()));
|
| + ExternalReference::isolate_address(isolate()));
|
| __ movq(Operand(rsp, (argument_slots_on_stack - 1) * kRegisterSize),
|
| kScratchRegister);
|
|
|
| @@ -1556,8 +1554,8 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| #endif
|
|
|
| // Argument 5: static offsets vector buffer.
|
| - __ LoadAddress(r8,
|
| - ExternalReference::address_of_static_offsets_vector(isolate));
|
| + __ LoadAddress(
|
| + r8, ExternalReference::address_of_static_offsets_vector(isolate()));
|
| // Argument 5 passed in r8 on Linux and on the stack on Windows.
|
| #ifdef _WIN64
|
| __ movq(Operand(rsp, (argument_slots_on_stack - 5) * kRegisterSize), r8);
|
| @@ -1682,8 +1680,8 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| kDontSaveFPRegs);
|
|
|
| // Get the static offsets vector filled by the native regexp code.
|
| - __ LoadAddress(rcx,
|
| - ExternalReference::address_of_static_offsets_vector(isolate));
|
| + __ LoadAddress(
|
| + rcx, ExternalReference::address_of_static_offsets_vector(isolate()));
|
|
|
| // rbx: last_match_info backing store (FixedArray)
|
| // rcx: offsets vector
|
| @@ -1716,7 +1714,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| // haven't created the exception yet. Handle that in the runtime system.
|
| // TODO(592): Rerunning the RegExp to get the stack overflow exception.
|
| ExternalReference pending_exception_address(
|
| - Isolate::kPendingExceptionAddress, isolate);
|
| + Isolate::kPendingExceptionAddress, isolate());
|
| Operand pending_exception_operand =
|
| masm->ExternalOperand(pending_exception_address, rbx);
|
| __ movp(rax, pending_exception_operand);
|
| @@ -1829,7 +1827,7 @@ static void BranchIfNotInternalizedString(MacroAssembler* masm,
|
| void ICCompareStub::GenerateGeneric(MacroAssembler* masm) {
|
| Label check_unequal_objects, done;
|
| Condition cc = GetCondition();
|
| - Factory* factory = masm->isolate()->factory();
|
| + Factory* factory = isolate()->factory();
|
|
|
| Label miss;
|
| CheckInputType(masm, rdx, left_, &miss);
|
| @@ -2163,7 +2161,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) {
|
| __ Push(rdx);
|
| __ Push(rbx);
|
|
|
| - CreateAllocationSiteStub create_stub;
|
| + CreateAllocationSiteStub create_stub(isolate);
|
| __ CallStub(&create_stub);
|
|
|
| __ Pop(rbx);
|
| @@ -2202,7 +2200,6 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
|
| // rdx : (only if rbx is not the megamorphic symbol) slot in feedback
|
| // vector (Smi)
|
| // rdi : the function to call
|
| - Isolate* isolate = masm->isolate();
|
| Label slow, non_function, wrap, cont;
|
| StackArgumentsAccessor args(rsp, argc_);
|
|
|
| @@ -2268,7 +2265,7 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
|
| __ SmiToInteger32(rdx, rdx);
|
| __ Move(FieldOperand(rbx, rdx, times_pointer_size,
|
| FixedArray::kHeaderSize),
|
| - TypeFeedbackInfo::MegamorphicSentinel(isolate));
|
| + TypeFeedbackInfo::MegamorphicSentinel(isolate()));
|
| __ Integer32ToSmi(rdx, rdx);
|
| }
|
| // Check for function proxy.
|
| @@ -2282,7 +2279,7 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
|
| __ GetBuiltinEntry(rdx, Builtins::CALL_FUNCTION_PROXY);
|
| {
|
| Handle<Code> adaptor =
|
| - masm->isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
| + isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
| __ jmp(adaptor, RelocInfo::CODE_TARGET);
|
| }
|
|
|
| @@ -2294,7 +2291,7 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
|
| __ Set(rbx, 0);
|
| __ GetBuiltinEntry(rdx, Builtins::CALL_NON_FUNCTION);
|
| Handle<Code> adaptor =
|
| - isolate->builtins()->ArgumentsAdaptorTrampoline();
|
| + isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
| __ Jump(adaptor, RelocInfo::CODE_TARGET);
|
| }
|
|
|
| @@ -2374,7 +2371,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
| __ bind(&do_call);
|
| // Set expected number of arguments to zero (not changing rax).
|
| __ Set(rbx, 0);
|
| - __ Jump(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(),
|
| + __ Jump(isolate()->builtins()->ArgumentsAdaptorTrampoline(),
|
| RelocInfo::CODE_TARGET);
|
| }
|
|
|
| @@ -2401,9 +2398,9 @@ void CodeStub::GenerateFPStubs(Isolate* isolate) {
|
|
|
|
|
| void CEntryStub::GenerateAheadOfTime(Isolate* isolate) {
|
| - CEntryStub stub(1, kDontSaveFPRegs);
|
| + CEntryStub stub(isolate, 1, kDontSaveFPRegs);
|
| stub.GetCode(isolate);
|
| - CEntryStub save_doubles(1, kSaveFPRegs);
|
| + CEntryStub save_doubles(isolate, 1, kSaveFPRegs);
|
| save_doubles.GetCode(isolate);
|
| }
|
|
|
| @@ -2450,7 +2447,7 @@ void CEntryStub::Generate(MacroAssembler* masm) {
|
| // Return result in single register (rax).
|
| __ movp(rcx, r14); // argc.
|
| __ movp(rdx, r15); // argv.
|
| - __ Move(r8, ExternalReference::isolate_address(masm->isolate()));
|
| + __ Move(r8, ExternalReference::isolate_address(isolate()));
|
| } else {
|
| ASSERT_EQ(2, result_size_);
|
| // Pass a pointer to the result location as the first argument.
|
| @@ -2458,14 +2455,14 @@ void CEntryStub::Generate(MacroAssembler* masm) {
|
| // Pass a pointer to the Arguments object as the second argument.
|
| __ movp(rdx, r14); // argc.
|
| __ movp(r8, r15); // argv.
|
| - __ Move(r9, ExternalReference::isolate_address(masm->isolate()));
|
| + __ Move(r9, ExternalReference::isolate_address(isolate()));
|
| }
|
|
|
| #else // _WIN64
|
| // GCC passes arguments in rdi, rsi, rdx, rcx, r8, r9.
|
| __ movp(rdi, r14); // argc.
|
| __ movp(rsi, r15); // argv.
|
| - __ Move(rdx, ExternalReference::isolate_address(masm->isolate()));
|
| + __ Move(rdx, ExternalReference::isolate_address(isolate()));
|
| #endif
|
| __ call(rbx);
|
| // Result is in rax - do not destroy this register!
|
| @@ -2498,7 +2495,7 @@ void CEntryStub::Generate(MacroAssembler* masm) {
|
| __ j(equal, &exception_returned);
|
|
|
| ExternalReference pending_exception_address(
|
| - Isolate::kPendingExceptionAddress, masm->isolate());
|
| + Isolate::kPendingExceptionAddress, isolate());
|
|
|
| // Check that there is no pending exception, otherwise we
|
| // should have returned the exception sentinel.
|
| @@ -2595,17 +2592,15 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
|
| __ InitializeRootRegister();
|
| }
|
|
|
| - Isolate* isolate = masm->isolate();
|
| -
|
| // Save copies of the top frame descriptor on the stack.
|
| - ExternalReference c_entry_fp(Isolate::kCEntryFPAddress, isolate);
|
| + ExternalReference c_entry_fp(Isolate::kCEntryFPAddress, isolate());
|
| {
|
| Operand c_entry_fp_operand = masm->ExternalOperand(c_entry_fp);
|
| __ Push(c_entry_fp_operand);
|
| }
|
|
|
| // If this is the outermost JS call, set js_entry_sp value.
|
| - ExternalReference js_entry_sp(Isolate::kJSEntrySPAddress, isolate);
|
| + ExternalReference js_entry_sp(Isolate::kJSEntrySPAddress, isolate());
|
| __ Load(rax, js_entry_sp);
|
| __ testp(rax, rax);
|
| __ j(not_zero, ¬_outermost_js);
|
| @@ -2626,7 +2621,7 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
|
| // Caught exception: Store result (exception) in the pending exception
|
| // field in the JSEnv and return a failure sentinel.
|
| ExternalReference pending_exception(Isolate::kPendingExceptionAddress,
|
| - isolate);
|
| + isolate());
|
| __ Store(pending_exception, rax);
|
| __ LoadRoot(rax, Heap::kExceptionRootIndex);
|
| __ jmp(&exit);
|
| @@ -2650,10 +2645,10 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
|
| // at the time this code is generated.
|
| if (is_construct) {
|
| ExternalReference construct_entry(Builtins::kJSConstructEntryTrampoline,
|
| - isolate);
|
| + isolate());
|
| __ Load(rax, construct_entry);
|
| } else {
|
| - ExternalReference entry(Builtins::kJSEntryTrampoline, isolate);
|
| + ExternalReference entry(Builtins::kJSEntryTrampoline, isolate());
|
| __ Load(rax, entry);
|
| }
|
| __ leap(kScratchRegister, FieldOperand(rax, Code::kHeaderSize));
|
| @@ -3177,7 +3172,7 @@ void SubStringStub::Generate(MacroAssembler* masm) {
|
| // Longer than original string's length or negative: unsafe arguments.
|
| __ j(above, &runtime);
|
| // Return original string.
|
| - Counters* counters = masm->isolate()->counters();
|
| + Counters* counters = isolate()->counters();
|
| __ IncrementCounter(counters->sub_string_native(), 1);
|
| __ ret(SUB_STRING_ARGUMENT_COUNT * kPointerSize);
|
| __ bind(¬_original_string);
|
| @@ -3522,7 +3517,7 @@ void StringCompareStub::Generate(MacroAssembler* masm) {
|
| __ cmpp(rdx, rax);
|
| __ j(not_equal, ¬_same, Label::kNear);
|
| __ Move(rax, Smi::FromInt(EQUAL));
|
| - Counters* counters = masm->isolate()->counters();
|
| + Counters* counters = isolate()->counters();
|
| __ IncrementCounter(counters->string_compare_native(), 1);
|
| __ ret(2 * kPointerSize);
|
|
|
| @@ -3552,25 +3547,24 @@ void BinaryOpICWithAllocationSiteStub::Generate(MacroAssembler* masm) {
|
| // -- rax : right
|
| // -- rsp[0] : return address
|
| // -----------------------------------
|
| - Isolate* isolate = masm->isolate();
|
|
|
| // Load rcx with the allocation site. We stick an undefined dummy value here
|
| // and replace it with the real allocation site later when we instantiate this
|
| // stub in BinaryOpICWithAllocationSiteStub::GetCodeCopyFromTemplate().
|
| - __ Move(rcx, handle(isolate->heap()->undefined_value()));
|
| + __ Move(rcx, handle(isolate()->heap()->undefined_value()));
|
|
|
| // Make sure that we actually patched the allocation site.
|
| if (FLAG_debug_code) {
|
| __ testb(rcx, Immediate(kSmiTagMask));
|
| __ Assert(not_equal, kExpectedAllocationSite);
|
| __ Cmp(FieldOperand(rcx, HeapObject::kMapOffset),
|
| - isolate->factory()->allocation_site_map());
|
| + isolate()->factory()->allocation_site_map());
|
| __ Assert(equal, kExpectedAllocationSite);
|
| }
|
|
|
| // Tail call into the stub that handles binary operations with allocation
|
| // sites.
|
| - BinaryOpWithAllocationSiteStub stub(state_);
|
| + BinaryOpWithAllocationSiteStub stub(isolate(), state_);
|
| __ TailCallStub(&stub);
|
| }
|
|
|
| @@ -3616,7 +3610,7 @@ void ICCompareStub::GenerateNumbers(MacroAssembler* masm) {
|
| // Load left and right operand.
|
| Label done, left, left_smi, right_smi;
|
| __ JumpIfSmi(rax, &right_smi, Label::kNear);
|
| - __ CompareMap(rax, masm->isolate()->factory()->heap_number_map());
|
| + __ CompareMap(rax, isolate()->factory()->heap_number_map());
|
| __ j(not_equal, &maybe_undefined1, Label::kNear);
|
| __ movsd(xmm1, FieldOperand(rax, HeapNumber::kValueOffset));
|
| __ jmp(&left, Label::kNear);
|
| @@ -3626,7 +3620,7 @@ void ICCompareStub::GenerateNumbers(MacroAssembler* masm) {
|
|
|
| __ bind(&left);
|
| __ JumpIfSmi(rdx, &left_smi, Label::kNear);
|
| - __ CompareMap(rdx, masm->isolate()->factory()->heap_number_map());
|
| + __ CompareMap(rdx, isolate()->factory()->heap_number_map());
|
| __ j(not_equal, &maybe_undefined2, Label::kNear);
|
| __ movsd(xmm0, FieldOperand(rdx, HeapNumber::kValueOffset));
|
| __ jmp(&done);
|
| @@ -3651,13 +3645,13 @@ void ICCompareStub::GenerateNumbers(MacroAssembler* masm) {
|
|
|
| __ bind(&unordered);
|
| __ bind(&generic_stub);
|
| - ICCompareStub stub(op_, CompareIC::GENERIC, CompareIC::GENERIC,
|
| + ICCompareStub stub(isolate(), op_, CompareIC::GENERIC, CompareIC::GENERIC,
|
| CompareIC::GENERIC);
|
| - __ jmp(stub.GetCode(masm->isolate()), RelocInfo::CODE_TARGET);
|
| + __ jmp(stub.GetCode(isolate()), RelocInfo::CODE_TARGET);
|
|
|
| __ bind(&maybe_undefined1);
|
| if (Token::IsOrderedRelationalCompareOp(op_)) {
|
| - __ Cmp(rax, masm->isolate()->factory()->undefined_value());
|
| + __ Cmp(rax, isolate()->factory()->undefined_value());
|
| __ j(not_equal, &miss);
|
| __ JumpIfSmi(rdx, &unordered);
|
| __ CmpObjectType(rdx, HEAP_NUMBER_TYPE, rcx);
|
| @@ -3667,7 +3661,7 @@ void ICCompareStub::GenerateNumbers(MacroAssembler* masm) {
|
|
|
| __ bind(&maybe_undefined2);
|
| if (Token::IsOrderedRelationalCompareOp(op_)) {
|
| - __ Cmp(rdx, masm->isolate()->factory()->undefined_value());
|
| + __ Cmp(rdx, isolate()->factory()->undefined_value());
|
| __ j(equal, &unordered);
|
| }
|
|
|
| @@ -3893,7 +3887,7 @@ void ICCompareStub::GenerateMiss(MacroAssembler* masm) {
|
| {
|
| // Call the runtime system in a fresh internal frame.
|
| ExternalReference miss =
|
| - ExternalReference(IC_Utility(IC::kCompareIC_Miss), masm->isolate());
|
| + ExternalReference(IC_Utility(IC::kCompareIC_Miss), isolate());
|
|
|
| FrameScope scope(masm, StackFrame::INTERNAL);
|
| __ Push(rdx);
|
| @@ -3966,7 +3960,8 @@ void NameDictionaryLookupStub::GenerateNegativeLookup(MacroAssembler* masm,
|
| __ bind(&good);
|
| }
|
|
|
| - NameDictionaryLookupStub stub(properties, r0, r0, NEGATIVE_LOOKUP);
|
| + NameDictionaryLookupStub stub(masm->isolate(), properties, r0, r0,
|
| + NEGATIVE_LOOKUP);
|
| __ Push(Handle<Object>(name));
|
| __ Push(Immediate(name->Hash()));
|
| __ CallStub(&stub);
|
| @@ -4016,7 +4011,8 @@ void NameDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm,
|
| __ j(equal, done);
|
| }
|
|
|
| - NameDictionaryLookupStub stub(elements, r0, r1, POSITIVE_LOOKUP);
|
| + NameDictionaryLookupStub stub(masm->isolate(), elements, r0, r1,
|
| + POSITIVE_LOOKUP);
|
| __ Push(name);
|
| __ movl(r0, FieldOperand(name, Name::kHashFieldOffset));
|
| __ shrl(r0, Immediate(Name::kHashShift));
|
| @@ -4077,7 +4073,7 @@ void NameDictionaryLookupStub::Generate(MacroAssembler* masm) {
|
| times_pointer_size,
|
| kElementsStartOffset - kHeapObjectTag));
|
|
|
| - __ Cmp(scratch, masm->isolate()->factory()->undefined_value());
|
| + __ Cmp(scratch, isolate()->factory()->undefined_value());
|
| __ j(equal, ¬_in_dictionary);
|
|
|
| // Stop if found the property.
|
| @@ -4120,9 +4116,9 @@ void NameDictionaryLookupStub::Generate(MacroAssembler* masm) {
|
|
|
| void StoreBufferOverflowStub::GenerateFixedRegStubsAheadOfTime(
|
| Isolate* isolate) {
|
| - StoreBufferOverflowStub stub1(kDontSaveFPRegs);
|
| + StoreBufferOverflowStub stub1(isolate, kDontSaveFPRegs);
|
| stub1.GetCode(isolate);
|
| - StoreBufferOverflowStub stub2(kSaveFPRegs);
|
| + StoreBufferOverflowStub stub2(isolate, kSaveFPRegs);
|
| stub2.GetCode(isolate);
|
| }
|
|
|
| @@ -4222,14 +4218,13 @@ void RecordWriteStub::InformIncrementalMarker(MacroAssembler* masm) {
|
| // TODO(gc) Can we just set address arg2 in the beginning?
|
| __ Move(arg_reg_2, address);
|
| __ LoadAddress(arg_reg_3,
|
| - ExternalReference::isolate_address(masm->isolate()));
|
| + ExternalReference::isolate_address(isolate()));
|
| int argument_count = 3;
|
|
|
| AllowExternalCallThatCantCauseGC scope(masm);
|
| __ PrepareCallCFunction(argument_count);
|
| __ CallCFunction(
|
| - ExternalReference::incremental_marking_record_write_function(
|
| - masm->isolate()),
|
| + ExternalReference::incremental_marking_record_write_function(isolate()),
|
| argument_count);
|
| regs_.RestoreCallerSaveRegisters(masm, save_fp_regs_mode_);
|
| }
|
| @@ -4407,8 +4402,8 @@ void StoreArrayLiteralElementStub::Generate(MacroAssembler* masm) {
|
|
|
|
|
| void StubFailureTrampolineStub::Generate(MacroAssembler* masm) {
|
| - CEntryStub ces(1, fp_registers_ ? kSaveFPRegs : kDontSaveFPRegs);
|
| - __ Call(ces.GetCode(masm->isolate()), RelocInfo::CODE_TARGET);
|
| + CEntryStub ces(isolate(), 1, fp_registers_ ? kSaveFPRegs : kDontSaveFPRegs);
|
| + __ Call(ces.GetCode(isolate()), RelocInfo::CODE_TARGET);
|
| int parameter_count_offset =
|
| StubFailureTrampolineFrame::kCallerStackParameterCountFrameOffset;
|
| __ movp(rbx, MemOperand(rbp, parameter_count_offset));
|
| @@ -4424,7 +4419,7 @@ void StubFailureTrampolineStub::Generate(MacroAssembler* masm) {
|
|
|
| void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) {
|
| if (masm->isolate()->function_entry_hook() != NULL) {
|
| - ProfileEntryHookStub stub;
|
| + ProfileEntryHookStub stub(masm->isolate());
|
| masm->CallStub(&stub);
|
| }
|
| }
|
| @@ -4449,7 +4444,7 @@ void ProfileEntryHookStub::Generate(MacroAssembler* masm) {
|
| masm->PushCallerSaved(kSaveFPRegs, arg_reg_1, arg_reg_2);
|
|
|
| // Call the entry hook function.
|
| - __ Move(rax, FUNCTION_ADDR(masm->isolate()->function_entry_hook()),
|
| + __ Move(rax, FUNCTION_ADDR(isolate()->function_entry_hook()),
|
| Assembler::RelocInfoNone());
|
|
|
| AllowExternalCallThatCantCauseGC scope(masm);
|
| @@ -4471,7 +4466,7 @@ template<class T>
|
| static void CreateArrayDispatch(MacroAssembler* masm,
|
| AllocationSiteOverrideMode mode) {
|
| if (mode == DISABLE_ALLOCATION_SITES) {
|
| - T stub(GetInitialFastElementsKind(), mode);
|
| + T stub(masm->isolate(), GetInitialFastElementsKind(), mode);
|
| __ TailCallStub(&stub);
|
| } else if (mode == DONT_OVERRIDE) {
|
| int last_index = GetSequenceIndexFromFastElementsKind(
|
| @@ -4481,7 +4476,7 @@ static void CreateArrayDispatch(MacroAssembler* masm,
|
| ElementsKind kind = GetFastElementsKindFromSequenceIndex(i);
|
| __ cmpl(rdx, Immediate(kind));
|
| __ j(not_equal, &next);
|
| - T stub(kind);
|
| + T stub(masm->isolate(), kind);
|
| __ TailCallStub(&stub);
|
| __ bind(&next);
|
| }
|
| @@ -4530,12 +4525,14 @@ static void CreateArrayDispatchOneArgument(MacroAssembler* masm,
|
| ElementsKind initial = GetInitialFastElementsKind();
|
| ElementsKind holey_initial = GetHoleyElementsKind(initial);
|
|
|
| - ArraySingleArgumentConstructorStub stub_holey(holey_initial,
|
| + ArraySingleArgumentConstructorStub stub_holey(masm->isolate(),
|
| + holey_initial,
|
| DISABLE_ALLOCATION_SITES);
|
| __ TailCallStub(&stub_holey);
|
|
|
| __ bind(&normal_sequence);
|
| - ArraySingleArgumentConstructorStub stub(initial,
|
| + ArraySingleArgumentConstructorStub stub(masm->isolate(),
|
| + initial,
|
| DISABLE_ALLOCATION_SITES);
|
| __ TailCallStub(&stub);
|
| } else if (mode == DONT_OVERRIDE) {
|
| @@ -4565,7 +4562,7 @@ static void CreateArrayDispatchOneArgument(MacroAssembler* masm,
|
| ElementsKind kind = GetFastElementsKindFromSequenceIndex(i);
|
| __ cmpl(rdx, Immediate(kind));
|
| __ j(not_equal, &next);
|
| - ArraySingleArgumentConstructorStub stub(kind);
|
| + ArraySingleArgumentConstructorStub stub(masm->isolate(), kind);
|
| __ TailCallStub(&stub);
|
| __ bind(&next);
|
| }
|
| @@ -4584,10 +4581,10 @@ static void ArrayConstructorStubAheadOfTimeHelper(Isolate* isolate) {
|
| TERMINAL_FAST_ELEMENTS_KIND);
|
| for (int i = 0; i <= to_index; ++i) {
|
| ElementsKind kind = GetFastElementsKindFromSequenceIndex(i);
|
| - T stub(kind);
|
| + T stub(isolate, kind);
|
| stub.GetCode(isolate);
|
| if (AllocationSite::GetMode(kind) != DONT_TRACK_ALLOCATION_SITE) {
|
| - T stub1(kind, DISABLE_ALLOCATION_SITES);
|
| + T stub1(isolate, kind, DISABLE_ALLOCATION_SITES);
|
| stub1.GetCode(isolate);
|
| }
|
| }
|
| @@ -4609,11 +4606,11 @@ void InternalArrayConstructorStubBase::GenerateStubsAheadOfTime(
|
| ElementsKind kinds[2] = { FAST_ELEMENTS, FAST_HOLEY_ELEMENTS };
|
| for (int i = 0; i < 2; i++) {
|
| // For internal arrays we only need a few things
|
| - InternalArrayNoArgumentConstructorStub stubh1(kinds[i]);
|
| + InternalArrayNoArgumentConstructorStub stubh1(isolate, kinds[i]);
|
| stubh1.GetCode(isolate);
|
| - InternalArraySingleArgumentConstructorStub stubh2(kinds[i]);
|
| + InternalArraySingleArgumentConstructorStub stubh2(isolate, kinds[i]);
|
| stubh2.GetCode(isolate);
|
| - InternalArrayNArgumentsConstructorStub stubh3(kinds[i]);
|
| + InternalArrayNArgumentsConstructorStub stubh3(isolate, kinds[i]);
|
| stubh3.GetCode(isolate);
|
| }
|
| }
|
| @@ -4697,7 +4694,7 @@ void InternalArrayConstructorStub::GenerateCase(
|
|
|
| __ testp(rax, rax);
|
| __ j(not_zero, ¬_zero_case);
|
| - InternalArrayNoArgumentConstructorStub stub0(kind);
|
| + InternalArrayNoArgumentConstructorStub stub0(isolate(), kind);
|
| __ TailCallStub(&stub0);
|
|
|
| __ bind(¬_zero_case);
|
| @@ -4713,16 +4710,16 @@ void InternalArrayConstructorStub::GenerateCase(
|
| __ j(zero, &normal_sequence);
|
|
|
| InternalArraySingleArgumentConstructorStub
|
| - stub1_holey(GetHoleyElementsKind(kind));
|
| + stub1_holey(isolate(), GetHoleyElementsKind(kind));
|
| __ TailCallStub(&stub1_holey);
|
| }
|
|
|
| __ bind(&normal_sequence);
|
| - InternalArraySingleArgumentConstructorStub stub1(kind);
|
| + InternalArraySingleArgumentConstructorStub stub1(isolate(), kind);
|
| __ TailCallStub(&stub1);
|
|
|
| __ bind(¬_one_case);
|
| - InternalArrayNArgumentsConstructorStub stubN(kind);
|
| + InternalArrayNArgumentsConstructorStub stubN(isolate(), kind);
|
| __ TailCallStub(&stubN);
|
| }
|
|
|
| @@ -4838,7 +4835,7 @@ void CallApiFunctionStub::Generate(MacroAssembler* masm) {
|
| __ Push(scratch);
|
| // isolate
|
| __ Move(scratch,
|
| - ExternalReference::isolate_address(masm->isolate()));
|
| + ExternalReference::isolate_address(isolate()));
|
| __ Push(scratch);
|
| // holder
|
| __ Push(holder);
|
|
|