1 
   2 /*
   3 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
   4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   5 *
   6 * This code is free software; you can redistribute it and/or modify it
   7 * under the terms of the GNU General Public License version 2 only, as
   8 * published by the Free Software Foundation.
   9 *
  10 * This code is distributed in the hope that it will be useful, but WITHOUT
  11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13 * version 2 for more details (a copy is included in the LICENSE file that
  14 * accompanied this code).
  15 *
  16 * You should have received a copy of the GNU General Public License version
  17 * 2 along with this work; if not, write to the Free Software Foundation,
  18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  19 *
  20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  21 * or visit www.oracle.com if you need additional information or have any
  22 * questions.
  23 *
  24 */
  25 
  26 #ifndef SHARE_SERVICES_THREADTABLE_HPP
  27 #define SHARE_SERVICES_THREADTABLE_HPP
  28 
  29 #include "memory/allocation.hpp"
  30 
  31 class JavaThread;
  32 class ThreadTableConfig;
  33 
  34 class ThreadTable : public AllStatic {
  35   static volatile bool _has_work;
  36 
  37  public:
  38    // Initialization
  39    static void create_table();
  40 
  41    static size_t table_size();
  42 
  43    // Lookup and inserts
  44    static JavaThread* find_thread(jlong tid);
  45    static JavaThread* add_thread(jlong tid, JavaThread* thread);
  46    static bool remove_thread(jlong tid);
  47 
  48    // Callbacks
  49    static void item_added();
  50    static void item_removed();
  51 
  52    // Growing
  53    static bool has_work() { return _has_work; }
  54 
  55    static void check_concurrent_work();
  56    static void trigger_concurrent_work();
  57    static void do_concurrent_work(JavaThread* jt);
  58 
  59    static double get_load_factor();
  60    static void grow(JavaThread* jt);
  61 };
  62 
  63 #endif // SHARE_SERVICES_THREADTABLE_HPP