diff src/share/vm/graal/graalCompiler.cpp @ 5616:310ed6650682

added check to ensure fast path allocation is never used for types that don't allow it
author Doug Simon <doug.simon@oracle.com>
date Fri, 15 Jun 2012 12:04:26 +0200
parents 70f715dfbb41
children 6cb39a47da14
line wrap: on
line diff
--- a/src/share/vm/graal/graalCompiler.cpp	Thu Jun 14 17:03:22 2012 +0200
+++ b/src/share/vm/graal/graalCompiler.cpp	Fri Jun 15 12:04:26 2012 +0200
@@ -278,8 +278,12 @@
   if (klass->oop_is_javaArray()) {
     HotSpotResolvedJavaType::set_isArrayClass(obj, true);
   } else {
+    int size = instanceKlass::cast(klass())->size_helper() * HeapWordSize;
+    if (!instanceKlass::cast(klass())->can_be_fastpath_allocated()) {
+      size = -size;
+    }
     HotSpotResolvedJavaType::set_isArrayClass(obj, false);
-    HotSpotResolvedJavaType::set_instanceSize(obj, instanceKlass::cast(klass())->size_helper() * HeapWordSize);
+    HotSpotResolvedJavaType::set_instanceSize(obj, size);
     HotSpotResolvedJavaType::set_hasFinalizer(obj, klass->has_finalizer());
   }