13ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// Copyright 2012 the V8 project authors. All rights reserved. 29fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// Redistribution and use in source and binary forms, with or without 39fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// modification, are permitted provided that the following conditions are 49fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// met: 59fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// 69fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// * Redistributions of source code must retain the above copyright 79fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// notice, this list of conditions and the following disclaimer. 89fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// * Redistributions in binary form must reproduce the above 99fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// copyright notice, this list of conditions and the following 109fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// disclaimer in the documentation and/or other materials provided 119fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// with the distribution. 129fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// * Neither the name of Google Inc. nor the names of its 139fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// contributors may be used to endorse or promote products derived 149fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// from this software without specific prior written permission. 159fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// 169fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 179fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 189fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 199fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 209fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 219fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 229fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 239fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 249fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 259fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 269fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 279fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 289fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#include "v8.h" 299fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 309fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#include "disassembler.h" 319fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#include "disasm.h" 329fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#include "jsregexp.h" 339fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#include "objects-visiting.h" 349fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 359fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blocknamespace v8 { 369fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blocknamespace internal { 379fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 389fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#ifdef OBJECT_PRINT 399fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 409fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockstatic const char* TypeToString(InstanceType type); 419fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 429fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 439fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid MaybeObject::Print(FILE* out) { 449fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block Object* this_as_object; 459fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (ToObject(&this_as_object)) { 469fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (this_as_object->IsSmi()) { 479fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block Smi::cast(this_as_object)->SmiPrint(out); 489fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } else { 499fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::cast(this_as_object)->HeapObjectPrint(out); 509fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 519fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } else { 529fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block Failure::cast(this)->FailurePrint(out); 539fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 549fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block Flush(out); 559fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 569fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 579fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 589fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid MaybeObject::PrintLn(FILE* out) { 599fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block Print(out); 609fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n"); 619fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 629fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 639fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 649fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid HeapObject::PrintHeader(FILE* out, const char* id) { 659fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "%p: [%s]\n", reinterpret_cast<void*>(this), id); 669fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 679fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 689fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 699fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid HeapObject::HeapObjectPrint(FILE* out) { 709fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block InstanceType instance_type = map()->instance_type(); 719fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 729fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HandleScope scope; 739fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (instance_type < FIRST_NONSTRING_TYPE) { 749fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block String::cast(this)->StringPrint(out); 759fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block return; 769fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 779fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 789fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block switch (instance_type) { 799fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case MAP_TYPE: 809fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block Map::cast(this)->MapPrint(out); 819fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 829fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case HEAP_NUMBER_TYPE: 839fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapNumber::cast(this)->HeapNumberPrint(out); 849fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 853ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case FIXED_DOUBLE_ARRAY_TYPE: 863ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch FixedDoubleArray::cast(this)->FixedDoubleArrayPrint(out); 873ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch break; 889fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case FIXED_ARRAY_TYPE: 899fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block FixedArray::cast(this)->FixedArrayPrint(out); 909fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 919fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case BYTE_ARRAY_TYPE: 929fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ByteArray::cast(this)->ByteArrayPrint(out); 939fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 943ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case FREE_SPACE_TYPE: 953ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch FreeSpace::cast(this)->FreeSpacePrint(out); 963ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch break; 9744f0eee88ff00398ff7f715fab053374d808c90dSteve Block case EXTERNAL_PIXEL_ARRAY_TYPE: 9844f0eee88ff00398ff7f715fab053374d808c90dSteve Block ExternalPixelArray::cast(this)->ExternalPixelArrayPrint(out); 999fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1009fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_BYTE_ARRAY_TYPE: 1019fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalByteArray::cast(this)->ExternalByteArrayPrint(out); 1029fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1039fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE: 1049fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalUnsignedByteArray::cast(this) 1059fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ->ExternalUnsignedByteArrayPrint(out); 1069fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1079fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_SHORT_ARRAY_TYPE: 1089fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalShortArray::cast(this)->ExternalShortArrayPrint(out); 1099fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1109fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE: 1119fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalUnsignedShortArray::cast(this) 1129fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ->ExternalUnsignedShortArrayPrint(out); 1139fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1149fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_INT_ARRAY_TYPE: 1159fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalIntArray::cast(this)->ExternalIntArrayPrint(out); 1169fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1179fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: 1189fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalUnsignedIntArray::cast(this)->ExternalUnsignedIntArrayPrint(out); 1199fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1209fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_FLOAT_ARRAY_TYPE: 1219fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalFloatArray::cast(this)->ExternalFloatArrayPrint(out); 1229fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 123257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch case EXTERNAL_DOUBLE_ARRAY_TYPE: 124257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch ExternalDoubleArray::cast(this)->ExternalDoubleArrayPrint(out); 125257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch break; 1269fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case FILLER_TYPE: 1279fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "filler"); 1289fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1299fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_OBJECT_TYPE: // fall through 1309fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_CONTEXT_EXTENSION_OBJECT_TYPE: 1319fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_ARRAY_TYPE: 1329fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_REGEXP_TYPE: 1339fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block JSObject::cast(this)->JSObjectPrint(out); 1349fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1359fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case ODDBALL_TYPE: 1369fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block Oddball::cast(this)->to_string()->Print(out); 1379fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1389fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_FUNCTION_TYPE: 1399fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block JSFunction::cast(this)->JSFunctionPrint(out); 1409fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1419fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_GLOBAL_PROXY_TYPE: 1429fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block JSGlobalProxy::cast(this)->JSGlobalProxyPrint(out); 1439fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1449fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_GLOBAL_OBJECT_TYPE: 1459fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block JSGlobalObject::cast(this)->JSGlobalObjectPrint(out); 1469fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1479fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_BUILTINS_OBJECT_TYPE: 1489fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block JSBuiltinsObject::cast(this)->JSBuiltinsObjectPrint(out); 1499fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1509fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_VALUE_TYPE: 1519fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "Value wrapper around:"); 1529fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block JSValue::cast(this)->value()->Print(out); 1539fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1543ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case JS_DATE_TYPE: 1553ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch JSDate::cast(this)->value()->Print(out); 1563ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch break; 1579fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case CODE_TYPE: 1589fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block Code::cast(this)->CodePrint(out); 1599fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 160257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch case JS_PROXY_TYPE: 161257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch JSProxy::cast(this)->JSProxyPrint(out); 162257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch break; 163589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch case JS_FUNCTION_PROXY_TYPE: 164589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch JSFunctionProxy::cast(this)->JSFunctionProxyPrint(out); 165589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch break; 16669a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch case JS_WEAK_MAP_TYPE: 16769a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch JSWeakMap::cast(this)->JSWeakMapPrint(out); 16869a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch break; 169257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch case FOREIGN_TYPE: 170257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Foreign::cast(this)->ForeignPrint(out); 1719fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1729fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case SHARED_FUNCTION_INFO_TYPE: 1739fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block SharedFunctionInfo::cast(this)->SharedFunctionInfoPrint(out); 1749fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1751e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block case JS_MESSAGE_OBJECT_TYPE: 1761e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block JSMessageObject::cast(this)->JSMessageObjectPrint(out); 1771e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block break; 1789fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_GLOBAL_PROPERTY_CELL_TYPE: 1799fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block JSGlobalPropertyCell::cast(this)->JSGlobalPropertyCellPrint(out); 1809fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1819fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#define MAKE_STRUCT_CASE(NAME, Name, name) \ 1829fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case NAME##_TYPE: \ 1839fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block Name::cast(this)->Name##Print(out); \ 1849fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1859fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block STRUCT_LIST(MAKE_STRUCT_CASE) 1869fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#undef MAKE_STRUCT_CASE 1879fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 1889fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block default: 1899fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "UNKNOWN TYPE %d", map()->instance_type()); 1909fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block UNREACHABLE(); 1919fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 1929fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 1939fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 1949fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 1959fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 1969fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid ByteArray::ByteArrayPrint(FILE* out) { 1979fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "byte array, data starts at %p", GetDataStartAddress()); 1989fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 1999fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2009fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2013ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvoid FreeSpace::FreeSpacePrint(FILE* out) { 2023ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "free space, size %d", Size()); 2033ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 2043ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2053ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 20644f0eee88ff00398ff7f715fab053374d808c90dSteve Blockvoid ExternalPixelArray::ExternalPixelArrayPrint(FILE* out) { 20744f0eee88ff00398ff7f715fab053374d808c90dSteve Block PrintF(out, "external pixel array"); 2089fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 2099fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2109fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2119fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid ExternalByteArray::ExternalByteArrayPrint(FILE* out) { 2129fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "external byte array"); 2139fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 2149fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2159fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2169fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid ExternalUnsignedByteArray::ExternalUnsignedByteArrayPrint(FILE* out) { 2179fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "external unsigned byte array"); 2189fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 2199fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2209fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2219fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid ExternalShortArray::ExternalShortArrayPrint(FILE* out) { 2229fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "external short array"); 2239fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 2249fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2259fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2269fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid ExternalUnsignedShortArray::ExternalUnsignedShortArrayPrint(FILE* out) { 2279fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "external unsigned short array"); 2289fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 2299fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2309fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2319fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid ExternalIntArray::ExternalIntArrayPrint(FILE* out) { 2329fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "external int array"); 2339fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 2349fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2359fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2369fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid ExternalUnsignedIntArray::ExternalUnsignedIntArrayPrint(FILE* out) { 2379fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "external unsigned int array"); 2389fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 2399fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2409fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2419fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid ExternalFloatArray::ExternalFloatArrayPrint(FILE* out) { 2429fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "external float array"); 2439fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 2449fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 2459fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 246257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdochvoid ExternalDoubleArray::ExternalDoubleArrayPrint(FILE* out) { 247257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch PrintF(out, "external double array"); 248257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch} 249257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch 250257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch 2519fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid JSObject::PrintProperties(FILE* out) { 2529fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (HasFastProperties()) { 2539fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block DescriptorArray* descs = map()->instance_descriptors(); 2549fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < descs->number_of_descriptors(); i++) { 2559fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " "); 2569fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block descs->GetKey(i)->StringPrint(out); 2579fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, ": "); 2589fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block switch (descs->GetType(i)) { 2599fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case FIELD: { 2609fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block int index = descs->GetFieldIndex(i); 2619fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block FastPropertyAt(index)->ShortPrint(out); 2629fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " (field at offset %d)\n", index); 2639fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 2649fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 2659fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case CONSTANT_FUNCTION: 2669fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block descs->GetConstantFunction(i)->ShortPrint(out); 2679fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " (constant function)\n"); 2689fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 2699fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case CALLBACKS: 2709fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block descs->GetCallbacksObject(i)->ShortPrint(out); 2719fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " (callback)\n"); 2729fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 2733ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case ELEMENTS_TRANSITION: { 2743ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "(elements transition to "); 2753ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Object* descriptor_contents = descs->GetValue(i); 2763ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if (descriptor_contents->IsMap()) { 2773ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Map* map = Map::cast(descriptor_contents); 2783ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintElementsKind(out, map->elements_kind()); 2793ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } else { 2803ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch FixedArray* map_array = FixedArray::cast(descriptor_contents); 2813ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for (int i = 0; i < map_array->length(); ++i) { 2823ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Map* map = Map::cast(map_array->get(i)); 2833ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if (i != 0) { 2843ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, ", "); 2853ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2863ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintElementsKind(out, map->elements_kind()); 2873ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2883ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2893ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, ")\n"); 2903ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch break; 2913ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2929fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case MAP_TRANSITION: 2933ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "(map transition)\n"); 2949fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 2959fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case CONSTANT_TRANSITION: 2963ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "(constant transition)\n"); 2979fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 2989fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case NULL_DESCRIPTOR: 2993ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "(null descriptor)\n"); 3009fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 3013ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case NORMAL: // only in slow mode 3023ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case HANDLER: // only in lookup results, not in descriptors 3033ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case INTERCEPTOR: // only in lookup results, not in descriptors 3049fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block UNREACHABLE(); 3059fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 3069fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3079fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3089fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } else { 3099fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block property_dictionary()->Print(out); 3109fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3119fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 3129fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 3139fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 3149fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid JSObject::PrintElements(FILE* out) { 3153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch // Don't call GetElementsKind, its validation code can cause the printer to 3163ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch // fail when debugging. 3173ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch switch (map()->elements_kind()) { 3183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case FAST_SMI_ONLY_ELEMENTS: 3199fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case FAST_ELEMENTS: { 3209fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block // Print in array notation for non-sparse arrays. 3219fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block FixedArray* p = FixedArray::cast(elements()); 3229fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < p->length(); i++) { 3239fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " %d: ", i); 3249fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block p->get(i)->ShortPrint(out); 3259fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n"); 3269fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3279fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 3289fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 32969a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch case FAST_DOUBLE_ELEMENTS: { 33069a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch // Print in array notation for non-sparse arrays. 3315710ceac03e2cf7a164ad7393b5a6b6114ea45e6Ben Murdoch if (elements()->length() > 0) { 3325710ceac03e2cf7a164ad7393b5a6b6114ea45e6Ben Murdoch FixedDoubleArray* p = FixedDoubleArray::cast(elements()); 3335710ceac03e2cf7a164ad7393b5a6b6114ea45e6Ben Murdoch for (int i = 0; i < p->length(); i++) { 3345710ceac03e2cf7a164ad7393b5a6b6114ea45e6Ben Murdoch if (p->is_the_hole(i)) { 3355710ceac03e2cf7a164ad7393b5a6b6114ea45e6Ben Murdoch PrintF(out, " %d: <the hole>", i); 3365710ceac03e2cf7a164ad7393b5a6b6114ea45e6Ben Murdoch } else { 3375710ceac03e2cf7a164ad7393b5a6b6114ea45e6Ben Murdoch PrintF(out, " %d: %g", i, p->get_scalar(i)); 3385710ceac03e2cf7a164ad7393b5a6b6114ea45e6Ben Murdoch } 3395710ceac03e2cf7a164ad7393b5a6b6114ea45e6Ben Murdoch PrintF(out, "\n"); 34069a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch } 34169a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch } 34269a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch break; 34369a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch } 34444f0eee88ff00398ff7f715fab053374d808c90dSteve Block case EXTERNAL_PIXEL_ELEMENTS: { 34544f0eee88ff00398ff7f715fab053374d808c90dSteve Block ExternalPixelArray* p = ExternalPixelArray::cast(elements()); 3469fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < p->length(); i++) { 34769a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch PrintF(out, " %d: %d\n", i, p->get_scalar(i)); 3489fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3499fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 3509fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3519fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_BYTE_ELEMENTS: { 3529fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalByteArray* p = ExternalByteArray::cast(elements()); 3539fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < p->length(); i++) { 35469a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); 3559fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3569fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 3579fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3589fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: { 3599fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalUnsignedByteArray* p = 3609fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalUnsignedByteArray::cast(elements()); 3619fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < p->length(); i++) { 36269a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); 3639fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3649fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 3659fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3669fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_SHORT_ELEMENTS: { 3679fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalShortArray* p = ExternalShortArray::cast(elements()); 3689fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < p->length(); i++) { 36969a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); 3709fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3719fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 3729fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3739fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: { 3749fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalUnsignedShortArray* p = 3759fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalUnsignedShortArray::cast(elements()); 3769fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < p->length(); i++) { 37769a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); 3789fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3799fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 3809fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3819fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_INT_ELEMENTS: { 3829fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalIntArray* p = ExternalIntArray::cast(elements()); 3839fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < p->length(); i++) { 38469a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); 3859fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3869fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 3879fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3889fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_UNSIGNED_INT_ELEMENTS: { 3899fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalUnsignedIntArray* p = 3909fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalUnsignedIntArray::cast(elements()); 3919fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < p->length(); i++) { 39269a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); 3939fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3949fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 3959fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 3969fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_FLOAT_ELEMENTS: { 3979fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block ExternalFloatArray* p = ExternalFloatArray::cast(elements()); 3989fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < p->length(); i++) { 39969a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch PrintF(out, " %d: %f\n", i, p->get_scalar(i)); 4009fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 4019fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 4029fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 403257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch case EXTERNAL_DOUBLE_ELEMENTS: { 404257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch ExternalDoubleArray* p = ExternalDoubleArray::cast(elements()); 405257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch for (int i = 0; i < p->length(); i++) { 40669a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch PrintF(out, " %d: %f\n", i, p->get_scalar(i)); 407257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch } 408257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch break; 409257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch } 4109fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case DICTIONARY_ELEMENTS: 4119fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block elements()->Print(out); 4129fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break; 4133fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch case NON_STRICT_ARGUMENTS_ELEMENTS: { 4143fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch FixedArray* p = FixedArray::cast(elements()); 4153fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch for (int i = 2; i < p->length(); i++) { 4163fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch PrintF(out, " %d: ", i); 4173fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch p->get(i)->ShortPrint(out); 4183fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch PrintF(out, "\n"); 4193fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 4203fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch break; 4213fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 4229fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 4239fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 4249fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 4259fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 4269fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid JSObject::JSObjectPrint(FILE* out) { 4279fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "%p: [JSObject]\n", reinterpret_cast<void*>(this)); 4283ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, " - map = %p [", reinterpret_cast<void*>(map())); 4293ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch // Don't call GetElementsKind, its validation code can cause the printer to 4303ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch // fail when debugging. 4313ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintElementsKind(out, this->map()->elements_kind()); 4323ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, 4333ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "]\n - prototype = %p\n", 4343ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch reinterpret_cast<void*>(GetPrototype())); 4359fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " {\n"); 4369fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintProperties(out); 4379fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintElements(out); 4389fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " }\n"); 4399fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 4409fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 4419fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 4429fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockstatic const char* TypeToString(InstanceType type) { 4439fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block switch (type) { 4449fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case INVALID_TYPE: return "INVALID"; 4459fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case MAP_TYPE: return "MAP"; 4469fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case HEAP_NUMBER_TYPE: return "HEAP_NUMBER"; 4479fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case SYMBOL_TYPE: return "SYMBOL"; 4489fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case ASCII_SYMBOL_TYPE: return "ASCII_SYMBOL"; 4499fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case CONS_SYMBOL_TYPE: return "CONS_SYMBOL"; 4509fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case CONS_ASCII_SYMBOL_TYPE: return "CONS_ASCII_SYMBOL"; 4519fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_ASCII_SYMBOL_TYPE: 4529fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_SYMBOL_WITH_ASCII_DATA_TYPE: 4539fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_SYMBOL_TYPE: return "EXTERNAL_SYMBOL"; 4543ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case SHORT_EXTERNAL_ASCII_SYMBOL_TYPE: 4553ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case SHORT_EXTERNAL_SYMBOL_WITH_ASCII_DATA_TYPE: 4563ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case SHORT_EXTERNAL_SYMBOL_TYPE: return "SHORT_EXTERNAL_SYMBOL"; 4579fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case ASCII_STRING_TYPE: return "ASCII_STRING"; 4589fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case STRING_TYPE: return "TWO_BYTE_STRING"; 4599fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case CONS_STRING_TYPE: 4609fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case CONS_ASCII_STRING_TYPE: return "CONS_STRING"; 4619fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_ASCII_STRING_TYPE: 4629fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_STRING_WITH_ASCII_DATA_TYPE: 4639fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_STRING_TYPE: return "EXTERNAL_STRING"; 4643ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case SHORT_EXTERNAL_ASCII_STRING_TYPE: 4653ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case SHORT_EXTERNAL_STRING_WITH_ASCII_DATA_TYPE: 4663ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case SHORT_EXTERNAL_STRING_TYPE: return "SHORT_EXTERNAL_STRING"; 4679fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case FIXED_ARRAY_TYPE: return "FIXED_ARRAY"; 4689fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case BYTE_ARRAY_TYPE: return "BYTE_ARRAY"; 4693ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case FREE_SPACE_TYPE: return "FREE_SPACE"; 47044f0eee88ff00398ff7f715fab053374d808c90dSteve Block case EXTERNAL_PIXEL_ARRAY_TYPE: return "EXTERNAL_PIXEL_ARRAY"; 4719fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_BYTE_ARRAY_TYPE: return "EXTERNAL_BYTE_ARRAY"; 4729fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE: 4739fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block return "EXTERNAL_UNSIGNED_BYTE_ARRAY"; 4749fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_SHORT_ARRAY_TYPE: return "EXTERNAL_SHORT_ARRAY"; 4759fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE: 4769fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block return "EXTERNAL_UNSIGNED_SHORT_ARRAY"; 4779fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_INT_ARRAY_TYPE: return "EXTERNAL_INT_ARRAY"; 4789fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: 4799fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block return "EXTERNAL_UNSIGNED_INT_ARRAY"; 4809fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case EXTERNAL_FLOAT_ARRAY_TYPE: return "EXTERNAL_FLOAT_ARRAY"; 481257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch case EXTERNAL_DOUBLE_ARRAY_TYPE: return "EXTERNAL_DOUBLE_ARRAY"; 4829fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case FILLER_TYPE: return "FILLER"; 4839fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_OBJECT_TYPE: return "JS_OBJECT"; 4849fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_CONTEXT_EXTENSION_OBJECT_TYPE: return "JS_CONTEXT_EXTENSION_OBJECT"; 4859fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case ODDBALL_TYPE: return "ODDBALL"; 4869fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_GLOBAL_PROPERTY_CELL_TYPE: return "JS_GLOBAL_PROPERTY_CELL"; 4879fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case SHARED_FUNCTION_INFO_TYPE: return "SHARED_FUNCTION_INFO"; 4889fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_FUNCTION_TYPE: return "JS_FUNCTION"; 4899fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case CODE_TYPE: return "CODE"; 4909fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_ARRAY_TYPE: return "JS_ARRAY"; 491257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch case JS_PROXY_TYPE: return "JS_PROXY"; 49269a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch case JS_WEAK_MAP_TYPE: return "JS_WEAK_MAP"; 4939fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_REGEXP_TYPE: return "JS_REGEXP"; 4949fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_VALUE_TYPE: return "JS_VALUE"; 4959fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_GLOBAL_OBJECT_TYPE: return "JS_GLOBAL_OBJECT"; 4969fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_BUILTINS_OBJECT_TYPE: return "JS_BUILTINS_OBJECT"; 4979fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block case JS_GLOBAL_PROXY_TYPE: return "JS_GLOBAL_PROXY"; 498257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch case FOREIGN_TYPE: return "FOREIGN"; 4991e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block case JS_MESSAGE_OBJECT_TYPE: return "JS_MESSAGE_OBJECT_TYPE"; 5009fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#define MAKE_STRUCT_CASE(NAME, Name, name) case NAME##_TYPE: return #NAME; 5019fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block STRUCT_LIST(MAKE_STRUCT_CASE) 5029fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#undef MAKE_STRUCT_CASE 503257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch default: return "UNKNOWN"; 5049fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 5059fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 5069fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 5079fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 5089fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid Map::MapPrint(FILE* out) { 5099fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "Map"); 5109fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - type: %s\n", TypeToString(instance_type())); 5119fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - instance size: %d\n", instance_size()); 5129fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - inobject properties: %d\n", inobject_properties()); 5133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, " - elements kind: "); 5143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintElementsKind(out, elements_kind()); 5153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "\n - pre-allocated property fields: %d\n", 5169fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block pre_allocated_property_fields()); 5179fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - unused property fields: %d\n", unused_property_fields()); 5189fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (is_hidden_prototype()) { 5199fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - hidden_prototype\n"); 5209fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 5219fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (has_named_interceptor()) { 5229fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - named_interceptor\n"); 5239fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 5249fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (has_indexed_interceptor()) { 5259fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - indexed_interceptor\n"); 5269fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 5279fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (is_undetectable()) { 5289fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - undetectable\n"); 5299fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 5309fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (has_instance_call_handler()) { 5319fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - instance_call_handler\n"); 5329fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 5339fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (is_access_check_needed()) { 5349fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - access_check_needed\n"); 5359fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 5369fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - instance descriptors: "); 5379fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block instance_descriptors()->ShortPrint(out); 5389fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - prototype: "); 5399fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block prototype()->ShortPrint(out); 5409fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - constructor: "); 5419fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block constructor()->ShortPrint(out); 5429fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n"); 5439fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 5449fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 5459fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 5469fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid CodeCache::CodeCachePrint(FILE* out) { 5479fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "CodeCache"); 5489fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - default_cache: "); 5499fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block default_cache()->ShortPrint(out); 5509fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - normal_type_cache: "); 5519fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block normal_type_cache()->ShortPrint(out); 5523fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch} 5533fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 5543fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 5553fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdochvoid PolymorphicCodeCache::PolymorphicCodeCachePrint(FILE* out) { 5563fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch HeapObject::PrintHeader(out, "PolymorphicCodeCache"); 5573fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch PrintF(out, "\n - cache: "); 5583fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch cache()->ShortPrint(out); 5599fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 5609fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 5619fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 5623ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvoid TypeFeedbackInfo::TypeFeedbackInfoPrint(FILE* out) { 5633ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch HeapObject::PrintHeader(out, "TypeFeedbackInfo"); 5648f9999fcc44cfd4f5e1140c6678bbca4cf8ea1c7Ben Murdoch PrintF(out, "\n - ic_total_count: %d, ic_with_type_info_count: %d", 5658f9999fcc44cfd4f5e1140c6678bbca4cf8ea1c7Ben Murdoch ic_total_count(), ic_with_type_info_count()); 5663ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "\n - type_feedback_cells: "); 5673ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch type_feedback_cells()->FixedArrayPrint(out); 5683ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 5693ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 5703ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 5713ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvoid AliasedArgumentsEntry::AliasedArgumentsEntryPrint(FILE* out) { 5723ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch HeapObject::PrintHeader(out, "AliasedArgumentsEntry"); 5733ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "\n - aliased_context_slot: %d", aliased_context_slot()); 5743ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 5753ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 5763ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 5779fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid FixedArray::FixedArrayPrint(FILE* out) { 5789fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "FixedArray"); 5799fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - length: %d", length()); 5809fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < length(); i++) { 5819fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n [%d]: ", i); 5829fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block get(i)->ShortPrint(out); 5839fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 5849fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n"); 5859fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 5869fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 5879fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 5883ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvoid FixedDoubleArray::FixedDoubleArrayPrint(FILE* out) { 5893ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch HeapObject::PrintHeader(out, "FixedDoubleArray"); 5903ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, " - length: %d", length()); 5913ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for (int i = 0; i < length(); i++) { 5923ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if (is_the_hole(i)) { 5933ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "\n [%d]: <the hole>", i); 5943ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } else { 5953ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "\n [%d]: %g", i, get_scalar(i)); 5963ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 5973ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 5983ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "\n"); 5993ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 6003ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 6013ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 6029fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid JSValue::JSValuePrint(FILE* out) { 6039fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "ValueObject"); 6049fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block value()->Print(out); 6059fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 6069fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 6079fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 6081e0659c275bb392c045087af4f6b0d7565cb3d77Steve Blockvoid JSMessageObject::JSMessageObjectPrint(FILE* out) { 6091e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block HeapObject::PrintHeader(out, "JSMessageObject"); 6101e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block PrintF(out, " - type: "); 6111e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block type()->ShortPrint(out); 6121e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block PrintF(out, "\n - arguments: "); 6131e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block arguments()->ShortPrint(out); 6141e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block PrintF(out, "\n - start_position: %d", start_position()); 6151e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block PrintF(out, "\n - end_position: %d", end_position()); 6161e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block PrintF(out, "\n - script: "); 6171e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block script()->ShortPrint(out); 6181e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block PrintF(out, "\n - stack_trace: "); 6191e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block stack_trace()->ShortPrint(out); 6201e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block PrintF(out, "\n - stack_frames: "); 6211e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block stack_frames()->ShortPrint(out); 6221e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block PrintF(out, "\n"); 6231e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block} 6241e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block 6251e0659c275bb392c045087af4f6b0d7565cb3d77Steve Block 6269fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid String::StringPrint(FILE* out) { 6279fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (StringShape(this).IsSymbol()) { 6289fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "#"); 6299fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } else if (StringShape(this).IsCons()) { 6309fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "c\""); 6319fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } else { 6329fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\""); 6339fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 6349fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 6359fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block const char truncated_epilogue[] = "...<truncated>"; 6369fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block int len = length(); 6379fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (!FLAG_use_verbose_printer) { 6389fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (len > 100) { 6399fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block len = 100 - sizeof(truncated_epilogue); 6409fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 6419fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 6429fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < len; i++) { 6439fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "%c", Get(i)); 6449fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 6459fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (len != length()) { 6469fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "%s", truncated_epilogue); 6479fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 6489fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 6499fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (!StringShape(this).IsSymbol()) PrintF(out, "\""); 6509fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 6519fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 6529fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 65369a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch// This method is only meant to be called from gdb for debugging purposes. 6543ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// Since the string can also be in two-byte encoding, non-ASCII characters 65569a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch// will be ignored in the output. 65669a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdochchar* String::ToAsciiArray() { 65769a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch // Static so that subsequent calls frees previously allocated space. 65869a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch // This also means that previous results will be overwritten. 65969a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch static char* buffer = NULL; 66069a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch if (buffer != NULL) free(buffer); 66169a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch buffer = new char[length()+1]; 66269a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch WriteToFlat(this, buffer, 0, length()); 66369a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch buffer[length()] = 0; 66469a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch return buffer; 66569a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch} 66669a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch 66769a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch 6683ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochstatic const char* const weekdays[] = { 6693ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "???", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" 6703ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch}; 6713ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 6723ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvoid JSDate::JSDatePrint(FILE* out) { 6733ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch HeapObject::PrintHeader(out, "JSDate"); 6743ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, " - map = 0x%p\n", reinterpret_cast<void*>(map())); 6753ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, " - value = "); 6763ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch value()->Print(out); 6773ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if (!year()->IsSmi()) { 6783ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, " - time = NaN\n"); 6793ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } else { 6803ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, " - time = %s %04d/%02d/%02d %02d:%02d:%02d\n", 6813ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch weekdays[weekday()->IsSmi() ? Smi::cast(weekday())->value() + 1 : 0], 6823ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch year()->IsSmi() ? Smi::cast(year())->value() : -1, 6833ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch month()->IsSmi() ? Smi::cast(month())->value() : -1, 6843ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch day()->IsSmi() ? Smi::cast(day())->value() : -1, 6853ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch hour()->IsSmi() ? Smi::cast(hour())->value() : -1, 6863ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch min()->IsSmi() ? Smi::cast(min())->value() : -1, 6873ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch sec()->IsSmi() ? Smi::cast(sec())->value() : -1); 6883ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 6893ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 6903ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 6913ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 692257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdochvoid JSProxy::JSProxyPrint(FILE* out) { 693257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch HeapObject::PrintHeader(out, "JSProxy"); 694257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch PrintF(out, " - map = 0x%p\n", reinterpret_cast<void*>(map())); 695257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch PrintF(out, " - handler = "); 696257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch handler()->Print(out); 6973ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, " - hash = "); 6983ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch hash()->Print(out); 699257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch PrintF(out, "\n"); 700257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch} 701257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch 702257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch 703589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdochvoid JSFunctionProxy::JSFunctionProxyPrint(FILE* out) { 704589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch HeapObject::PrintHeader(out, "JSFunctionProxy"); 705589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch PrintF(out, " - map = 0x%p\n", reinterpret_cast<void*>(map())); 706589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch PrintF(out, " - handler = "); 707589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch handler()->Print(out); 708589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch PrintF(out, " - call_trap = "); 709589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch call_trap()->Print(out); 710589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch PrintF(out, " - construct_trap = "); 711589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch construct_trap()->Print(out); 712589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch PrintF(out, "\n"); 713589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch} 714589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch 715589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch 71669a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdochvoid JSWeakMap::JSWeakMapPrint(FILE* out) { 71769a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch HeapObject::PrintHeader(out, "JSWeakMap"); 71869a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch PrintF(out, " - map = 0x%p\n", reinterpret_cast<void*>(map())); 71969a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch PrintF(out, " - table = "); 72069a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch table()->ShortPrint(out); 72169a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch PrintF(out, "\n"); 72269a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch} 72369a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch 72469a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdoch 7259fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid JSFunction::JSFunctionPrint(FILE* out) { 7269fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "Function"); 7279fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - map = 0x%p\n", reinterpret_cast<void*>(map())); 7289fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - initial_map = "); 7299fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (has_initial_map()) { 7309fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block initial_map()->ShortPrint(out); 7319fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 7329fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - shared_info = "); 7339fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block shared()->ShortPrint(out); 7349fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - name = "); 7359fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block shared()->name()->Print(out); 7369fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - context = "); 7379fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block unchecked_context()->ShortPrint(out); 7389fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - code = "); 7399fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block code()->ShortPrint(out); 7409fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n"); 7419fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 7429fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintProperties(out); 7439fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintElements(out); 7449fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 7459fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n"); 7469fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 7479fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 7489fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 7499fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid SharedFunctionInfo::SharedFunctionInfoPrint(FILE* out) { 7509fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "SharedFunctionInfo"); 7519fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " - name: "); 7529fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block name()->ShortPrint(out); 7539fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - expected_nof_properties: %d", expected_nof_properties()); 7549fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - instance class name = "); 7559fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block instance_class_name()->Print(out); 7569fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - code = "); 7579fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block code()->ShortPrint(out); 7589fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - source code = "); 7599fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block GetSourceCode()->ShortPrint(out); 7609fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block // Script files are often large, hard to read. 7619fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block // PrintF(out, "\n - script ="); 7629fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block // script()->Print(out); 7639fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - function token position = %d", function_token_position()); 7649fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - start position = %d", start_position()); 7659fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - end position = %d", end_position()); 7669fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - is expression = %d", is_expression()); 7679fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - debug info = "); 7689fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block debug_info()->ShortPrint(out); 7699fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - length = %d", length()); 7709fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - has_only_simple_this_property_assignments = %d", 7719fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block has_only_simple_this_property_assignments()); 7729fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - this_property_assignments = "); 7739fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block this_property_assignments()->ShortPrint(out); 7749fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n"); 7759fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 7769fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 7779fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 7789fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid JSGlobalProxy::JSGlobalProxyPrint(FILE* out) { 7799fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "global_proxy"); 7809fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block JSObjectPrint(out); 7819fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "context : "); 7829fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block context()->ShortPrint(out); 7839fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n"); 7849fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 7859fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 7869fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 7879fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid JSGlobalObject::JSGlobalObjectPrint(FILE* out) { 7889fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "global "); 7899fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block JSObjectPrint(out); 7909fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "global context : "); 7919fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block global_context()->ShortPrint(out); 7929fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n"); 7939fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 7949fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 7959fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 7969fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid JSBuiltinsObject::JSBuiltinsObjectPrint(FILE* out) { 7979fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "builtins "); 7989fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block JSObjectPrint(out); 7999fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 8009fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8019fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8029fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid JSGlobalPropertyCell::JSGlobalPropertyCellPrint(FILE* out) { 8039fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "JSGlobalPropertyCell"); 8049fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 8059fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8069fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8079fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid Code::CodePrint(FILE* out) { 8089fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "Code"); 8099fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#ifdef ENABLE_DISASSEMBLER 8109fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block if (FLAG_use_verbose_printer) { 8119fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block Disassemble(NULL, out); 8129fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 8139fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#endif 8149fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 8159fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8169fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 817257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdochvoid Foreign::ForeignPrint(FILE* out) { 8183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "foreign address : %p", foreign_address()); 8199fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 8209fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8219fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8229fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid AccessorInfo::AccessorInfoPrint(FILE* out) { 8239fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "AccessorInfo"); 8249fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - getter: "); 8259fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block getter()->ShortPrint(out); 8269fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - setter: "); 8279fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block setter()->ShortPrint(out); 8289fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - name: "); 8299fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block name()->ShortPrint(out); 8309fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - data: "); 8319fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block data()->ShortPrint(out); 8329fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - flag: "); 8339fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block flag()->ShortPrint(out); 8349fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 8359fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8369fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8373ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvoid AccessorPair::AccessorPairPrint(FILE* out) { 8383ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch HeapObject::PrintHeader(out, "AccessorPair"); 8393ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "\n - getter: "); 8403ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch getter()->ShortPrint(out); 8413ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "\n - setter: "); 8423ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch setter()->ShortPrint(out); 8433ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 8443ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 8453ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 8469fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid AccessCheckInfo::AccessCheckInfoPrint(FILE* out) { 8479fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "AccessCheckInfo"); 8489fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - named_callback: "); 8499fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block named_callback()->ShortPrint(out); 8509fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - indexed_callback: "); 8519fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block indexed_callback()->ShortPrint(out); 8529fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - data: "); 8539fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block data()->ShortPrint(out); 8549fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 8559fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8569fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8579fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid InterceptorInfo::InterceptorInfoPrint(FILE* out) { 8589fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "InterceptorInfo"); 8599fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - getter: "); 8609fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block getter()->ShortPrint(out); 8619fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - setter: "); 8629fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block setter()->ShortPrint(out); 8639fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - query: "); 8649fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block query()->ShortPrint(out); 8659fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - deleter: "); 8669fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block deleter()->ShortPrint(out); 8679fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - enumerator: "); 8689fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block enumerator()->ShortPrint(out); 8699fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - data: "); 8709fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block data()->ShortPrint(out); 8719fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 8729fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8739fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8749fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid CallHandlerInfo::CallHandlerInfoPrint(FILE* out) { 8759fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "CallHandlerInfo"); 8769fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - callback: "); 8779fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block callback()->ShortPrint(out); 8789fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - data: "); 8799fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block data()->ShortPrint(out); 8809fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - call_stub_cache: "); 8819fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 8829fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8839fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 8849fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid FunctionTemplateInfo::FunctionTemplateInfoPrint(FILE* out) { 8859fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "FunctionTemplateInfo"); 8869fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - class name: "); 8879fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block class_name()->ShortPrint(out); 8889fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - tag: "); 8899fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block tag()->ShortPrint(out); 8909fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - property_list: "); 8919fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block property_list()->ShortPrint(out); 8929fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - serial_number: "); 8939fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block serial_number()->ShortPrint(out); 8949fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - call_code: "); 8959fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block call_code()->ShortPrint(out); 8969fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - property_accessors: "); 8979fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block property_accessors()->ShortPrint(out); 8989fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - prototype_template: "); 8999fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block prototype_template()->ShortPrint(out); 9009fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - parent_template: "); 9019fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block parent_template()->ShortPrint(out); 9029fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - named_property_handler: "); 9039fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block named_property_handler()->ShortPrint(out); 9049fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - indexed_property_handler: "); 9059fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block indexed_property_handler()->ShortPrint(out); 9069fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - instance_template: "); 9079fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block instance_template()->ShortPrint(out); 9089fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - signature: "); 9099fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block signature()->ShortPrint(out); 9109fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - access_check_info: "); 9119fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block access_check_info()->ShortPrint(out); 9129fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - hidden_prototype: %s", 9139fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block hidden_prototype() ? "true" : "false"); 9149fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - undetectable: %s", undetectable() ? "true" : "false"); 9159fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - need_access_check: %s", 9169fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block needs_access_check() ? "true" : "false"); 9179fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 9189fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 9199fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 9209fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid ObjectTemplateInfo::ObjectTemplateInfoPrint(FILE* out) { 9219fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "ObjectTemplateInfo"); 9223ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, " - tag: "); 9233ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch tag()->ShortPrint(out); 9243ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "\n - property_list: "); 9253ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch property_list()->ShortPrint(out); 9269fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - constructor: "); 9279fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block constructor()->ShortPrint(out); 9289fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - internal_field_count: "); 9299fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block internal_field_count()->ShortPrint(out); 9303ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PrintF(out, "\n"); 9319fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 9329fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 9339fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 9349fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid SignatureInfo::SignatureInfoPrint(FILE* out) { 9359fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "SignatureInfo"); 9369fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - receiver: "); 9379fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block receiver()->ShortPrint(out); 9389fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - args: "); 9399fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block args()->ShortPrint(out); 9409fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 9419fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 9429fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 9439fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid TypeSwitchInfo::TypeSwitchInfoPrint(FILE* out) { 9449fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "TypeSwitchInfo"); 9459fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - types: "); 9469fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block types()->ShortPrint(out); 9479fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 9489fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 9499fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 9509fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid Script::ScriptPrint(FILE* out) { 9519fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "Script"); 9529fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - source: "); 9539fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block source()->ShortPrint(out); 9549fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - name: "); 9559fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block name()->ShortPrint(out); 9569fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - line_offset: "); 9579fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block line_offset()->ShortPrint(out); 9589fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - column_offset: "); 9599fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block column_offset()->ShortPrint(out); 9609fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - type: "); 9619fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block type()->ShortPrint(out); 9629fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - id: "); 9639fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block id()->ShortPrint(out); 9649fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - data: "); 9659fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block data()->ShortPrint(out); 9669fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - context data: "); 9679fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block context_data()->ShortPrint(out); 9689fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - wrapper: "); 9699fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block wrapper()->ShortPrint(out); 9709fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - compilation type: "); 9719fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block compilation_type()->ShortPrint(out); 9729fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - line ends: "); 9739fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block line_ends()->ShortPrint(out); 9749fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - eval from shared: "); 9759fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block eval_from_shared()->ShortPrint(out); 9769fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - eval from instructions offset: "); 9779fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block eval_from_instructions_offset()->ShortPrint(out); 9789fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n"); 9799fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 9809fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 9819fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 9829fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#ifdef ENABLE_DEBUGGER_SUPPORT 9839fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid DebugInfo::DebugInfoPrint(FILE* out) { 9849fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "DebugInfo"); 9859fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - shared: "); 9869fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block shared()->ShortPrint(out); 9879fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - original_code: "); 9889fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block original_code()->ShortPrint(out); 9899fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - code: "); 9909fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block code()->ShortPrint(out); 9919fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - break_points: "); 9929fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break_points()->Print(out); 9939fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 9949fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 9959fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 9969fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid BreakPointInfo::BreakPointInfoPrint(FILE* out) { 9979fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block HeapObject::PrintHeader(out, "BreakPointInfo"); 9989fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - code_position: %d", code_position()->value()); 9999fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - source_position: %d", source_position()->value()); 10009fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - statement_position: %d", statement_position()->value()); 10019fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n - break_point_objects: "); 10029fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block break_point_objects()->ShortPrint(out); 10039fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 10049fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#endif // ENABLE_DEBUGGER_SUPPORT 10059fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 10069fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 10079fac840a46e8b7e26894f4792ba26dde14c56b04Steve Blockvoid DescriptorArray::PrintDescriptors(FILE* out) { 10089fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "Descriptor array %d\n", number_of_descriptors()); 10099fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block for (int i = 0; i < number_of_descriptors(); i++) { 10109fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, " %d: ", i); 10119fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block Descriptor desc; 10129fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block Get(i, &desc); 10139fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block desc.Print(out); 10149fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block } 10159fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block PrintF(out, "\n"); 10169fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} 10179fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 10189fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 10199fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block#endif // OBJECT_PRINT 10209fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 10219fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block 10229fac840a46e8b7e26894f4792ba26dde14c56b04Steve Block} } // namespace v8::internal 1023