Index: src/builtins.cc |
diff --git a/src/builtins.cc b/src/builtins.cc |
index a85edc834251da617f2d8170cd9ba42b119f39bb..dfe6abbe30322e9d1a69c3eaf6c191e801aab782 100644 |
--- a/src/builtins.cc |
+++ b/src/builtins.cc |
@@ -353,9 +353,9 @@ BUILTIN(ObjectHasOwnProperty) { |
// handle all cases directly (without this custom fast path). |
{ |
LookupIterator::Configuration c = LookupIterator::OWN_SKIP_INTERCEPTOR; |
- LookupIterator it = key_is_array_index |
- ? LookupIterator(isolate, js_obj, index, c) |
- : LookupIterator(js_obj, key, c); |
+ LookupIterator it = |
+ key_is_array_index ? LookupIterator(isolate, js_obj, index, js_obj, c) |
+ : LookupIterator(js_obj, key, js_obj, c); |
Maybe<bool> maybe = JSReceiver::HasProperty(&it); |
if (maybe.IsNothing()) return isolate->heap()->exception(); |
DCHECK(!isolate->has_pending_exception()); |
@@ -372,8 +372,8 @@ BUILTIN(ObjectHasOwnProperty) { |
// Slow case. |
LookupIterator::Configuration c = LookupIterator::HIDDEN; |
LookupIterator it = key_is_array_index |
- ? LookupIterator(isolate, js_obj, index, c) |
- : LookupIterator(js_obj, key, c); |
+ ? LookupIterator(isolate, js_obj, index, js_obj, c) |
+ : LookupIterator(js_obj, key, js_obj, c); |
Maybe<bool> maybe = JSReceiver::HasProperty(&it); |
if (maybe.IsNothing()) return isolate->heap()->exception(); |
@@ -1542,7 +1542,8 @@ MUST_USE_RESULT Maybe<bool> FastAssign(Handle<JSReceiver> to, |
} else { |
// If the map did change, do a slower lookup. We are still guaranteed that |
// the object has a simple shape, and that the key is a name. |
- LookupIterator it(from, next_key, LookupIterator::OWN_SKIP_INTERCEPTOR); |
+ LookupIterator it(from, next_key, from, |
+ LookupIterator::OWN_SKIP_INTERCEPTOR); |
if (!it.IsFound()) continue; |
DCHECK(it.state() == LookupIterator::DATA || |
it.state() == LookupIterator::ACCESSOR); |
@@ -1550,7 +1551,7 @@ MUST_USE_RESULT Maybe<bool> FastAssign(Handle<JSReceiver> to, |
ASSIGN_RETURN_ON_EXCEPTION_VALUE( |
isolate, prop_value, Object::GetProperty(&it), Nothing<bool>()); |
} |
- LookupIterator it(to, next_key); |
+ LookupIterator it(to, next_key, to); |
bool call_to_js = it.IsFound() && it.state() != LookupIterator::DATA; |
Maybe<bool> result = Object::SetProperty( |
&it, prop_value, STRICT, Object::CERTAINLY_NOT_STORE_FROM_KEYED); |
@@ -1846,7 +1847,7 @@ BUILTIN(ObjectGetOwnPropertyDescriptors) { |
isolate, keys, JSReceiver::GetKeys(receiver, OWN_ONLY, ALL_PROPERTIES, |
CONVERT_TO_STRING)); |
- Handle<Object> descriptors = |
+ Handle<JSObject> descriptors = |
isolate->factory()->NewJSObject(isolate->object_function()); |
for (int i = 0; i < keys->length(); ++i) { |
@@ -1861,7 +1862,7 @@ BUILTIN(ObjectGetOwnPropertyDescriptors) { |
: undefined; |
LookupIterator it = LookupIterator::PropertyOrElement( |
- isolate, descriptors, key, LookupIterator::OWN); |
+ isolate, descriptors, key, descriptors, LookupIterator::OWN); |
Maybe<bool> success = JSReceiver::CreateDataProperty(&it, from_descriptor, |
Object::DONT_THROW); |
CHECK(success.FromJust()); |