Index: src/ic/ic.cc |
diff --git a/src/ic/ic.cc b/src/ic/ic.cc |
index 0ba80d35907c536934ba37beec838afaaf2ba0ca..e250a7f367a8fcbdf58ed0300f3be20451d1611b 100644 |
--- a/src/ic/ic.cc |
+++ b/src/ic/ic.cc |
@@ -1219,16 +1219,13 @@ Handle<Code> LoadIC::CompileHandler(LookupIterator* lookup, |
case LookupIterator::ACCESSOR: { |
// Use simple field loads for some well-known callback properties. |
- if (receiver_is_holder) { |
- DCHECK(receiver->IsJSObject()); |
- Handle<JSObject> js_receiver = Handle<JSObject>::cast(receiver); |
- int object_offset; |
- if (Accessors::IsJSObjectFieldAccessor(map, lookup->name(), |
- &object_offset)) { |
- FieldIndex index = |
- FieldIndex::ForInObjectOffset(object_offset, js_receiver->map()); |
- return SimpleFieldLoad(index); |
- } |
+ // The method will only return true for absolute truths based on the |
+ // receiver maps. |
+ int object_offset; |
+ if (Accessors::IsJSObjectFieldAccessor(map, lookup->name(), |
+ &object_offset)) { |
+ FieldIndex index = FieldIndex::ForInObjectOffset(object_offset, *map); |
+ return SimpleFieldLoad(index); |
} |
Handle<Object> accessors = lookup->GetAccessors(); |