summaryrefslogtreecommitdiff
path: root/chromium/v8/src/mips64
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-05-24 11:40:17 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-05-24 12:42:11 +0000
commit5d87695f37678f96492b258bbab36486c59866b4 (patch)
treebe9783bbaf04fb930c4d74ca9c00b5e7954c8bc6 /chromium/v8/src/mips64
parent6c11fb357ec39bf087b8b632e2b1e375aef1b38b (diff)
downloadqtwebengine-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/OWNERS4
-rw-r--r--chromium/v8/src/mips64/assembler-mips64.cc4
-rw-r--r--chromium/v8/src/mips64/frame-constants-mips64.h3
-rw-r--r--chromium/v8/src/mips64/interface-descriptors-mips64.cc15
-rw-r--r--chromium/v8/src/mips64/macro-assembler-mips64.cc54
-rw-r--r--chromium/v8/src/mips64/macro-assembler-mips64.h10
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);