equal
deleted
inserted
replaced
24 |
24 |
25 #include "precompiled.hpp" |
25 #include "precompiled.hpp" |
26 #include "asm/macroAssembler.hpp" |
26 #include "asm/macroAssembler.hpp" |
27 #include "interpreter/bytecodeHistogram.hpp" |
27 #include "interpreter/bytecodeHistogram.hpp" |
28 #include "interpreter/interpreter.hpp" |
28 #include "interpreter/interpreter.hpp" |
29 #include "interpreter/interpreterGenerator.hpp" |
|
30 #include "interpreter/interpreterRuntime.hpp" |
29 #include "interpreter/interpreterRuntime.hpp" |
31 #include "interpreter/interp_masm.hpp" |
30 #include "interpreter/interp_masm.hpp" |
|
31 #include "interpreter/templateInterpreterGenerator.hpp" |
32 #include "interpreter/templateTable.hpp" |
32 #include "interpreter/templateTable.hpp" |
33 #include "oops/arrayOop.hpp" |
33 #include "oops/arrayOop.hpp" |
34 #include "oops/methodData.hpp" |
34 #include "oops/methodData.hpp" |
35 #include "oops/method.hpp" |
35 #include "oops/method.hpp" |
36 #include "oops/oop.inline.hpp" |
36 #include "oops/oop.inline.hpp" |
51 |
51 |
52 |
52 |
53 |
53 |
54 // Generation of Interpreter |
54 // Generation of Interpreter |
55 // |
55 // |
56 // The InterpreterGenerator generates the interpreter into Interpreter::_code. |
56 // The TemplateInterpreterGenerator generates the interpreter into Interpreter::_code. |
57 |
57 |
58 |
58 |
59 #define __ _masm-> |
59 #define __ _masm-> |
60 |
60 |
61 |
61 |
192 restore(O0, 0, Lscratch); // caller's Lscratch gets the result handler |
192 restore(O0, 0, Lscratch); // caller's Lscratch gets the result handler |
193 return entry; |
193 return entry; |
194 } |
194 } |
195 #endif |
195 #endif |
196 |
196 |
197 void InterpreterGenerator::generate_counter_overflow(Label& Lcontinue) { |
197 void TemplateInterpreterGenerator::generate_counter_overflow(Label& Lcontinue) { |
198 |
198 |
199 // Generate code to initiate compilation on the counter overflow. |
199 // Generate code to initiate compilation on the counter overflow. |
200 |
200 |
201 // InterpreterRuntime::frequency_counter_overflow takes two arguments, |
201 // InterpreterRuntime::frequency_counter_overflow takes two arguments, |
202 // the first indicates if the counter overflow occurs at a backwards branch (NULL bcp) |
202 // the first indicates if the counter overflow occurs at a backwards branch (NULL bcp) |
217 // Various method entries |
217 // Various method entries |
218 |
218 |
219 // Abstract method entry |
219 // Abstract method entry |
220 // Attempt to execute abstract method. Throw exception |
220 // Attempt to execute abstract method. Throw exception |
221 // |
221 // |
222 address InterpreterGenerator::generate_abstract_entry(void) { |
222 address TemplateInterpreterGenerator::generate_abstract_entry(void) { |
223 address entry = __ pc(); |
223 address entry = __ pc(); |
224 // abstract method entry |
224 // abstract method entry |
225 // throw exception |
225 // throw exception |
226 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError)); |
226 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError)); |
227 // the call_VM checks for exception, so we should never return here. |
227 // the call_VM checks for exception, so we should never return here. |