hotspot/src/share/vm/gc_interface/collectedHeap.cpp
changeset 23872 536c66fc43d3
parent 23470 ff2a7ea4225d
child 23873 dc33274a6248
equal deleted inserted replaced
23871:0456e228b90d 23872:536c66fc43d3
     1 /*
     1 /*
     2  * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
   580     VM_GC_HeapInspection inspector(gclog_or_tty, false /* ! full gc */);
   580     VM_GC_HeapInspection inspector(gclog_or_tty, false /* ! full gc */);
   581     inspector.doit();
   581     inspector.doit();
   582   }
   582   }
   583 }
   583 }
   584 
   584 
   585 oop CollectedHeap::Class_obj_allocate(KlassHandle klass, int size, KlassHandle real_klass, TRAPS) {
       
   586   debug_only(check_for_valid_allocation_state());
       
   587   assert(!Universe::heap()->is_gc_active(), "Allocation during gc not allowed");
       
   588   assert(size >= 0, "int won't convert to size_t");
       
   589   HeapWord* obj;
       
   590     assert(ScavengeRootsInCode > 0, "must be");
       
   591     obj = common_mem_allocate_init(real_klass, size, CHECK_NULL);
       
   592   post_allocation_setup_common(klass, obj);
       
   593   assert(Universe::is_bootstrapping() ||
       
   594          !((oop)obj)->is_array(), "must not be an array");
       
   595   NOT_PRODUCT(Universe::heap()->check_for_bad_heap_word_value(obj, size));
       
   596   oop mirror = (oop)obj;
       
   597 
       
   598   java_lang_Class::set_oop_size(mirror, size);
       
   599 
       
   600   // Setup indirections
       
   601   if (!real_klass.is_null()) {
       
   602     java_lang_Class::set_klass(mirror, real_klass());
       
   603     real_klass->set_java_mirror(mirror);
       
   604   }
       
   605 
       
   606   InstanceMirrorKlass* mk = InstanceMirrorKlass::cast(mirror->klass());
       
   607   assert(size == mk->instance_size(real_klass), "should have been set");
       
   608 
       
   609   // notify jvmti and dtrace
       
   610   post_allocation_notify(klass, (oop)obj);
       
   611 
       
   612   return mirror;
       
   613 }
       
   614 
       
   615 /////////////// Unit tests ///////////////
   585 /////////////// Unit tests ///////////////
   616 
   586 
   617 #ifndef PRODUCT
   587 #ifndef PRODUCT
   618 void CollectedHeap::test_is_in() {
   588 void CollectedHeap::test_is_in() {
   619   CollectedHeap* heap = Universe::heap();
   589   CollectedHeap* heap = Universe::heap();