hotspot/src/share/vm/interpreter/templateInterpreter.cpp
changeset 42664 29142a56c193
parent 37480 291ee208fb72
child 46263 1d8d6ddcc626
equal deleted inserted replaced
42663:2335df372367 42664:29142a56c193
    21  * questions.
    21  * questions.
    22  *
    22  *
    23  */
    23  */
    24 
    24 
    25 #include "precompiled.hpp"
    25 #include "precompiled.hpp"
    26 #include "code/codeCacheExtensions.hpp"
       
    27 #include "interpreter/interpreter.hpp"
    26 #include "interpreter/interpreter.hpp"
    28 #include "interpreter/interpreterRuntime.hpp"
    27 #include "interpreter/interpreterRuntime.hpp"
    29 #include "interpreter/interp_masm.hpp"
    28 #include "interpreter/interp_masm.hpp"
    30 #include "interpreter/templateInterpreter.hpp"
    29 #include "interpreter/templateInterpreter.hpp"
    31 #include "interpreter/templateInterpreterGenerator.hpp"
    30 #include "interpreter/templateInterpreterGenerator.hpp"
    50   // generate interpreter
    49   // generate interpreter
    51   { ResourceMark rm;
    50   { ResourceMark rm;
    52     TraceTime timer("Interpreter generation", TRACETIME_LOG(Info, startuptime));
    51     TraceTime timer("Interpreter generation", TRACETIME_LOG(Info, startuptime));
    53     int code_size = InterpreterCodeSize;
    52     int code_size = InterpreterCodeSize;
    54     NOT_PRODUCT(code_size *= 4;)  // debug uses extra interpreter code space
    53     NOT_PRODUCT(code_size *= 4;)  // debug uses extra interpreter code space
    55 #if INCLUDE_JVMTI
       
    56     if (CodeCacheExtensions::saving_generated_interpreter()) {
       
    57       // May requires several versions of the codelets.
       
    58       // Final size will automatically be optimized.
       
    59       code_size *= 2;
       
    60     }
       
    61 #endif
       
    62     _code = new StubQueue(new InterpreterCodeletInterface, code_size, NULL,
    54     _code = new StubQueue(new InterpreterCodeletInterface, code_size, NULL,
    63                           "Interpreter");
    55                           "Interpreter");
    64     TemplateInterpreterGenerator g(_code);
    56     TemplateInterpreterGenerator g(_code);
    65   }
    57   }
    66   if (PrintInterpreter) {
       
    67     if (CodeCacheExtensions::saving_generated_interpreter() &&
       
    68         CodeCacheExtensions::use_pregenerated_interpreter()) {
       
    69       ResourceMark rm;
       
    70       tty->print("Printing the newly generated interpreter first");
       
    71       print();
       
    72       tty->print("Printing the pregenerated interpreter next");
       
    73     }
       
    74   }
       
    75 
       
    76   // Install the pregenerated interpreter code before printing it
       
    77   CodeCacheExtensions::complete_step(CodeCacheExtensionsSteps::TemplateInterpreter);
       
    78 
    58 
    79   if (PrintInterpreter) {
    59   if (PrintInterpreter) {
    80     ResourceMark rm;
    60     ResourceMark rm;
    81     print();
    61     print();
    82   }
    62   }