diff options
author | Michaël Zasso <targos@protonmail.com> | 2017-03-21 10:16:54 +0100 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2017-03-25 09:44:10 +0100 |
commit | c459d8ea5d402c702948c860d9497b2230ff7e8a (patch) | |
tree | 56c282fc4d40e5cb613b47cf7be3ea0526ed5b6f /deps/v8/src/interface-descriptors.cc | |
parent | e0bc5a7361b1d29c3ed034155fd779ce6f44fb13 (diff) | |
download | android-node-v8-c459d8ea5d402c702948c860d9497b2230ff7e8a.tar.gz android-node-v8-c459d8ea5d402c702948c860d9497b2230ff7e8a.tar.bz2 android-node-v8-c459d8ea5d402c702948c860d9497b2230ff7e8a.zip |
deps: update V8 to 5.7.492.69
PR-URL: https://github.com/nodejs/node/pull/11752
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Diffstat (limited to 'deps/v8/src/interface-descriptors.cc')
-rw-r--r-- | deps/v8/src/interface-descriptors.cc | 110 |
1 files changed, 100 insertions, 10 deletions
diff --git a/deps/v8/src/interface-descriptors.cc b/deps/v8/src/interface-descriptors.cc index d14b1a1011..26b6422f6b 100644 --- a/deps/v8/src/interface-descriptors.cc +++ b/deps/v8/src/interface-descriptors.cc @@ -74,6 +74,20 @@ void FastNewFunctionContextDescriptor::InitializePlatformSpecific( data->InitializePlatformSpecific(arraysize(registers), registers); } +void FastNewObjectDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + Register registers[] = {TargetRegister(), NewTargetRegister()}; + data->InitializePlatformSpecific(arraysize(registers), registers); +} + +const Register FastNewObjectDescriptor::TargetRegister() { + return kJSFunctionRegister; +} + +const Register FastNewObjectDescriptor::NewTargetRegister() { + return kJavaScriptCallNewTargetRegister; +} + void LoadDescriptor::InitializePlatformIndependent( CallInterfaceDescriptorData* data) { // kReceiver, kName, kSlot @@ -90,24 +104,41 @@ void LoadDescriptor::InitializePlatformSpecific( data->InitializePlatformSpecific(arraysize(registers), registers); } +void LoadFieldDescriptor::InitializePlatformIndependent( + CallInterfaceDescriptorData* data) { + // kReceiver, kSmiHandler + MachineType machine_types[] = {MachineType::AnyTagged(), + MachineType::AnyTagged()}; + data->InitializePlatformIndependent(arraysize(machine_types), 0, + machine_types); +} + +void LoadFieldDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + Register registers[] = {ReceiverRegister(), SmiHandlerRegister()}; + data->InitializePlatformSpecific(arraysize(registers), registers); +} + void LoadGlobalDescriptor::InitializePlatformIndependent( CallInterfaceDescriptorData* data) { - // kSlot - MachineType machine_types[] = {MachineType::TaggedSigned()}; + // kName, kSlot + MachineType machine_types[] = {MachineType::AnyTagged(), + MachineType::TaggedSigned()}; data->InitializePlatformIndependent(arraysize(machine_types), 0, machine_types); } void LoadGlobalDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { - Register registers[] = {LoadWithVectorDescriptor::SlotRegister()}; + Register registers[] = {NameRegister(), SlotRegister()}; data->InitializePlatformSpecific(arraysize(registers), registers); } void LoadGlobalWithVectorDescriptor::InitializePlatformIndependent( CallInterfaceDescriptorData* data) { - // kSlot, kVector - MachineType machine_types[] = {MachineType::TaggedSigned(), + // kName, kSlot, kVector + MachineType machine_types[] = {MachineType::AnyTagged(), + MachineType::TaggedSigned(), MachineType::AnyTagged()}; data->InitializePlatformIndependent(arraysize(machine_types), 0, machine_types); @@ -115,8 +146,7 @@ void LoadGlobalWithVectorDescriptor::InitializePlatformIndependent( void LoadGlobalWithVectorDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { - Register registers[] = {LoadWithVectorDescriptor::SlotRegister(), - LoadWithVectorDescriptor::VectorRegister()}; + Register registers[] = {NameRegister(), SlotRegister(), VectorRegister()}; data->InitializePlatformSpecific(arraysize(registers), registers); } @@ -183,6 +213,35 @@ void StoreNamedTransitionDescriptor::InitializePlatformSpecific( data->InitializePlatformSpecific(len, registers); } +void StringCharAtDescriptor::InitializePlatformIndependent( + CallInterfaceDescriptorData* data) { + // kReceiver, kPosition + MachineType machine_types[] = {MachineType::AnyTagged(), + MachineType::IntPtr()}; + data->InitializePlatformIndependent(arraysize(machine_types), 0, + machine_types); +} + +void StringCharAtDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + DefaultInitializePlatformSpecific(data, kParameterCount); +} + +void StringCharCodeAtDescriptor::InitializePlatformIndependent( + CallInterfaceDescriptorData* data) { + // kReceiver, kPosition + // TODO(turbofan): Allow builtins to return untagged values. + MachineType machine_types[] = {MachineType::AnyTagged(), + MachineType::IntPtr()}; + data->InitializePlatformIndependent(arraysize(machine_types), 0, + machine_types); +} + +void StringCharCodeAtDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + DefaultInitializePlatformSpecific(data, kParameterCount); +} + void StringCompareDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { Register registers[] = {LeftRegister(), RightRegister()}; @@ -207,6 +266,19 @@ void MathPowIntegerDescriptor::InitializePlatformSpecific( data->InitializePlatformSpecific(arraysize(registers), registers); } +const Register LoadFieldDescriptor::ReceiverRegister() { + // Reuse the register from the LoadDescriptor, since given the + // LoadFieldDescriptor's usage, it doesn't matter exactly which registers are + // used to pass parameters in. + return LoadDescriptor::ReceiverRegister(); +} +const Register LoadFieldDescriptor::SmiHandlerRegister() { + // Reuse the register from the LoadDescriptor, since given the + // LoadFieldDescriptor's usage, it doesn't matter exactly which registers are + // used to pass parameters in. + return LoadDescriptor::NameRegister(); +} + void LoadWithVectorDescriptor::InitializePlatformIndependent( CallInterfaceDescriptorData* data) { // kReceiver, kName, kSlot, kVector @@ -293,6 +365,18 @@ void GrowArrayElementsDescriptor::InitializePlatformSpecific( data->InitializePlatformSpecific(arraysize(registers), registers); } +void NewArgumentsElementsDescriptor::InitializePlatformIndependent( + CallInterfaceDescriptorData* data) { + MachineType const kMachineTypes[] = {MachineType::IntPtr()}; + data->InitializePlatformIndependent(arraysize(kMachineTypes), 0, + kMachineTypes); +} + +void NewArgumentsElementsDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + DefaultInitializePlatformSpecific(data, 1); +} + void VarArgFunctionDescriptor::InitializePlatformIndependent( CallInterfaceDescriptorData* data) { // kActualArgumentsCount @@ -389,15 +473,17 @@ void CallFunctionWithFeedbackAndVectorDescriptor::InitializePlatformIndependent( void BuiltinDescriptor::InitializePlatformIndependent( CallInterfaceDescriptorData* data) { - MachineType machine_types[] = {MachineType::AnyTagged(), - MachineType::Int32()}; + // kTarget, kNewTarget, kArgumentsCount + MachineType machine_types[] = { + MachineType::AnyTagged(), MachineType::AnyTagged(), MachineType::Int32()}; data->InitializePlatformIndependent(arraysize(machine_types), 0, machine_types); } void BuiltinDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { - Register registers[] = {NewTargetRegister(), ArgumentsCountRegister()}; + Register registers[] = {TargetRegister(), NewTargetRegister(), + ArgumentsCountRegister()}; data->InitializePlatformSpecific(arraysize(registers), registers); } @@ -408,6 +494,10 @@ const Register BuiltinDescriptor::NewTargetRegister() { return kJavaScriptCallNewTargetRegister; } +const Register BuiltinDescriptor::TargetRegister() { + return kJSFunctionRegister; +} + void ArrayNoArgumentConstructorDescriptor::InitializePlatformIndependent( CallInterfaceDescriptorData* data) { // kFunction, kAllocationSite, kActualArgumentsCount, kFunctionParameter |