1b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Copyright 2014 the V8 project authors. All rights reserved. 2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// found in the LICENSE file. 4a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 5b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/property.h" 6b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 7b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/handles-inl.h" 8b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/ostreams.h" 9a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 10a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blocknamespace v8 { 11a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blocknamespace internal { 12a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvoid LookupResult::Iterate(ObjectVisitor* visitor) { 143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch LookupResult* current = this; // Could be NULL. 153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch while (current != NULL) { 16b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch visitor->VisitPointer(bit_cast<Object**>(¤t->holder_)); 17b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch visitor->VisitPointer(bit_cast<Object**>(¤t->transition_)); 183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch current = current->next_; 193ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 203ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 213ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 223ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 23b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochOStream& operator<<(OStream& os, const LookupResult& r) { 24b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if (!r.IsFound()) return os << "Not Found\n"; 25a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 26b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os << "LookupResult:\n"; 27b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if (r.IsTransition()) { 28b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch os << " -transition target:\n" << Brief(r.GetTransitionTarget()) << "\n"; 29a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 30b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return os; 31a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block} 32a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 33a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 34b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochOStream& operator<<(OStream& os, const Descriptor& d) { 35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return os << "Descriptor " << Brief(*d.GetKey()) << " @ " 36b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch << Brief(*d.GetValue()); 373ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 383ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 39a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block} } // namespace v8::internal 40