MIPS: Cleanup CallInterfaceDescriptor.

Port r22014 (234866c)

Original commit message:
Make CallInterfaceDescriptor work like CodeStubInterfaceDescriptor, owning it's
register and representation arrays. This also eliminates a host of TSAN warnings
for static arrays.

This CL depends on https://codereview.chromium.org/352583002 landing first
(a conceptual dependency at least).

BUG=
R=palfia@homejinni.com

Review URL: https://codereview.chromium.org/356773003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22023 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 70891ddf
...@@ -306,82 +306,72 @@ void CallDescriptors::InitializeForIsolate(Isolate* isolate) { ...@@ -306,82 +306,72 @@ void CallDescriptors::InitializeForIsolate(Isolate* isolate) {
{ {
CallInterfaceDescriptor* descriptor = CallInterfaceDescriptor* descriptor =
isolate->call_descriptor(Isolate::ArgumentAdaptorCall); isolate->call_descriptor(Isolate::ArgumentAdaptorCall);
static Register registers[] = { a1, // JSFunction Register registers[] = { a1, // JSFunction
cp, // context cp, // context
a0, // actual number of arguments a0, // actual number of arguments
a2, // expected number of arguments a2, // expected number of arguments
}; };
static Representation representations[] = { Representation representations[] = {
Representation::Tagged(), // JSFunction Representation::Tagged(), // JSFunction
Representation::Tagged(), // context Representation::Tagged(), // context
Representation::Integer32(), // actual number of arguments Representation::Integer32(), // actual number of arguments
Representation::Integer32(), // expected number of arguments Representation::Integer32(), // expected number of arguments
}; };
descriptor->register_param_count_ = 4; descriptor->Initialize(ARRAY_SIZE(registers), registers, representations);
descriptor->register_params_ = registers;
descriptor->param_representations_ = representations;
} }
{ {
CallInterfaceDescriptor* descriptor = CallInterfaceDescriptor* descriptor =
isolate->call_descriptor(Isolate::KeyedCall); isolate->call_descriptor(Isolate::KeyedCall);
static Register registers[] = { cp, // context Register registers[] = { cp, // context
a2, // key a2, // key
}; };
static Representation representations[] = { Representation representations[] = {
Representation::Tagged(), // context Representation::Tagged(), // context
Representation::Tagged(), // key Representation::Tagged(), // key
}; };
descriptor->register_param_count_ = 2; descriptor->Initialize(ARRAY_SIZE(registers), registers, representations);
descriptor->register_params_ = registers;
descriptor->param_representations_ = representations;
} }
{ {
CallInterfaceDescriptor* descriptor = CallInterfaceDescriptor* descriptor =
isolate->call_descriptor(Isolate::NamedCall); isolate->call_descriptor(Isolate::NamedCall);
static Register registers[] = { cp, // context Register registers[] = { cp, // context
a2, // name a2, // name
}; };
static Representation representations[] = { Representation representations[] = {
Representation::Tagged(), // context Representation::Tagged(), // context
Representation::Tagged(), // name Representation::Tagged(), // name
}; };
descriptor->register_param_count_ = 2; descriptor->Initialize(ARRAY_SIZE(registers), registers, representations);
descriptor->register_params_ = registers;
descriptor->param_representations_ = representations;
} }
{ {
CallInterfaceDescriptor* descriptor = CallInterfaceDescriptor* descriptor =
isolate->call_descriptor(Isolate::CallHandler); isolate->call_descriptor(Isolate::CallHandler);
static Register registers[] = { cp, // context Register registers[] = { cp, // context
a0, // receiver a0, // receiver
}; };
static Representation representations[] = { Representation representations[] = {
Representation::Tagged(), // context Representation::Tagged(), // context
Representation::Tagged(), // receiver Representation::Tagged(), // receiver
}; };
descriptor->register_param_count_ = 2; descriptor->Initialize(ARRAY_SIZE(registers), registers, representations);
descriptor->register_params_ = registers;
descriptor->param_representations_ = representations;
} }
{ {
CallInterfaceDescriptor* descriptor = CallInterfaceDescriptor* descriptor =
isolate->call_descriptor(Isolate::ApiFunctionCall); isolate->call_descriptor(Isolate::ApiFunctionCall);
static Register registers[] = { a0, // callee Register registers[] = { a0, // callee
t0, // call_data t0, // call_data
a2, // holder a2, // holder
a1, // api_function_address a1, // api_function_address
cp, // context cp, // context
}; };
static Representation representations[] = { Representation representations[] = {
Representation::Tagged(), // callee Representation::Tagged(), // callee
Representation::Tagged(), // call_data Representation::Tagged(), // call_data
Representation::Tagged(), // holder Representation::Tagged(), // holder
Representation::External(), // api_function_address Representation::External(), // api_function_address
Representation::Tagged(), // context Representation::Tagged(), // context
}; };
descriptor->register_param_count_ = 5; descriptor->Initialize(ARRAY_SIZE(registers), registers, representations);
descriptor->register_params_ = registers;
descriptor->param_representations_ = representations;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment