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**>(&current->holder_));
17b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    visitor->VisitPointer(bit_cast<Object**>(&current->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