Chromium Code Reviews| Index: src/stub-cache.cc |
| diff --git a/src/stub-cache.cc b/src/stub-cache.cc |
| index f715573556257b93a5b268a6b357d3e1c3ce5109..4afe357c9ad36765ed91c44ce035e44995fe07d3 100644 |
| --- a/src/stub-cache.cc |
| +++ b/src/stub-cache.cc |
| @@ -1938,9 +1938,9 @@ CallOptimization::CallOptimization(Handle<JSFunction> function) { |
| Handle<Map> CallOptimization::LookupHolderOfExpectedType( |
| - Handle<JSObject> receiver, |
| - Handle<JSObject> object, |
| - Handle<JSObject> holder, |
| + Handle<Map> receiver_map, |
| + Handle<Map> object_map, |
| + Handle<Map> holder_map, |
| HolderLookup* holder_lookup) const { |
| ASSERT(is_simple_api_call()); |
| ASSERT_EQ(kHolderNotFound, *holder_lookup); |
| @@ -1951,26 +1951,26 @@ Handle<Map> CallOptimization::LookupHolderOfExpectedType( |
| return map_to_holder; |
| } |
| // walk down the prototype chain to the object |
| - while (!receiver.is_identical_to(object)) { |
| + while (!receiver_map.is_identical_to(object_map)) { |
| *holder_lookup = kHolderIsPrototypeOfMap; |
| - map_to_holder = Handle<Map>(receiver->map()); |
| - receiver = Handle<JSObject>(JSObject::cast(map_to_holder->prototype())); |
| + map_to_holder = receiver_map; |
| + receiver_map = |
| + Handle<Map>(JSObject::cast(map_to_holder->prototype())->map()); |
| } |
| // start looking for the holder |
| - while (!object.is_identical_to(holder)) { |
| - Handle<Map> object_map(object->map()); |
| + while (!object_map.is_identical_to(holder_map)) { |
|
Toon Verwaest
2014/01/29 13:22:39
Please extract this implicit magic to an explicit
|
| if (expected_receiver_type_->IsTemplateFor(*object_map)) { |
| return map_to_holder; |
| } |
| + *holder_lookup = kHolderIsPrototypeOfMap; |
| + map_to_holder = object_map; |
| + object_map = Handle<Map>(JSObject::cast(object_map->prototype())->map()); |
| if (!object_map->is_hidden_prototype()) { |
| *holder_lookup = kHolderNotFound; |
| return Handle<Map>::null(); |
| } |
| - *holder_lookup = kHolderIsPrototypeOfMap; |
| - map_to_holder = object_map; |
| - object = Handle<JSObject>(JSObject::cast(object_map->prototype())); |
| } |
| - if (expected_receiver_type_->IsTemplateFor(holder->map())) { |
| + if (expected_receiver_type_->IsTemplateFor(*object_map)) { |
| return map_to_holder; |
| } |
| *holder_lookup = kHolderNotFound; |