equal
deleted
inserted
replaced
253 return entry; |
253 return entry; |
254 |
254 |
255 } |
255 } |
256 |
256 |
257 |
257 |
258 // Method handle invoker |
|
259 // Dispatch a method of the form java.lang.invoke.MethodHandles::invoke(...) |
|
260 address InterpreterGenerator::generate_method_handle_entry(void) { |
|
261 if (!EnableInvokeDynamic) { |
|
262 return generate_abstract_entry(); |
|
263 } |
|
264 |
|
265 return MethodHandles::generate_method_handle_interpreter_entry(_masm); |
|
266 } |
|
267 |
|
268 |
|
269 //---------------------------------------------------------------------------------------------------- |
258 //---------------------------------------------------------------------------------------------------- |
270 // Entry points & stack frame layout |
259 // Entry points & stack frame layout |
271 // |
260 // |
272 // Here we generate the various kind of entries into the interpreter. |
261 // Here we generate the various kind of entries into the interpreter. |
273 // The two main entry type are generic bytecode methods and native call method. |
262 // The two main entry type are generic bytecode methods and native call method. |
393 case Interpreter::native : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(false); break; |
382 case Interpreter::native : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(false); break; |
394 case Interpreter::native_synchronized : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(true); break; |
383 case Interpreter::native_synchronized : entry_point = ((InterpreterGenerator*)this)->generate_native_entry(true); break; |
395 case Interpreter::empty : entry_point = ((InterpreterGenerator*)this)->generate_empty_entry(); break; |
384 case Interpreter::empty : entry_point = ((InterpreterGenerator*)this)->generate_empty_entry(); break; |
396 case Interpreter::accessor : entry_point = ((InterpreterGenerator*)this)->generate_accessor_entry(); break; |
385 case Interpreter::accessor : entry_point = ((InterpreterGenerator*)this)->generate_accessor_entry(); break; |
397 case Interpreter::abstract : entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry(); break; |
386 case Interpreter::abstract : entry_point = ((InterpreterGenerator*)this)->generate_abstract_entry(); break; |
398 case Interpreter::method_handle : entry_point = ((InterpreterGenerator*)this)->generate_method_handle_entry(); break; |
387 |
399 case Interpreter::java_lang_math_sin : break; |
388 case Interpreter::java_lang_math_sin : break; |
400 case Interpreter::java_lang_math_cos : break; |
389 case Interpreter::java_lang_math_cos : break; |
401 case Interpreter::java_lang_math_tan : break; |
390 case Interpreter::java_lang_math_tan : break; |
402 case Interpreter::java_lang_math_sqrt : break; |
391 case Interpreter::java_lang_math_sqrt : break; |
403 case Interpreter::java_lang_math_abs : break; |
392 case Interpreter::java_lang_math_abs : break; |
405 case Interpreter::java_lang_math_log10 : break; |
394 case Interpreter::java_lang_math_log10 : break; |
406 case Interpreter::java_lang_math_pow : break; |
395 case Interpreter::java_lang_math_pow : break; |
407 case Interpreter::java_lang_math_exp : break; |
396 case Interpreter::java_lang_math_exp : break; |
408 case Interpreter::java_lang_ref_reference_get |
397 case Interpreter::java_lang_ref_reference_get |
409 : entry_point = ((InterpreterGenerator*)this)->generate_Reference_get_entry(); break; |
398 : entry_point = ((InterpreterGenerator*)this)->generate_Reference_get_entry(); break; |
410 default : ShouldNotReachHere(); break; |
399 default: |
|
400 fatal(err_msg("unexpected method kind: %d", kind)); |
|
401 break; |
411 } |
402 } |
412 |
403 |
413 if (entry_point) return entry_point; |
404 if (entry_point) return entry_point; |
414 |
405 |
415 return ((InterpreterGenerator*)this)->generate_normal_entry(synchronized); |
406 return ((InterpreterGenerator*)this)->generate_normal_entry(synchronized); |