[JSC] Remove unused global private variables
[WebKit-https.git] / Source / JavaScriptCore / builtins / ObjectConstructor.js
1 /*
2  * Copyright (C) 2016 Oleksandr Skachkov <gskachkov@gmail.com>.
3  * Copyright (C) 2015 Jordan Harband. All rights reserved.
4  * Copyright (C) 2018 Yusuke Suzuki <yusukesuzuki@slowstart.org>.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 function entries(object)
29 {
30     "use strict";
31
32     var obj = @toObject(object, "Object.entries requires that input parameter not be null or undefined");
33     var names = @Object.@getOwnPropertyNames(obj);
34     var properties = [];
35     for (var i = 0, length = names.length; i < length; ++i) {
36         var name = names[i];
37         if (@propertyIsEnumerable(obj, name))
38             properties.@push([name, obj[name]]);
39     }
40
41     return properties;
42 }
43
44 function fromEntries(iterable)
45 {
46     "use strict";
47
48     let object = {};
49
50     for (let entry of iterable) {
51         if (!@isObject(entry))
52             @throwTypeError("Object.fromEntries requires the first iterable parameter yields objects");
53         let key = entry[0];
54         let value = entry[1];
55         @putByValDirect(object, key, value);
56     }
57
58     return object;
59 }