Index: src/code-stubs-hydrogen.cc |
diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc |
index 22fabbe5b56f1ee2f9f281685311bc1edbe0a0e5..2972a2c96848525d3ceb9cc117b547bb29030ede 100644 |
--- a/src/code-stubs-hydrogen.cc |
+++ b/src/code-stubs-hydrogen.cc |
@@ -1812,4 +1812,25 @@ HValue* CodeStubGraphBuilder<VectorKeyedLoadStub>::BuildCodeStub() { |
Handle<Code> VectorKeyedLoadStub::GenerateCode() { |
return DoGenerateCode(this); |
} |
+ |
+ |
+Handle<Code> MegamorphicLoadStub::GenerateCode() { |
+ return DoGenerateCode(this); |
+} |
+ |
+ |
+template <> |
+HValue* CodeStubGraphBuilder<MegamorphicLoadStub>::BuildCodeStub() { |
+ // The return address is on the stack. |
+ HValue* receiver = GetParameter(LoadDescriptor::kReceiverIndex); |
+ HValue* name = GetParameter(LoadDescriptor::kNameIndex); |
+ |
+ // Probe the stub cache. |
+ Code::Flags flags = Code::RemoveTypeAndHolderFromFlags( |
+ Code::ComputeHandlerFlags(Code::LOAD_IC)); |
+ Add<HTailCallThroughMegamorphicCache>(receiver, name, flags); |
+ |
+ // We never continue. |
+ return graph()->GetConstant0(); |
+} |
} } // namespace v8::internal |