Index: src/code-stubs-hydrogen.cc |
diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc |
index f2b04f766884ff7dfb8ee8115b95a108a51fbe61..53bbce74c6d45cd8e8146d49a2c7243692ba5c7d 100644 |
--- a/src/code-stubs-hydrogen.cc |
+++ b/src/code-stubs-hydrogen.cc |
@@ -1808,4 +1808,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 |