Refactor ObjectGetOwnPropertyKeys to accept bitmask rather than boolean
BUG=v8:3549 LOG=Y R=arv@chromium.org, rossberg@chromium.org Review URL: https://codereview.chromium.org/557023002 Patch from Caitlin Potter <caitpotter88@gmail.com>. Cr-Commit-Position: refs/heads/master@{#25111} git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25111 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
faa71f966a
commit
d6ca29ce4c
@ -73,7 +73,7 @@ function ObjectGetOwnPropertySymbols(obj) {
|
||||
|
||||
// TODO(arv): Proxies use a shared trap for String and Symbol keys.
|
||||
|
||||
return ObjectGetOwnPropertyKeys(obj, true);
|
||||
return ObjectGetOwnPropertyKeys(obj, PROPERTY_ATTRIBUTES_STRING);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1038,16 +1038,14 @@ function ToNameArray(obj, trap, includeSymbols) {
|
||||
}
|
||||
|
||||
|
||||
function ObjectGetOwnPropertyKeys(obj, symbolsOnly) {
|
||||
function ObjectGetOwnPropertyKeys(obj, filter) {
|
||||
var nameArrays = new InternalArray();
|
||||
var filter = symbolsOnly ?
|
||||
PROPERTY_ATTRIBUTES_STRING | PROPERTY_ATTRIBUTES_PRIVATE_SYMBOL :
|
||||
PROPERTY_ATTRIBUTES_SYMBOLIC;
|
||||
filter |= PROPERTY_ATTRIBUTES_PRIVATE_SYMBOL;
|
||||
|
||||
// Find all the indexed properties.
|
||||
|
||||
// Only get own element names if we want to include string keys.
|
||||
if (!symbolsOnly) {
|
||||
if ((filter & PROPERTY_ATTRIBUTES_STRING) === 0) {
|
||||
var ownElementNames = %GetOwnElementNames(obj);
|
||||
for (var i = 0; i < ownElementNames.length; ++i) {
|
||||
ownElementNames[i] = %_NumberToString(ownElementNames[i]);
|
||||
@ -1089,10 +1087,12 @@ function ObjectGetOwnPropertyKeys(obj, symbolsOnly) {
|
||||
var j = 0;
|
||||
for (var i = 0; i < propertyNames.length; ++i) {
|
||||
var name = propertyNames[i];
|
||||
if (symbolsOnly) {
|
||||
if (!IS_SYMBOL(name) || IS_PRIVATE(name)) continue;
|
||||
if (IS_SYMBOL(name)) {
|
||||
if ((filter & PROPERTY_ATTRIBUTES_SYMBOLIC) || IS_PRIVATE(name)) {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
if (IS_SYMBOL(name)) continue;
|
||||
if (filter & PROPERTY_ATTRIBUTES_STRING) continue;
|
||||
name = ToString(name);
|
||||
}
|
||||
if (seenKeys[name]) continue;
|
||||
@ -1116,7 +1116,7 @@ function ObjectGetOwnPropertyNames(obj) {
|
||||
return ToNameArray(names, "getOwnPropertyNames", false);
|
||||
}
|
||||
|
||||
return ObjectGetOwnPropertyKeys(obj, false);
|
||||
return ObjectGetOwnPropertyKeys(obj, PROPERTY_ATTRIBUTES_SYMBOLIC);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user