hotspot/src/share/vm/interpreter/templateInterpreterGenerator.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.cpp Fri Dec 2 11:15:45 2016
--- new/hotspot/src/share/vm/interpreter/templateInterpreterGenerator.cpp Fri Dec 2 11:15:43 2016
*** 21,31 ****
--- 21,30 ----
* questions.
*
*/
#include "precompiled.hpp"
#include "code/codeCacheExtensions.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interpreterRuntime.hpp"
#include "interpreter/interp_masm.hpp"
#include "interpreter/templateInterpreter.hpp"
#include "interpreter/templateInterpreterGenerator.hpp"
*** 53,66 ****
--- 52,61 ----
T_DOUBLE ,
T_OBJECT
};
void TemplateInterpreterGenerator::generate_all() {
// Loop, in case we need several variants of the interpreter entries
do {
if (!CodeCacheExtensions::skip_code_generation()) {
// bypass code generation when useless
{ CodeletMark cm(_masm, "slow signature handler");
AbstractInterpreter::_slow_signature_handler = generate_slow_signature_handler();
}
{ CodeletMark cm(_masm, "error exits");
*** 264,275 ****
--- 259,268 ----
#undef method_entry
// Bytecodes
set_entry_points_for_all_bytes();
}
} while (CodeCacheExtensions::needs_other_interpreter_variant());
// installation of code in other places in the runtime
// (ExcutableCodeManager calls not needed to copy the entries)
set_safepoints_for_all_bytes();
}
*** 312,324 ****
--- 305,314 ----
Interpreter::_wentry_point[i] = _unimplemented_bytecode;
}
void TemplateInterpreterGenerator::set_entry_points(Bytecodes::Code code) {
if (CodeCacheExtensions::skip_template_interpreter_entries(code)) {
return;
}
CodeletMark cm(_masm, Bytecodes::name(code), code);
// initialize entry points
assert(_unimplemented_bytecode != NULL, "should have been generated before");
assert(_illegal_bytecode_sequence != NULL, "should have been generated before");
address bep = _illegal_bytecode_sequence;
*** 345,355 ****
--- 335,344 ----
}
// set entry points
EntryPoint entry(bep, zep, cep, sep, aep, iep, lep, fep, dep, vep);
Interpreter::_normal_table.set_entry(code, entry);
Interpreter::_wentry_point[code] = wep;
CodeCacheExtensions::completed_template_interpreter_entries(_masm, code);
}
void TemplateInterpreterGenerator::set_wide_entry_point(Template* t, address& wep) {
assert(t->is_valid(), "template must exist");
hotspot/src/share/vm/interpreter/templateInterpreterGenerator.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File