Index: src/ic.cc |
diff --git a/src/ic.cc b/src/ic.cc |
index db82bf52388f689c0ce1d12c854a42316c955a16..f3fe1f1e7c0f6b22eebed2ac9e2a1e5f3a69673f 100644 |
--- a/src/ic.cc |
+++ b/src/ic.cc |
@@ -1034,7 +1034,12 @@ Handle<Code> LoadIC::CompileHandler(LookupIterator* lookup, |
DCHECK(!holder->GetNamedInterceptor()->getter()->IsUndefined()); |
NamedLoadHandlerCompiler compiler(isolate(), receiver_type(), holder, |
cache_holder); |
- return compiler.CompileLoadInterceptor(name); |
+ // Perform a lookup behind the interceptor. Copy the LookupIterator since |
+ // the original iterator will be used to fetch the value. |
+ LookupIterator it(lookup); |
+ it.Next(); |
+ LookupForRead(&it); |
+ return compiler.CompileLoadInterceptor(&it, name); |
} |
DCHECK(lookup->state() == LookupIterator::PROPERTY); |