diff options
Diffstat (limited to 'deps/v8/src/runtime/runtime-object.cc')
-rw-r--r-- | deps/v8/src/runtime/runtime-object.cc | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/deps/v8/src/runtime/runtime-object.cc b/deps/v8/src/runtime/runtime-object.cc index 057ead9407..379472bdbe 100644 --- a/deps/v8/src/runtime/runtime-object.cc +++ b/deps/v8/src/runtime/runtime-object.cc @@ -439,6 +439,61 @@ RUNTIME_FUNCTION(Runtime_OptimizeObjectForAddingMultipleProperties) { return *object; } +RUNTIME_FUNCTION(Runtime_ObjectValues) { + HandleScope scope(isolate); + DCHECK_EQ(1, args.length()); + + CONVERT_ARG_HANDLE_CHECKED(JSReceiver, receiver, 0); + + Handle<FixedArray> values; + ASSIGN_RETURN_FAILURE_ON_EXCEPTION( + isolate, values, + JSReceiver::GetOwnValues(receiver, PropertyFilter::ENUMERABLE_STRINGS, + true)); + return *isolate->factory()->NewJSArrayWithElements(values); +} + +RUNTIME_FUNCTION(Runtime_ObjectValuesSkipFastPath) { + HandleScope scope(isolate); + DCHECK_EQ(1, args.length()); + + CONVERT_ARG_HANDLE_CHECKED(JSReceiver, receiver, 0); + + Handle<FixedArray> value; + ASSIGN_RETURN_FAILURE_ON_EXCEPTION( + isolate, value, + JSReceiver::GetOwnValues(receiver, PropertyFilter::ENUMERABLE_STRINGS, + false)); + return *isolate->factory()->NewJSArrayWithElements(value); +} + +RUNTIME_FUNCTION(Runtime_ObjectEntries) { + HandleScope scope(isolate); + DCHECK_EQ(1, args.length()); + + CONVERT_ARG_HANDLE_CHECKED(JSReceiver, receiver, 0); + + Handle<FixedArray> entries; + ASSIGN_RETURN_FAILURE_ON_EXCEPTION( + isolate, entries, + JSReceiver::GetOwnEntries(receiver, PropertyFilter::ENUMERABLE_STRINGS, + true)); + return *isolate->factory()->NewJSArrayWithElements(entries); +} + +RUNTIME_FUNCTION(Runtime_ObjectEntriesSkipFastPath) { + HandleScope scope(isolate); + DCHECK_EQ(1, args.length()); + + CONVERT_ARG_HANDLE_CHECKED(JSReceiver, receiver, 0); + + Handle<FixedArray> entries; + ASSIGN_RETURN_FAILURE_ON_EXCEPTION( + isolate, entries, + JSReceiver::GetOwnEntries(receiver, PropertyFilter::ENUMERABLE_STRINGS, + false)); + return *isolate->factory()->NewJSArrayWithElements(entries); +} RUNTIME_FUNCTION(Runtime_GetProperty) { HandleScope scope(isolate); |