diff options
Diffstat (limited to 'src/mips64/interface-descriptors-mips64.cc')
-rw-r--r-- | src/mips64/interface-descriptors-mips64.cc | 65 |
1 files changed, 25 insertions, 40 deletions
diff --git a/src/mips64/interface-descriptors-mips64.cc b/src/mips64/interface-descriptors-mips64.cc index c6a917f5..5ce2bb0a 100644 --- a/src/mips64/interface-descriptors-mips64.cc +++ b/src/mips64/interface-descriptors-mips64.cc @@ -64,37 +64,10 @@ const Register GrowArrayElementsDescriptor::KeyRegister() { return a3; } void FastNewClosureDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { - Register registers[] = {a2}; + Register registers[] = {a1, a2, a3}; data->InitializePlatformSpecific(arraysize(registers), registers, NULL); } -void FastNewObjectDescriptor::InitializePlatformSpecific( - CallInterfaceDescriptorData* data) { - Register registers[] = {a1, a3}; - data->InitializePlatformSpecific(arraysize(registers), registers, NULL); -} - -void FastNewRestParameterDescriptor::InitializePlatformSpecific( - CallInterfaceDescriptorData* data) { - Register registers[] = {a1}; - data->InitializePlatformSpecific(arraysize(registers), registers, NULL); -} - - -void FastNewSloppyArgumentsDescriptor::InitializePlatformSpecific( - CallInterfaceDescriptorData* data) { - Register registers[] = {a1}; - data->InitializePlatformSpecific(arraysize(registers), registers, NULL); -} - - -void FastNewStrictArgumentsDescriptor::InitializePlatformSpecific( - CallInterfaceDescriptorData* data) { - Register registers[] = {a1}; - data->InitializePlatformSpecific(arraysize(registers), registers, NULL); -} - - // static const Register TypeConversionDescriptor::ArgumentRegister() { return a0; } @@ -139,15 +112,13 @@ void CreateWeakCellDescriptor::InitializePlatformSpecific( data->InitializePlatformSpecific(arraysize(registers), registers); } - -void CallFunctionWithFeedbackDescriptor::InitializePlatformSpecific( +void CallICTrampolineDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { - Register registers[] = {a1, a3}; + Register registers[] = {a1, a0, a3}; data->InitializePlatformSpecific(arraysize(registers), registers); } - -void CallFunctionWithFeedbackAndVectorDescriptor::InitializePlatformSpecific( +void CallICDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { Register registers[] = {a1, a0, a3, a2}; data->InitializePlatformSpecific(arraysize(registers), registers); @@ -183,6 +154,13 @@ void CallTrampolineDescriptor::InitializePlatformSpecific( data->InitializePlatformSpecific(arraysize(registers), registers); } +void CallForwardVarargsDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + // a1: the target to call + // a2: start index (to support rest parameters) + Register registers[] = {a1, a2}; + data->InitializePlatformSpecific(arraysize(registers), registers); +} void ConstructStubDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { @@ -218,13 +196,12 @@ void AllocateHeapNumberDescriptor::InitializePlatformSpecific( data->InitializePlatformSpecific(0, nullptr, nullptr); } -#define SIMD128_ALLOC_DESC(TYPE, Type, type, lane_count, lane_type) \ - void Allocate##Type##Descriptor::InitializePlatformSpecific( \ - CallInterfaceDescriptorData* data) { \ - data->InitializePlatformSpecific(0, nullptr, nullptr); \ - } -SIMD128_TYPES(SIMD128_ALLOC_DESC) -#undef SIMD128_ALLOC_DESC +void ArrayConstructorDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + // kTarget, kNewTarget, kActualArgumentsCount, kAllocationSite + Register registers[] = {a1, a3, a0, a2}; + data->InitializePlatformSpecific(arraysize(registers), registers, NULL); +} void ArrayNoArgumentConstructorDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { @@ -413,6 +390,14 @@ void ResumeGeneratorDescriptor::InitializePlatformSpecific( data->InitializePlatformSpecific(arraysize(registers), registers); } +void FrameDropperTrampolineDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + Register registers[] = { + a1, // loaded new FP + }; + data->InitializePlatformSpecific(arraysize(registers), registers); +} + } // namespace internal } // namespace v8 |