| Index: src/runtime/runtime-object.cc
|
| diff --git a/src/runtime/runtime-object.cc b/src/runtime/runtime-object.cc
|
| index ad69a1004bf27bb847b8ce5c6fe46427390d690d..25cadc68d9fb7df7877f234baa6db2268d9078aa 100644
|
| --- a/src/runtime/runtime-object.cc
|
| +++ b/src/runtime/runtime-object.cc
|
| @@ -214,14 +214,13 @@ MUST_USE_RESULT static MaybeHandle<Object> GetOwnProperty(Isolate* isolate,
|
| Heap* heap = isolate->heap();
|
| Factory* factory = isolate->factory();
|
|
|
| - PropertyAttributes attrs;
|
| // Get attributes.
|
| LookupIterator it = LookupIterator::PropertyOrElement(isolate, obj, name,
|
| LookupIterator::HIDDEN);
|
| Maybe<PropertyAttributes> maybe = JSObject::GetPropertyAttributes(&it);
|
|
|
| if (!maybe.IsJust()) return MaybeHandle<Object>();
|
| - attrs = maybe.FromJust();
|
| + PropertyAttributes attrs = maybe.FromJust();
|
| if (attrs == ABSENT) return factory->undefined_value();
|
|
|
| DCHECK(!isolate->has_pending_exception());
|
| @@ -787,8 +786,8 @@ RUNTIME_FUNCTION(Runtime_GetPropertyNamesFast) {
|
| Handle<JSReceiver> object(raw_object);
|
| Handle<FixedArray> content;
|
| ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| - isolate, content,
|
| - JSReceiver::GetKeys(object, JSReceiver::INCLUDE_PROTOS));
|
| + isolate, content, JSReceiver::GetKeys(object, JSReceiver::INCLUDE_PROTOS,
|
| + ENUMERABLE_STRINGS));
|
|
|
| // Test again, since cache may have been built by preceding call.
|
| if (object->IsSimpleEnum()) return object->map();
|
| @@ -810,7 +809,20 @@ RUNTIME_FUNCTION(Runtime_GetOwnPropertyNames) {
|
| }
|
| CONVERT_ARG_HANDLE_CHECKED(JSObject, object, 0);
|
| CONVERT_SMI_ARG_CHECKED(filter_value, 1);
|
| - PropertyAttributes filter = static_cast<PropertyAttributes>(filter_value);
|
| +
|
| + // TODO(jkummerow): Temporary compatibility measure. Refactor callers.
|
| + // Values of filter_value are defined in macros.py.
|
| + PropertyFilter filter = ALL_PROPERTIES;
|
| + if (filter_value & 2) {
|
| + filter = static_cast<PropertyFilter>(filter | ONLY_ENUMERABLE);
|
| + }
|
| + if (filter_value & 8) {
|
| + filter = static_cast<PropertyFilter>(filter | SKIP_STRINGS);
|
| + }
|
| + if (filter_value & 16) {
|
| + filter = static_cast<PropertyFilter>(filter | SKIP_SYMBOLS);
|
| + }
|
| + DCHECK(filter_value & 32);
|
|
|
| // Find the number of own properties for each of the objects.
|
| int total_property_count = 0;
|
| @@ -925,9 +937,9 @@ RUNTIME_FUNCTION(Runtime_GetOwnElementNames) {
|
| object = PrototypeIterator::GetCurrent<JSObject>(iter);
|
| }
|
|
|
| - int n = object->NumberOfOwnElements(NONE);
|
| + int n = object->NumberOfOwnElements(ALL_PROPERTIES);
|
| Handle<FixedArray> names = isolate->factory()->NewFixedArray(n);
|
| - object->GetOwnElementKeys(*names, NONE);
|
| + object->GetOwnElementKeys(*names, ALL_PROPERTIES);
|
| return *isolate->factory()->NewJSArrayWithElements(names);
|
| }
|
|
|
| @@ -991,8 +1003,9 @@ RUNTIME_FUNCTION(Runtime_OwnKeys) {
|
|
|
| Handle<FixedArray> contents;
|
| ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| - isolate, contents, JSReceiver::GetKeys(object, JSReceiver::OWN_ONLY,
|
| - SKIP_SYMBOLS, CONVERT_TO_STRING));
|
| + isolate, contents,
|
| + JSReceiver::GetKeys(object, JSReceiver::OWN_ONLY, ENUMERABLE_STRINGS,
|
| + CONVERT_TO_STRING));
|
| return *isolate->factory()->NewJSArrayWithElements(contents);
|
| }
|
|
|
|
|