diff --git a/src/object.cc b/src/object.cc
index 8765713..bfa200a 100644
--- a/src/object.cc
+++ b/src/object.cc
@@ -14,6 +14,10 @@
 
 namespace art {
 
+Array* Array::Alloc(Class* array_class, size_t component_count) {
+  return Alloc(array_class, component_count, array_class->GetComponentSize());
+}
+
 bool Class::Implements(const Class* klass) const {
   DCHECK(klass != NULL);
   DCHECK(klass->IsInterface());
diff --git a/src/object.h b/src/object.h
index 8efa059..ca09d07 100644
--- a/src/object.h
+++ b/src/object.h
@@ -604,6 +604,10 @@
     return sizeof(Array) + component_count * component_size;
   }
 
+  // A convenience for code that doesn't know the component size,
+  // and doesn't want to have to work it out itself.
+  static Array* Alloc(Class* array_class, size_t component_count);
+
   static Array* Alloc(Class* array_class,
                       size_t component_count,
                       size_t component_size) {
diff --git a/src/object_test.cc b/src/object_test.cc
index c757297..c517459 100644
--- a/src/object_test.cc
+++ b/src/object_test.cc
@@ -86,6 +86,20 @@
             oa->GetClass()->GetInterface(1));
 }
 
+TEST_F(ObjectTest, AllocArray) {
+  Class* c = class_linker_->FindSystemClass("[I");
+  Array* a = Array::Alloc(c, 1);
+  ASSERT_TRUE(c == a->GetClass());
+
+  c = class_linker_->FindSystemClass("[Ljava/lang/Object;");
+  a = Array::Alloc(c, 1);
+  ASSERT_TRUE(c == a->GetClass());
+
+  c = class_linker_->FindSystemClass("[[Ljava/lang/Object;");
+  a = Array::Alloc(c, 1);
+  ASSERT_TRUE(c == a->GetClass());
+}
+
 template<typename ArrayT>
 void TestPrimitiveArray(ClassLinker* cl) {
   typedef typename ArrayT::ElementType T;
