comparison src/cpu/sparc/vm/interpreter_sparc.cpp @ 6266:1d7922586cf6

7023639: JSR 292 method handle invocation needs a fast path for compiled code 6984705: JSR 292 method handle creation should not go through JNI Summary: remove assembly code for JDK 7 chained method handles Reviewed-by: jrose, twisti, kvn, mhaupt Contributed-by: John Rose <john.r.rose@oracle.com>, Christian Thalinger <christian.thalinger@oracle.com>, Michael Haupt <michael.haupt@oracle.com>
author twisti
date Tue, 24 Jul 2012 10:51:00 -0700
parents 6759698e3140
children da91efe96a93
comparison
equal deleted inserted replaced
6241:aba91a731143 6266:1d7922586cf6
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);