| Index: src/ic/ic-compiler.cc | 
| diff --git a/src/ic/ic-compiler.cc b/src/ic/ic-compiler.cc | 
| index 1d71b57ef3f58b31ccb6c0f7b54e914f4972f3e1..750c88daa9dfd0c3f4919ab9aba0168a16d5e83d 100644 | 
| --- a/src/ic/ic-compiler.cc | 
| +++ b/src/ic/ic-compiler.cc | 
| @@ -10,7 +10,7 @@ | 
| namespace v8 { | 
| namespace internal { | 
|  | 
| -Handle<Object> PropertyICCompiler::ComputeKeyedStoreMonomorphicHandler( | 
| +Handle<Code> PropertyICCompiler::ComputeKeyedStoreMonomorphicHandler( | 
| Handle<Map> receiver_map, KeyedAccessStoreMode store_mode) { | 
| Isolate* isolate = receiver_map->GetIsolate(); | 
|  | 
| @@ -20,14 +20,14 @@ | 
| store_mode == STORE_NO_TRANSITION_HANDLE_COW); | 
|  | 
| PropertyICCompiler compiler(isolate); | 
| -  Handle<Object> handler = | 
| +  Handle<Code> code = | 
| compiler.CompileKeyedStoreMonomorphicHandler(receiver_map, store_mode); | 
| -  return handler; | 
| +  return code; | 
| } | 
|  | 
| void PropertyICCompiler::ComputeKeyedStorePolymorphicHandlers( | 
| MapHandleList* receiver_maps, MapHandleList* transitioned_maps, | 
| -    List<Handle<Object>>* handlers, KeyedAccessStoreMode store_mode) { | 
| +    CodeHandleList* handlers, KeyedAccessStoreMode store_mode) { | 
| Isolate* isolate = receiver_maps->at(0)->GetIsolate(); | 
| DCHECK(store_mode == STANDARD_STORE || | 
| store_mode == STORE_AND_GROW_NO_TRANSITION || | 
| @@ -38,12 +38,13 @@ | 
| receiver_maps, transitioned_maps, handlers, store_mode); | 
| } | 
|  | 
| + | 
| void PropertyICCompiler::CompileKeyedStorePolymorphicHandlers( | 
| MapHandleList* receiver_maps, MapHandleList* transitioned_maps, | 
| -    List<Handle<Object>>* handlers, KeyedAccessStoreMode store_mode) { | 
| +    CodeHandleList* handlers, KeyedAccessStoreMode store_mode) { | 
| for (int i = 0; i < receiver_maps->length(); ++i) { | 
| Handle<Map> receiver_map(receiver_maps->at(i)); | 
| -    Handle<Object> handler; | 
| +    Handle<Code> cached_stub; | 
| Handle<Map> transitioned_map; | 
| { | 
| Map* tmap = receiver_map->FindElementsKindTransitionedMap(receiver_maps); | 
| @@ -60,25 +61,21 @@ | 
| ElementsKind elements_kind = receiver_map->elements_kind(); | 
| TRACE_HANDLER_STATS(isolate(), | 
| KeyedStoreIC_ElementsTransitionAndStoreStub); | 
| -      Handle<Code> stub = | 
| +      cached_stub = | 
| ElementsTransitionAndStoreStub(isolate(), elements_kind, | 
| transitioned_map->elements_kind(), | 
| -                                         is_js_array, store_mode) | 
| -              .GetCode(); | 
| -      Handle<Object> validity_cell = | 
| -          Map::GetOrCreatePrototypeChainValidityCell(receiver_map, isolate()); | 
| -      handler = isolate()->factory()->NewTuple2(validity_cell, stub); | 
| - | 
| +                                         is_js_array, store_mode).GetCode(); | 
| } else if (receiver_map->instance_type() < FIRST_JS_RECEIVER_TYPE) { | 
| // TODO(mvstanton): Consider embedding store_mode in the state of the slow | 
| // keyed store ic for uniformity. | 
| TRACE_HANDLER_STATS(isolate(), KeyedStoreIC_SlowStub); | 
| -      handler = isolate()->builtins()->KeyedStoreIC_Slow(); | 
| +      cached_stub = isolate()->builtins()->KeyedStoreIC_Slow(); | 
| } else { | 
| -      handler = CompileKeyedStoreMonomorphicHandler(receiver_map, store_mode); | 
| +      cached_stub = | 
| +          CompileKeyedStoreMonomorphicHandler(receiver_map, store_mode); | 
| } | 
| -    DCHECK(!handler.is_null()); | 
| -    handlers->Add(handler); | 
| +    DCHECK(!cached_stub.is_null()); | 
| +    handlers->Add(cached_stub); | 
| transitioned_maps->Add(transitioned_map); | 
| } | 
| } | 
| @@ -86,7 +83,8 @@ | 
|  | 
| #define __ ACCESS_MASM(masm()) | 
|  | 
| -Handle<Object> PropertyICCompiler::CompileKeyedStoreMonomorphicHandler( | 
| + | 
| +Handle<Code> PropertyICCompiler::CompileKeyedStoreMonomorphicHandler( | 
| Handle<Map> receiver_map, KeyedAccessStoreMode store_mode) { | 
| ElementsKind elements_kind = receiver_map->elements_kind(); | 
| bool is_jsarray = receiver_map->instance_type() == JS_ARRAY_TYPE; | 
| @@ -103,10 +101,7 @@ | 
| TRACE_HANDLER_STATS(isolate(), KeyedStoreIC_StoreElementStub); | 
| stub = StoreElementStub(isolate(), elements_kind, store_mode).GetCode(); | 
| } | 
| -  Handle<Object> validity_cell = | 
| -      Map::GetOrCreatePrototypeChainValidityCell(receiver_map, isolate()); | 
| -  Handle<Tuple2> handler = isolate()->factory()->NewTuple2(validity_cell, stub); | 
| -  return handler; | 
| +  return stub; | 
| } | 
|  | 
|  | 
|  |