Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Unified Diff: src/keys.cc

Issue 1944703002: [keys] Cleanup: removing unused parameters in elements.cc and keys.cc (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@2016-04-19_keys.cc_the_great_migration_1938413002
Patch Set: remove accidental changes Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/keys.h ('k') | src/objects.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/keys.cc
diff --git a/src/keys.cc b/src/keys.cc
index 2de68e6cdd862a7f4bba5dc0881095dfac73dfc4..f6b36d8d10855ff338f69be353dac0539c4b8fdb 100644
--- a/src/keys.cc
+++ b/src/keys.cc
@@ -314,20 +314,18 @@ void KeyAccumulator::NextPrototype() {
level_symbol_length_ = 0;
}
-Maybe<bool> KeyAccumulator::GetKeys_Internal(Handle<JSReceiver> receiver,
- Handle<JSReceiver> object,
- KeyCollectionType type) {
+Maybe<bool> KeyAccumulator::CollectKeys(Handle<JSReceiver> receiver,
+ Handle<JSReceiver> object) {
// Proxies have no hidden prototype and we should not trigger the
// [[GetPrototypeOf]] trap on the last iteration when using
// AdvanceFollowingProxies.
- if (type == OWN_ONLY && object->IsJSProxy()) {
- MAYBE_RETURN(
- JSProxyOwnPropertyKeys(receiver, Handle<JSProxy>::cast(object)),
- Nothing<bool>());
+ if (type_ == OWN_ONLY && object->IsJSProxy()) {
+ MAYBE_RETURN(CollectOwnJSProxyKeys(receiver, Handle<JSProxy>::cast(object)),
+ Nothing<bool>());
return Just(true);
}
- PrototypeIterator::WhereToEnd end = type == OWN_ONLY
+ PrototypeIterator::WhereToEnd end = type_ == OWN_ONLY
? PrototypeIterator::END_AT_NON_HIDDEN
: PrototypeIterator::END_AT_NULL;
for (PrototypeIterator iter(isolate_, object,
@@ -337,16 +335,15 @@ Maybe<bool> KeyAccumulator::GetKeys_Internal(Handle<JSReceiver> receiver,
PrototypeIterator::GetCurrent<JSReceiver>(iter);
Maybe<bool> result = Just(false); // Dummy initialization.
if (current->IsJSProxy()) {
- result = JSProxyOwnPropertyKeys(receiver, Handle<JSProxy>::cast(current));
+ result = CollectOwnJSProxyKeys(receiver, Handle<JSProxy>::cast(current));
} else {
DCHECK(current->IsJSObject());
- result =
- GetKeysFromJSObject(receiver, Handle<JSObject>::cast(current), type);
+ result = CollectOwnKeys(receiver, Handle<JSObject>::cast(current));
}
MAYBE_RETURN(result, Nothing<bool>());
if (!result.FromJust()) break; // |false| means "stop iterating".
// Iterate through proxies but ignore access checks for the ALL_CAN_READ
- // case on API objects for OWN_ONLY keys handled in GetKeysFromJSObject.
+ // case on API objects for OWN_ONLY keys handled in CollectOwnKeys.
if (!iter.AdvanceFollowingProxiesIgnoringAccessChecks()) {
return Nothing<bool>();
}
@@ -629,10 +626,10 @@ static Maybe<bool> GetKeysFromInterceptor(Handle<JSReceiver> receiver,
return Just(true);
}
-void KeyAccumulator::CollectOwnElementKeys(Handle<JSObject> object) {
+void KeyAccumulator::CollectOwnElementIndices(Handle<JSObject> object) {
if (filter_ & SKIP_STRINGS) return;
ElementsAccessor* accessor = object->GetElementsAccessor();
- accessor->CollectElementIndices(object, this, kMaxUInt32, filter_, 0);
+ accessor->CollectElementIndices(object, this);
}
void KeyAccumulator::CollectOwnPropertyNames(Handle<JSObject> object) {
@@ -664,24 +661,23 @@ void KeyAccumulator::CollectOwnPropertyNames(Handle<JSObject> object) {
// Returns |true| on success, |false| if prototype walking should be stopped,
// |nothing| if an exception was thrown.
-Maybe<bool> KeyAccumulator::GetKeysFromJSObject(Handle<JSReceiver> receiver,
- Handle<JSObject> object,
- KeyCollectionType type) {
+Maybe<bool> KeyAccumulator::CollectOwnKeys(Handle<JSReceiver> receiver,
+ Handle<JSObject> object) {
this->NextPrototype();
// Check access rights if required.
if (object->IsAccessCheckNeeded() &&
!isolate_->MayAccess(handle(isolate_->context()), object)) {
// The cross-origin spec says that [[Enumerate]] shall return an empty
// iterator when it doesn't have access...
- if (type == INCLUDE_PROTOS) {
+ if (type_ == INCLUDE_PROTOS) {
return Just(false);
}
// ...whereas [[OwnPropertyKeys]] shall return whitelisted properties.
- DCHECK_EQ(OWN_ONLY, type);
+ DCHECK_EQ(OWN_ONLY, type_);
filter_ = static_cast<PropertyFilter>(filter_ | ONLY_ALL_CAN_READ);
}
- this->CollectOwnElementKeys(object);
+ this->CollectOwnElementIndices(object);
// Add the element keys from the interceptor.
Maybe<bool> success =
@@ -732,8 +728,8 @@ Handle<FixedArray> KeyAccumulator::GetEnumPropertyKeys(
// ES6 9.5.12
// Returns |true| on success, |nothing| in case of exception.
-Maybe<bool> KeyAccumulator::JSProxyOwnPropertyKeys(Handle<JSReceiver> receiver,
- Handle<JSProxy> proxy) {
+Maybe<bool> KeyAccumulator::CollectOwnJSProxyKeys(Handle<JSReceiver> receiver,
+ Handle<JSProxy> proxy) {
STACK_CHECK(isolate_, Nothing<bool>());
// 1. Let handler be the value of the [[ProxyHandler]] internal slot of O.
Handle<Object> handler(proxy->handler(), isolate_);
@@ -755,7 +751,11 @@ Maybe<bool> KeyAccumulator::JSProxyOwnPropertyKeys(Handle<JSReceiver> receiver,
// 6. If trap is undefined, then
if (trap->IsUndefined()) {
// 6a. Return target.[[OwnPropertyKeys]]().
- return this->GetKeys_Internal(receiver, target, OWN_ONLY);
+ KeyCollectionType previous_type = type_;
+ type_ = OWN_ONLY;
+ Maybe<bool> result = this->CollectKeys(receiver, target);
+ type_ = previous_type;
+ return result;
}
// 7. Let trapResultArray be Call(trap, handler, «target»).
Handle<Object> trap_result_array;
« no previous file with comments | « src/keys.h ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698