| OLD | NEW | 
|---|
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. | 
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without | 
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are | 
| 4 // met: | 4 // met: | 
| 5 // | 5 // | 
| 6 //     * Redistributions of source code must retain the above copyright | 6 //     * Redistributions of source code must retain the above copyright | 
| 7 //       notice, this list of conditions and the following disclaimer. | 7 //       notice, this list of conditions and the following disclaimer. | 
| 8 //     * Redistributions in binary form must reproduce the above | 8 //     * Redistributions in binary form must reproduce the above | 
| 9 //       copyright notice, this list of conditions and the following | 9 //       copyright notice, this list of conditions and the following | 
| 10 //       disclaimer in the documentation and/or other materials provided | 10 //       disclaimer in the documentation and/or other materials provided | 
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 75     return; | 75     return; | 
| 76   } | 76   } | 
| 77 | 77 | 
| 78   switch (instance_type) { | 78   switch (instance_type) { | 
| 79     case MAP_TYPE: | 79     case MAP_TYPE: | 
| 80       Map::cast(this)->MapPrint(out); | 80       Map::cast(this)->MapPrint(out); | 
| 81       break; | 81       break; | 
| 82     case HEAP_NUMBER_TYPE: | 82     case HEAP_NUMBER_TYPE: | 
| 83       HeapNumber::cast(this)->HeapNumberPrint(out); | 83       HeapNumber::cast(this)->HeapNumberPrint(out); | 
| 84       break; | 84       break; | 
|  | 85     case FIXED_DOUBLE_ARRAY_TYPE: | 
|  | 86       FixedDoubleArray::cast(this)->FixedDoubleArrayPrint(out); | 
|  | 87       break; | 
| 85     case FIXED_ARRAY_TYPE: | 88     case FIXED_ARRAY_TYPE: | 
| 86       FixedArray::cast(this)->FixedArrayPrint(out); | 89       FixedArray::cast(this)->FixedArrayPrint(out); | 
| 87       break; | 90       break; | 
| 88     case BYTE_ARRAY_TYPE: | 91     case BYTE_ARRAY_TYPE: | 
| 89       ByteArray::cast(this)->ByteArrayPrint(out); | 92       ByteArray::cast(this)->ByteArrayPrint(out); | 
| 90       break; | 93       break; | 
| 91     case FREE_SPACE_TYPE: | 94     case FREE_SPACE_TYPE: | 
| 92       FreeSpace::cast(this)->FreeSpacePrint(out); | 95       FreeSpace::cast(this)->FreeSpacePrint(out); | 
| 93       break; | 96       break; | 
| 94     case EXTERNAL_PIXEL_ARRAY_TYPE: | 97     case EXTERNAL_PIXEL_ARRAY_TYPE: | 
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 235 void ExternalFloatArray::ExternalFloatArrayPrint(FILE* out) { | 238 void ExternalFloatArray::ExternalFloatArrayPrint(FILE* out) { | 
| 236   PrintF(out, "external float array"); | 239   PrintF(out, "external float array"); | 
| 237 } | 240 } | 
| 238 | 241 | 
| 239 | 242 | 
| 240 void ExternalDoubleArray::ExternalDoubleArrayPrint(FILE* out) { | 243 void ExternalDoubleArray::ExternalDoubleArrayPrint(FILE* out) { | 
| 241   PrintF(out, "external double array"); | 244   PrintF(out, "external double array"); | 
| 242 } | 245 } | 
| 243 | 246 | 
| 244 | 247 | 
|  | 248 static void PrintElementsKind(FILE* out, ElementsKind kind) { | 
|  | 249   switch (kind) { | 
|  | 250     case FAST_SMI_ONLY_ELEMENTS: | 
|  | 251       PrintF(out, "FAST_SMI_ONLY_ELEMENTS"); | 
|  | 252       break; | 
|  | 253     case FAST_ELEMENTS: | 
|  | 254       PrintF(out, "FAST_ELEMENTS"); | 
|  | 255       break; | 
|  | 256     case FAST_DOUBLE_ELEMENTS: | 
|  | 257       PrintF(out, "FAST_DOUBLE_ELEMENTS"); | 
|  | 258       break; | 
|  | 259     case DICTIONARY_ELEMENTS: | 
|  | 260       PrintF(out, "DICTIONARY_ELEMENTS"); | 
|  | 261       break; | 
|  | 262     case NON_STRICT_ARGUMENTS_ELEMENTS: | 
|  | 263       PrintF(out, "NON_STRICT_ARGUMENTS_ELEMENTS"); | 
|  | 264       break; | 
|  | 265     case EXTERNAL_BYTE_ELEMENTS: | 
|  | 266       PrintF(out, "EXTERNAL_BYTE_ELEMENTS"); | 
|  | 267       break; | 
|  | 268     case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: | 
|  | 269       PrintF(out, "EXTERNAL_UNSIGNED_BYTE_ELEMENTS"); | 
|  | 270       break; | 
|  | 271     case EXTERNAL_SHORT_ELEMENTS: | 
|  | 272       PrintF(out, "EXTERNAL_SHORT_ELEMENTS"); | 
|  | 273       break; | 
|  | 274     case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: | 
|  | 275       PrintF(out, "EXTERNAL_UNSIGNED_SHORT_ELEMENTS"); | 
|  | 276       break; | 
|  | 277     case EXTERNAL_INT_ELEMENTS: | 
|  | 278       PrintF(out, "EXTERNAL_INT_ELEMENTS"); | 
|  | 279       break; | 
|  | 280     case EXTERNAL_UNSIGNED_INT_ELEMENTS: | 
|  | 281       PrintF(out, "EXTERNAL_UNSIGNED_INT_ELEMENTS"); | 
|  | 282       break; | 
|  | 283     case EXTERNAL_FLOAT_ELEMENTS: | 
|  | 284       PrintF(out, "EXTERNAL_FLOAT_ELEMENTS"); | 
|  | 285       break; | 
|  | 286     case EXTERNAL_DOUBLE_ELEMENTS: | 
|  | 287       PrintF(out, "EXTERNAL_DOUBLE_ELEMENTS"); | 
|  | 288       break; | 
|  | 289     case EXTERNAL_PIXEL_ELEMENTS: | 
|  | 290       PrintF(out, "EXTERNAL_DOUBLE_ELEMENTS"); | 
|  | 291       break; | 
|  | 292   } | 
|  | 293 } | 
|  | 294 | 
|  | 295 | 
| 245 void JSObject::PrintProperties(FILE* out) { | 296 void JSObject::PrintProperties(FILE* out) { | 
| 246   if (HasFastProperties()) { | 297   if (HasFastProperties()) { | 
| 247     DescriptorArray* descs = map()->instance_descriptors(); | 298     DescriptorArray* descs = map()->instance_descriptors(); | 
| 248     for (int i = 0; i < descs->number_of_descriptors(); i++) { | 299     for (int i = 0; i < descs->number_of_descriptors(); i++) { | 
| 249       PrintF(out, "   "); | 300       PrintF(out, "   "); | 
| 250       descs->GetKey(i)->StringPrint(out); | 301       descs->GetKey(i)->StringPrint(out); | 
| 251       PrintF(out, ": "); | 302       PrintF(out, ": "); | 
| 252       switch (descs->GetType(i)) { | 303       switch (descs->GetType(i)) { | 
| 253         case FIELD: { | 304         case FIELD: { | 
| 254           int index = descs->GetFieldIndex(i); | 305           int index = descs->GetFieldIndex(i); | 
| 255           FastPropertyAt(index)->ShortPrint(out); | 306           FastPropertyAt(index)->ShortPrint(out); | 
| 256           PrintF(out, " (field at offset %d)\n", index); | 307           PrintF(out, " (field at offset %d)\n", index); | 
| 257           break; | 308           break; | 
| 258         } | 309         } | 
| 259         case CONSTANT_FUNCTION: | 310         case CONSTANT_FUNCTION: | 
| 260           descs->GetConstantFunction(i)->ShortPrint(out); | 311           descs->GetConstantFunction(i)->ShortPrint(out); | 
| 261           PrintF(out, " (constant function)\n"); | 312           PrintF(out, " (constant function)\n"); | 
| 262           break; | 313           break; | 
| 263         case CALLBACKS: | 314         case CALLBACKS: | 
| 264           descs->GetCallbacksObject(i)->ShortPrint(out); | 315           descs->GetCallbacksObject(i)->ShortPrint(out); | 
| 265           PrintF(out, " (callback)\n"); | 316           PrintF(out, " (callback)\n"); | 
| 266           break; | 317           break; | 
| 267         case ELEMENTS_TRANSITION: | 318         case ELEMENTS_TRANSITION: | 
| 268           PrintF(out, " (elements transition)\n"); | 319           PrintF(out, "(elements transition to "); | 
|  | 320           PrintElementsKind(out, | 
|  | 321                             Map::cast(descs->GetValue(i))->elements_kind()); | 
|  | 322           PrintF(out, ")\n"); | 
| 269           break; | 323           break; | 
| 270         case MAP_TRANSITION: | 324         case MAP_TRANSITION: | 
| 271           PrintF(out, " (map transition)\n"); | 325           PrintF(out, "(map transition)\n"); | 
| 272           break; | 326           break; | 
| 273         case CONSTANT_TRANSITION: | 327         case CONSTANT_TRANSITION: | 
| 274           PrintF(out, " (constant transition)\n"); | 328           PrintF(out, "(constant transition)\n"); | 
| 275           break; | 329           break; | 
| 276         case NULL_DESCRIPTOR: | 330         case NULL_DESCRIPTOR: | 
| 277           PrintF(out, " (null descriptor)\n"); | 331           PrintF(out, "(null descriptor)\n"); | 
| 278           break; | 332           break; | 
| 279         default: | 333         default: | 
| 280           UNREACHABLE(); | 334           UNREACHABLE(); | 
| 281           break; | 335           break; | 
| 282       } | 336       } | 
| 283     } | 337     } | 
| 284   } else { | 338   } else { | 
| 285     property_dictionary()->Print(out); | 339     property_dictionary()->Print(out); | 
| 286   } | 340   } | 
| 287 } | 341 } | 
| 288 | 342 | 
| 289 | 343 | 
| 290 void JSObject::PrintElements(FILE* out) { | 344 void JSObject::PrintElements(FILE* out) { | 
| 291   switch (GetElementsKind()) { | 345   // Don't call GetElementsKind, it's validate code can cause the printer to | 
|  | 346   // fail when debugging. | 
|  | 347   switch (map()->elements_kind()) { | 
|  | 348     case FAST_SMI_ONLY_ELEMENTS: | 
| 292     case FAST_ELEMENTS: { | 349     case FAST_ELEMENTS: { | 
| 293       // Print in array notation for non-sparse arrays. | 350       // Print in array notation for non-sparse arrays. | 
| 294       FixedArray* p = FixedArray::cast(elements()); | 351       FixedArray* p = FixedArray::cast(elements()); | 
| 295       for (int i = 0; i < p->length(); i++) { | 352       for (int i = 0; i < p->length(); i++) { | 
| 296         PrintF(out, "   %d: ", i); | 353         PrintF(out, "   %d: ", i); | 
| 297         p->get(i)->ShortPrint(out); | 354         p->get(i)->ShortPrint(out); | 
| 298         PrintF(out, "\n"); | 355         PrintF(out, "\n"); | 
| 299       } | 356       } | 
| 300       break; | 357       break; | 
| 301     } | 358     } | 
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 389         PrintF(out, "\n"); | 446         PrintF(out, "\n"); | 
| 390       } | 447       } | 
| 391       break; | 448       break; | 
| 392     } | 449     } | 
| 393   } | 450   } | 
| 394 } | 451 } | 
| 395 | 452 | 
| 396 | 453 | 
| 397 void JSObject::JSObjectPrint(FILE* out) { | 454 void JSObject::JSObjectPrint(FILE* out) { | 
| 398   PrintF(out, "%p: [JSObject]\n", reinterpret_cast<void*>(this)); | 455   PrintF(out, "%p: [JSObject]\n", reinterpret_cast<void*>(this)); | 
| 399   PrintF(out, " - map = %p\n", reinterpret_cast<void*>(map())); | 456   PrintF(out, " - map = %p [", reinterpret_cast<void*>(map())); | 
| 400   PrintF(out, " - prototype = %p\n", reinterpret_cast<void*>(GetPrototype())); | 457   // Don't call GetElementsKind, it's validate code can cause the printer to | 
|  | 458   // fail when debugging. | 
|  | 459   PrintElementsKind(out, this->map()->elements_kind()); | 
|  | 460   PrintF(out, | 
|  | 461          "]\n - prototype = %p\n", | 
|  | 462          reinterpret_cast<void*>(GetPrototype())); | 
| 401   PrintF(out, " {\n"); | 463   PrintF(out, " {\n"); | 
| 402   PrintProperties(out); | 464   PrintProperties(out); | 
| 403   PrintElements(out); | 465   PrintElements(out); | 
| 404   PrintF(out, " }\n"); | 466   PrintF(out, " }\n"); | 
| 405 } | 467 } | 
| 406 | 468 | 
| 407 | 469 | 
| 408 static const char* TypeToString(InstanceType type) { | 470 static const char* TypeToString(InstanceType type) { | 
| 409   switch (type) { | 471   switch (type) { | 
| 410     case INVALID_TYPE: return "INVALID"; | 472     case INVALID_TYPE: return "INVALID"; | 
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 521   HeapObject::PrintHeader(out, "FixedArray"); | 583   HeapObject::PrintHeader(out, "FixedArray"); | 
| 522   PrintF(out, " - length: %d", length()); | 584   PrintF(out, " - length: %d", length()); | 
| 523   for (int i = 0; i < length(); i++) { | 585   for (int i = 0; i < length(); i++) { | 
| 524     PrintF(out, "\n  [%d]: ", i); | 586     PrintF(out, "\n  [%d]: ", i); | 
| 525     get(i)->ShortPrint(out); | 587     get(i)->ShortPrint(out); | 
| 526   } | 588   } | 
| 527   PrintF(out, "\n"); | 589   PrintF(out, "\n"); | 
| 528 } | 590 } | 
| 529 | 591 | 
| 530 | 592 | 
|  | 593 void FixedDoubleArray::FixedDoubleArrayPrint(FILE* out) { | 
|  | 594   HeapObject::PrintHeader(out, "FixedDoubleArray"); | 
|  | 595   PrintF(out, " - length: %d", length()); | 
|  | 596   for (int i = 0; i < length(); i++) { | 
|  | 597     PrintF(out, "\n  [%d]: %g", i, get_scalar(i)); | 
|  | 598   } | 
|  | 599   PrintF(out, "\n"); | 
|  | 600 } | 
|  | 601 | 
|  | 602 | 
| 531 void JSValue::JSValuePrint(FILE* out) { | 603 void JSValue::JSValuePrint(FILE* out) { | 
| 532   HeapObject::PrintHeader(out, "ValueObject"); | 604   HeapObject::PrintHeader(out, "ValueObject"); | 
| 533   value()->Print(out); | 605   value()->Print(out); | 
| 534 } | 606 } | 
| 535 | 607 | 
| 536 | 608 | 
| 537 void JSMessageObject::JSMessageObjectPrint(FILE* out) { | 609 void JSMessageObject::JSMessageObjectPrint(FILE* out) { | 
| 538   HeapObject::PrintHeader(out, "JSMessageObject"); | 610   HeapObject::PrintHeader(out, "JSMessageObject"); | 
| 539   PrintF(out, " - type: "); | 611   PrintF(out, " - type: "); | 
| 540   type()->ShortPrint(out); | 612   type()->ShortPrint(out); | 
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 908     desc.Print(out); | 980     desc.Print(out); | 
| 909   } | 981   } | 
| 910   PrintF(out, "\n"); | 982   PrintF(out, "\n"); | 
| 911 } | 983 } | 
| 912 | 984 | 
| 913 | 985 | 
| 914 #endif  // OBJECT_PRINT | 986 #endif  // OBJECT_PRINT | 
| 915 | 987 | 
| 916 | 988 | 
| 917 } }  // namespace v8::internal | 989 } }  // namespace v8::internal | 
| OLD | NEW | 
|---|