33 #include "oops/methodData.hpp"
34
35 #define __ Disassembler::hook<InterpreterMacroAssembler>(__FILE__, __LINE__, _masm)->
36
37 TemplateInterpreterGenerator::TemplateInterpreterGenerator(): AbstractInterpreterGenerator() {
38 _unimplemented_bytecode = nullptr;
39 _illegal_bytecode_sequence = nullptr;
40 generate_all();
41 }
42
43 static const BasicType types[Interpreter::number_of_result_handlers] = {
44 T_BOOLEAN,
45 T_CHAR ,
46 T_BYTE ,
47 T_SHORT ,
48 T_INT ,
49 T_LONG ,
50 T_VOID ,
51 T_FLOAT ,
52 T_DOUBLE ,
53 T_OBJECT
54 };
55
56 void TemplateInterpreterGenerator::generate_all() {
57 { CodeletMark cm(_masm, "slow signature handler");
58 AbstractInterpreter::_slow_signature_handler = generate_slow_signature_handler();
59 }
60
61 { CodeletMark cm(_masm, "error exits");
62 _unimplemented_bytecode = generate_error_exit("unimplemented bytecode");
63 _illegal_bytecode_sequence = generate_error_exit("illegal bytecode sequence - method not verified");
64 }
65
66 #ifndef PRODUCT
67 if (TraceBytecodes) {
68 CodeletMark cm(_masm, "bytecode tracing support");
69 Interpreter::_trace_code =
70 EntryPoint(
71 generate_trace_code(atos),
72 generate_trace_code(itos),
73 generate_trace_code(ltos),
|
33 #include "oops/methodData.hpp"
34
35 #define __ Disassembler::hook<InterpreterMacroAssembler>(__FILE__, __LINE__, _masm)->
36
37 TemplateInterpreterGenerator::TemplateInterpreterGenerator(): AbstractInterpreterGenerator() {
38 _unimplemented_bytecode = nullptr;
39 _illegal_bytecode_sequence = nullptr;
40 generate_all();
41 }
42
43 static const BasicType types[Interpreter::number_of_result_handlers] = {
44 T_BOOLEAN,
45 T_CHAR ,
46 T_BYTE ,
47 T_SHORT ,
48 T_INT ,
49 T_LONG ,
50 T_VOID ,
51 T_FLOAT ,
52 T_DOUBLE ,
53 T_OBJECT ,
54 T_PRIMITIVE_OBJECT
55 };
56
57 void TemplateInterpreterGenerator::generate_all() {
58 { CodeletMark cm(_masm, "slow signature handler");
59 AbstractInterpreter::_slow_signature_handler = generate_slow_signature_handler();
60 }
61
62 { CodeletMark cm(_masm, "error exits");
63 _unimplemented_bytecode = generate_error_exit("unimplemented bytecode");
64 _illegal_bytecode_sequence = generate_error_exit("illegal bytecode sequence - method not verified");
65 }
66
67 #ifndef PRODUCT
68 if (TraceBytecodes) {
69 CodeletMark cm(_masm, "bytecode tracing support");
70 Interpreter::_trace_code =
71 EntryPoint(
72 generate_trace_code(atos),
73 generate_trace_code(itos),
74 generate_trace_code(ltos),
|