< prev index next >

src/share/vm/opto/runtime.cpp

Print this page

        

@@ -45,10 +45,11 @@
 #include "logging/log.hpp"
 #include "memory/oopFactory.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/typeArrayOop.inline.hpp"
+#include "oops/valueArrayKlass.hpp"
 #include "opto/ad.hpp"
 #include "opto/addnode.hpp"
 #include "opto/callnode.hpp"
 #include "opto/cfgnode.hpp"
 #include "opto/graphKit.hpp"

@@ -264,11 +265,16 @@
   assert(check_compiled_frame(thread), "incorrect caller");
 
   // Scavenge and allocate an instance.
   oop result;
 
-  if (array_type->is_typeArray_klass()) {
+  if (array_type->is_valueArray_klass()) {
+    // TODO refactor all these checks, is_typeArray_klass should not be true for a value type array
+    // TODO use oopFactory::new_array
+    Klass* elem_type = ValueArrayKlass::cast(array_type)->element_klass();
+    result = oopFactory::new_valueArray(elem_type, len, THREAD);
+  } else if (array_type->is_typeArray_klass()) {
     // The oopFactory likes to work with the element type.
     // (We could bypass the oopFactory, since it doesn't add much value.)
     BasicType elem_type = TypeArrayKlass::cast(array_type)->element_type();
     result = oopFactory::new_typeArray(elem_type, len, THREAD);
   } else {
< prev index next >