RFR (S) JDK-8178712: ResourceMark may be missing inside initialize_[vi]table

Calvin Cheung calvin.cheung at oracle.com
Tue Jul 10 19:10:24 UTC 2018


Hi Lois,

I'm wondering if the ResourceMark in the following function in 
universe.cpp could be removed?
If I understand the code correctly, the ResourceMark is necessary for 
Universe::reinitialize_itables() which calls into 
klassItable::initialize_itable() where you've added ResourceMark with 
your change.

bool universe_post_init() {
   assert(!is_init_completed(), "Error: initialization not yet completed!");
   Universe::_fully_initialized = true;
   EXCEPTION_MARK;
   { ResourceMark rm;
     Interpreter::initialize();      // needed for interpreter entry points
     if (!UseSharedSpaces) {
       HandleMark hm(THREAD);
       Klass* ok = SystemDictionary::Object_klass();
       Universe::reinitialize_vtable_of(ok, CHECK_false);
       Universe::reinitialize_itables(CHECK_false);
     }
   }

It looks good otherwise.

thanks,
Calvin

On 7/10/18, 10:19 AM, Lois Foltan wrote:
> Please review this clean up change to correctly set ResourceMark from 
> within klassVtable::initialize_vtable() and 
> klassItable::initialize_itable() when applicable, instead of having 
> all instances of calls to these two methods establish a ResourceMark 
> unnecessarily prior to.
>
> open webrev at http://cr.openjdk.java.net/~lfoltan/bug_jdk8178712/
> bug link at https://bugs.openjdk.java.net/browse/JDK-8178712
>
> Testing: hs-tier1-3, jdk-tier1-3 (complete)
>                hs-tier4-5 (in progress)
>
> Thanks,
> Lois


More information about the hotspot-runtime-dev mailing list