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; |