| Index: src/x64/interface-descriptors-x64.cc
|
| diff --git a/src/x64/interface-descriptors-x64.cc b/src/x64/interface-descriptors-x64.cc
|
| index 2d18ade7e4a67feccd5df8c61a0fb3ea22904e8e..d0e24dd714c26f788f50610c64d3d41a403b170c 100644
|
| --- a/src/x64/interface-descriptors-x64.cc
|
| +++ b/src/x64/interface-descriptors-x64.cc
|
| @@ -61,60 +61,62 @@ const Register InstanceofDescriptor::left() { return rax; }
|
| const Register InstanceofDescriptor::right() { return rdx; }
|
|
|
|
|
| -void FastNewClosureDescriptor::Initialize(Isolate* isolate) {
|
| +void FastNewClosureDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rbx};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void FastNewContextDescriptor::Initialize(Isolate* isolate) {
|
| +void FastNewContextDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rdi};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void ToNumberDescriptor::Initialize(Isolate* isolate) {
|
| +void ToNumberDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| // ToNumberStub invokes a function, and therefore needs a context.
|
| Register registers[] = {rsi, rax};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void NumberToStringDescriptor::Initialize(Isolate* isolate) {
|
| +void NumberToStringDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rax};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void FastCloneShallowArrayDescriptor::Initialize(Isolate* isolate) {
|
| +void FastCloneShallowArrayDescriptor::Initialize(
|
| + CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rax, rbx, rcx};
|
| Representation representations[] = {
|
| Representation::Tagged(), Representation::Tagged(), Representation::Smi(),
|
| Representation::Tagged()};
|
| - InitializeData(isolate, key(), arraysize(registers), registers,
|
| - representations);
|
| + data->Initialize(arraysize(registers), registers, representations);
|
| }
|
|
|
|
|
| -void FastCloneShallowObjectDescriptor::Initialize(Isolate* isolate) {
|
| +void FastCloneShallowObjectDescriptor::Initialize(
|
| + CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rax, rbx, rcx, rdx};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void CreateAllocationSiteDescriptor::Initialize(Isolate* isolate) {
|
| +void CreateAllocationSiteDescriptor::Initialize(
|
| + CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rbx, rdx};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void CallFunctionDescriptor::Initialize(Isolate* isolate) {
|
| +void CallFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rdi};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void CallConstructDescriptor::Initialize(Isolate* isolate) {
|
| +void CallConstructDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| // rax : number of arguments
|
| // rbx : feedback vector
|
| // rdx : (only if rbx is not the megamorphic symbol) slot in feedback
|
| @@ -123,96 +125,99 @@ void CallConstructDescriptor::Initialize(Isolate* isolate) {
|
| // TODO(turbofan): So far we don't gather type feedback and hence skip the
|
| // slot parameter, but ArrayConstructStub needs the vector to be undefined.
|
| Register registers[] = {rsi, rax, rdi, rbx};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void RegExpConstructResultDescriptor::Initialize(Isolate* isolate) {
|
| +void RegExpConstructResultDescriptor::Initialize(
|
| + CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rcx, rbx, rax};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void TransitionElementsKindDescriptor::Initialize(Isolate* isolate) {
|
| +void TransitionElementsKindDescriptor::Initialize(
|
| + CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rax, rbx};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void ArrayConstructorConstantArgCountDescriptor::Initialize(Isolate* isolate) {
|
| +void ArrayConstructorConstantArgCountDescriptor::Initialize(
|
| + CallInterfaceDescriptorData* data) {
|
| // register state
|
| // rax -- number of arguments
|
| // rdi -- function
|
| // rbx -- allocation site with elements kind
|
| Register registers[] = {rsi, rdi, rbx};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void ArrayConstructorDescriptor::Initialize(Isolate* isolate) {
|
| +void ArrayConstructorDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| // stack param count needs (constructor pointer, and single argument)
|
| Register registers[] = {rsi, rdi, rbx, rax};
|
| Representation representations[] = {
|
| Representation::Tagged(), Representation::Tagged(),
|
| Representation::Tagged(), Representation::Integer32()};
|
| - InitializeData(isolate, key(), arraysize(registers), registers,
|
| - representations);
|
| + data->Initialize(arraysize(registers), registers, representations);
|
| }
|
|
|
|
|
| void InternalArrayConstructorConstantArgCountDescriptor::Initialize(
|
| - Isolate* isolate) {
|
| + CallInterfaceDescriptorData* data) {
|
| // register state
|
| // rsi -- context
|
| // rax -- number of arguments
|
| // rdi -- constructor function
|
| Register registers[] = {rsi, rdi};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void InternalArrayConstructorDescriptor::Initialize(Isolate* isolate) {
|
| +void InternalArrayConstructorDescriptor::Initialize(
|
| + CallInterfaceDescriptorData* data) {
|
| // stack param count needs (constructor pointer, and single argument)
|
| Register registers[] = {rsi, rdi, rax};
|
| Representation representations[] = {Representation::Tagged(),
|
| Representation::Tagged(),
|
| Representation::Integer32()};
|
| - InitializeData(isolate, key(), arraysize(registers), registers,
|
| - representations);
|
| + data->Initialize(arraysize(registers), registers, representations);
|
| }
|
|
|
|
|
| -void CompareNilDescriptor::Initialize(Isolate* isolate) {
|
| +void CompareNilDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rax};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void ToBooleanDescriptor::Initialize(Isolate* isolate) {
|
| +void ToBooleanDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rax};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void BinaryOpDescriptor::Initialize(Isolate* isolate) {
|
| +void BinaryOpDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rdx, rax};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void BinaryOpWithAllocationSiteDescriptor::Initialize(Isolate* isolate) {
|
| +void BinaryOpWithAllocationSiteDescriptor::Initialize(
|
| + CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rcx, rdx, rax};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void StringAddDescriptor::Initialize(Isolate* isolate) {
|
| +void StringAddDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {rsi, rdx, rax};
|
| - InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| + data->Initialize(arraysize(registers), registers, NULL);
|
| }
|
|
|
|
|
| -void KeyedDescriptor::Initialize(Isolate* isolate) {
|
| +void KeyedDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {
|
| rsi, // context
|
| rcx, // key
|
| @@ -221,12 +226,11 @@ void KeyedDescriptor::Initialize(Isolate* isolate) {
|
| Representation::Tagged(), // context
|
| Representation::Tagged(), // key
|
| };
|
| - InitializeData(isolate, key(), arraysize(registers), registers,
|
| - representations);
|
| + data->Initialize(arraysize(registers), registers, representations);
|
| }
|
|
|
|
|
| -void NamedDescriptor::Initialize(Isolate* isolate) {
|
| +void NamedDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {
|
| rsi, // context
|
| rcx, // name
|
| @@ -235,12 +239,11 @@ void NamedDescriptor::Initialize(Isolate* isolate) {
|
| Representation::Tagged(), // context
|
| Representation::Tagged(), // name
|
| };
|
| - InitializeData(isolate, key(), arraysize(registers), registers,
|
| - representations);
|
| + data->Initialize(arraysize(registers), registers, representations);
|
| }
|
|
|
|
|
| -void CallHandlerDescriptor::Initialize(Isolate* isolate) {
|
| +void CallHandlerDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {
|
| rsi, // context
|
| rdx, // receiver
|
| @@ -249,12 +252,11 @@ void CallHandlerDescriptor::Initialize(Isolate* isolate) {
|
| Representation::Tagged(), // context
|
| Representation::Tagged(), // receiver
|
| };
|
| - InitializeData(isolate, key(), arraysize(registers), registers,
|
| - representations);
|
| + data->Initialize(arraysize(registers), registers, representations);
|
| }
|
|
|
|
|
| -void ArgumentAdaptorDescriptor::Initialize(Isolate* isolate) {
|
| +void ArgumentAdaptorDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {
|
| rsi, // context
|
| rdi, // JSFunction
|
| @@ -267,12 +269,11 @@ void ArgumentAdaptorDescriptor::Initialize(Isolate* isolate) {
|
| Representation::Integer32(), // actual number of arguments
|
| Representation::Integer32(), // expected number of arguments
|
| };
|
| - InitializeData(isolate, key(), arraysize(registers), registers,
|
| - representations);
|
| + data->Initialize(arraysize(registers), registers, representations);
|
| }
|
|
|
|
|
| -void ApiFunctionDescriptor::Initialize(Isolate* isolate) {
|
| +void ApiFunctionDescriptor::Initialize(CallInterfaceDescriptorData* data) {
|
| Register registers[] = {
|
| rsi, // context
|
| rax, // callee
|
| @@ -287,8 +288,7 @@ void ApiFunctionDescriptor::Initialize(Isolate* isolate) {
|
| Representation::Tagged(), // holder
|
| Representation::External(), // api_function_address
|
| };
|
| - InitializeData(isolate, key(), arraysize(registers), registers,
|
| - representations);
|
| + data->Initialize(arraysize(registers), registers, representations);
|
| }
|
| }
|
| } // namespace v8::internal
|
|
|