Index: src/objects-printer.cc |
diff --git a/src/objects-printer.cc b/src/objects-printer.cc |
index 219b6922cf54858521ea2649e95c6ace36e0b65c..ef98d57d84c9d78ea80c849611ebd7e7e25783b3 100644 |
--- a/src/objects-printer.cc |
+++ b/src/objects-printer.cc |
@@ -136,6 +136,24 @@ void HeapObject::HeapObjectPrint(FILE* out) { |
case EXTERNAL_DOUBLE_ARRAY_TYPE: |
ExternalDoubleArray::cast(this)->ExternalDoubleArrayPrint(out); |
break; |
+#define PRINT_FIXED_TYPED_ARRAY(Type) \ |
+ case Fixed##Type##Array::kInstanceType: \ |
+ Fixed##Type##Array::cast(this)->FixedTypedArrayPrint(out); \ |
+ break; |
+ |
+ PRINT_FIXED_TYPED_ARRAY(Uint8) |
+ PRINT_FIXED_TYPED_ARRAY(Int8) |
+ PRINT_FIXED_TYPED_ARRAY(Uint16) |
+ PRINT_FIXED_TYPED_ARRAY(Int16) |
+ PRINT_FIXED_TYPED_ARRAY(Uint32) |
+ PRINT_FIXED_TYPED_ARRAY(Int32) |
+ PRINT_FIXED_TYPED_ARRAY(Float32) |
+ PRINT_FIXED_TYPED_ARRAY(Float64) |
+ PRINT_FIXED_TYPED_ARRAY(Uint8Clamped) |
+ |
+#undef PPINT_FIXED_TYPED_ARRAY |
+ |
+ |
case FILLER_TYPE: |
PrintF(out, "filler"); |
break; |
@@ -285,6 +303,11 @@ void ExternalDoubleArray::ExternalDoubleArrayPrint(FILE* out) { |
PrintF(out, "external double array"); |
} |
+template <class Traits> |
+void FixedTypedArray<Traits>::FixedTypedArrayPrint(FILE* out) { |
+ PrintF(out, "fixed %s", Traits::Designator()); |
+} |
+ |
void JSObject::PrintProperties(FILE* out) { |
if (HasFastProperties()) { |
@@ -324,6 +347,24 @@ void JSObject::PrintProperties(FILE* out) { |
} |
+template<class T> |
+static void DoPrintElements(FILE *out, Object* object) { |
+ T* p = T::cast(object); |
+ for (int i = 0; i < p->length(); i++) { |
+ PrintF(out, " %d: %d\n", i, p->get_scalar(i)); |
+ } |
+} |
+ |
+ |
+template<class T> |
+static void DoPrintDoubleElements(FILE* out, Object* object) { |
+ T* p = T::cast(object); |
+ for (int i = 0; i < p->length(); i++) { |
+ PrintF(out, " %d: %f\n", i, p->get_scalar(i)); |
+ } |
+} |
+ |
+ |
void JSObject::PrintElements(FILE* out) { |
// Don't call GetElementsKind, its validation code can cause the printer to |
// fail when debugging. |
@@ -357,72 +398,47 @@ void JSObject::PrintElements(FILE* out) { |
} |
break; |
} |
- case EXTERNAL_PIXEL_ELEMENTS: { |
- ExternalPixelArray* p = ExternalPixelArray::cast(elements()); |
- for (int i = 0; i < p->length(); i++) { |
- PrintF(out, " %d: %d\n", i, p->get_scalar(i)); |
- } |
- break; |
- } |
- case EXTERNAL_BYTE_ELEMENTS: { |
- ExternalByteArray* p = ExternalByteArray::cast(elements()); |
- for (int i = 0; i < p->length(); i++) { |
- PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); |
- } |
- break; |
- } |
- case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: { |
- ExternalUnsignedByteArray* p = |
- ExternalUnsignedByteArray::cast(elements()); |
- for (int i = 0; i < p->length(); i++) { |
- PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); |
- } |
- break; |
- } |
- case EXTERNAL_SHORT_ELEMENTS: { |
- ExternalShortArray* p = ExternalShortArray::cast(elements()); |
- for (int i = 0; i < p->length(); i++) { |
- PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); |
- } |
- break; |
- } |
- case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: { |
- ExternalUnsignedShortArray* p = |
- ExternalUnsignedShortArray::cast(elements()); |
- for (int i = 0; i < p->length(); i++) { |
- PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); |
- } |
- break; |
- } |
- case EXTERNAL_INT_ELEMENTS: { |
- ExternalIntArray* p = ExternalIntArray::cast(elements()); |
- for (int i = 0; i < p->length(); i++) { |
- PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); |
- } |
- break; |
- } |
- case EXTERNAL_UNSIGNED_INT_ELEMENTS: { |
- ExternalUnsignedIntArray* p = |
- ExternalUnsignedIntArray::cast(elements()); |
- for (int i = 0; i < p->length(); i++) { |
- PrintF(out, " %d: %d\n", i, static_cast<int>(p->get_scalar(i))); |
- } |
- break; |
- } |
- case EXTERNAL_FLOAT_ELEMENTS: { |
- ExternalFloatArray* p = ExternalFloatArray::cast(elements()); |
- for (int i = 0; i < p->length(); i++) { |
- PrintF(out, " %d: %f\n", i, p->get_scalar(i)); |
- } |
- break; |
+ |
+ |
+#define PRINT_ELEMENTS(Kind, Type) \ |
+ case Kind: { \ |
+ DoPrintElements<Type>(out, elements()); \ |
+ break; \ |
} |
- case EXTERNAL_DOUBLE_ELEMENTS: { |
- ExternalDoubleArray* p = ExternalDoubleArray::cast(elements()); |
- for (int i = 0; i < p->length(); i++) { |
- PrintF(out, " %d: %f\n", i, p->get_scalar(i)); |
- } |
- break; |
+ |
+#define PRINT_DOUBLE_ELEMENTS(Kind, Type) \ |
+ case Kind: { \ |
+ DoPrintDoubleElements<Type>(out, elements()); \ |
+ break; \ |
} |
+ |
+ PRINT_ELEMENTS(EXTERNAL_PIXEL_ELEMENTS, ExternalPixelArray) |
+ PRINT_ELEMENTS(EXTERNAL_BYTE_ELEMENTS, ExternalByteArray) |
+ PRINT_ELEMENTS(EXTERNAL_UNSIGNED_BYTE_ELEMENTS, |
+ ExternalUnsignedByteArray) |
+ PRINT_ELEMENTS(EXTERNAL_SHORT_ELEMENTS, ExternalShortArray) |
+ PRINT_ELEMENTS(EXTERNAL_UNSIGNED_SHORT_ELEMENTS, |
+ ExternalUnsignedShortArray) |
+ PRINT_ELEMENTS(EXTERNAL_INT_ELEMENTS, ExternalIntArray) |
+ PRINT_ELEMENTS(EXTERNAL_UNSIGNED_INT_ELEMENTS, |
+ ExternalUnsignedIntArray) |
+ PRINT_DOUBLE_ELEMENTS(EXTERNAL_FLOAT_ELEMENTS, ExternalFloatArray) |
+ PRINT_DOUBLE_ELEMENTS(EXTERNAL_DOUBLE_ELEMENTS, ExternalDoubleArray) |
+ |
+ |
+ PRINT_ELEMENTS(UINT8_ELEMENTS, FixedUint8Array) |
+ PRINT_ELEMENTS(UINT8_CLAMPED_ELEMENTS, FixedUint8ClampedArray) |
+ PRINT_ELEMENTS(INT8_ELEMENTS, FixedInt8Array) |
+ PRINT_ELEMENTS(UINT16_ELEMENTS, FixedUint16Array) |
+ PRINT_ELEMENTS(INT16_ELEMENTS, FixedInt16Array) |
+ PRINT_ELEMENTS(UINT32_ELEMENTS, FixedUint32Array) |
+ PRINT_ELEMENTS(INT32_ELEMENTS, FixedInt32Array) |
+ PRINT_DOUBLE_ELEMENTS(FLOAT32_ELEMENTS, FixedFloat32Array) |
+ PRINT_DOUBLE_ELEMENTS(FLOAT64_ELEMENTS, FixedFloat64Array) |
+ |
+#undef PRINT_DOUBLE_ELEMENTS |
+#undef PRINT_ELEMENTS |
+ |
case DICTIONARY_ELEMENTS: |
elements()->Print(out); |
break; |