DictionaryIterator Dictionary::getIterator( ExecutionContext* executionContext) const { v8::Local<v8::Value> iteratorGetter; if (!getInternal(v8::Symbol::GetIterator(m_isolate), iteratorGetter) || !iteratorGetter->IsFunction()) return nullptr; v8::Local<v8::Value> iterator; if (!v8Call(V8ScriptRunner::callFunction( v8::Local<v8::Function>::Cast(iteratorGetter), executionContext, m_dictionaryObject, 0, nullptr, m_isolate), iterator)) return nullptr; if (!iterator->IsObject()) return nullptr; return DictionaryIterator(v8::Local<v8::Object>::Cast(iterator), m_isolate); }
DictionaryIterator Dictionary::getIterator( ExecutionContext* executionContext) const { v8::Local<v8::Value> iteratorGetter; // TODO(alancutter): Support callable objects as well as functions. if (!getInternal(v8::Symbol::GetIterator(m_isolate), iteratorGetter) || !iteratorGetter->IsFunction()) return nullptr; v8::Local<v8::Value> iterator; if (!v8Call(V8ScriptRunner::callFunction( v8::Local<v8::Function>::Cast(iteratorGetter), executionContext, m_options, 0, nullptr, m_isolate), iterator)) return nullptr; if (!iterator->IsObject()) return nullptr; return DictionaryIterator(v8::Local<v8::Object>::Cast(iterator), m_isolate); }