< prev index next >

src/hotspot/share/jvmci/jvmciCompiler.cpp

Print this page




  33 elapsedTimer JVMCICompiler::_codeInstallTimer;
  34 
  35 JVMCICompiler::JVMCICompiler() : AbstractCompiler(compiler_jvmci) {
  36   _bootstrapping = false;
  37   _bootstrap_compilation_request_handled = false;
  38   _methods_compiled = 0;
  39   assert(_instance == NULL, "only one instance allowed");
  40   _instance = this;
  41 }
  42 
  43 // Initialization
  44 void JVMCICompiler::initialize() {
  45   if (!UseCompiler || !EnableJVMCI || !UseJVMCICompiler || !should_perform_init()) {
  46     return;
  47   }
  48 
  49   set_state(initialized);
  50 }
  51 
  52 void JVMCICompiler::bootstrap(TRAPS) {

  53   if (Arguments::mode() == Arguments::_int) {
  54     // Nothing to do in -Xint mode
  55     return;
  56   }
  57   _bootstrapping = true;
  58   ResourceMark rm;
  59   HandleMark hm;
  60   if (PrintBootstrap) {
  61     tty->print("Bootstrapping JVMCI");
  62   }
  63   jlong start = os::javaTimeMillis();
  64 
  65   Array<Method*>* objectMethods = SystemDictionary::Object_klass()->methods();
  66   // Initialize compile queue with a selected set of methods.
  67   int len = objectMethods->length();
  68   for (int i = 0; i < len; i++) {
  69     methodHandle mh = objectMethods->at(i);
  70     if (!mh->is_native() && !mh->is_static() && !mh->is_initializer()) {
  71       ResourceMark rm;
  72       int hot_count = 10; // TODO: what's the appropriate value?
  73       CompileBroker::compile_method(mh, InvocationEntryBci, CompLevel_full_optimization, mh, hot_count, CompileTask::Reason_Bootstrap, THREAD);
  74     }
  75   }
  76 
  77   int qsize;
  78   bool first_round = true;
  79   int z = 0;
  80   do {
  81     // Loop until there is something in the queue.
  82     do {
  83       os::sleep(THREAD, 100, true);
  84       qsize = CompileBroker::queue_size(CompLevel_full_optimization);
  85     } while (!_bootstrap_compilation_request_handled && first_round && qsize == 0);
  86     first_round = false;
  87     if (PrintBootstrap) {
  88       while (z < (_methods_compiled / 100)) {
  89         ++z;
  90         tty->print_raw(".");
  91       }
  92     }
  93   } while (qsize != 0);
  94 
  95   if (PrintBootstrap) {
  96     tty->print_cr(" in " JLONG_FORMAT " ms (compiled %d methods)", os::javaTimeMillis() - start, _methods_compiled);
  97   }
  98   _bootstrapping = false;
  99   JVMCI::compiler_runtime()->bootstrap_finished(CHECK);
 100 }
 101 
 102 bool JVMCICompiler::force_comp_at_level_simple(Method *method) {
 103   if (UseJVMCINativeLibrary) {




  33 elapsedTimer JVMCICompiler::_codeInstallTimer;
  34 
  35 JVMCICompiler::JVMCICompiler() : AbstractCompiler(compiler_jvmci) {
  36   _bootstrapping = false;
  37   _bootstrap_compilation_request_handled = false;
  38   _methods_compiled = 0;
  39   assert(_instance == NULL, "only one instance allowed");
  40   _instance = this;
  41 }
  42 
  43 // Initialization
  44 void JVMCICompiler::initialize() {
  45   if (!UseCompiler || !EnableJVMCI || !UseJVMCICompiler || !should_perform_init()) {
  46     return;
  47   }
  48 
  49   set_state(initialized);
  50 }
  51 
  52 void JVMCICompiler::bootstrap(TRAPS) {
  53   assert(THREAD->is_Java_thread(), "must be");
  54   if (Arguments::mode() == Arguments::_int) {
  55     // Nothing to do in -Xint mode
  56     return;
  57   }
  58   _bootstrapping = true;
  59   ResourceMark rm;
  60   HandleMark hm;
  61   if (PrintBootstrap) {
  62     tty->print("Bootstrapping JVMCI");
  63   }
  64   jlong start = os::javaTimeMillis();
  65 
  66   Array<Method*>* objectMethods = SystemDictionary::Object_klass()->methods();
  67   // Initialize compile queue with a selected set of methods.
  68   int len = objectMethods->length();
  69   for (int i = 0; i < len; i++) {
  70     methodHandle mh = objectMethods->at(i);
  71     if (!mh->is_native() && !mh->is_static() && !mh->is_initializer()) {
  72       ResourceMark rm;
  73       int hot_count = 10; // TODO: what's the appropriate value?
  74       CompileBroker::compile_method(mh, InvocationEntryBci, CompLevel_full_optimization, mh, hot_count, CompileTask::Reason_Bootstrap, THREAD);
  75     }
  76   }
  77 
  78   int qsize;
  79   bool first_round = true;
  80   int z = 0;
  81   do {
  82     // Loop until there is something in the queue.
  83     do {
  84       os::sleep((JavaThread*)THREAD, 100);
  85       qsize = CompileBroker::queue_size(CompLevel_full_optimization);
  86     } while (!_bootstrap_compilation_request_handled && first_round && qsize == 0);
  87     first_round = false;
  88     if (PrintBootstrap) {
  89       while (z < (_methods_compiled / 100)) {
  90         ++z;
  91         tty->print_raw(".");
  92       }
  93     }
  94   } while (qsize != 0);
  95 
  96   if (PrintBootstrap) {
  97     tty->print_cr(" in " JLONG_FORMAT " ms (compiled %d methods)", os::javaTimeMillis() - start, _methods_compiled);
  98   }
  99   _bootstrapping = false;
 100   JVMCI::compiler_runtime()->bootstrap_finished(CHECK);
 101 }
 102 
 103 bool JVMCICompiler::force_comp_at_level_simple(Method *method) {
 104   if (UseJVMCINativeLibrary) {


< prev index next >