diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-05-24 11:40:17 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-05-24 12:42:11 +0000 |
commit | 5d87695f37678f96492b258bbab36486c59866b4 (patch) | |
tree | be9783bbaf04fb930c4d74ca9c00b5e7954c8bc6 /chromium/v8/src/mips64 | |
parent | 6c11fb357ec39bf087b8b632e2b1e375aef1b38b (diff) | |
download | qtwebengine-chromium-5d87695f37678f96492b258bbab36486c59866b4.tar.gz |
BASELINE: Update Chromium to 75.0.3770.56
Change-Id: I86d2007fd27a45d5797eee06f4c9369b8b50ac4f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/v8/src/mips64')
-rw-r--r-- | chromium/v8/src/mips64/OWNERS | 4 | ||||
-rw-r--r-- | chromium/v8/src/mips64/assembler-mips64.cc | 4 | ||||
-rw-r--r-- | chromium/v8/src/mips64/frame-constants-mips64.h | 3 | ||||
-rw-r--r-- | chromium/v8/src/mips64/interface-descriptors-mips64.cc | 15 | ||||
-rw-r--r-- | chromium/v8/src/mips64/macro-assembler-mips64.cc | 54 | ||||
-rw-r--r-- | chromium/v8/src/mips64/macro-assembler-mips64.h | 10 |
6 files changed, 58 insertions, 32 deletions
diff --git a/chromium/v8/src/mips64/OWNERS b/chromium/v8/src/mips64/OWNERS index b455d9ef29d..cab3679d656 100644 --- a/chromium/v8/src/mips64/OWNERS +++ b/chromium/v8/src/mips64/OWNERS @@ -1,3 +1 @@ -arikalo@wavecomp.com -prudic@wavecomp.com -skovacevic@wavecomp.com +xwafish@gmail.com diff --git a/chromium/v8/src/mips64/assembler-mips64.cc b/chromium/v8/src/mips64/assembler-mips64.cc index 902f0e0e577..3518b2c657b 100644 --- a/chromium/v8/src/mips64/assembler-mips64.cc +++ b/chromium/v8/src/mips64/assembler-mips64.cc @@ -227,8 +227,8 @@ void Assembler::AllocateAndInstallRequestedHeapObjects(Isolate* isolate) { Handle<HeapObject> object; switch (request.kind()) { case HeapObjectRequest::kHeapNumber: - object = - isolate->factory()->NewHeapNumber(request.heap_number(), TENURED); + object = isolate->factory()->NewHeapNumber(request.heap_number(), + AllocationType::kOld); break; case HeapObjectRequest::kStringConstant: const StringConstantBase* str = request.string(); diff --git a/chromium/v8/src/mips64/frame-constants-mips64.h b/chromium/v8/src/mips64/frame-constants-mips64.h index 731eb7c99ea..99afed0ffaa 100644 --- a/chromium/v8/src/mips64/frame-constants-mips64.h +++ b/chromium/v8/src/mips64/frame-constants-mips64.h @@ -22,8 +22,7 @@ class EntryFrameConstants : public AllStatic { class ExitFrameConstants : public TypedFrameConstants { public: static constexpr int kSPOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(0); - static constexpr int kCodeOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(1); - DEFINE_TYPED_FRAME_SIZES(2); + DEFINE_TYPED_FRAME_SIZES(1); // The caller fields are below the frame pointer on the stack. static constexpr int kCallerFPOffset = +0 * kPointerSize; diff --git a/chromium/v8/src/mips64/interface-descriptors-mips64.cc b/chromium/v8/src/mips64/interface-descriptors-mips64.cc index fe0fa095ab2..851d1d32cc2 100644 --- a/chromium/v8/src/mips64/interface-descriptors-mips64.cc +++ b/chromium/v8/src/mips64/interface-descriptors-mips64.cc @@ -61,6 +61,18 @@ void RecordWriteDescriptor::InitializePlatformSpecific( data->InitializePlatformSpecific(kParameterCount, default_stub_registers); } +void EphemeronKeyBarrierDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + const Register default_stub_registers[] = {a0, a1, a2, a3, kReturnRegister0}; + + data->RestrictAllocatableRegisters(default_stub_registers, + arraysize(default_stub_registers)); + + CHECK_LE(static_cast<size_t>(kParameterCount), + arraysize(default_stub_registers)); + data->InitializePlatformSpecific(kParameterCount, default_stub_registers); +} + const Register FastNewFunctionContextDescriptor::ScopeInfoRegister() { return a1; } @@ -239,9 +251,10 @@ void ArgumentsAdaptorDescriptor::InitializePlatformSpecific( void ApiCallbackDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { Register registers[] = { - JavaScriptFrame::context_register(), // kTargetContext a1, // kApiFunctionAddress a2, // kArgc + a3, // kCallData + a0, // kHolder }; data->InitializePlatformSpecific(arraysize(registers), registers); } diff --git a/chromium/v8/src/mips64/macro-assembler-mips64.cc b/chromium/v8/src/mips64/macro-assembler-mips64.cc index 98890d441e6..f358dd811ab 100644 --- a/chromium/v8/src/mips64/macro-assembler-mips64.cc +++ b/chromium/v8/src/mips64/macro-assembler-mips64.cc @@ -249,6 +249,32 @@ void TurboAssembler::RestoreRegisters(RegList registers) { MultiPop(regs); } +void TurboAssembler::CallEphemeronKeyBarrier(Register object, Register address, + SaveFPRegsMode fp_mode) { + EphemeronKeyBarrierDescriptor descriptor; + RegList registers = descriptor.allocatable_registers(); + + SaveRegisters(registers); + + Register object_parameter( + descriptor.GetRegisterParameter(EphemeronKeyBarrierDescriptor::kObject)); + Register slot_parameter(descriptor.GetRegisterParameter( + EphemeronKeyBarrierDescriptor::kSlotAddress)); + Register fp_mode_parameter( + descriptor.GetRegisterParameter(EphemeronKeyBarrierDescriptor::kFPMode)); + + Push(object); + Push(address); + + Pop(slot_parameter); + Pop(object_parameter); + + Move(fp_mode_parameter, Smi::FromEnum(fp_mode)); + Call(isolate()->builtins()->builtin_handle(Builtins::kEphemeronKeyBarrier), + RelocInfo::CODE_TARGET); + RestoreRegisters(registers); +} + void TurboAssembler::CallRecordWriteStub( Register object, Register address, RememberedSetAction remembered_set_action, SaveFPRegsMode fp_mode) { @@ -359,15 +385,6 @@ void MacroAssembler::RecordWrite(Register object, Register address, bind(&done); - { - // Count number of write barriers in generated code. - UseScratchRegisterScope temps(this); - Register scratch = temps.Acquire(); - isolate()->counters()->write_barriers_static()->Increment(); - IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1, - scratch, value); - } - // Clobber clobbered registers when running with the debug-code flag // turned on to provoke errors. if (emit_debug_code()) { @@ -5025,6 +5042,9 @@ void MacroAssembler::IncrementCounter(StatsCounter* counter, int value, Register scratch1, Register scratch2) { DCHECK_GT(value, 0); if (FLAG_native_code_counters && counter->Enabled()) { + // This operation has to be exactly 32-bit wide in case the external + // reference table redirects the counter to a uint32_t dummy_stats_counter_ + // field. li(scratch2, ExternalReference::Create(counter)); Lw(scratch1, MemOperand(scratch2)); Addu(scratch1, scratch1, Operand(value)); @@ -5037,6 +5057,9 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value, Register scratch1, Register scratch2) { DCHECK_GT(value, 0); if (FLAG_native_code_counters && counter->Enabled()) { + // This operation has to be exactly 32-bit wide in case the external + // reference table redirects the counter to a uint32_t dummy_stats_counter_ + // field. li(scratch2, ExternalReference::Create(counter)); Lw(scratch1, MemOperand(scratch2)); Subu(scratch1, scratch1, Operand(value)); @@ -5168,19 +5191,18 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space, // [fp + 0 (==kCallerFPOffset)] - saved old fp // [fp - 1 StackFrame::EXIT Smi // [fp - 2 (==kSPOffset)] - sp of the called function - // [fp - 3 (==kCodeOffset)] - CodeObject // fp - (2 + stack_space + alignment) == sp == [fp - kSPOffset] - top of the // new stack (will contain saved ra) - // Save registers and reserve room for saved entry sp and code object. + // Save registers and reserve room for saved entry sp. daddiu(sp, sp, -2 * kPointerSize - ExitFrameConstants::kFixedFrameSizeFromFp); - Sd(ra, MemOperand(sp, 4 * kPointerSize)); - Sd(fp, MemOperand(sp, 3 * kPointerSize)); + Sd(ra, MemOperand(sp, 3 * kPointerSize)); + Sd(fp, MemOperand(sp, 2 * kPointerSize)); { UseScratchRegisterScope temps(this); Register scratch = temps.Acquire(); li(scratch, Operand(StackFrame::TypeToMarker(frame_type))); - Sd(scratch, MemOperand(sp, 2 * kPointerSize)); + Sd(scratch, MemOperand(sp, 1 * kPointerSize)); } // Set up new frame pointer. daddiu(fp, sp, ExitFrameConstants::kFixedFrameSizeFromFp); @@ -5191,10 +5213,6 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space, { BlockTrampolinePoolScope block_trampoline_pool(this); - // Accessed from ExitFrame::code_slot. - li(t8, CodeObject(), CONSTANT_SIZE); - Sd(t8, MemOperand(fp, ExitFrameConstants::kCodeOffset)); - // Save the frame pointer and the context in top. li(t8, ExternalReference::Create(IsolateAddressId::kCEntryFPAddress, isolate())); diff --git a/chromium/v8/src/mips64/macro-assembler-mips64.h b/chromium/v8/src/mips64/macro-assembler-mips64.h index cc68ac4ea84..a6b5283c58e 100644 --- a/chromium/v8/src/mips64/macro-assembler-mips64.h +++ b/chromium/v8/src/mips64/macro-assembler-mips64.h @@ -113,9 +113,7 @@ inline MemOperand CFunctionArgumentOperand(int index) { class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { public: - template <typename... Args> - explicit TurboAssembler(Args&&... args) - : TurboAssemblerBase(std::forward<Args>(args)...) {} + using TurboAssemblerBase::TurboAssemblerBase; // Activation support. void EnterFrame(StackFrame::Type type); @@ -358,6 +356,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { void CallRecordWriteStub(Register object, Register address, RememberedSetAction remembered_set_action, SaveFPRegsMode fp_mode, Address wasm_target); + void CallEphemeronKeyBarrier(Register object, Register address, + SaveFPRegsMode fp_mode); // Push multiple registers on the stack. // Registers are saved in numerical order, with higher numbered registers @@ -912,9 +912,7 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // MacroAssembler implements a collection of frequently used macros. class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler { public: - template <typename... Args> - explicit MacroAssembler(Args&&... args) - : TurboAssembler(std::forward<Args>(args)...) {} + using TurboAssembler::TurboAssembler; bool IsNear(Label* L, Condition cond, int rs_reg); |