1994edf6a113fb3651536b60073df05a72a95f77erossberg@chromium.org// Copyright 2012 the V8 project authors. All rights reserved. 243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// Redistribution and use in source and binary forms, with or without 343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// modification, are permitted provided that the following conditions are 443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// met: 543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// 643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// * Redistributions of source code must retain the above copyright 743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// notice, this list of conditions and the following disclaimer. 843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// * Redistributions in binary form must reproduce the above 943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// copyright notice, this list of conditions and the following 1043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// disclaimer in the documentation and/or other materials provided 1143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// with the distribution. 1243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// * Neither the name of Google Inc. nor the names of its 1343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// contributors may be used to endorse or promote products derived 1443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// from this software without specific prior written permission. 1543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// 1643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "v8.h" 2943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3071affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace v8 { 3171affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace internal { 3243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 34394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.comvoid LookupResult::Iterate(ObjectVisitor* visitor) { 35394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com LookupResult* current = this; // Could be NULL. 36394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com while (current != NULL) { 37394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com visitor->VisitPointer(BitCast<Object**>(¤t->holder_)); 38394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com current = current->next_; 39394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com } 40394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com} 41394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 42394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 43023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org#ifdef OBJECT_PRINT 44023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.orgvoid LookupResult::Print(FILE* out) { 455c838251403b0be9a882540f1922577abba4c872ager@chromium.org if (!IsFound()) { 46023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, "Not Found\n"); 4743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return; 4843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 4943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 50023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, "LookupResult:\n"); 51023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, " -cacheable = %s\n", IsCacheable() ? "true" : "false"); 52023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, " -attributes = %x\n", GetAttributes()); 5343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen switch (type()) { 5443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case NORMAL: 55023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, " -type = normal\n"); 56023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, " -entry = %d", GetDictionaryEntry()); 5743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 58fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org case CONSTANT: 59fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org PrintF(out, " -type = constant\n"); 60fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org PrintF(out, " -value:\n"); 61fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org GetConstant()->Print(out); 62023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, "\n"); 6343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 6443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case FIELD: 65023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, " -type = field\n"); 66eeb44b681a16e45f1415dfacff0ba3dba9de5d8cyangguo@chromium.org PrintF(out, " -index = %d", GetFieldIndex().field_index()); 67023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, "\n"); 6843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 6943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case CALLBACKS: 70023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, " -type = call backs\n"); 71023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, " -callback object:\n"); 72023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org GetCallbackObject()->Print(out); 7343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 74c53e10d01c5495df3896b9d318910b58688c6929kmillikin@chromium.org case HANDLER: 75c53e10d01c5495df3896b9d318910b58688c6929kmillikin@chromium.org PrintF(out, " -type = lookup proxy\n"); 76c53e10d01c5495df3896b9d318910b58688c6929kmillikin@chromium.org break; 7743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case INTERCEPTOR: 78023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, " -type = lookup interceptor\n"); 7943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen break; 8099aa490225c81012235659d9a183226b286178c8yangguo@chromium.org case TRANSITION: 8199aa490225c81012235659d9a183226b286178c8yangguo@chromium.org switch (GetTransitionDetails().type()) { 8299aa490225c81012235659d9a183226b286178c8yangguo@chromium.org case FIELD: 8399aa490225c81012235659d9a183226b286178c8yangguo@chromium.org PrintF(out, " -type = map transition\n"); 8499aa490225c81012235659d9a183226b286178c8yangguo@chromium.org PrintF(out, " -map:\n"); 8599aa490225c81012235659d9a183226b286178c8yangguo@chromium.org GetTransitionMap()->Print(out); 8699aa490225c81012235659d9a183226b286178c8yangguo@chromium.org PrintF(out, "\n"); 8799aa490225c81012235659d9a183226b286178c8yangguo@chromium.org return; 88fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org case CONSTANT: 8999aa490225c81012235659d9a183226b286178c8yangguo@chromium.org PrintF(out, " -type = constant property transition\n"); 9099aa490225c81012235659d9a183226b286178c8yangguo@chromium.org PrintF(out, " -map:\n"); 9199aa490225c81012235659d9a183226b286178c8yangguo@chromium.org GetTransitionMap()->Print(out); 9299aa490225c81012235659d9a183226b286178c8yangguo@chromium.org PrintF(out, "\n"); 9399aa490225c81012235659d9a183226b286178c8yangguo@chromium.org return; 9499aa490225c81012235659d9a183226b286178c8yangguo@chromium.org case CALLBACKS: 9599aa490225c81012235659d9a183226b286178c8yangguo@chromium.org PrintF(out, " -type = callbacks transition\n"); 9699aa490225c81012235659d9a183226b286178c8yangguo@chromium.org PrintF(out, " -callback object:\n"); 9799aa490225c81012235659d9a183226b286178c8yangguo@chromium.org GetCallbackObject()->Print(out); 9899aa490225c81012235659d9a183226b286178c8yangguo@chromium.org return; 9999aa490225c81012235659d9a183226b286178c8yangguo@chromium.org default: 10099aa490225c81012235659d9a183226b286178c8yangguo@chromium.org UNREACHABLE(); 10199aa490225c81012235659d9a183226b286178c8yangguo@chromium.org return; 10299aa490225c81012235659d9a183226b286178c8yangguo@chromium.org } 1037a6fc815d62905d0c52705b96225b1bd23e00a43jkummerow@chromium.org case NONEXISTENT: 1047a6fc815d62905d0c52705b96225b1bd23e00a43jkummerow@chromium.org UNREACHABLE(); 1059a4089a092cad9ff23b6416b92cd5d818dc101d1mads.s.ager@gmail.com break; 10643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 10743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 10843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 10943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 110023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.orgvoid Descriptor::Print(FILE* out) { 111023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, "Descriptor "); 112023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org GetKey()->ShortPrint(out); 113023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org PrintF(out, " @ "); 114023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org GetValue()->ShortPrint(out); 11543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 11643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 11743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 11843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#endif 11943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 12043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 12143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} } // namespace v8::internal 122