X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/f9bf01c6616d5ddcf65b13b33cedf9e387ff7a63..14957cd040308e3eeec43d26bae5d76da13fcd85:/runtime/ScopeChain.cpp?ds=inline diff --git a/runtime/ScopeChain.cpp b/runtime/ScopeChain.cpp index 981794b..df4da41 100644 --- a/runtime/ScopeChain.cpp +++ b/runtime/ScopeChain.cpp @@ -31,11 +31,11 @@ namespace JSC { #ifndef NDEBUG -void ScopeChainNode::print() const +void ScopeChainNode::print() { ScopeChainIterator scopeEnd = end(); for (ScopeChainIterator scopeIter = begin(); scopeIter != scopeEnd; ++scopeIter) { - JSObject* o = *scopeIter; + JSObject* o = scopeIter->get(); PropertyNameArray propertyNames(globalObject->globalExec()); o->getPropertyNames(globalObject->globalExec(), propertyNames); PropertyNameArray::const_iterator propEnd = propertyNames.end(); @@ -43,7 +43,7 @@ void ScopeChainNode::print() const fprintf(stderr, "----- [scope %p] -----\n", o); for (PropertyNameArray::const_iterator propIter = propertyNames.begin(); propIter != propEnd; propIter++) { Identifier name = *propIter; - fprintf(stderr, "%s, ", name.ascii()); + fprintf(stderr, "%s, ", name.ustring().utf8().data()); } fprintf(stderr, "\n"); } @@ -51,12 +51,14 @@ void ScopeChainNode::print() const #endif -int ScopeChain::localDepth() const +const ClassInfo ScopeChainNode::s_info = { "ScopeChainNode", 0, 0, 0 }; + +int ScopeChainNode::localDepth() { int scopeDepth = 0; ScopeChainIterator iter = this->begin(); ScopeChainIterator end = this->end(); - while (!(*iter)->inherits(&JSActivation::info)) { + while (!(*iter)->inherits(&JSActivation::s_info)) { ++iter; if (iter == end) break; @@ -65,4 +67,16 @@ int ScopeChain::localDepth() const return scopeDepth; } +void ScopeChainNode::visitChildren(SlotVisitor& visitor) +{ + ASSERT_GC_OBJECT_INHERITS(this, &s_info); + COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); + ASSERT(structure()->typeInfo().overridesVisitChildren()); + if (next) + visitor.append(&next); + visitor.append(&object); + visitor.append(&globalObject); + visitor.append(&globalThis); +} + } // namespace JSC