Index: src/lookup.h |
diff --git a/src/lookup.h b/src/lookup.h |
index 923e8107fd3a36c159b4396b458de7962baca666..2d609c5f666c6b77851cf3917f000e18e8d5b6e0 100644 |
--- a/src/lookup.h |
+++ b/src/lookup.h |
@@ -47,7 +47,7 @@ class LookupIterator V8_FINAL BASE_EMBEDDED { |
LookupIterator(Handle<Object> receiver, |
Handle<Name> name, |
Configuration configuration = CHECK_ALL) |
- : configuration_(configuration), |
+ : configuration_(ComputeConfiguration(configuration, name)), |
state_(NOT_FOUND), |
property_kind_(DATA), |
property_encoding_(DESCRIPTOR), |
@@ -66,7 +66,7 @@ class LookupIterator V8_FINAL BASE_EMBEDDED { |
Handle<Name> name, |
Handle<JSReceiver> holder, |
Configuration configuration = CHECK_ALL) |
- : configuration_(configuration), |
+ : configuration_(ComputeConfiguration(configuration, name)), |
state_(NOT_FOUND), |
property_kind_(DATA), |
property_encoding_(DESCRIPTOR), |
@@ -187,6 +187,15 @@ class LookupIterator V8_FINAL BASE_EMBEDDED { |
return number_; |
} |
+ static Configuration ComputeConfiguration( |
+ Configuration configuration, Handle<Name> name) { |
+ if (name->IsOwn()) { |
+ return static_cast<Configuration>(configuration & CHECK_OWN); |
+ } else { |
+ return configuration; |
+ } |
+ } |
+ |
Configuration configuration_; |
State state_; |
bool has_property_; |