Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 129 break; | 129 break; |
| 130 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: | 130 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: |
| 131 ExternalUnsignedIntArray::cast(this)->ExternalUnsignedIntArrayPrint(out); | 131 ExternalUnsignedIntArray::cast(this)->ExternalUnsignedIntArrayPrint(out); |
| 132 break; | 132 break; |
| 133 case EXTERNAL_FLOAT_ARRAY_TYPE: | 133 case EXTERNAL_FLOAT_ARRAY_TYPE: |
| 134 ExternalFloatArray::cast(this)->ExternalFloatArrayPrint(out); | 134 ExternalFloatArray::cast(this)->ExternalFloatArrayPrint(out); |
| 135 break; | 135 break; |
| 136 case EXTERNAL_DOUBLE_ARRAY_TYPE: | 136 case EXTERNAL_DOUBLE_ARRAY_TYPE: |
| 137 ExternalDoubleArray::cast(this)->ExternalDoubleArrayPrint(out); | 137 ExternalDoubleArray::cast(this)->ExternalDoubleArrayPrint(out); |
| 138 break; | 138 break; |
| 139 #define PRINT_FIXED_TYPED_ARRAY(Type) \ | |
| 140 case Fixed##Type##Array::kInstanceType: \ | |
| 141 Fixed##Type##Array::cast(this)->FixedTypedArrayPrint(out); \ | |
| 142 break; | |
| 143 | |
| 144 PRINT_FIXED_TYPED_ARRAY(Uint8) | |
| 145 PRINT_FIXED_TYPED_ARRAY(Int8) | |
| 146 PRINT_FIXED_TYPED_ARRAY(Uint16) | |
| 147 PRINT_FIXED_TYPED_ARRAY(Int16) | |
| 148 PRINT_FIXED_TYPED_ARRAY(Uint32) | |
| 149 PRINT_FIXED_TYPED_ARRAY(Int32) | |
| 150 PRINT_FIXED_TYPED_ARRAY(Float32) | |
| 151 PRINT_FIXED_TYPED_ARRAY(Float64) | |
| 152 PRINT_FIXED_TYPED_ARRAY(Uint8Clamped) | |
| 153 | |
| 154 #undef PPINT_FIXED_TYPED_ARRAY | |
| 155 | |
| 156 | |
| 139 case FILLER_TYPE: | 157 case FILLER_TYPE: |
| 140 PrintF(out, "filler"); | 158 PrintF(out, "filler"); |
| 141 break; | 159 break; |
| 142 case JS_OBJECT_TYPE: // fall through | 160 case JS_OBJECT_TYPE: // fall through |
| 143 case JS_CONTEXT_EXTENSION_OBJECT_TYPE: | 161 case JS_CONTEXT_EXTENSION_OBJECT_TYPE: |
| 144 case JS_ARRAY_TYPE: | 162 case JS_ARRAY_TYPE: |
| 145 case JS_GENERATOR_OBJECT_TYPE: | 163 case JS_GENERATOR_OBJECT_TYPE: |
| 146 case JS_REGEXP_TYPE: | 164 case JS_REGEXP_TYPE: |
| 147 JSObject::cast(this)->JSObjectPrint(out); | 165 JSObject::cast(this)->JSObjectPrint(out); |
| 148 break; | 166 break; |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 278 | 296 |
| 279 void ExternalFloatArray::ExternalFloatArrayPrint(FILE* out) { | 297 void ExternalFloatArray::ExternalFloatArrayPrint(FILE* out) { |
| 280 PrintF(out, "external float array"); | 298 PrintF(out, "external float array"); |
| 281 } | 299 } |
| 282 | 300 |
| 283 | 301 |
| 284 void ExternalDoubleArray::ExternalDoubleArrayPrint(FILE* out) { | 302 void ExternalDoubleArray::ExternalDoubleArrayPrint(FILE* out) { |
| 285 PrintF(out, "external double array"); | 303 PrintF(out, "external double array"); |
| 286 } | 304 } |
| 287 | 305 |
| 306 template <class Traits> | |
| 307 void FixedTypedArray<Traits>::FixedTypedArrayPrint(FILE* out) { | |
| 308 PrintF(out, "fixed %s", Traits::Designator()); | |
| 309 } | |
| 310 | |
| 288 | 311 |
| 289 void JSObject::PrintProperties(FILE* out) { | 312 void JSObject::PrintProperties(FILE* out) { |
| 290 if (HasFastProperties()) { | 313 if (HasFastProperties()) { |
| 291 DescriptorArray* descs = map()->instance_descriptors(); | 314 DescriptorArray* descs = map()->instance_descriptors(); |
| 292 for (int i = 0; i < map()->NumberOfOwnDescriptors(); i++) { | 315 for (int i = 0; i < map()->NumberOfOwnDescriptors(); i++) { |
| 293 PrintF(out, " "); | 316 PrintF(out, " "); |
| 294 descs->GetKey(i)->NamePrint(out); | 317 descs->GetKey(i)->NamePrint(out); |
| 295 PrintF(out, ": "); | 318 PrintF(out, ": "); |
| 296 switch (descs->GetType(i)) { | 319 switch (descs->GetType(i)) { |
| 297 case FIELD: { | 320 case FIELD: { |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 317 UNREACHABLE(); | 340 UNREACHABLE(); |
| 318 break; | 341 break; |
| 319 } | 342 } |
| 320 } | 343 } |
| 321 } else { | 344 } else { |
| 322 property_dictionary()->Print(out); | 345 property_dictionary()->Print(out); |
| 323 } | 346 } |
| 324 } | 347 } |
| 325 | 348 |
| 326 | 349 |
| 350 template<class T> | |
| 351 static void DoPrintElements(FILE *out, Object* object) { | |
| 352 T* p = T::cast(object); | |
| 353 for (int i = 0; i < p->length(); i++) { | |
| 354 PrintF(out, " %d: %d\n", i, p->get_scalar(i)); | |
| 355 } | |
| 356 } | |
| 357 | |
| 358 | |
| 359 template<class T> | |
| 360 static void DoPrintDoubleElements(FILE* out, Object* object) { | |
| 361 T* p = T::cast(object); | |
| 362 for (int i = 0; i < p->length(); i++) { | |
| 363 PrintF(out, " %d: %f\n", i, p->get_scalar(i)); | |
| 364 } | |
| 365 } | |
| 366 | |
| 367 | |
| 327 void JSObject::PrintElements(FILE* out) { | 368 void JSObject::PrintElements(FILE* out) { |
| 328 // Don't call GetElementsKind, its validation code can cause the printer to | 369 // Don't call GetElementsKind, its validation code can cause the printer to |
| 329 // fail when debugging. | 370 // fail when debugging. |
| 330 switch (map()->elements_kind()) { | 371 switch (map()->elements_kind()) { |
| 331 case FAST_HOLEY_SMI_ELEMENTS: | 372 case FAST_HOLEY_SMI_ELEMENTS: |
| 332 case FAST_SMI_ELEMENTS: | 373 case FAST_SMI_ELEMENTS: |
| 333 case FAST_HOLEY_ELEMENTS: | 374 case FAST_HOLEY_ELEMENTS: |
| 334 case FAST_ELEMENTS: { | 375 case FAST_ELEMENTS: { |
| 335 // Print in array notation for non-sparse arrays. | 376 // Print in array notation for non-sparse arrays. |
| 336 FixedArray* p = FixedArray::cast(elements()); | 377 FixedArray* p = FixedArray::cast(elements()); |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 350 if (p->is_the_hole(i)) { | 391 if (p->is_the_hole(i)) { |
| 351 PrintF(out, " %d: <the hole>", i); | 392 PrintF(out, " %d: <the hole>", i); |
| 352 } else { | 393 } else { |
| 353 PrintF(out, " %d: %g", i, p->get_scalar(i)); | 394 PrintF(out, " %d: %g", i, p->get_scalar(i)); |
| 354 } | 395 } |
| 355 PrintF(out, "\n"); | 396 PrintF(out, "\n"); |
| 356 } | 397 } |
| 357 } | 398 } |
| 358 break; | 399 break; |
| 359 } | 400 } |
| 360 case EXTERNAL_PIXEL_ELEMENTS: { | 401 |
| 361 ExternalPixelArray* p = ExternalPixelArray::cast(elements()); | 402 |
| 362 for (int i = 0; i < p->length(); i++) { | 403 #define PRINT_ELEMENTS(Kind, Type) \ |
| 363 PrintF(out, " %d: %d\n", i, p->get_scalar(i)); | 404 case Kind: { \ |
| 364 } | 405 DoPrintElements<Type>(out, elements()); \ |
| 365 break; | 406 break; \ |
| 366 } | 407 } |
|
Toon Verwaest
2013/12/23 10:40:32
Nice cleanup!
| |
| 367 case EXTERNAL_BYTE_ELEMENTS: { | 408 |
| 368 ExternalByteArray* p = ExternalByteArray::cast(elements()); | 409 #define PRINT_DOUBLE_ELEMENTS(Kind, Type) \ |
| 369 for (int i = 0; i < p->length(); i++) { | 410 case Kind: { \ |
| 370 PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); | 411 DoPrintDoubleElements<Type>(out, elements()); \ |
| 371 } | 412 break; \ |
| 372 break; | |
| 373 } | 413 } |
| 374 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: { | 414 |
| 375 ExternalUnsignedByteArray* p = | 415 PRINT_ELEMENTS(EXTERNAL_PIXEL_ELEMENTS, ExternalPixelArray) |
| 376 ExternalUnsignedByteArray::cast(elements()); | 416 PRINT_ELEMENTS(EXTERNAL_BYTE_ELEMENTS, ExternalByteArray) |
| 377 for (int i = 0; i < p->length(); i++) { | 417 PRINT_ELEMENTS(EXTERNAL_UNSIGNED_BYTE_ELEMENTS, |
| 378 PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); | 418 ExternalUnsignedByteArray) |
| 379 } | 419 PRINT_ELEMENTS(EXTERNAL_SHORT_ELEMENTS, ExternalShortArray) |
| 380 break; | 420 PRINT_ELEMENTS(EXTERNAL_UNSIGNED_SHORT_ELEMENTS, |
| 381 } | 421 ExternalUnsignedShortArray) |
| 382 case EXTERNAL_SHORT_ELEMENTS: { | 422 PRINT_ELEMENTS(EXTERNAL_INT_ELEMENTS, ExternalIntArray) |
| 383 ExternalShortArray* p = ExternalShortArray::cast(elements()); | 423 PRINT_ELEMENTS(EXTERNAL_UNSIGNED_INT_ELEMENTS, |
| 384 for (int i = 0; i < p->length(); i++) { | 424 ExternalUnsignedIntArray) |
| 385 PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); | 425 PRINT_DOUBLE_ELEMENTS(EXTERNAL_FLOAT_ELEMENTS, ExternalFloatArray) |
| 386 } | 426 PRINT_DOUBLE_ELEMENTS(EXTERNAL_DOUBLE_ELEMENTS, ExternalDoubleArray) |
| 387 break; | 427 |
| 388 } | 428 |
| 389 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: { | 429 PRINT_ELEMENTS(UINT8_ELEMENTS, FixedUint8Array) |
| 390 ExternalUnsignedShortArray* p = | 430 PRINT_ELEMENTS(UINT8_CLAMPED_ELEMENTS, FixedUint8ClampedArray) |
| 391 ExternalUnsignedShortArray::cast(elements()); | 431 PRINT_ELEMENTS(INT8_ELEMENTS, FixedInt8Array) |
| 392 for (int i = 0; i < p->length(); i++) { | 432 PRINT_ELEMENTS(UINT16_ELEMENTS, FixedUint16Array) |
| 393 PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); | 433 PRINT_ELEMENTS(INT16_ELEMENTS, FixedInt16Array) |
| 394 } | 434 PRINT_ELEMENTS(UINT32_ELEMENTS, FixedUint32Array) |
| 395 break; | 435 PRINT_ELEMENTS(INT32_ELEMENTS, FixedInt32Array) |
| 396 } | 436 PRINT_DOUBLE_ELEMENTS(FLOAT32_ELEMENTS, FixedFloat32Array) |
| 397 case EXTERNAL_INT_ELEMENTS: { | 437 PRINT_DOUBLE_ELEMENTS(FLOAT64_ELEMENTS, FixedFloat64Array) |
| 398 ExternalIntArray* p = ExternalIntArray::cast(elements()); | 438 |
| 399 for (int i = 0; i < p->length(); i++) { | 439 #undef PRINT_DOUBLE_ELEMENTS |
| 400 PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); | 440 #undef PRINT_ELEMENTS |
| 401 } | 441 |
| 402 break; | |
| 403 } | |
| 404 case EXTERNAL_UNSIGNED_INT_ELEMENTS: { | |
| 405 ExternalUnsignedIntArray* p = | |
| 406 ExternalUnsignedIntArray::cast(elements()); | |
| 407 for (int i = 0; i < p->length(); i++) { | |
| 408 PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); | |
| 409 } | |
| 410 break; | |
| 411 } | |
| 412 case EXTERNAL_FLOAT_ELEMENTS: { | |
| 413 ExternalFloatArray* p = ExternalFloatArray::cast(elements()); | |
| 414 for (int i = 0; i < p->length(); i++) { | |
| 415 PrintF(out, " %d: %f\n", i, p->get_scalar(i)); | |
| 416 } | |
| 417 break; | |
| 418 } | |
| 419 case EXTERNAL_DOUBLE_ELEMENTS: { | |
| 420 ExternalDoubleArray* p = ExternalDoubleArray::cast(elements()); | |
| 421 for (int i = 0; i < p->length(); i++) { | |
| 422 PrintF(out, " %d: %f\n", i, p->get_scalar(i)); | |
| 423 } | |
| 424 break; | |
| 425 } | |
| 426 case DICTIONARY_ELEMENTS: | 442 case DICTIONARY_ELEMENTS: |
| 427 elements()->Print(out); | 443 elements()->Print(out); |
| 428 break; | 444 break; |
| 429 case NON_STRICT_ARGUMENTS_ELEMENTS: { | 445 case NON_STRICT_ARGUMENTS_ELEMENTS: { |
| 430 FixedArray* p = FixedArray::cast(elements()); | 446 FixedArray* p = FixedArray::cast(elements()); |
| 431 PrintF(out, " parameter map:"); | 447 PrintF(out, " parameter map:"); |
| 432 for (int i = 2; i < p->length(); i++) { | 448 for (int i = 2; i < p->length(); i++) { |
| 433 PrintF(out, " %d:", i - 2); | 449 PrintF(out, " %d:", i - 2); |
| 434 p->get(i)->ShortPrint(out); | 450 p->get(i)->ShortPrint(out); |
| 435 } | 451 } |
| (...skipping 832 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1268 } | 1284 } |
| 1269 } | 1285 } |
| 1270 PrintF(out, "\n"); | 1286 PrintF(out, "\n"); |
| 1271 } | 1287 } |
| 1272 | 1288 |
| 1273 | 1289 |
| 1274 #endif // OBJECT_PRINT | 1290 #endif // OBJECT_PRINT |
| 1275 | 1291 |
| 1276 | 1292 |
| 1277 } } // namespace v8::internal | 1293 } } // namespace v8::internal |
| OLD | NEW |