- SymbolTable::const_iterator end = thisObject->symbolTable()->end();
- for (SymbolTable::const_iterator it = thisObject->symbolTable()->begin(); it != end; ++it) {
- if (!(it->value.getAttributes() & DontEnum) || (mode == IncludeDontEnumProperties))
- propertyNames.add(Identifier(exec, it->key.get()));
+ {
+ ConcurrentJITLocker locker(thisObject->symbolTable()->m_lock);
+ SymbolTable::Map::iterator end = thisObject->symbolTable()->end(locker);
+ for (SymbolTable::Map::iterator it = thisObject->symbolTable()->begin(locker); it != end; ++it) {
+ if (!(it->value.getAttributes() & DontEnum) || mode.includeDontEnumProperties()) {
+ if (it->key->isSymbol() && !mode.includeSymbolProperties())
+ continue;
+ propertyNames.add(Identifier::fromUid(exec, it->key.get()));
+ }
+ }