hotspot/src/share/vm/classfile/placeholders.hpp
changeset 15188 3916ac601e04
parent 14488 ab48109f7d1b
child 33589 7cbd1b2c139b
equal deleted inserted replaced
15187:fb364e5a0b34 15188:3916ac601e04
     1 /*
     1 /*
     2  * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2003, 2013, 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.
    80     LOAD_SUPER = 2,                // loading superclass for this class
    80     LOAD_SUPER = 2,                // loading superclass for this class
    81     DEFINE_CLASS = 3               // find_or_define class
    81     DEFINE_CLASS = 3               // find_or_define class
    82  };
    82  };
    83 
    83 
    84   // find_and_add returns probe pointer - old or new
    84   // find_and_add returns probe pointer - old or new
    85   // If no entry exists, add a placeholder entry and push SeenThread
    85   // If no entry exists, add a placeholder entry and push SeenThread for classloadAction
    86   // If entry exists, reuse entry and push SeenThread for classloadAction
    86   // If entry exists, reuse entry and push SeenThread for classloadAction
    87   PlaceholderEntry* find_and_add(int index, unsigned int hash,
    87   PlaceholderEntry* find_and_add(int index, unsigned int hash,
    88                                  Symbol* name, ClassLoaderData* loader_data,
    88                                  Symbol* name, ClassLoaderData* loader_data,
    89                                  classloadAction action, Symbol* supername,
    89                                  classloadAction action, Symbol* supername,
    90                                  Thread* thread);
    90                                  Thread* thread);
    91 
    91 
    92   void remove_entry(int index, unsigned int hash,
    92   void remove_entry(int index, unsigned int hash,
    93                     Symbol* name, ClassLoaderData* loader_data);
    93                     Symbol* name, ClassLoaderData* loader_data);
    94 
    94 
    95 // Remove placeholder information
    95   // find_and_remove first removes SeenThread for classloadAction
       
    96   // If all queues are empty and definer is null, remove the PlacheholderEntry completely
    96   void find_and_remove(int index, unsigned int hash,
    97   void find_and_remove(int index, unsigned int hash,
    97                        Symbol* name, ClassLoaderData* loader_data, Thread* thread);
    98                        Symbol* name, ClassLoaderData* loader_data,
       
    99                        classloadAction action, Thread* thread);
    98 
   100 
    99   // GC support.
   101   // GC support.
   100   void classes_do(KlassClosure* f);
   102   void classes_do(KlassClosure* f);
   101 
   103 
   102   // JVMTI support
   104   // JVMTI support