hotspot/src/share/vm/oops/instanceMirrorKlass.cpp
changeset 23872 536c66fc43d3
parent 22234 da823d78ad65
child 25356 4a4a482298a6
--- a/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp	Tue Apr 08 11:50:01 2014 +0200
+++ b/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp	Tue Apr 08 13:58:38 2014 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -367,7 +367,12 @@
   // Query before forming handle.
   int size = instance_size(k);
   KlassHandle h_k(THREAD, this);
-  instanceOop i = (instanceOop) CollectedHeap::Class_obj_allocate(h_k, size, k, CHECK_NULL);
+  instanceOop i = (instanceOop)CollectedHeap::obj_allocate(h_k, size, CHECK_NULL);
+
+  // Since mirrors can be variable sized because of the static fields, store
+  // the size in the mirror itself.
+  java_lang_Class::set_oop_size(i, size);
+
   return i;
 }