| Index: src/code-stubs.cc
|
| diff --git a/src/code-stubs.cc b/src/code-stubs.cc
|
| index 497dde54e7566eac583dcbee7c0019266367c297..8ddce2da53e25800fd481667694995174048a4c5 100644
|
| --- a/src/code-stubs.cc
|
| +++ b/src/code-stubs.cc
|
| @@ -647,4 +647,45 @@ bool ProfileEntryHookStub::SetFunctionEntryHook(FunctionEntryHook entry_hook) {
|
| }
|
|
|
|
|
| +static void InstallDescriptor(Isolate* isolate, HydrogenCodeStub* stub) {
|
| + int major_key = stub->MajorKey();
|
| + CodeStubInterfaceDescriptor* descriptor =
|
| + isolate->code_stub_interface_descriptor(major_key);
|
| + if (!descriptor->initialized()) {
|
| + stub->InitializeInterfaceDescriptor(isolate, descriptor);
|
| + }
|
| +}
|
| +
|
| +
|
| +void ArrayConstructorStubBase::InstallDescriptors(Isolate* isolate) {
|
| + ArrayNoArgumentConstructorStub stub1(GetInitialFastElementsKind());
|
| + InstallDescriptor(isolate, &stub1);
|
| + ArraySingleArgumentConstructorStub stub2(GetInitialFastElementsKind());
|
| + InstallDescriptor(isolate, &stub2);
|
| + ArrayNArgumentsConstructorStub stub3(GetInitialFastElementsKind());
|
| + InstallDescriptor(isolate, &stub3);
|
| +}
|
| +
|
| +
|
| +ArrayConstructorStub::ArrayConstructorStub(Isolate* isolate)
|
| + : argument_count_(ANY) {
|
| + ArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate);
|
| +}
|
| +
|
| +
|
| +ArrayConstructorStub::ArrayConstructorStub(Isolate* isolate,
|
| + int argument_count) {
|
| + if (argument_count == 0) {
|
| + argument_count_ = NONE;
|
| + } else if (argument_count == 1) {
|
| + argument_count_ = ONE;
|
| + } else if (argument_count >= 2) {
|
| + argument_count_ = MORE_THAN_ONE;
|
| + } else {
|
| + UNREACHABLE();
|
| + }
|
| + ArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate);
|
| +}
|
| +
|
| +
|
| } } // namespace v8::internal
|
|
|