| Index: src/arm64/code-stubs-arm64.cc
|
| diff --git a/src/arm64/code-stubs-arm64.cc b/src/arm64/code-stubs-arm64.cc
|
| index 127588267d791170d0a88f56e32374f5a94026b0..4ca2beaf22fbef049755774131bcf490aae99c2f 100644
|
| --- a/src/arm64/code-stubs-arm64.cc
|
| +++ b/src/arm64/code-stubs-arm64.cc
|
| @@ -534,10 +534,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.
|
| @@ -1049,8 +1048,7 @@ void ICCompareStub::GenerateGeneric(MacroAssembler* masm) {
|
| __ JumpIfBothInstanceTypesAreNotSequentialAscii(lhs_type, rhs_type, x14,
|
| x15, &slow);
|
|
|
| - Isolate* isolate = masm->isolate();
|
| - __ IncrementCounter(isolate->counters()->string_compare_native(), 1, x10,
|
| + __ IncrementCounter(isolate()->counters()->string_compare_native(), 1, x10,
|
| x11);
|
| if (cond == eq) {
|
| StringCompareStub::GenerateFlatAsciiStringEquals(masm, lhs, rhs,
|
| @@ -1112,10 +1110,9 @@ void StoreBufferOverflowStub::Generate(MacroAssembler* masm) {
|
| }
|
|
|
| AllowExternalCallThatCantCauseGC scope(masm);
|
| - __ Mov(x0, ExternalReference::isolate_address(masm->isolate()));
|
| + __ Mov(x0, ExternalReference::isolate_address(isolate()));
|
| __ CallCFunction(
|
| - ExternalReference::store_buffer_overflow_function(masm->isolate()),
|
| - 1, 0);
|
| + ExternalReference::store_buffer_overflow_function(isolate()), 1, 0);
|
|
|
| if (save_doubles_ == kSaveFPRegs) {
|
| __ PopCPURegList(saved_fp_regs);
|
| @@ -1127,9 +1124,9 @@ void StoreBufferOverflowStub::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);
|
| }
|
|
|
| @@ -1314,7 +1311,7 @@ void MathPowStub::Generate(MacroAssembler* masm) {
|
| AllowExternalCallThatCantCauseGC scope(masm);
|
| __ Mov(saved_lr, lr);
|
| __ CallCFunction(
|
| - ExternalReference::power_double_double_function(masm->isolate()),
|
| + ExternalReference::power_double_double_function(isolate()),
|
| 0, 2);
|
| __ Mov(lr, saved_lr);
|
| __ B(&done);
|
| @@ -1397,7 +1394,7 @@ void MathPowStub::Generate(MacroAssembler* masm) {
|
| result_double);
|
| ASSERT(result_tagged.is(x0));
|
| __ IncrementCounter(
|
| - masm->isolate()->counters()->math_pow(), 1, scratch0, scratch1);
|
| + isolate()->counters()->math_pow(), 1, scratch0, scratch1);
|
| __ Ret();
|
| } else {
|
| AllowExternalCallThatCantCauseGC scope(masm);
|
| @@ -1405,12 +1402,12 @@ void MathPowStub::Generate(MacroAssembler* masm) {
|
| __ Fmov(base_double, base_double_copy);
|
| __ Scvtf(exponent_double, exponent_integer);
|
| __ CallCFunction(
|
| - ExternalReference::power_double_double_function(masm->isolate()),
|
| + ExternalReference::power_double_double_function(isolate()),
|
| 0, 2);
|
| __ Mov(lr, saved_lr);
|
| __ Bind(&done);
|
| __ IncrementCounter(
|
| - masm->isolate()->counters()->math_pow(), 1, scratch0, scratch1);
|
| + isolate()->counters()->math_pow(), 1, scratch0, scratch1);
|
| __ Ret();
|
| }
|
| }
|
| @@ -1434,17 +1431,17 @@ void CodeStub::GenerateStubsAheadOfTime(Isolate* isolate) {
|
|
|
|
|
| void StoreRegistersStateStub::GenerateAheadOfTime(Isolate* isolate) {
|
| - StoreRegistersStateStub stub1(kDontSaveFPRegs);
|
| + StoreRegistersStateStub stub1(isolate, kDontSaveFPRegs);
|
| stub1.GetCode(isolate);
|
| - StoreRegistersStateStub stub2(kSaveFPRegs);
|
| + StoreRegistersStateStub stub2(isolate, kSaveFPRegs);
|
| stub2.GetCode(isolate);
|
| }
|
|
|
|
|
| void RestoreRegistersStateStub::GenerateAheadOfTime(Isolate* isolate) {
|
| - RestoreRegistersStateStub stub1(kDontSaveFPRegs);
|
| + RestoreRegistersStateStub stub1(isolate, kDontSaveFPRegs);
|
| stub1.GetCode(isolate);
|
| - RestoreRegistersStateStub stub2(kSaveFPRegs);
|
| + RestoreRegistersStateStub stub2(isolate, kSaveFPRegs);
|
| stub2.GetCode(isolate);
|
| }
|
|
|
| @@ -1470,9 +1467,9 @@ bool CEntryStub::NeedsImmovableCode() {
|
|
|
|
|
| void CEntryStub::GenerateAheadOfTime(Isolate* isolate) {
|
| - CEntryStub stub(1, kDontSaveFPRegs);
|
| + CEntryStub stub(isolate, 1, kDontSaveFPRegs);
|
| stub.GetCode(isolate);
|
| - CEntryStub stub_fp(1, kSaveFPRegs);
|
| + CEntryStub stub_fp(isolate, 1, kSaveFPRegs);
|
| stub_fp.GetCode(isolate);
|
| }
|
|
|
| @@ -1582,12 +1579,10 @@ void CEntryStub::Generate(MacroAssembler* masm) {
|
|
|
| ASSERT(csp.Is(__ StackPointer()));
|
|
|
| - Isolate* isolate = masm->isolate();
|
| -
|
| // Prepare AAPCS64 arguments to pass to the builtin.
|
| __ Mov(x0, argc);
|
| __ Mov(x1, argv);
|
| - __ Mov(x2, ExternalReference::isolate_address(isolate));
|
| + __ Mov(x2, ExternalReference::isolate_address(isolate()));
|
|
|
| Label return_location;
|
| __ Adr(x12, &return_location);
|
| @@ -1647,14 +1642,14 @@ void CEntryStub::Generate(MacroAssembler* masm) {
|
|
|
| // Retrieve the pending exception.
|
| ExternalReference pending_exception_address(
|
| - Isolate::kPendingExceptionAddress, isolate);
|
| + Isolate::kPendingExceptionAddress, isolate());
|
| const Register& exception = result;
|
| const Register& exception_address = x11;
|
| __ Mov(exception_address, Operand(pending_exception_address));
|
| __ Ldr(exception, MemOperand(exception_address));
|
|
|
| // Clear the pending exception.
|
| - __ Mov(x10, Operand(isolate->factory()->the_hole_value()));
|
| + __ Mov(x10, Operand(isolate()->factory()->the_hole_value()));
|
| __ Str(x10, MemOperand(exception_address));
|
|
|
| // x0 exception The exception descriptor.
|
| @@ -1665,7 +1660,7 @@ void CEntryStub::Generate(MacroAssembler* masm) {
|
| // Special handling of termination exceptions, which are uncatchable by
|
| // JavaScript code.
|
| Label throw_termination_exception;
|
| - __ Cmp(exception, Operand(isolate->factory()->termination_exception()));
|
| + __ Cmp(exception, Operand(isolate()->factory()->termination_exception()));
|
| __ B(eq, &throw_termination_exception);
|
|
|
| // We didn't execute a return case, so the stack frame hasn't been updated
|
| @@ -1725,14 +1720,11 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
|
| __ Fmov(fp_zero, 0.0);
|
|
|
| // Build an entry frame (see layout below).
|
| - Isolate* isolate = masm->isolate();
|
| -
|
| - // Build an entry frame.
|
| int marker = is_construct ? StackFrame::ENTRY_CONSTRUCT : StackFrame::ENTRY;
|
| int64_t bad_frame_pointer = -1L; // Bad frame pointer to fail if it is used.
|
| __ Mov(x13, bad_frame_pointer);
|
| __ Mov(x12, Smi::FromInt(marker));
|
| - __ Mov(x11, ExternalReference(Isolate::kCEntryFPAddress, isolate));
|
| + __ Mov(x11, ExternalReference(Isolate::kCEntryFPAddress, isolate()));
|
| __ Ldr(x10, MemOperand(x11));
|
|
|
| __ Push(x13, xzr, x12, x10);
|
| @@ -1742,7 +1734,7 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
|
| // Push the JS entry frame marker. Also set js_entry_sp if this is the
|
| // outermost JS call.
|
| Label non_outermost_js, done;
|
| - ExternalReference js_entry_sp(Isolate::kJSEntrySPAddress, isolate);
|
| + ExternalReference js_entry_sp(Isolate::kJSEntrySPAddress, isolate());
|
| __ Mov(x10, ExternalReference(js_entry_sp));
|
| __ Ldr(x11, MemOperand(x10));
|
| __ Cbnz(x11, &non_outermost_js);
|
| @@ -1782,7 +1774,7 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
|
| // fp will be invalid because the PushTryHandler below sets it to 0 to
|
| // signal the existence of the JSEntry frame.
|
| __ Mov(x10, Operand(ExternalReference(Isolate::kPendingExceptionAddress,
|
| - isolate)));
|
| + isolate())));
|
| }
|
| __ Str(code_entry, MemOperand(x10));
|
| __ LoadRoot(x0, Heap::kExceptionRootIndex);
|
| @@ -1798,9 +1790,9 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
|
| // saved values before returning a failure to C.
|
|
|
| // Clear any pending exceptions.
|
| - __ Mov(x10, Operand(isolate->factory()->the_hole_value()));
|
| + __ Mov(x10, Operand(isolate()->factory()->the_hole_value()));
|
| __ Mov(x11, Operand(ExternalReference(Isolate::kPendingExceptionAddress,
|
| - isolate)));
|
| + isolate())));
|
| __ Str(x10, MemOperand(x11));
|
|
|
| // Invoke the function by calling through the JS entry trampoline builtin.
|
| @@ -1815,7 +1807,7 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
|
| // x4: argv.
|
| ExternalReference entry(is_construct ? Builtins::kJSConstructEntryTrampoline
|
| : Builtins::kJSEntryTrampoline,
|
| - isolate);
|
| + isolate());
|
| __ Mov(x10, entry);
|
|
|
| // Call the JSEntryTrampoline.
|
| @@ -1848,7 +1840,7 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
|
|
|
| // Restore the top frame descriptors from the stack.
|
| __ Pop(x10);
|
| - __ Mov(x11, ExternalReference(Isolate::kCEntryFPAddress, isolate));
|
| + __ Mov(x11, ExternalReference(Isolate::kCEntryFPAddress, isolate()));
|
| __ Str(x10, MemOperand(x11));
|
|
|
| // Reset the stack to the callee saved registers.
|
| @@ -1875,7 +1867,7 @@ void FunctionPrototypeStub::Generate(MacroAssembler* masm) {
|
| // -----------------------------------
|
| Register key = x0;
|
| receiver = x1;
|
| - __ Cmp(key, Operand(masm->isolate()->factory()->prototype_string()));
|
| + __ Cmp(key, Operand(isolate()->factory()->prototype_string()));
|
| __ B(ne, &miss);
|
| } else {
|
| ASSERT(kind() == Code::LOAD_IC);
|
| @@ -2033,7 +2025,7 @@ void InstanceofStub::Generate(MacroAssembler* masm) {
|
| __ Mov(result, res_false);
|
|
|
| // Null is not instance of anything.
|
| - __ Cmp(object_type, Operand(masm->isolate()->factory()->null_value()));
|
| + __ Cmp(object_type, Operand(isolate()->factory()->null_value()));
|
| __ B(ne, &object_not_null);
|
| __ Ret();
|
|
|
| @@ -2634,11 +2626,10 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| const int kJSRegExpOffset = 7 * kPointerSize;
|
|
|
| // 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());
|
| __ Mov(x10, address_of_regexp_stack_memory_size);
|
| __ Ldr(x10, MemOperand(x10));
|
| __ Cbz(x10, &runtime);
|
| @@ -2800,7 +2791,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| __ JumpIfSmi(code_object, &runtime);
|
|
|
| // All checks done. Now push arguments for native regexp code.
|
| - __ IncrementCounter(isolate->counters()->regexp_entry_native(), 1,
|
| + __ IncrementCounter(isolate()->counters()->regexp_entry_native(), 1,
|
| x10,
|
| x11);
|
|
|
| @@ -2816,7 +2807,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| // csp[0]: Space for the return address placed by DirectCEntryStub.
|
| // csp[8]: Argument 9, the current isolate address.
|
|
|
| - __ Mov(x10, ExternalReference::isolate_address(isolate));
|
| + __ Mov(x10, ExternalReference::isolate_address(isolate()));
|
| __ Poke(x10, kPointerSize);
|
|
|
| Register length = w11;
|
| @@ -2865,7 +2856,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| __ Add(x3, x2, Operand(w10, UXTW));
|
|
|
| // Argument 5 (x4): static offsets vector buffer.
|
| - __ Mov(x4, ExternalReference::address_of_static_offsets_vector(isolate));
|
| + __ Mov(x4, ExternalReference::address_of_static_offsets_vector(isolate()));
|
|
|
| // Argument 6 (x5): Set the number of capture registers to zero to force
|
| // global regexps to behave as non-global. This stub is not used for global
|
| @@ -2884,7 +2875,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
|
|
| // Locate the code entry and call it.
|
| __ Add(code_object, code_object, Code::kHeaderSize - kHeapObjectTag);
|
| - DirectCEntryStub stub;
|
| + DirectCEntryStub stub(isolate());
|
| stub.GenerateCall(masm, code_object);
|
|
|
| __ LeaveExitFrame(false, x10, true);
|
| @@ -2970,7 +2961,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| // Get the static offsets vector filled by the native regexp code
|
| // and fill the last match info.
|
| ExternalReference address_of_static_offsets_vector =
|
| - ExternalReference::address_of_static_offsets_vector(isolate);
|
| + ExternalReference::address_of_static_offsets_vector(isolate());
|
| __ Mov(offsets_vector_index, address_of_static_offsets_vector);
|
|
|
| Label next_capture, done;
|
| @@ -3009,10 +3000,10 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| // A stack overflow (on the backtrack stack) may have occured
|
| // in the RegExp code but no exception has been created yet.
|
| // If there is no pending exception, handle that in the runtime system.
|
| - __ Mov(x10, Operand(isolate->factory()->the_hole_value()));
|
| + __ Mov(x10, Operand(isolate()->factory()->the_hole_value()));
|
| __ Mov(x11,
|
| Operand(ExternalReference(Isolate::kPendingExceptionAddress,
|
| - isolate)));
|
| + isolate())));
|
| __ Ldr(exception_value, MemOperand(x11));
|
| __ Cmp(x10, exception_value);
|
| __ B(eq, &runtime);
|
| @@ -3031,7 +3022,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
|
| __ ThrowUncatchable(exception_value, x10, x11, x12, x13);
|
|
|
| __ Bind(&failure);
|
| - __ Mov(x0, Operand(masm->isolate()->factory()->null_value()));
|
| + __ Mov(x0, Operand(isolate()->factory()->null_value()));
|
| __ PopCPURegList(used_callee_saved_registers);
|
| // Drop the 4 arguments of the stub from the stack.
|
| __ Drop(4);
|
| @@ -3161,7 +3152,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm,
|
| // slot.
|
| {
|
| FrameScope scope(masm, StackFrame::INTERNAL);
|
| - CreateAllocationSiteStub create_stub;
|
| + CreateAllocationSiteStub create_stub(masm->isolate());
|
|
|
| // Arguments register must be smi-tagged to call out.
|
| __ SmiTag(argc);
|
| @@ -3265,8 +3256,8 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
|
| // If there is a call target cache, mark it megamorphic in the
|
| // non-function case. MegamorphicSentinel is an immortal immovable object
|
| // (megamorphic symbol) so no write barrier is needed.
|
| - ASSERT_EQ(*TypeFeedbackInfo::MegamorphicSentinel(masm->isolate()),
|
| - masm->isolate()->heap()->megamorphic_symbol());
|
| + ASSERT_EQ(*TypeFeedbackInfo::MegamorphicSentinel(isolate()),
|
| + isolate()->heap()->megamorphic_symbol());
|
| __ Add(x12, cache_cell, Operand::UntagSmiAndScale(slot,
|
| kPointerSizeLog2));
|
| __ LoadRoot(x11, Heap::kMegamorphicSymbolRootIndex);
|
| @@ -3281,7 +3272,7 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
|
| __ GetBuiltinFunction(x1, Builtins::CALL_FUNCTION_PROXY);
|
| {
|
| Handle<Code> adaptor =
|
| - masm->isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
| + isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
| __ Jump(adaptor, RelocInfo::CODE_TARGET);
|
| }
|
|
|
| @@ -3292,7 +3283,7 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
|
| __ Mov(x0, argc_); // Set up the number of arguments.
|
| __ Mov(x2, 0);
|
| __ GetBuiltinFunction(function, Builtins::CALL_NON_FUNCTION);
|
| - __ Jump(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(),
|
| + __ Jump(isolate()->builtins()->ArgumentsAdaptorTrampoline(),
|
| RelocInfo::CODE_TARGET);
|
| }
|
|
|
| @@ -3375,7 +3366,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
| __ Bind(&do_call);
|
| // Set expected number of arguments to zero (not changing x0).
|
| __ Mov(x2, 0);
|
| - __ Jump(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(),
|
| + __ Jump(isolate()->builtins()->ArgumentsAdaptorTrampoline(),
|
| RelocInfo::CODE_TARGET);
|
| }
|
|
|
| @@ -3565,9 +3556,9 @@ void ICCompareStub::GenerateNumbers(MacroAssembler* masm) {
|
| __ Ret();
|
|
|
| __ Bind(&unordered);
|
| - ICCompareStub stub(op_, CompareIC::GENERIC, CompareIC::GENERIC,
|
| + ICCompareStub stub(isolate(), op_, CompareIC::GENERIC, CompareIC::GENERIC,
|
| CompareIC::GENERIC);
|
| - __ Jump(stub.GetCode(masm->isolate()), RelocInfo::CODE_TARGET);
|
| + __ Jump(stub.GetCode(isolate()), RelocInfo::CODE_TARGET);
|
|
|
| __ Bind(&maybe_undefined1);
|
| if (Token::IsOrderedRelationalCompareOp(op_)) {
|
| @@ -3807,7 +3798,7 @@ void ICCompareStub::GenerateMiss(MacroAssembler* masm) {
|
| Register stub_entry = x11;
|
| {
|
| ExternalReference miss =
|
| - ExternalReference(IC_Utility(IC::kCompareIC_Miss), masm->isolate());
|
| + ExternalReference(IC_Utility(IC::kCompareIC_Miss), isolate());
|
|
|
| FrameScope scope(masm, StackFrame::INTERNAL);
|
| Register op = x10;
|
| @@ -4121,7 +4112,7 @@ void SubStringStub::Generate(MacroAssembler* masm) {
|
| __ CopyBytes(result_char0, substring_char0, result_length, x3, kCopyLong);
|
|
|
| __ Bind(&return_x0);
|
| - Counters* counters = masm->isolate()->counters();
|
| + Counters* counters = isolate()->counters();
|
| __ IncrementCounter(counters->sub_string_native(), 1, x3, x4);
|
| __ Drop(3);
|
| __ Ret();
|
| @@ -4268,7 +4259,7 @@ void StringCompareStub::GenerateAsciiCharsCompareLoop(
|
| void StringCompareStub::Generate(MacroAssembler* masm) {
|
| Label runtime;
|
|
|
| - Counters* counters = masm->isolate()->counters();
|
| + Counters* counters = isolate()->counters();
|
|
|
| // Stack frame on entry.
|
| // sp[0]: right string
|
| @@ -4314,12 +4305,11 @@ void BinaryOpICWithAllocationSiteStub::Generate(MacroAssembler* masm) {
|
| // -- x0 : right
|
| // -- lr : return address
|
| // -----------------------------------
|
| - Isolate* isolate = masm->isolate();
|
|
|
| // Load x2 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().
|
| - __ LoadObject(x2, handle(isolate->heap()->undefined_value()));
|
| + __ LoadObject(x2, handle(isolate()->heap()->undefined_value()));
|
|
|
| // Make sure that we actually patched the allocation site.
|
| if (FLAG_debug_code) {
|
| @@ -4331,7 +4321,7 @@ void BinaryOpICWithAllocationSiteStub::Generate(MacroAssembler* masm) {
|
|
|
| // Tail call into the stub that handles binary operations with allocation
|
| // sites.
|
| - BinaryOpWithAllocationSiteStub stub(state_);
|
| + BinaryOpWithAllocationSiteStub stub(isolate(), state_);
|
| __ TailCallStub(&stub);
|
| }
|
|
|
| @@ -4392,12 +4382,12 @@ void RecordWriteStub::InformIncrementalMarker(MacroAssembler* masm) {
|
| __ Mov(address, regs_.address());
|
| __ Mov(x0, regs_.object());
|
| __ Mov(x1, address);
|
| - __ Mov(x2, ExternalReference::isolate_address(masm->isolate()));
|
| + __ Mov(x2, ExternalReference::isolate_address(isolate()));
|
|
|
| AllowExternalCallThatCantCauseGC scope(masm);
|
| ExternalReference function =
|
| ExternalReference::incremental_marking_record_write_function(
|
| - masm->isolate());
|
| + isolate());
|
| __ CallCFunction(function, 3, 0);
|
|
|
| regs_.RestoreCallerSaveRegisters(masm, save_fp_regs_mode_);
|
| @@ -4590,8 +4580,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;
|
| __ Ldr(x1, MemOperand(fp, parameter_count_offset));
|
| @@ -4613,7 +4603,7 @@ static const unsigned int kProfileEntryHookCallSize =
|
|
|
| void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) {
|
| if (masm->isolate()->function_entry_hook() != NULL) {
|
| - ProfileEntryHookStub stub;
|
| + ProfileEntryHookStub stub(masm->isolate());
|
| Assembler::BlockConstPoolScope no_const_pools(masm);
|
| Label entry_hook_call_start;
|
| __ Bind(&entry_hook_call_start);
|
| @@ -4642,7 +4632,7 @@ void ProfileEntryHookStub::Generate(MacroAssembler* masm) {
|
|
|
| #if V8_HOST_ARCH_ARM64
|
| uintptr_t entry_hook =
|
| - reinterpret_cast<uintptr_t>(masm->isolate()->function_entry_hook());
|
| + reinterpret_cast<uintptr_t>(isolate()->function_entry_hook());
|
| __ Mov(x10, entry_hook);
|
| #else
|
| // Under the simulator we need to indirect the entry hook through a trampoline
|
| @@ -4650,9 +4640,9 @@ void ProfileEntryHookStub::Generate(MacroAssembler* masm) {
|
| ApiFunction dispatcher(FUNCTION_ADDR(EntryHookTrampoline));
|
| __ Mov(x10, Operand(ExternalReference(&dispatcher,
|
| ExternalReference::BUILTIN_CALL,
|
| - masm->isolate())));
|
| + isolate())));
|
| // It additionally takes an isolate as a third parameter
|
| - __ Mov(x2, ExternalReference::isolate_address(masm->isolate()));
|
| + __ Mov(x2, ExternalReference::isolate_address(isolate()));
|
| #endif
|
|
|
| // The caller's return address is above the saved temporaries.
|
| @@ -4697,7 +4687,7 @@ void DirectCEntryStub::GenerateCall(MacroAssembler* masm,
|
| ASSERT(csp.Is(__ StackPointer()));
|
|
|
| intptr_t code =
|
| - reinterpret_cast<intptr_t>(GetCode(masm->isolate()).location());
|
| + reinterpret_cast<intptr_t>(GetCode(isolate()).location());
|
| __ Mov(lr, Operand(code, RelocInfo::CODE_TARGET));
|
| __ Mov(x10, target);
|
| // Branch to the stub.
|
| @@ -4776,7 +4766,7 @@ void NameDictionaryLookupStub::GeneratePositiveLookup(
|
| }
|
|
|
| Label not_found;
|
| - NameDictionaryLookupStub stub(POSITIVE_LOOKUP);
|
| + NameDictionaryLookupStub stub(masm->isolate(), POSITIVE_LOOKUP);
|
| __ CallStub(&stub);
|
| __ Cbz(x0, ¬_found);
|
| __ Mov(scratch2, x2); // Move entry index into scratch2.
|
| @@ -4847,7 +4837,7 @@ void NameDictionaryLookupStub::GenerateNegativeLookup(MacroAssembler* masm,
|
|
|
| __ Ldr(x0, FieldMemOperand(receiver, JSObject::kPropertiesOffset));
|
| __ Mov(x1, Operand(name));
|
| - NameDictionaryLookupStub stub(NEGATIVE_LOOKUP);
|
| + NameDictionaryLookupStub stub(masm->isolate(), NEGATIVE_LOOKUP);
|
| __ CallStub(&stub);
|
| // Move stub return value to scratch0. Note that scratch0 is not included in
|
| // spill_list and won't be clobbered by PopCPURegList.
|
| @@ -4950,7 +4940,7 @@ static void CreateArrayDispatch(MacroAssembler* masm,
|
| AllocationSiteOverrideMode mode) {
|
| ASM_LOCATION("CreateArrayDispatch");
|
| if (mode == DISABLE_ALLOCATION_SITES) {
|
| - T stub(GetInitialFastElementsKind(), mode);
|
| + T stub(masm->isolate(), GetInitialFastElementsKind(), mode);
|
| __ TailCallStub(&stub);
|
|
|
| } else if (mode == DONT_OVERRIDE) {
|
| @@ -4963,7 +4953,7 @@ static void CreateArrayDispatch(MacroAssembler* masm,
|
| // TODO(jbramley): Is this the best way to handle this? Can we make the
|
| // tail calls conditional, rather than hopping over each one?
|
| __ CompareAndBranch(kind, candidate_kind, ne, &next);
|
| - T stub(candidate_kind);
|
| + T stub(masm->isolate(), candidate_kind);
|
| __ TailCallStub(&stub);
|
| __ Bind(&next);
|
| }
|
| @@ -5013,12 +5003,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) {
|
| @@ -5050,7 +5042,7 @@ static void CreateArrayDispatchOneArgument(MacroAssembler* masm,
|
| Label next;
|
| ElementsKind candidate_kind = GetFastElementsKindFromSequenceIndex(i);
|
| __ CompareAndBranch(kind, candidate_kind, ne, &next);
|
| - ArraySingleArgumentConstructorStub stub(candidate_kind);
|
| + ArraySingleArgumentConstructorStub stub(masm->isolate(), candidate_kind);
|
| __ TailCallStub(&stub);
|
| __ Bind(&next);
|
| }
|
| @@ -5069,10 +5061,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);
|
| }
|
| }
|
| @@ -5094,11 +5086,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);
|
| }
|
| }
|
| @@ -5202,22 +5194,22 @@ void InternalArrayConstructorStub::GenerateCase(
|
| __ Cbz(x10, &packed_case);
|
|
|
| InternalArraySingleArgumentConstructorStub
|
| - stub1_holey(GetHoleyElementsKind(kind));
|
| + stub1_holey(isolate(), GetHoleyElementsKind(kind));
|
| __ TailCallStub(&stub1_holey);
|
|
|
| __ Bind(&packed_case);
|
| }
|
| - InternalArraySingleArgumentConstructorStub stub1(kind);
|
| + InternalArraySingleArgumentConstructorStub stub1(isolate(), kind);
|
| __ TailCallStub(&stub1);
|
|
|
| __ Bind(&zero_case);
|
| // No arguments.
|
| - InternalArrayNoArgumentConstructorStub stub0(kind);
|
| + InternalArrayNoArgumentConstructorStub stub0(isolate(), kind);
|
| __ TailCallStub(&stub0);
|
|
|
| __ Bind(&n_case);
|
| // N arguments.
|
| - InternalArrayNArgumentsConstructorStub stubN(kind);
|
| + InternalArrayNArgumentsConstructorStub stubN(isolate(), kind);
|
| __ TailCallStub(&stubN);
|
| }
|
|
|
| @@ -5229,8 +5221,6 @@ void InternalArrayConstructorStub::Generate(MacroAssembler* masm) {
|
| // -- sp[0] : return address
|
| // -- sp[4] : last argument
|
| // -----------------------------------
|
| - Handle<Object> undefined_sentinel(
|
| - masm->isolate()->heap()->undefined_value(), masm->isolate());
|
|
|
| Register constructor = x1;
|
|
|
| @@ -5309,8 +5299,6 @@ void CallApiFunctionStub::Generate(MacroAssembler* masm) {
|
| STATIC_ASSERT(FCA::kHolderIndex == 0);
|
| STATIC_ASSERT(FCA::kArgsLength == 7);
|
|
|
| - Isolate* isolate = masm->isolate();
|
| -
|
| // FunctionCallbackArguments: context, callee and call data.
|
| __ Push(context, callee, call_data);
|
|
|
| @@ -5321,7 +5309,7 @@ void CallApiFunctionStub::Generate(MacroAssembler* masm) {
|
| __ LoadRoot(call_data, Heap::kUndefinedValueRootIndex);
|
| }
|
| Register isolate_reg = x5;
|
| - __ Mov(isolate_reg, ExternalReference::isolate_address(isolate));
|
| + __ Mov(isolate_reg, ExternalReference::isolate_address(isolate()));
|
|
|
| // FunctionCallbackArguments:
|
| // return value, return value default, isolate, holder.
|
| @@ -5359,7 +5347,7 @@ void CallApiFunctionStub::Generate(MacroAssembler* masm) {
|
| ExternalReference::Type thunk_type = ExternalReference::PROFILING_API_CALL;
|
| ApiFunction thunk_fun(thunk_address);
|
| ExternalReference thunk_ref = ExternalReference(&thunk_fun, thunk_type,
|
| - masm->isolate());
|
| + isolate());
|
|
|
| AllowExternalCallThatCantCauseGC scope(masm);
|
| MemOperand context_restore_operand(
|
| @@ -5417,7 +5405,7 @@ void CallApiGetterStub::Generate(MacroAssembler* masm) {
|
| ExternalReference::PROFILING_GETTER_CALL;
|
| ApiFunction thunk_fun(thunk_address);
|
| ExternalReference thunk_ref = ExternalReference(&thunk_fun, thunk_type,
|
| - masm->isolate());
|
| + isolate());
|
|
|
| const int spill_offset = 1 + kApiStackSpace;
|
| __ CallApiFunctionAndReturn(api_function_address,
|
|
|