Index: src/code-stubs.cc |
diff --git a/src/code-stubs.cc b/src/code-stubs.cc |
index 3ffe12ab6cf8822325c3acb8817b21ee668da1e3..cc92dbe68777cd834e8a8dfe5828a34b21a6593d 100644 |
--- a/src/code-stubs.cc |
+++ b/src/code-stubs.cc |
@@ -683,6 +683,18 @@ void StoreGlobalStub::InitializeInterfaceDescriptor( |
} |
+void GrowArrayElementsStub::InitializeInterfaceDescriptor( |
+ CodeStubInterfaceDescriptor* descriptor) { |
+ Register registers[] = { InterfaceDescriptor::ContextRegister(), |
+ ObjectRegister(), |
+ KeyRegister(), |
+ CapacityRegister() }; |
+ Address deopt_handler = Runtime::FunctionForId( |
+ Runtime::kGrowArrayElements)->entry; |
+ descriptor->Initialize(ARRAY_SIZE(registers), registers, deopt_handler); |
+} |
+ |
+ |
void KeyedLoadDictionaryElementPlatformStub::Generate( |
MacroAssembler* masm) { |
KeyedLoadStubCompiler::GenerateLoadDictionaryElement(masm); |
@@ -695,6 +707,20 @@ void CreateAllocationSiteStub::GenerateAheadOfTime(Isolate* isolate) { |
} |
+void GrowArrayElementsStub::GenerateAheadOfTime(Isolate* isolate) { |
+ // Generate for all elements kinds |
+ int last_index = GetSequenceIndexFromFastElementsKind( |
+ TERMINAL_FAST_ELEMENTS_KIND); |
+ for (int i = 0; i <= last_index; ++i) { |
+ ElementsKind kind = GetFastElementsKindFromSequenceIndex(i); |
+ GrowArrayElementsStub stub1(isolate, true, kind); |
+ stub1.GetCode(); |
+ GrowArrayElementsStub stub2(isolate, false, kind); |
+ stub2.GetCode(); |
+ } |
+} |
+ |
+ |
void KeyedStoreElementStub::Generate(MacroAssembler* masm) { |
switch (elements_kind_) { |
case FAST_ELEMENTS: |