| Index: src/interface-descriptors.cc
|
| diff --git a/src/interface-descriptors.cc b/src/interface-descriptors.cc
|
| index 2661b09bc6d347853529319a1a2700f2e88942c1..a953337c151d6164157c0b0cab103dbe25a52bfe 100644
|
| --- a/src/interface-descriptors.cc
|
| +++ b/src/interface-descriptors.cc
|
| @@ -4,13 +4,12 @@
|
|
|
| #include "src/v8.h"
|
|
|
| -#include "src/ic/ic-conventions.h"
|
| #include "src/interface-descriptors.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
|
|
| -void CallInterfaceDescriptor::Initialize(
|
| +void CallInterfaceDescriptorData::Initialize(
|
| int register_parameter_count, Register* registers,
|
| Representation* register_param_representations,
|
| PlatformInterfaceDescriptor* platform_descriptor) {
|
| @@ -18,7 +17,8 @@ void CallInterfaceDescriptor::Initialize(
|
| register_param_count_ = register_parameter_count;
|
|
|
| // An interface descriptor must have a context register.
|
| - DCHECK(register_parameter_count > 0 && registers[0].is(ContextRegister()));
|
| + DCHECK(register_parameter_count > 0 &&
|
| + registers[0].is(CallInterfaceDescriptor::ContextRegister()));
|
|
|
| // InterfaceDescriptor owns a copy of the registers array.
|
| register_params_.Reset(NewArray<Register>(register_parameter_count));
|
| @@ -42,51 +42,50 @@ void CallInterfaceDescriptor::Initialize(
|
| }
|
|
|
|
|
| -void CallDescriptors::InitializeForIsolateAllPlatforms(Isolate* isolate) {
|
| - {
|
| - CallInterfaceDescriptor* descriptor =
|
| - isolate->call_descriptor(CallDescriptorKey::LoadICCall);
|
| - Register registers[] = {CallInterfaceDescriptor::ContextRegister(),
|
| - LoadConvention::ReceiverRegister(),
|
| - LoadConvention::NameRegister()};
|
| - descriptor->Initialize(arraysize(registers), registers, NULL);
|
| - }
|
| - {
|
| - CallInterfaceDescriptor* descriptor =
|
| - isolate->call_descriptor(CallDescriptorKey::StoreICCall);
|
| - Register registers[] = {CallInterfaceDescriptor::ContextRegister(),
|
| - StoreConvention::ReceiverRegister(),
|
| - StoreConvention::NameRegister(),
|
| - StoreConvention::ValueRegister()};
|
| - descriptor->Initialize(arraysize(registers), registers, NULL);
|
| - }
|
| - {
|
| - CallInterfaceDescriptor* descriptor = isolate->call_descriptor(
|
| - CallDescriptorKey::ElementTransitionAndStoreCall);
|
| - Register registers[] = {
|
| - CallInterfaceDescriptor::ContextRegister(),
|
| - StoreConvention::ValueRegister(), StoreConvention::MapRegister(),
|
| - StoreConvention::NameRegister(), StoreConvention::ReceiverRegister()};
|
| - descriptor->Initialize(arraysize(registers), registers, NULL);
|
| - }
|
| - {
|
| - CallInterfaceDescriptor* descriptor =
|
| - isolate->call_descriptor(CallDescriptorKey::InstanceofCall);
|
| - Register registers[] = {CallInterfaceDescriptor::ContextRegister(),
|
| - InstanceofConvention::left(),
|
| - InstanceofConvention::right()};
|
| - descriptor->Initialize(arraysize(registers), registers, NULL);
|
| - }
|
| - {
|
| - CallInterfaceDescriptor* descriptor =
|
| - isolate->call_descriptor(CallDescriptorKey::VectorLoadICCall);
|
| - Register registers[] = {CallInterfaceDescriptor::ContextRegister(),
|
| - FullVectorLoadConvention::ReceiverRegister(),
|
| - FullVectorLoadConvention::NameRegister(),
|
| - FullVectorLoadConvention::SlotRegister(),
|
| - FullVectorLoadConvention::VectorRegister()};
|
| - descriptor->Initialize(arraysize(registers), registers, NULL);
|
| - }
|
| +void LoadDescriptor::Initialize(Isolate* isolate) {
|
| + Register registers[] = {ContextRegister(), ReceiverRegister(),
|
| + NameRegister()};
|
| + InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| +}
|
| +
|
| +
|
| +void StoreDescriptor::Initialize(Isolate* isolate) {
|
| + Register registers[] = {ContextRegister(), ReceiverRegister(), NameRegister(),
|
| + ValueRegister()};
|
| + InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| +}
|
| +
|
| +
|
| +void ElementTransitionAndStoreDescriptor::Initialize(Isolate* isolate) {
|
| + Register registers[] = {ContextRegister(), ValueRegister(), MapRegister(),
|
| + NameRegister(), ReceiverRegister()};
|
| + InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| +}
|
| +
|
| +
|
| +void InstanceofDescriptor::Initialize(Isolate* isolate) {
|
| + Register registers[] = {ContextRegister(), left(), right()};
|
| + InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| +}
|
| +
|
| +
|
| +void VectorLoadICDescriptor::Initialize(Isolate* isolate) {
|
| + Register registers[] = {ContextRegister(), ReceiverRegister(), NameRegister(),
|
| + SlotRegister(), VectorRegister()};
|
| + InitializeData(isolate, key(), arraysize(registers), registers, NULL);
|
| +}
|
| +
|
| +
|
| +void CallDescriptors::InitializeForIsolate(Isolate* isolate) {
|
| +// Mechanically initialize all descriptors. The DCHECK makes sure that the
|
| +// Initialize() method did what it is supposed to do.
|
| +
|
| +#define INITIALIZE_DESCRIPTOR(D) \
|
| + D##Descriptor::Initialize(isolate); \
|
| + DCHECK(D##Descriptor(isolate).IsInitialized());
|
| +
|
| + INTERFACE_DESCRIPTOR_LIST(INITIALIZE_DESCRIPTOR)
|
| +#undef INITIALIZE_DESCRIPTOR
|
| }
|
| }
|
| } // namespace v8::internal
|
|
|