Commit 98cd565f authored by hablich's avatar hablich Committed by Commit bot

Revert of [runtime] Migrate Object.getOwnPropertyNames to C++. (patchset #2...

Revert of [runtime] Migrate Object.getOwnPropertyNames to C++. (patchset #2 id:20001 of https://codereview.chromium.org/1605803002/ )

Reason for revert:
Breaks roll: https://codereview.chromium.org/1603953002/

Original issue's description:
> [runtime] Migrate Object.getOwnPropertyNames to C++.
>
> The Object.getOwnPropertyNames method always calls into C++ anyway,
> so there's no point in having the JavaScript wrapper around at all.
>
> Drive-by-fix: Inline GetOwnEnumerablePropertyNames into its single
> call site.
>
> R=yangguo@chromium.org
>
> Committed: https://crrev.com/bf027fe756f62b4abcac8aa08134c8c5ed055620
> Cr-Commit-Position: refs/heads/master@{#33380}

TBR=yangguo@chromium.org,bmeurer@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.

Review URL: https://codereview.chromium.org/1609173002

Cr-Commit-Position: refs/heads/master@{#33399}
parent ffa9e822
...@@ -1100,8 +1100,6 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object, ...@@ -1100,8 +1100,6 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
native_context()->set_object_freeze(*object_freeze); native_context()->set_object_freeze(*object_freeze);
SimpleInstallFunction(object_function, "getOwnPropertyDescriptor", SimpleInstallFunction(object_function, "getOwnPropertyDescriptor",
Builtins::kObjectGetOwnPropertyDescriptor, 2, false); Builtins::kObjectGetOwnPropertyDescriptor, 2, false);
SimpleInstallFunction(object_function, "getOwnPropertyNames",
Builtins::kObjectGetOwnPropertyNames, 1, false);
SimpleInstallFunction(object_function, "getOwnPropertySymbols", SimpleInstallFunction(object_function, "getOwnPropertySymbols",
Builtins::kObjectGetOwnPropertySymbols, 1, false); Builtins::kObjectGetOwnPropertySymbols, 1, false);
Handle<JSFunction> object_is_extensible = Handle<JSFunction> object_is_extensible =
......
...@@ -1590,11 +1590,8 @@ BUILTIN(ObjectGetOwnPropertyDescriptor) { ...@@ -1590,11 +1590,8 @@ BUILTIN(ObjectGetOwnPropertyDescriptor) {
} }
namespace { // ES6 section 19.1.2.8 Object.getOwnPropertySymbols ( O )
BUILTIN(ObjectGetOwnPropertySymbols) {
Object* GetOwnPropertyKeys(Isolate* isolate,
BuiltinArguments<BuiltinExtraArguments::kNone> args,
PropertyFilter filter) {
HandleScope scope(isolate); HandleScope scope(isolate);
Handle<Object> object = args.atOrUndefined(isolate, 1); Handle<Object> object = args.atOrUndefined(isolate, 1);
Handle<JSReceiver> receiver; Handle<JSReceiver> receiver;
...@@ -1602,25 +1599,11 @@ Object* GetOwnPropertyKeys(Isolate* isolate, ...@@ -1602,25 +1599,11 @@ Object* GetOwnPropertyKeys(Isolate* isolate,
Object::ToObject(isolate, object)); Object::ToObject(isolate, object));
Handle<FixedArray> keys; Handle<FixedArray> keys;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION( ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, keys, JSReceiver::GetKeys(receiver, JSReceiver::OWN_ONLY, filter, isolate, keys, JSReceiver::GetKeys(receiver, JSReceiver::OWN_ONLY,
CONVERT_TO_STRING)); SKIP_STRINGS, CONVERT_TO_STRING));
return *isolate->factory()->NewJSArrayWithElements(keys); return *isolate->factory()->NewJSArrayWithElements(keys);
} }
} // namespace
// ES6 section 19.1.2.7 Object.getOwnPropertyNames ( O )
BUILTIN(ObjectGetOwnPropertyNames) {
return GetOwnPropertyKeys(isolate, args, SKIP_SYMBOLS);
}
// ES6 section 19.1.2.8 Object.getOwnPropertySymbols ( O )
BUILTIN(ObjectGetOwnPropertySymbols) {
return GetOwnPropertyKeys(isolate, args, SKIP_STRINGS);
}
// ES6 section 19.1.2.11 Object.isExtensible ( O ) // ES6 section 19.1.2.11 Object.isExtensible ( O )
BUILTIN(ObjectIsExtensible) { BUILTIN(ObjectIsExtensible) {
......
...@@ -111,7 +111,6 @@ inline bool operator&(BuiltinExtraArguments lhs, BuiltinExtraArguments rhs) { ...@@ -111,7 +111,6 @@ inline bool operator&(BuiltinExtraArguments lhs, BuiltinExtraArguments rhs) {
V(ObjectCreate, kNone) \ V(ObjectCreate, kNone) \
V(ObjectFreeze, kNone) \ V(ObjectFreeze, kNone) \
V(ObjectGetOwnPropertyDescriptor, kNone) \ V(ObjectGetOwnPropertyDescriptor, kNone) \
V(ObjectGetOwnPropertyNames, kNone) \
V(ObjectGetOwnPropertySymbols, kNone) \ V(ObjectGetOwnPropertySymbols, kNone) \
V(ObjectIsExtensible, kNone) \ V(ObjectIsExtensible, kNone) \
V(ObjectIsFrozen, kNone) \ V(ObjectIsFrozen, kNone) \
......
...@@ -772,6 +772,13 @@ function ObjectSetPrototypeOf(obj, proto) { ...@@ -772,6 +772,13 @@ function ObjectSetPrototypeOf(obj, proto) {
} }
// ES5 section 15.2.3.4.
function ObjectGetOwnPropertyNames(obj) {
obj = TO_OBJECT(obj);
return %GetOwnPropertyKeys(obj, PROPERTY_FILTER_SKIP_SYMBOLS);
}
// ES5 section 15.2.3.6. // ES5 section 15.2.3.6.
function ObjectDefineProperty(obj, p, attributes) { function ObjectDefineProperty(obj, p, attributes) {
// The new pure-C++ implementation doesn't support O.o. // The new pure-C++ implementation doesn't support O.o.
...@@ -789,6 +796,11 @@ function ObjectDefineProperty(obj, p, attributes) { ...@@ -789,6 +796,11 @@ function ObjectDefineProperty(obj, p, attributes) {
} }
function GetOwnEnumerablePropertyNames(object) {
return %GetOwnPropertyKeys(object, PROPERTY_FILTER_ONLY_ENUMERABLE);
}
// ES5 section 15.2.3.7. // ES5 section 15.2.3.7.
function ObjectDefineProperties(obj, properties) { function ObjectDefineProperties(obj, properties) {
// The new pure-C++ implementation doesn't support O.o. // The new pure-C++ implementation doesn't support O.o.
...@@ -798,7 +810,7 @@ function ObjectDefineProperties(obj, properties) { ...@@ -798,7 +810,7 @@ function ObjectDefineProperties(obj, properties) {
throw MakeTypeError(kCalledOnNonObject, "Object.defineProperties"); throw MakeTypeError(kCalledOnNonObject, "Object.defineProperties");
} }
var props = TO_OBJECT(properties); var props = TO_OBJECT(properties);
var names = %GetOwnPropertyKeys(props, PROPERTY_FILTER_ONLY_ENUMERABLE); var names = GetOwnEnumerablePropertyNames(props);
var descriptors = new InternalArray(); var descriptors = new InternalArray();
for (var i = 0; i < names.length; i++) { for (var i = 0; i < names.length; i++) {
descriptors.push(ToPropertyDescriptor(props[names[i]])); descriptors.push(ToPropertyDescriptor(props[names[i]]));
...@@ -871,6 +883,7 @@ utils.InstallFunctions(GlobalObject, DONT_ENUM, [ ...@@ -871,6 +883,7 @@ utils.InstallFunctions(GlobalObject, DONT_ENUM, [
"defineProperties", ObjectDefineProperties, "defineProperties", ObjectDefineProperties,
"getPrototypeOf", ObjectGetPrototypeOf, "getPrototypeOf", ObjectGetPrototypeOf,
"setPrototypeOf", ObjectSetPrototypeOf, "setPrototypeOf", ObjectSetPrototypeOf,
"getOwnPropertyNames", ObjectGetOwnPropertyNames,
// getOwnPropertySymbols is added in symbol.js. // getOwnPropertySymbols is added in symbol.js.
"is", SameValue, // ECMA-262, Edition 6, section 19.1.2.10 "is", SameValue, // ECMA-262, Edition 6, section 19.1.2.10
// deliverChangeRecords, getNotifier, observe and unobserve are added // deliverChangeRecords, getNotifier, observe and unobserve are added
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment