Index: src/code-stubs-hydrogen.cc |
diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc |
index eb3bac8fbf4056609374e4c3f4fc44187e92f945..d65026b843ca4ec6d70947c7e03e39e18ccc5e18 100644 |
--- a/src/code-stubs-hydrogen.cc |
+++ b/src/code-stubs-hydrogen.cc |
@@ -594,6 +594,32 @@ Handle<Code> KeyedLoadFieldStub::GenerateCode(Isolate* isolate) { |
} |
+template<> |
+HValue* CodeStubGraphBuilder<KeyedArrayCallStub>::BuildCodeStub() { |
+ int argc = casted_stub()->argc() + 1; |
+ info()->set_parameter_count(argc); |
+ |
+ HValue* receiver = Add<HParameter>(1); |
+ |
+ // Load the expected initial array map from the context. |
+ JSArrayBuilder array_builder(this, casted_stub()->elements_kind()); |
+ HValue* map = array_builder.EmitMapCode(); |
+ |
+ HValue* checked_receiver = Add<HCheckMapValue>(receiver, map); |
+ |
+ HValue* function = BuildUncheckedMonomorphicElementAccess( |
+ checked_receiver, GetParameter(0), |
+ NULL, true, casted_stub()->elements_kind(), |
+ false, NEVER_RETURN_HOLE, STANDARD_STORE); |
+ return Add<HCallFunction>(function, argc, TAIL_CALL); |
+} |
+ |
+ |
+Handle<Code> KeyedArrayCallStub::GenerateCode(Isolate* isolate) { |
+ return DoGenerateCode(isolate, this); |
+} |
+ |
+ |
template <> |
HValue* CodeStubGraphBuilder<KeyedStoreFastElementStub>::BuildCodeStub() { |
BuildUncheckedMonomorphicElementAccess( |