Changeset 182280 in webkit
- Timestamp:
- Apr 2, 2015 11:53:32 AM (9 years ago)
- Location:
- trunk/Source
- Files:
-
- 35 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h
r182205 r182280 522 522 StringImpl* name = it->key.get(); 523 523 StaticValueEntry* entry = it->value.get(); 524 if (entry->getProperty && (!(entry->attributes & kJSPropertyAttributeDontEnum) || shouldIncludeDontEnumProperties(mode))) {524 if (entry->getProperty && (!(entry->attributes & kJSPropertyAttributeDontEnum) || mode.includeDontEnumProperties())) { 525 525 ASSERT(!name->isSymbol()); 526 526 propertyNames.add(Identifier::fromString(exec, String(name))); … … 535 535 StringImpl* name = it->key.get(); 536 536 StaticFunctionEntry* entry = it->value.get(); 537 if (!(entry->attributes & kJSPropertyAttributeDontEnum) || shouldIncludeDontEnumProperties(mode)) {537 if (!(entry->attributes & kJSPropertyAttributeDontEnum) || mode.includeDontEnumProperties()) { 538 538 ASSERT(!name->isSymbol()); 539 539 propertyNames.add(Identifier::fromString(exec, String(name))); -
trunk/Source/JavaScriptCore/API/JSObjectRef.cpp
r182205 r182280 699 699 JSPropertyNameArrayRef propertyNames = new OpaqueJSPropertyNameArray(vm); 700 700 PropertyNameArray array(vm); 701 jsObject->methodTable()->getPropertyNames(jsObject, exec, array, E xcludeDontEnumProperties);701 jsObject->methodTable()->getPropertyNames(jsObject, exec, array, EnumerationMode()); 702 702 703 703 size_t size = array.size(); -
trunk/Source/JavaScriptCore/ChangeLog
r182243 r182280 1 2015-04-02 Yusuke Suzuki <utatane.tea@gmail.com> 2 3 Clean up EnumerationMode to easily extend 4 https://bugs.webkit.org/show_bug.cgi?id=143276 5 6 Reviewed by Geoffrey Garen. 7 8 To make the followings easily, 9 1. Adding new flag Include/ExcludeSymbols in the Object.getOwnPropertySymbols patch 10 2. Make ExcludeSymbols implicitly default for the existing flags 11 we encapsulate EnumerationMode flags into EnumerationMode class. 12 13 And this class manages 2 flags. Later it will be extended to 3. 14 1. DontEnumPropertiesMode (default is Exclude) 15 2. JSObjectPropertiesMode (default is Include) 16 3. SymbolPropertiesMode (default is Exclude) 17 SymbolPropertiesMode will be added in Object.getOwnPropertySymbols patch. 18 19 This patch replaces places using ExcludeDontEnumProperties 20 to EnumerationMode() value which represents default mode. 21 22 * API/JSCallbackObjectFunctions.h: 23 (JSC::JSCallbackObject<Parent>::getOwnNonIndexPropertyNames): 24 * API/JSObjectRef.cpp: 25 (JSObjectCopyPropertyNames): 26 * bindings/ScriptValue.cpp: 27 (Deprecated::jsToInspectorValue): 28 * bytecode/ObjectAllocationProfile.h: 29 (JSC::ObjectAllocationProfile::possibleDefaultPropertyCount): 30 * runtime/ArrayPrototype.cpp: 31 (JSC::arrayProtoFuncSort): 32 * runtime/EnumerationMode.h: 33 (JSC::EnumerationMode::EnumerationMode): 34 (JSC::EnumerationMode::includeDontEnumProperties): 35 (JSC::EnumerationMode::includeJSObjectProperties): 36 (JSC::shouldIncludeDontEnumProperties): Deleted. 37 (JSC::shouldExcludeDontEnumProperties): Deleted. 38 (JSC::shouldIncludeJSObjectPropertyNames): Deleted. 39 (JSC::modeThatSkipsJSObject): Deleted. 40 * runtime/GenericArgumentsInlines.h: 41 (JSC::GenericArguments<Type>::getOwnPropertyNames): 42 * runtime/JSArray.cpp: 43 (JSC::JSArray::getOwnNonIndexPropertyNames): 44 * runtime/JSArrayBuffer.cpp: 45 (JSC::JSArrayBuffer::getOwnNonIndexPropertyNames): 46 * runtime/JSArrayBufferView.cpp: 47 (JSC::JSArrayBufferView::getOwnNonIndexPropertyNames): 48 * runtime/JSFunction.cpp: 49 (JSC::JSFunction::getOwnNonIndexPropertyNames): 50 * runtime/JSFunction.h: 51 * runtime/JSGenericTypedArrayViewInlines.h: 52 (JSC::JSGenericTypedArrayView<Adaptor>::getOwnNonIndexPropertyNames): 53 * runtime/JSLexicalEnvironment.cpp: 54 (JSC::JSLexicalEnvironment::getOwnNonIndexPropertyNames): 55 * runtime/JSONObject.cpp: 56 (JSC::Stringifier::Holder::appendNextProperty): 57 (JSC::Walker::walk): 58 * runtime/JSObject.cpp: 59 (JSC::getClassPropertyNames): 60 (JSC::JSObject::getOwnPropertyNames): 61 (JSC::JSObject::getOwnNonIndexPropertyNames): 62 (JSC::JSObject::getGenericPropertyNames): 63 * runtime/JSPropertyNameEnumerator.h: 64 (JSC::propertyNameEnumerator): 65 * runtime/JSSymbolTableObject.cpp: 66 (JSC::JSSymbolTableObject::getOwnNonIndexPropertyNames): 67 * runtime/ObjectConstructor.cpp: 68 (JSC::objectConstructorGetOwnPropertyNames): 69 (JSC::objectConstructorKeys): 70 (JSC::defineProperties): 71 (JSC::objectConstructorSeal): 72 (JSC::objectConstructorFreeze): 73 (JSC::objectConstructorIsSealed): 74 (JSC::objectConstructorIsFrozen): 75 * runtime/RegExpObject.cpp: 76 (JSC::RegExpObject::getOwnNonIndexPropertyNames): 77 (JSC::RegExpObject::getPropertyNames): 78 (JSC::RegExpObject::getGenericPropertyNames): 79 * runtime/StringObject.cpp: 80 (JSC::StringObject::getOwnPropertyNames): 81 * runtime/Structure.cpp: 82 (JSC::Structure::getPropertyNamesFromStructure): 83 1 84 2015-04-01 Alex Christensen <achristensen@webkit.org> 2 85 -
trunk/Source/JavaScriptCore/bindings/ScriptValue.cpp
r178820 r182280 138 138 JSObject* object = value.getObject(); 139 139 PropertyNameArray propertyNames(scriptState); 140 object->methodTable()->getOwnPropertyNames(object, scriptState, propertyNames, E xcludeDontEnumProperties);140 object->methodTable()->getOwnPropertyNames(object, scriptState, propertyNames, EnumerationMode()); 141 141 for (size_t i = 0; i < propertyNames.size(); i++) { 142 142 const Identifier& name = propertyNames[i]; -
trunk/Source/JavaScriptCore/bytecode/ObjectAllocationProfile.h
r148696 r182280 119 119 size_t count = 0; 120 120 PropertyNameArray propertyNameArray(&vm); 121 prototype->structure()->getPropertyNamesFromStructure(vm, propertyNameArray, E xcludeDontEnumProperties);121 prototype->structure()->getPropertyNamesFromStructure(vm, propertyNameArray, EnumerationMode()); 122 122 PropertyNameArrayData::PropertyNameVector& propertyNameVector = propertyNameArray.data()->propertyNameVector(); 123 123 for (size_t i = 0; i < propertyNameVector.size(); ++i) { -
trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp
r182225 r182280 754 754 755 755 PropertyNameArray nameArray(exec); 756 thisObj->methodTable(exec->vm())->getPropertyNames(thisObj, exec, nameArray, IncludeDontEnumProperties);756 thisObj->methodTable(exec->vm())->getPropertyNames(thisObj, exec, nameArray, EnumerationMode(DontEnumPropertiesMode::Include)); 757 757 if (exec->hadException()) 758 758 return JSValue::encode(jsUndefined()); -
trunk/Source/JavaScriptCore/runtime/EnumerationMode.h
r172196 r182280 29 29 namespace JSC { 30 30 31 enum EnumerationMode { 32 ExcludeDontEnumProperties, 33 ExcludeDontEnumPropertiesAndSkipJSObject, 34 IncludeDontEnumProperties, 35 IncludeDontEnumPropertiesAndSkipJSObject 31 enum class DontEnumPropertiesMode { 32 Include, 33 Exclude 36 34 }; 37 35 38 inline bool shouldIncludeDontEnumProperties(EnumerationMode mode) 39 { 40 switch (mode) { 41 case IncludeDontEnumProperties: 42 case IncludeDontEnumPropertiesAndSkipJSObject: 43 return true; 44 default: 45 return false; 36 enum class JSObjectPropertiesMode { 37 Include, 38 Exclude 39 }; 40 41 class EnumerationMode { 42 public: 43 EnumerationMode(DontEnumPropertiesMode dontEnumPropertiesMode = DontEnumPropertiesMode::Exclude, JSObjectPropertiesMode jsObjectPropertiesMode = JSObjectPropertiesMode::Include) 44 : m_dontEnumPropertiesMode(dontEnumPropertiesMode) 45 , m_jsObjectPropertiesMode(jsObjectPropertiesMode) 46 { 46 47 } 47 }48 48 49 inline bool shouldExcludeDontEnumProperties(EnumerationMode mode) 50 { 51 switch (mode) { 52 case ExcludeDontEnumProperties: 53 case ExcludeDontEnumPropertiesAndSkipJSObject: 54 return true; 55 default: 56 return false; 49 EnumerationMode(const EnumerationMode& mode, JSObjectPropertiesMode jsObjectPropertiesMode) 50 : m_dontEnumPropertiesMode(mode.m_dontEnumPropertiesMode) 51 , m_jsObjectPropertiesMode(jsObjectPropertiesMode) 52 { 57 53 } 58 }59 54 60 inline bool shouldIncludeJSObjectPropertyNames(EnumerationMode mode) 61 { 62 switch (mode) { 63 case IncludeDontEnumProperties: 64 case ExcludeDontEnumProperties: 65 return true; 66 case ExcludeDontEnumPropertiesAndSkipJSObject: 67 case IncludeDontEnumPropertiesAndSkipJSObject: 68 return false; 55 // Add other constructors as needed for convenience 56 57 bool includeDontEnumProperties() 58 { 59 return m_dontEnumPropertiesMode == DontEnumPropertiesMode::Include; 69 60 } 70 ASSERT_NOT_REACHED();71 return false;72 }73 61 74 inline EnumerationMode modeThatSkipsJSObject(EnumerationMode mode) 75 { 76 switch (mode) { 77 case IncludeDontEnumProperties: 78 return IncludeDontEnumPropertiesAndSkipJSObject; 79 case ExcludeDontEnumProperties: 80 return ExcludeDontEnumPropertiesAndSkipJSObject; 81 case ExcludeDontEnumPropertiesAndSkipJSObject: 82 case IncludeDontEnumPropertiesAndSkipJSObject: 83 return mode; 62 bool includeJSObjectProperties() 63 { 64 return m_jsObjectPropertiesMode == JSObjectPropertiesMode::Include; 84 65 } 85 ASSERT_NOT_REACHED(); 86 return mode; 87 } 66 67 private: 68 DontEnumPropertiesMode m_dontEnumPropertiesMode; 69 JSObjectPropertiesMode m_jsObjectPropertiesMode; 70 }; 88 71 89 72 } // namespace JSC -
trunk/Source/JavaScriptCore/runtime/GenericArgumentsInlines.h
r182205 r182280 92 92 array.add(Identifier::from(exec, i)); 93 93 } 94 if ( shouldIncludeDontEnumProperties(mode) && !thisObject->overrodeThings()) {94 if (mode.includeDontEnumProperties() && !thisObject->overrodeThings()) { 95 95 array.add(exec->propertyNames().callee); 96 96 array.add(exec->propertyNames().length); -
trunk/Source/JavaScriptCore/runtime/JSArray.cpp
r179887 r182280 227 227 JSArray* thisObject = jsCast<JSArray*>(object); 228 228 229 if ( shouldIncludeDontEnumProperties(mode))229 if (mode.includeDontEnumProperties()) 230 230 propertyNames.add(exec->propertyNames().length); 231 231 -
trunk/Source/JavaScriptCore/runtime/JSArrayBuffer.cpp
r172176 r182280 120 120 JSArrayBuffer* thisObject = jsCast<JSArrayBuffer*>(object); 121 121 122 if ( shouldIncludeDontEnumProperties(mode))122 if (mode.includeDontEnumProperties()) 123 123 array.add(exec->propertyNames().byteLength); 124 124 -
trunk/Source/JavaScriptCore/runtime/JSArrayBufferView.cpp
r181407 r182280 202 202 203 203 // length/byteOffset/byteLength are DontEnum, at least in Firefox. 204 if ( shouldIncludeDontEnumProperties(mode)) {204 if (mode.includeDontEnumProperties()) { 205 205 array.add(exec->propertyNames().byteOffset); 206 206 array.add(exec->propertyNames().byteLength); -
trunk/Source/JavaScriptCore/runtime/JSFunction.cpp
r181993 r182280 370 370 { 371 371 JSFunction* thisObject = jsCast<JSFunction*>(object); 372 if (!thisObject->isHostOrBuiltinFunction() && shouldIncludeDontEnumProperties(mode)) {372 if (!thisObject->isHostOrBuiltinFunction() && mode.includeDontEnumProperties()) { 373 373 VM& vm = exec->vm(); 374 374 // Make sure prototype has been reified. -
trunk/Source/JavaScriptCore/runtime/JSFunction.h
r182047 r182280 140 140 141 141 static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&); 142 static void getOwnNonIndexPropertyNames(JSObject*, ExecState*, PropertyNameArray&, EnumerationMode = E xcludeDontEnumProperties);142 static void getOwnNonIndexPropertyNames(JSObject*, ExecState*, PropertyNameArray&, EnumerationMode = EnumerationMode()); 143 143 static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&, bool shouldThrow); 144 144 -
trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h
r181407 r182280 416 416 JSGenericTypedArrayView* thisObject = jsCast<JSGenericTypedArrayView*>(object); 417 417 418 if ( shouldIncludeDontEnumProperties(mode))418 if (mode.includeDontEnumProperties()) 419 419 array.add(exec->propertyNames().length); 420 420 -
trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.cpp
r182205 r182280 109 109 SymbolTable::Map::iterator end = thisObject->symbolTable()->end(locker); 110 110 for (SymbolTable::Map::iterator it = thisObject->symbolTable()->begin(locker); it != end; ++it) { 111 if (it->value.getAttributes() & DontEnum && ! shouldIncludeDontEnumProperties(mode))111 if (it->value.getAttributes() & DontEnum && !mode.includeDontEnumProperties()) 112 112 continue; 113 113 if (!thisObject->isValid(it->value.scopeOffset())) -
trunk/Source/JavaScriptCore/runtime/JSONObject.cpp
r180894 r182280 491 491 else { 492 492 PropertyNameArray objectPropertyNames(exec); 493 m_object->methodTable()->getOwnPropertyNames(m_object.get(), exec, objectPropertyNames, E xcludeDontEnumProperties);493 m_object->methodTable()->getOwnPropertyNames(m_object.get(), exec, objectPropertyNames, EnumerationMode()); 494 494 m_propertyNames = objectPropertyNames.releaseData(); 495 495 } … … 708 708 indexStack.append(0); 709 709 propertyStack.append(PropertyNameArray(m_exec)); 710 object->methodTable()->getOwnPropertyNames(object, m_exec, propertyStack.last(), E xcludeDontEnumProperties);710 object->methodTable()->getOwnPropertyNames(object, m_exec, propertyStack.last(), EnumerationMode()); 711 711 } 712 712 objectStartVisitMember: -
trunk/Source/JavaScriptCore/runtime/JSObject.cpp
r182205 r182280 79 79 80 80 for (auto iter = table->begin(); iter != table->end(); ++iter) { 81 if ((!(iter->attributes() & DontEnum) || shouldIncludeDontEnumProperties(mode)) && !((iter->attributes() & BuiltinOrFunction) && didReify))81 if ((!(iter->attributes() & DontEnum) || mode.includeDontEnumProperties()) && !((iter->attributes() & BuiltinOrFunction) && didReify)) 82 82 propertyNames.add(Identifier::fromString(&vm, iter.key())); 83 83 } … … 1519 1519 void JSObject::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) 1520 1520 { 1521 if (! shouldIncludeJSObjectPropertyNames(mode)) {1521 if (!mode.includeJSObjectProperties()) { 1522 1522 // We still have to get non-indexed properties from any subclasses of JSObject that have them. 1523 1523 object->methodTable(exec->vm())->getOwnNonIndexPropertyNames(object, exec, propertyNames, mode); … … 1573 1573 SparseArrayValueMap::const_iterator end = map->end(); 1574 1574 for (SparseArrayValueMap::const_iterator it = map->begin(); it != end; ++it) { 1575 if ( shouldIncludeDontEnumProperties(mode) || !(it->value.attributes & DontEnum))1575 if (mode.includeDontEnumProperties() || !(it->value.attributes & DontEnum)) 1576 1576 keys.uncheckedAppend(static_cast<unsigned>(it->key)); 1577 1577 } … … 1595 1595 getClassPropertyNames(exec, object->classInfo(), propertyNames, mode, object->staticFunctionsReified()); 1596 1596 1597 if (! shouldIncludeJSObjectPropertyNames(mode))1597 if (!mode.includeJSObjectProperties()) 1598 1598 return; 1599 1599 … … 2801 2801 { 2802 2802 VM& vm = exec->vm(); 2803 object->methodTable(vm)->getOwnPropertyNames(object, exec, propertyNames, modeThatSkipsJSObject(mode));2803 object->methodTable(vm)->getOwnPropertyNames(object, exec, propertyNames, EnumerationMode(mode, JSObjectPropertiesMode::Exclude)); 2804 2804 2805 2805 if (object->prototype().isNull()) -
trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h
r181891 r182280 127 127 128 128 if (structure->canAccessPropertiesQuickly() && indexedLength == base->getArrayLength()) { 129 base->methodTable(vm)->getStructurePropertyNames(base, exec, propertyNames, E xcludeDontEnumProperties);129 base->methodTable(vm)->getStructurePropertyNames(base, exec, propertyNames, EnumerationMode()); 130 130 131 131 numberStructureProperties = propertyNames.size(); 132 132 133 base->methodTable(vm)->getGenericPropertyNames(base, exec, propertyNames, E xcludeDontEnumProperties);133 base->methodTable(vm)->getGenericPropertyNames(base, exec, propertyNames, EnumerationMode()); 134 134 } else 135 base->methodTable(vm)->getPropertyNames(base, exec, propertyNames, E xcludeDontEnumProperties);135 base->methodTable(vm)->getPropertyNames(base, exec, propertyNames, EnumerationMode()); 136 136 137 137 ASSERT(propertyNames.size() < UINT32_MAX); -
trunk/Source/JavaScriptCore/runtime/JSSymbolTableObject.cpp
r182205 r182280 64 64 if (it->key->isSymbol()) 65 65 continue; 66 if (!(it->value.getAttributes() & DontEnum) || shouldIncludeDontEnumProperties(mode))66 if (!(it->value.getAttributes() & DontEnum) || mode.includeDontEnumProperties()) 67 67 propertyNames.add(Identifier::fromUid(exec, it->key.get())); 68 68 } -
trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp
r182205 r182280 208 208 return JSValue::encode(jsNull()); 209 209 PropertyNameArray properties(exec); 210 object->methodTable(exec->vm())->getOwnPropertyNames(object, exec, properties, IncludeDontEnumProperties);210 object->methodTable(exec->vm())->getOwnPropertyNames(object, exec, properties, EnumerationMode(DontEnumPropertiesMode::Include)); 211 211 JSArray* names = constructEmptyArray(exec, 0); 212 212 size_t numProperties = properties.size(); … … 223 223 return JSValue::encode(jsNull()); 224 224 PropertyNameArray properties(exec); 225 object->methodTable(exec->vm())->getOwnPropertyNames(object, exec, properties, E xcludeDontEnumProperties);225 object->methodTable(exec->vm())->getOwnPropertyNames(object, exec, properties, EnumerationMode()); 226 226 JSArray* keys = constructEmptyArray(exec, 0); 227 227 size_t numProperties = properties.size(); … … 334 334 { 335 335 PropertyNameArray propertyNames(exec); 336 asObject(properties)->methodTable(exec->vm())->getOwnPropertyNames(asObject(properties), exec, propertyNames, E xcludeDontEnumProperties);336 asObject(properties)->methodTable(exec->vm())->getOwnPropertyNames(asObject(properties), exec, propertyNames, EnumerationMode()); 337 337 size_t numProperties = propertyNames.size(); 338 338 Vector<PropertyDescriptor> descriptors; … … 401 401 // 2. For each named own property name P of O, 402 402 PropertyNameArray properties(exec); 403 object->methodTable(exec->vm())->getOwnPropertyNames(object, exec, properties, IncludeDontEnumProperties);403 object->methodTable(exec->vm())->getOwnPropertyNames(object, exec, properties, EnumerationMode(DontEnumPropertiesMode::Include)); 404 404 PropertyNameArray::const_iterator end = properties.end(); 405 405 for (PropertyNameArray::const_iterator iter = properties.begin(); iter != end; ++iter) { … … 438 438 // 2. For each named own property name P of O, 439 439 PropertyNameArray properties(exec); 440 object->methodTable(exec->vm())->getOwnPropertyNames(object, exec, properties, IncludeDontEnumProperties);440 object->methodTable(exec->vm())->getOwnPropertyNames(object, exec, properties, EnumerationMode(DontEnumPropertiesMode::Include)); 441 441 PropertyNameArray::const_iterator end = properties.end(); 442 442 for (PropertyNameArray::const_iterator iter = properties.begin(); iter != end; ++iter) { … … 486 486 // 2. For each named own property name P of O, 487 487 PropertyNameArray properties(exec); 488 object->methodTable(exec->vm())->getOwnPropertyNames(object, exec, properties, IncludeDontEnumProperties);488 object->methodTable(exec->vm())->getOwnPropertyNames(object, exec, properties, EnumerationMode(DontEnumPropertiesMode::Include)); 489 489 PropertyNameArray::const_iterator end = properties.end(); 490 490 for (PropertyNameArray::const_iterator iter = properties.begin(); iter != end; ++iter) { … … 516 516 // 2. For each named own property name P of O, 517 517 PropertyNameArray properties(exec); 518 object->methodTable(exec->vm())->getOwnPropertyNames(object, exec, properties, IncludeDontEnumProperties);518 object->methodTable(exec->vm())->getOwnPropertyNames(object, exec, properties, EnumerationMode(DontEnumPropertiesMode::Include)); 519 519 PropertyNameArray::const_iterator end = properties.end(); 520 520 for (PropertyNameArray::const_iterator iter = properties.begin(); iter != end; ++iter) { -
trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp
r177222 r182280 106 106 void RegExpObject::getOwnNonIndexPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) 107 107 { 108 if ( shouldIncludeDontEnumProperties(mode))108 if (mode.includeDontEnumProperties()) 109 109 propertyNames.add(exec->propertyNames().lastIndex); 110 110 Base::getOwnNonIndexPropertyNames(object, exec, propertyNames, mode); … … 113 113 void RegExpObject::getPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) 114 114 { 115 if ( shouldIncludeDontEnumProperties(mode))115 if (mode.includeDontEnumProperties()) 116 116 propertyNames.add(exec->propertyNames().lastIndex); 117 117 Base::getPropertyNames(object, exec, propertyNames, mode); … … 120 120 void RegExpObject::getGenericPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) 121 121 { 122 if ( shouldIncludeDontEnumProperties(mode))122 if (mode.includeDontEnumProperties()) 123 123 propertyNames.add(exec->propertyNames().lastIndex); 124 124 Base::getGenericPropertyNames(object, exec, propertyNames, mode); -
trunk/Source/JavaScriptCore/runtime/StringObject.cpp
r178928 r182280 151 151 for (int i = 0; i < size; ++i) 152 152 propertyNames.add(Identifier::from(exec, i)); 153 if ( shouldIncludeDontEnumProperties(mode))153 if (mode.includeDontEnumProperties()) 154 154 propertyNames.add(exec->propertyNames().length); 155 155 return JSObject::getOwnPropertyNames(thisObject, exec, propertyNames, mode); -
trunk/Source/JavaScriptCore/runtime/Structure.cpp
r182205 r182280 940 940 for (PropertyTable::iterator iter = propertyTable()->begin(); iter != end; ++iter) { 941 941 ASSERT(hasNonEnumerableProperties() || !(iter->attributes & DontEnum)); 942 if (!iter->key->isSymbol() && (!(iter->attributes & DontEnum) || shouldIncludeDontEnumProperties(mode))) {942 if (!iter->key->isSymbol() && (!(iter->attributes & DontEnum) || mode.includeDontEnumProperties())) { 943 943 if (knownUnique) 944 944 propertyNames.addKnownUnique(iter->key); -
trunk/Source/WebCore/ChangeLog
r182279 r182280 1 2015-04-02 Yusuke Suzuki <utatane.tea@gmail.com> 2 3 Clean up EnumerationMode to easily extend 4 https://bugs.webkit.org/show_bug.cgi?id=143276 5 6 Reviewed by Geoffrey Garen. 7 8 Use default EnumerationMode(). 9 10 * bindings/js/Dictionary.cpp: 11 (WebCore::Dictionary::getOwnPropertiesAsStringHashMap): 12 (WebCore::Dictionary::getOwnPropertyNames): 13 * bindings/js/SerializedScriptValue.cpp: 14 (WebCore::CloneSerializer::serialize): 15 * bindings/scripts/CodeGeneratorJS.pm: 16 (GenerateHeader): 17 * bindings/scripts/test/JS/JSFloat64Array.h: 18 * bindings/scripts/test/JS/JSTestEventTarget.h: 19 * bridge/NP_jsobject.cpp: 20 (_NPN_Enumerate): 21 * bridge/runtime_array.cpp: 22 (JSC::RuntimeArray::getOwnPropertyNames): 23 1 24 2015-04-02 David Hyatt <hyatt@apple.com> 2 25 -
trunk/Source/WebCore/bindings/js/Dictionary.cpp
r172876 r182280 64 64 65 65 PropertyNameArray propertyNames(exec); 66 JSObject::getOwnPropertyNames(object, exec, propertyNames, E xcludeDontEnumProperties);66 JSObject::getOwnPropertyNames(object, exec, propertyNames, EnumerationMode()); 67 67 for (PropertyNameArray::const_iterator it = propertyNames.begin(); it != propertyNames.end(); ++it) { 68 68 String stringKey = it->string(); … … 89 89 90 90 PropertyNameArray propertyNames(exec); 91 JSObject::getOwnPropertyNames(object, exec, propertyNames, E xcludeDontEnumProperties);91 JSObject::getOwnPropertyNames(object, exec, propertyNames, EnumerationMode()); 92 92 for (PropertyNameArray::const_iterator it = propertyNames.begin(); it != propertyNames.end(); ++it) { 93 93 String stringKey = it->string(); -
trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp
r182205 r182280 1255 1255 1256 1256 propertyStack.append(PropertyNameArray(m_exec)); 1257 array->methodTable()->getOwnNonIndexPropertyNames(array, m_exec, propertyStack.last(), E xcludeDontEnumProperties);1257 array->methodTable()->getOwnNonIndexPropertyNames(array, m_exec, propertyStack.last(), EnumerationMode()); 1258 1258 if (propertyStack.last().size()) { 1259 1259 write(NonIndexPropertiesTag); … … 1305 1305 indexStack.append(0); 1306 1306 propertyStack.append(PropertyNameArray(m_exec)); 1307 inObject->methodTable()->getOwnPropertyNames(inObject, m_exec, propertyStack.last(), E xcludeDontEnumProperties);1307 inObject->methodTable()->getOwnPropertyNames(inObject, m_exec, propertyStack.last(), EnumerationMode()); 1308 1308 } 1309 1309 objectStartVisitMember: … … 1373 1373 ASSERT(jsDynamicCast<JSMap*>(object)); 1374 1374 propertyStack.append(PropertyNameArray(m_exec)); 1375 object->methodTable()->getOwnPropertyNames(object, m_exec, propertyStack.last(), E xcludeDontEnumProperties);1375 object->methodTable()->getOwnPropertyNames(object, m_exec, propertyStack.last(), EnumerationMode()); 1376 1376 write(NonMapPropertiesTag); 1377 1377 indexStack.append(0); … … 1417 1417 ASSERT(jsDynamicCast<JSSet*>(object)); 1418 1418 propertyStack.append(PropertyNameArray(m_exec)); 1419 object->methodTable()->getOwnPropertyNames(object, m_exec, propertyStack.last(), E xcludeDontEnumProperties);1419 object->methodTable()->getOwnPropertyNames(object, m_exec, propertyStack.last(), EnumerationMode()); 1420 1420 write(NonSetPropertiesTag); 1421 1421 indexStack.append(0); -
trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
r182205 r182280 969 969 # Custom getPropertyNames function exists on DOMWindow 970 970 if ($interfaceName eq "DOMWindow") { 971 push(@headerContent, " static void getPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties);\n");972 push(@headerContent, " static void getGenericPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties);\n");973 push(@headerContent, " static void getStructurePropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties);\n");971 push(@headerContent, " static void getPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode = JSC::EnumerationMode());\n"); 972 push(@headerContent, " static void getGenericPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode = JSC::EnumerationMode());\n"); 973 push(@headerContent, " static void getStructurePropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode = JSC::EnumerationMode());\n"); 974 974 push(@headerContent, " static uint32_t getEnumerableLength(JSC::ExecState*, JSC::JSObject*);\n"); 975 975 $structureFlags{"JSC::OverridesGetPropertyNames"} = 1; … … 978 978 # Custom getOwnPropertyNames function 979 979 if ($interface->extendedAttributes->{"CustomEnumerateProperty"} || $indexedGetterFunction) { 980 push(@headerContent, " static void getOwnPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties);\n");980 push(@headerContent, " static void getOwnPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode = JSC::EnumerationMode());\n"); 981 981 $structureFlags{"JSC::OverridesGetPropertyNames"} = 1; 982 982 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSFloat64Array.h
r181508 r182280 52 52 } 53 53 54 static void getOwnPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties);54 static void getOwnPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode = JSC::EnumerationMode()); 55 55 static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); 56 56 Float64Array* impl() const -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h
r181508 r182280 54 54 } 55 55 56 static void getOwnPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties);56 static void getOwnPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode = JSC::EnumerationMode()); 57 57 static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*); 58 58 static void visitChildren(JSCell*, JSC::SlotVisitor&); -
trunk/Source/WebCore/bridge/NP_jsobject.cpp
r177941 r182280 448 448 PropertyNameArray propertyNames(exec); 449 449 450 obj->imp->methodTable()->getPropertyNames(obj->imp, exec, propertyNames, E xcludeDontEnumProperties);450 obj->imp->methodTable()->getPropertyNames(obj->imp, exec, propertyNames, EnumerationMode()); 451 451 unsigned size = static_cast<unsigned>(propertyNames.size()); 452 452 // FIXME: This should really call NPN_MemAlloc but that's in WebKit -
trunk/Source/WebCore/bridge/runtime_array.cpp
r178928 r182280 76 76 propertyNames.add(Identifier::from(exec, i)); 77 77 78 if ( shouldIncludeDontEnumProperties(mode))78 if (mode.includeDontEnumProperties()) 79 79 propertyNames.add(exec->propertyNames().length); 80 80 -
trunk/Source/WebKit/mac/ChangeLog
r182242 r182280 1 2015-04-02 Yusuke Suzuki <utatane.tea@gmail.com> 2 3 Clean up EnumerationMode to easily extend 4 https://bugs.webkit.org/show_bug.cgi?id=143276 5 6 Reviewed by Geoffrey Garen. 7 8 Use default EnumerationMode(). 9 10 * Plugins/Hosted/NetscapePluginInstanceProxy.mm: 11 (WebKit::NetscapePluginInstanceProxy::enumerate): 12 1 13 2015-03-31 Simon Fraser <simon.fraser@apple.com> 2 14 -
trunk/Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm
r176459 r182280 1232 1232 1233 1233 PropertyNameArray propertyNames(exec); 1234 object->methodTable()->getPropertyNames(object, exec, propertyNames, E xcludeDontEnumProperties);1234 object->methodTable()->getPropertyNames(object, exec, propertyNames, EnumerationMode()); 1235 1235 1236 1236 RetainPtr<NSMutableArray*> array = adoptNS([[NSMutableArray alloc] init]); -
trunk/Source/WebKit2/ChangeLog
r182278 r182280 1 2015-04-02 Yusuke Suzuki <utatane.tea@gmail.com> 2 3 Clean up EnumerationMode to easily extend 4 https://bugs.webkit.org/show_bug.cgi?id=143276 5 6 Reviewed by Geoffrey Garen. 7 8 Use default EnumerationMode(). 9 10 * WebProcess/Plugins/Netscape/NPJSObject.cpp: 11 (WebKit::NPJSObject::enumerate): 12 1 13 2015-04-02 Chris Dumez <cdumez@apple.com> 2 14 -
trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.cpp
r182205 r182280 241 241 242 242 PropertyNameArray propertyNames(exec); 243 m_jsObject->methodTable()->getPropertyNames(m_jsObject.get(), exec, propertyNames, E xcludeDontEnumProperties);243 m_jsObject->methodTable()->getPropertyNames(m_jsObject.get(), exec, propertyNames, EnumerationMode()); 244 244 245 245 NPIdentifier* nameIdentifiers = npnMemNewArray<NPIdentifier>(propertyNames.size());
Note: See TracChangeset
for help on using the changeset viewer.