hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp
changeset 13391 30245956af37
parent 12739 09f26b73ae66
child 13728 882756847a04
equal deleted inserted replaced
13309:50c604cb0d5f 13391:30245956af37
   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);